修复NVIDIA HPC SDK与CMake兼容问题
CMake和GCC+NVCC+OpenMPI那一套屁事没有,但CMake和PGI+NVCC+OpenMPI就经常出现各种各样的毛病,哦现在PGI改名叫NVIDIA HPC SDK了,改名也只是把错误信息改了改,反正还是照样报错。
找不到CUDA Toolkit
CMake报Could NOT find CUDA (missing: CUDA_INCLUDE_DIRS CUDA_CUDART_LIBRARY)这样的错误,可以通过手动指定CUDA Toolkit的目录解决。有趣的是NVIDIA HPC SDK里自带的精简版CUDA Toolkit是可以给CMake使用的。
给CMake指定参数CUDA_TOOLKIT_ROOT_DIR,比如:
1 | # 使用NVIDIA HPC SDK里自带的精简版Toolkit |
NVCC不兼容编译器
在make的时候报错nvcc fatal : Unsupported PGI compiler found. pgc++ is the only PGI compiler that is supported.或者Host compiler targets unsupported OS,这个时候可以通过make VERBOSE=1来输出更多调试信息。
在输出中的出错的那几句话中找到调用nvcc的命令,然后找名为--ccbin的参数,这个参数可能会被愚蠢的CMake设置成了gcc或者nvc等一票C编译器而不是C++编译器,因此通过手动指定一个Host端的C++编译器可以解决问题。
给CMake指定参数DCUDA_HOST_COMPILER,比如:
1 | # 使用mpic++包装的C++编译器 |