Closed aowenson-imm closed 6 months ago
Thanks @aowenson-imm, your merge request was merged and it will be in the next dorado release.
Hi @aowenson-imm,
The NVHPC
compiler is unsupported in dorado
and probably won't result in any performance improvements over regular GCC
/clang
since all the CUDA
kernels are precompiled. I would advise building without setting CC
or CXX
so that GCC
/clang
are used (assuming that either is installed). We could accept a patch to Warnings.cmake
to take the clang
path for NVHPC
, but since we don't use it internally there's no guarantee that we won't break it in the future when adding warnings to the clang
path.
Thanks, Ben
I tried CC=gcc CXX=g++
, which allows the compilation to progress much further than with nvc++
, but it fails to find a CUDA library:
[ 73%] Built target dorado_io_lib
gmake[2]: *** No rule to make target '/path/to/ourmodules/cuda/12.2/cuda/12.2/lib64/libcufft_static_nocallback.a', needed by 'bin/dorado'. Stop.
The library does exist, just not where gmake is looking. Using nvc++ finds it, but then there are other undefined
errors - I will try to fix these.
https://github.com/nanoporetech/dorado/issues/675
What's your cmake version? It needs to be CMake >= 3.23
Thanks @HalfPhoton , that was my mistake. Latest cmake and forcing CC=gcc CXX=g++
allows build to complete.
When loading CUDA via a GNU environment module, it is standard practice to map compiler environment variables to Nvidia compilers, e.g.:
cmake handles this fine, setting
CMAKE_CXX_COMPILER_ID = NVHPC
. But Dorado's cmake logic does not expect this:To get this error message requires patch #726, otherwise syntax error.
Steps to reproduce the issue:
Assume CUDA paths loaded in environment, e.g.:
module load cuda/12
Run environment:
Possible solution
Editing
Warnings/cmake
to treatNVHPC
asClang
allows command to complete. But is this the correct solution?