Include Eigen API from NMODL : Eigen OpenACC compatibility issues#624
Conversation
|
Logfiles from GitLab pipeline #15258 (:white_check_mark:) have been uploaded here! Status and direct links:
|
|
Logfiles from GitLab pipeline #15284 (:white_check_mark:) have been uploaded here! Status and direct links:
|
…en/OpenACC issues (API included)
|
Logfiles from GitLab pipeline #15336 (:white_check_mark:) have been uploaded here! Status and direct links:
|
iomaganaris
left a comment
There was a problem hiding this comment.
LGTM
We should just update the NMODL submodule when the corresponding PR is merged in NMODL
|
Just to note, locally I see: [ 96%] Building CUDA object external/coreneuron/coreneuron/CMakeFiles/coreneuron.dir/__/__/__/include/partial_piv_lu/partial_piv_lu.cu.o
cd /gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/external/coreneuron/coreneuron && /gpfs/bbp.cscs.ch/ssd/apps/hpc/jenkins/deploy/externals/2021-01-06/linux-rhel7-x86_64/gcc-9.3.0/cuda-11.0.2-kb4wci/bin/nvcc -DCORENEURON_BUILD -DCORENEURON_CUDA_PROFILING -DCORENEURON_ENABLE_GPU -DDISABLE_HOC_EXP -DEIGEN_DONT_VECTORIZE=1 -DENABLE_SPLAYTREE_QUEUING -DHAVE_MALLOC_H -DLAYOUT=0 -DMPICH_SKIP_MPICXX=1 -DMPI_NO_CPPBIND=1 -DNRNMPI=1 -DOMPI_SKIP_MPICXX=1 -I/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include -I/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/external/coreneuron/coreneuron/utils/randoms -I/gpfs/bbp.cscs.ch/ssd/apps/hpc/jenkins/deploy/externals/2021-01-06/linux-rhel7-x86_64/gcc-9.3.0/hpe-mpi-2.22.hmpt-r52ypu/include -I/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/external/coreneuron -I/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/external/coreneuron/coreneuron -I/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/coreneuron -isystem=/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/external/coreneuron/external/Random123/include -isystem=/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/external/coreneuron/external/CLI11/include --generate-code=arch=compute_60,code=[compute_60,sm_60] --generate-code=arch=compute_70,code=[compute_70,sm_70] --expt-relaxed-constexpr -O2 -g -DNDEBUG -Xcompiler=-fPIC -x cu -dc /gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/partial_piv_lu/partial_piv_lu.cu -o CMakeFiles/coreneuron.dir/__/__/__/include/partial_piv_lu/partial_piv_lu.cu.o
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(223): warning: __host__ annotation is ignored on a function("DenseStorage") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(223): warning: __device__ annotation is ignored on a function("DenseStorage") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(233): warning: __host__ annotation is ignored on a function("operator=") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(233): warning: __device__ annotation is ignored on a function("operator=") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(248): warning: __host__ annotation is ignored on a function("DenseStorage") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(248): warning: __device__ annotation is ignored on a function("DenseStorage") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(249): warning: __host__ annotation is ignored on a function("operator=") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(249): warning: __device__ annotation is ignored on a function("operator=") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/partial_piv_lu/partial_piv_lu.cu(12): warning: a __host__ function("partialPivLu") redeclared with __host__ __device__, hence treated as a __host__ __device__ function
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(223): warning: __host__ annotation is ignored on a function("DenseStorage") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(223): warning: __device__ annotation is ignored on a function("DenseStorage") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(233): warning: __host__ annotation is ignored on a function("operator=") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(233): warning: __device__ annotation is ignored on a function("operator=") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(248): warning: __host__ annotation is ignored on a function("DenseStorage") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(248): warning: __device__ annotation is ignored on a function("DenseStorage") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(249): warning: __host__ annotation is ignored on a function("operator=") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(249): warning: __device__ annotation is ignored on a function("operator=") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/partial_piv_lu/partial_piv_lu.cu(12): warning: a __host__ function("partialPivLu") redeclared with __host__ __device__, hence treated as a __host__ __device__ function
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(223): warning: __host__ annotation is ignored on a function("DenseStorage") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(223): warning: __device__ annotation is ignored on a function("DenseStorage") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(233): warning: __host__ annotation is ignored on a function("operator=") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(233): warning: __device__ annotation is ignored on a function("operator=") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(248): warning: __host__ annotation is ignored on a function("DenseStorage") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(248): warning: __device__ annotation is ignored on a function("DenseStorage") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(249): warning: __host__ annotation is ignored on a function("operator=") that is explicitly defaulted on its first declaration
/gpfs/bbp.cscs.ch/home/kumbhar/workarena/systems/bbpv/repos/bbp/nrn/build_gpu_nmodl/include/Eigen/src/Core/DenseStorage.h(249): warning: __device__ annotation is ignored on a function("operator=") that is explicitly defaulted on its first declaration |
* 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
|
Logfiles from GitLab pipeline #15925 (:no_entry:) have been uploaded here! Status and direct links:
|
|
Logfiles from GitLab pipeline #15928 (:no_entry:) have been uploaded here! Status and direct links:
|
|
Logfiles from GitLab pipeline #15931 (:no_entry:) have been uploaded here! Status and direct links:
|
|
Logfiles from GitLab pipeline #15936 (:no_entry:) have been uploaded here! Status and direct links:
|
@pramodk : I confirm this. I see these warnings as well but I do not think that we have to worry about them for now. I think that once we update to Eigen 3.5 (official release) all these will disappear. |
If these are supposed to be treated as "safe", is there way to disable them? (thinking from end user perspective, to avoid confusion ) |
|
Logfiles from GitLab pipeline #15981 (:white_check_mark:) have been uploaded here! Status and direct links:
|
|
Logfiles from GitLab pipeline #16018 (:white_check_mark:) have been uploaded here! Status and direct links:
|
…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
Include Eigen API from NMODL : Eigen OpenACC compatibility issues
CI_BRANCHES:SPACK_BRANCH=pramodk/eigen-bbp-version,