Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AztecOO: Fix #4006 (suboptimal LWORK for DGEEV triggers MKL bug) #4007

Merged
merged 1 commit into from
Dec 6, 2018

Conversation

mhoemmen
Copy link
Contributor

@mhoemmen mhoemmen commented Dec 5, 2018

@trilinos/aztecoo

MKL has a bug: If you give DGEEV a suboptimal but still correct LWORK, it corrupts memory. This commit adds a work-around to AztecOO that does an LWORK query to allocate the optimal amount of memory. This may affect performance of GMRES condition number estimation a little bit. (It could speed up or slow down; not sure, and depends on the restart length.)

Related Issues

@mhoemmen mhoemmen self-assigned this Dec 5, 2018
@bartlettroscoe bartlettroscoe added the stage: in progress Work on the issue has started label Dec 5, 2018
@mhoemmen mhoemmen added the AT: AUTOMERGE Causes the PR autotester to automatically merge the PR branch once approvals are completed label Dec 5, 2018
@trilinos-autotester
Copy link
Contributor

Status Flag 'Pre-Test Inspection' - Auto Inspected - Inspection Is Not Necessary for this Pull Request.

@trilinos-autotester
Copy link
Contributor

Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects:

Pull Request Auto Testing STARTING (click to expand)

Build Information

Test Name: Trilinos_pullrequest_intel_17.0.1

  • Build Num: 1807
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
PULLREQUESTNUM 4007
TEST_REPO_ALIAS TRILINOS
TRILINOS_SOURCE_BRANCH Fix-4006
TRILINOS_SOURCE_REPO https://github.com/mhoemmen/Trilinos
TRILINOS_SOURCE_SHA 4c49ff0
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 110b9e6

Build Information

Test Name: Trilinos_pullrequest_gcc_4.9.3

  • Build Num: 2370
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
COMPILER_MODULE sems-gcc/4.9.3
JENKINS_BUILD_TYPE Release
JENKINS_COMM_TYPE MPI
JENKINS_DO_COMPLEX OFF
JENKINS_JOB_TYPE Experimental
MPI_MODULE sems-openmpi/1.8.7
PULLREQUESTNUM 4007
TEST_REPO_ALIAS TRILINOS
TRILINOS_SOURCE_BRANCH Fix-4006
TRILINOS_SOURCE_REPO https://github.com/mhoemmen/Trilinos
TRILINOS_SOURCE_SHA 4c49ff0
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 110b9e6

Build Information

Test Name: Trilinos_pullrequest_gcc_4.8.4

  • Build Num: 2029
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
COMPILER_MODULE sems-gcc/4.8.4
JENKINS_BUILD_TYPE Release
JENKINS_COMM_TYPE MPI
JENKINS_DO_COMPLEX OFF
JENKINS_JOB_TYPE Experimental
MPI_MODULE sems-openmpi/1.8.7
PULLREQUESTNUM 4007
TEST_REPO_ALIAS TRILINOS
TRILINOS_SOURCE_BRANCH Fix-4006
TRILINOS_SOURCE_REPO https://github.com/mhoemmen/Trilinos
TRILINOS_SOURCE_SHA 4c49ff0
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 110b9e6

Build Information

Test Name: Trilinos_pullrequest_gcc_4.9.3_SERIAL

  • Build Num: 336
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
PULLREQUESTNUM 4007
TEST_REPO_ALIAS TRILINOS
TRILINOS_SOURCE_BRANCH Fix-4006
TRILINOS_SOURCE_REPO https://github.com/mhoemmen/Trilinos
TRILINOS_SOURCE_SHA 4c49ff0
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 110b9e6

Using Repos:

Repo: TRILINOS (mhoemmen/Trilinos)
  • Branch: Fix-4006
  • SHA: 4c49ff0
  • Mode: TEST_REPO

Pull Request Author: mhoemmen

Copy link
Contributor

@lucbv lucbv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mhoemmen this looks reasonable as long as 4*n is not a good upper bound for the work array size?
Otherwise is it faster to first compute a more accurate bound and then run the DGEEV?

@mhoemmen
Copy link
Contributor Author

mhoemmen commented Dec 5, 2018

@lucbv See DGEEV documentation:

The dimension of the array WORK. LWORK >= max(1,3*N), and if JOBVL = 'V' or JOBVR = 'V', LWORK >= 4*N. For good performance, LWORK must generally be larger.

