修复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++编译器 |