This repository was archived by the owner on Mar 25, 2025. It is now read-only.
Compatibility issues between Eigen and GPUs (OpenACC/CUDA)#728
Merged
Conversation
added 7 commits
August 27, 2021 11:20
… branch (BBP repo) + suitable API
… branch (BBP repo) + suitable API : WIP
… branch (BBP repo) + suitable API : WIP
This was
linked to
issues
Sep 6, 2021
Collaborator
|
Logfiles from GitLab pipeline #15814 (:white_check_mark:) have been uploaded here! Status and direct links: |
iomaganaris
reviewed
Sep 6, 2021
iomaganaris
left a comment
Contributor
There was a problem hiding this comment.
LGTM. Just a few questions
… branch (BBP repo) + suitable API
Collaborator
|
Logfiles from GitLab pipeline #15838 (:white_check_mark:) have been uploaded here! Status and direct links: |
Codecov Report
@@ Coverage Diff @@
## master #728 +/- ##
==========================================
- Coverage 60.71% 60.67% -0.05%
==========================================
Files 200 200
Lines 33362 33385 +23
==========================================
Hits 20255 20255
- Misses 13107 13130 +23
Continue to review full report at Codecov.
|
iomaganaris
approved these changes
Sep 6, 2021
pramodk
approved these changes
Sep 6, 2021
pramodk
left a comment
Contributor
There was a problem hiding this comment.
Apart from minor comment, LGTM
This was referenced Sep 6, 2021
pramodk
pushed a commit
to BlueBrain/CoreNeuron
that referenced
this pull request
Sep 7, 2021
* Resolve Eigen-OpenACC compatibility issues - See the changes done in NMODL: BlueBrain/nmodl/pull/728 * As part of this PR we now build `partial_piv_lu.cu` from NMODL * Some CUDA warnings are suppressed because they are assumed safe and can be ignored by end users. * Update README to fix code examples
pramodk
pushed a commit
to neuronsimulator/nrn
that referenced
this pull request
Nov 2, 2022
…ueBrain/CoreNeuron#624) * Resolve Eigen-OpenACC compatibility issues - See the changes done in NMODL: BlueBrain/nmodl/pull/728 * As part of this PR we now build `partial_piv_lu.cu` from NMODL * Some CUDA warnings are suppressed because they are assumed safe and can be ignored by end users. * Update README to fix code examples CoreNEURON Repo SHA: BlueBrain/CoreNeuron@2b3e746
JCGoran
pushed a commit
to neuronsimulator/nrn
that referenced
this pull request
Mar 12, 2025
…rain/nmodl#728) * Two factors contribute to the above solution: - New eigen branch (version 3.5 and above). Currently we are using a mirrored version of Eigen in BlueBrain organisation https://github.com/BlueBrain/eigen/releases/tag/v3.5-alpha - An API that makes possible to call any Eigen `__device__` function from within OpenACC regions. * More details: Eigen-3.5+ provides better GPU support; however, some functions cannot be called directly from within OpenACC regions. Therefore, we need to wrap them in a special API (decorate them with `__device__` & `acc routine` tokens), which allows us to eventually call them from OpenACC. Calling these functions from CUDA kernels presents no issue. * From BlueBrain/nmodl#726: Avoid use `[]` operator with eigen Matrix objects. This results into runtime error with OpenACC and PGI compiler. * Note that this should works in combination with BlueBrain/CoreNeuron/pull/624 fixes BlueBrain/nmodl#311 fixes BlueBrain/nmodl#135 NMODL Repo SHA: BlueBrain/nmodl@5f4462a
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR solves the compatibility issues between Eigen and GPUs (OpenACC/CUDA).
Two factors contribute to the above solution:
__device__function from within OpenACC regions. In more details, Eigen-3.5+ provides better GPU support; however, some functions cannot be called directly from within OpenACC regions. Therefore, we need to wrap them in a special API (decorate them with__device__&acc routinetokens), which allows us to eventually call them from OpenACC. Calling these functions from CUDA kernels presents no issue ...This PR closes/replaces the following PRs:
This PR works in combination with CoreNEURON's PR # 624 (minor changes to include the new Eigen API).
This PR closes the following issues: