我clang++-12
在 CMake 中设置为 CUDA 编译器如下:
cmake .. -DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_CUDA_ARCHITECTURES="75" \
-DCMAKE_CUDA_COMPILER=clang++-12 \
-DCMAKE_CXX_COMPILER=clang++-12 -DCMAKE_C_COMPILER=clang-12
我尝试用它编译一个大型代码库,但基本上它对于.cu
包含 CUB 的文件失败并使用一些纹理并出现以下错误:
clang: warning: Unknown CUDA version. cuda.h: CUDA_VERSION=11040. Assuming the latest supported version 10.1 [-Wunknown-cuda-version]
clang: warning: argument unused during compilation: '-G -Werror' [-Wunused-command-line-argument]
In file included from /scratch/src/libgpu/src/skelapp/skel_dummy.cu:2:
In file included from /scratch/src/libgpu/include/gg.cuh:5:
In file included from /scratch/src/libgpu/include/AppendOnlyList.cuh:6:
In file included from /usr/local/cuda-11.4/include/cub/cub.cuh:61:
In file included from /usr/local/cuda-11.4/include/cub/device/device_spmv.cuh:41:
In file included from /usr/local/cuda-11.4/include/cub/device/dispatch/dispatch_spmv_orig.cuh:42:
In file included from /usr/local/cuda-11.4/include/cub/device/dispatch/../../agent/agent_spmv_orig.cuh:47:
/usr/local/cuda-11.4/include/cub/device/dispatch/../../agent/../iterator/tex_ref_input_iterator.cuh:133:39: error: reference to __host__ variable 'ref' in __device__ function
words[i] = tex1Dfetch(ref, (tex_offset * TEXTURE_MULTIPLE) + i);
^
In file included from <built-in>:1:
In file included from /usr/lib/llvm-12/lib/clang/12.0.1/include/__clang_cuda_runtime_wrapper.h:333:
/usr/local/cuda-11.4/include/texture_indirect_functions.h:111:4: error: use of undeclared identifier '__nv_tex_surf_handler'
__nv_tex_surf_handler("__itex1Dfetch", ptr, obj, x);
^
/usr/local/cuda-11.4/include/texture_indirect_functions.h:120:3: note: in instantiation of function template specialization 'tex1Dfetch<int>' requested here
tex1Dfetch(&ret, texObject, x);
^
/scratch/src/libgpu/include/worklist.cuh:393:12: note: in instantiation of function template specialization 'tex1Dfetch<int>' requested here
item = tex1Dfetch<int>(tx, id);
^
2 errors generated when compiling for sm_75.
make[2]: *** [libgpu/CMakeFiles/some_gpu.dir/build.make:146: libgpu/CMakeFiles/some_gpu.dir/src/skelapp/skel_dummy.cu.o] Error 1
如何解决这个问题?我应该向 NVIDIA 或 LLVM 提交错误吗?
环境是带有 LLVM/Clang 12 和 CUDA Toolkit 11.4.1 的 Ubuntu 20.04。CUB 与 CUDA 工具包捆绑在一起。