The problem is that MKL's implementation of DGEEV has a bug. DGEEV has a branch somewhere inside that decides on what algorithm to use, based on whether LWORK is big enough for a nice blocked algorithm, or just big enough for a non-blocked algorithm. The latter branch of MKL appears to be broken. The work-around is never to reach that branch of MKL, by always picking LWORK optimally. This is what you're supposed to do anyway :-)

Copy link
Member

@bartlettroscoe bartlettroscoe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok

@trilinos-autotester
Copy link
Contributor

Status Flag 'Pull Request AutoTester' - Jenkins Testing: all Jobs PASSED

Pull Request Auto Testing has PASSED (click to expand)

Build Information

Test Name: Trilinos_pullrequest_intel_17.0.1

  • Build Num: 1807
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
PULLREQUESTNUM 4007
TEST_REPO_ALIAS TRILINOS
TRILINOS_SOURCE_BRANCH Fix-4006
TRILINOS_SOURCE_REPO https://github.com/mhoemmen/Trilinos
TRILINOS_SOURCE_SHA 4c49ff0
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 110b9e6

Build Information

Test Name: Trilinos_pullrequest_gcc_4.9.3

  • Build Num: 2370
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
COMPILER_MODULE sems-gcc/4.9.3
JENKINS_BUILD_TYPE Release
JENKINS_COMM_TYPE MPI
JENKINS_DO_COMPLEX OFF
JENKINS_JOB_TYPE Experimental
MPI_MODULE sems-openmpi/1.8.7
PULLREQUESTNUM 4007
TEST_REPO_ALIAS TRILINOS
TRILINOS_SOURCE_BRANCH Fix-4006
TRILINOS_SOURCE_REPO https://github.com/mhoemmen/Trilinos
TRILINOS_SOURCE_SHA 4c49ff0
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 110b9e6

Build Information

Test Name: Trilinos_pullrequest_gcc_4.8.4

  • Build Num: 2029
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
COMPILER_MODULE sems-gcc/4.8.4
JENKINS_BUILD_TYPE Release
JENKINS_COMM_TYPE MPI
JENKINS_DO_COMPLEX OFF
JENKINS_JOB_TYPE Experimental
MPI_MODULE sems-openmpi/1.8.7
PULLREQUESTNUM 4007
TEST_REPO_ALIAS TRILINOS
TRILINOS_SOURCE_BRANCH Fix-4006
TRILINOS_SOURCE_REPO https://github.com/mhoemmen/Trilinos
TRILINOS_SOURCE_SHA 4c49ff0
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 110b9e6

Build Information

Test Name: Trilinos_pullrequest_gcc_4.9.3_SERIAL

  • Build Num: 336
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
PULLREQUESTNUM 4007
TEST_REPO_ALIAS TRILINOS
TRILINOS_SOURCE_BRANCH Fix-4006
TRILINOS_SOURCE_REPO https://github.com/mhoemmen/Trilinos
TRILINOS_SOURCE_SHA 4c49ff0
TRILINOS_TARGET_BRANCH develop
TRILINOS_TARGET_REPO https://github.com/trilinos/Trilinos
TRILINOS_TARGET_SHA 110b9e6


CDash Test Results for PR# 4007.

@trilinos-autotester
Copy link
Contributor

Status Flag 'Pre-Merge Inspection' - SUCCESS: The last commit to this Pull Request has been INSPECTED AND APPROVED by [ bartlettroscoe lucbv ]!

@trilinos-autotester
Copy link
Contributor

Status Flag 'Pull Request AutoTester' - Pull Request will be Automerged

@trilinos-autotester trilinos-autotester merged commit 37a52af into trilinos:develop Dec 6, 2018
@trilinos-autotester
Copy link
Contributor

Merge on Pull Request# 4007: IS A SUCCESS - Pull Request successfully merged

@trilinos-autotester trilinos-autotester removed the AT: AUTOMERGE Causes the PR autotester to automatically merge the PR branch once approvals are completed label Dec 6, 2018
@bartlettroscoe bartlettroscoe removed the stage: in progress Work on the issue has started label Dec 6, 2018
@mhoemmen mhoemmen deleted the Fix-4006 branch December 10, 2018 23:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants