You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
By disabling various bits of CI for hackathon work, we are postponing some issues for later.
So far the known issues are:
Code formatting
cmake-format and clang-format will have to be fixed later.
MOD2C + GPU builds
It seems that passing -mp=gpu to nvc++ breaks compilation of the OpenACC code generated by the MOD2C DSL translator. Specifically with -mp=gpu then this is an error:
NVC++-S-1053-External and Static variables are not supported in acc routine - _ZN10coreneuron11nrn_threadsE (x86_64/corenrn/mod2c/exp2syn.cpp: 385)
while without -mp=gpu it is a warning:
NVC++-W-1053-External and Static variables are not supported in acc routine - _ZN10coreneuron11nrn_threadsE (x86_64/corenrn/mod2c/exp2syn.cpp: 385)
the C++ code in question does not contain any OpenMP directives, only OpenACC. A rough outline of the usage is:
extern NrnThread* nrn_threads; // this is in a header filestaticvoid_net_receive_kernel(Point_process* pnt) {
NrnThread* nt = nrn_threads + pnt->_tid; // <--// ...
}
void_net_buf_receive(NrnThread* _nt) {
Point_process* _pnt = _nt->pntprocs;
int _pnt_length = _nt->n_pntproc - _nrb->_pnt_offset;
#pragma acc parallel loop present(_pnt[0:_pnt_length], nrn_threads[0:nrn_nthread])
for(int _j = 0; ...) {
_net_receive_kernel(_pnt + _j);
}
}
Adding #pragma omp target to the CoreNEURON source code breaks our CPU-only builds with the Intel compiler. Note that we already have OpenMP enabled in these builds, because it is used for higher level (CPU thread) parallelism.
the build system explicitly does not support enabling NVHPC + MOD2C + GPU + OpenMP offload
we do not write #pragma omp target ... anywhere: we have nrn_pragma(omp target ...) instead. This only expands to anything in GPU-enabled builds, so building for CPU with the Intel compiler is fine.
By disabling various bits of CI for hackathon work, we are postponing some issues for later.
So far the known issues are:
Code formatting
cmake-format
andclang-format
will have to be fixed later.MOD2C + GPU builds
It seems that passing
-mp=gpu
tonvc++
breaks compilation of the OpenACC code generated by the MOD2C DSL translator. Specifically with-mp=gpu
then this is an error:while without
-mp=gpu
it is a warning:the C++ code in question does not contain any OpenMP directives, only OpenACC. A rough outline of the usage is:
(internal link)
Intel compiler builds without GPU support
Adding
#pragma omp target
to the CoreNEURON source code breaks our CPU-only builds with the Intel compiler. Note that we already have OpenMP enabled in these builds, because it is used for higher level (CPU thread) parallelism.(internal link)
The text was updated successfully, but these errors were encountered: