Fix the issue with Eigen+OpenACC while executing on GPU#726
Conversation
* Tweak NVHPC warning suppressions. This makes them work properly in standalone builds, when NMODL is not a submodule of CoreNEURON. * Add const version of PyAst::get_shared_ptr. Fixes NVHPC compiler warning: warning #612-D: overloaded virtual function "nmodl::ast::Ast::get_shared_ptr" is only partially overridden in class "PyAst". * Remove unused variable. Fixes compiler warning. * Tweak code so clang-format-{11,12} agree. Otherwise clang-format-12 added whitespace that clang-format-11 did not. * Call flex and bison with relative paths. This avoids #line directives and asserts containing the absolute path of the build directory, which should in turn improve ccache performance in the CI. * Fix comment and add note about ccache misses.
* Fixes compilation issue when the operator() was declared as const while it changed some of values outside of its scope in the sympy solver * Use DefUseAnalyzeVisitor to find out whether the operator() is Using or Defining any of the variables outside its scope * Update DefUseAnalyzeVisitor to be able to process LOCAL variables as well, given precedence to GLOBAL/RANGE variables, when they have the same name * Added related unit tests * Fix codegen issue in CONSTRUCTOR and DESTRUCTOR blocks code when compiled for CoreNEURON Fixes #691 FIxes #692
<update conspiracy theory once Christos and Olli confirms that testcorenrn and channel-benchmark tests are working>
|
Logfiles from GitLab pipeline #15555 (:no_entry:) have been uploaded here! Status and direct links: |
|
Logfiles from GitLab pipeline #15561 (:no_entry:) have been uploaded here! Status and direct links: |
|
Logfiles from GitLab pipeline #15610 (:no_entry:) have been uploaded here! Status and direct links: |
|
Logfiles from GitLab pipeline #15609 (:no_entry:) have been uploaded here! Status and direct links: |
|
Part of this PR should close #725. |
|
Superseded by #728
This was related to use of |
* 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 #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 #311
fixes #135
…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
Update conspiracy theory here once @kotsaloscv (and @olupton soon)
confirms that testcorenrn and channel-benchmark tests are working 😅
Branches to use:
I quickly testcorenrn/hhkin and looks good.
@olupton : seems like there is something additional in channel-benchmark. Will look into details shortly...