我正在尝试构建 Magma,但我遇到了一些问题,我很确定我在使用早期版本的 CUDA 时没有遇到过这些问题。 (我现在使用的是 6.5)。发生的是 makefile 生成以下命令:
nvcc -fPIC -O3 -DADD_ -Xcompiler -fno-strict-aliasing -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_35,code=compute_35 -I/opt/cuda/include -I../include -I../control -I../sparse-iter/include -c zgemv_conjv.cu -o zgemv_conjv.o
nvcc fatal : Unknown option 'fPIC'
Google 显示 -fPIC 只能与 -Xcompiler 一起使用,因为它不是 nvcc 选项。但如您所见,我的 nvcc 命令中确实有 -Xcompiler。
我试过像这样将 -fPIC 放在 -Xcompiler 后面:
nvcc -O3 -DADD_ -Xcompiler -fPIC -fno-strict-aliasing -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_35,code=compute_35 -I/opt/cuda/include -I../include -I../control -I../sparse-iter/include -c zgemv_conjv.cu -o zgemv_conjv.o
nvcc fatal : Unknown option 'fno-strict-aliasing'
它在下一个非 nvcc 选项上失败,即使它在 -Xcompiler 之后。这是有效的:
nvcc -O3 -DADD_ -Xcompiler -fno-strict-aliasing -Xcompiler -fPIC -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_35,code=compute_35 -I/opt/cuda/include -I../include -I../control -I../sparse-iter/include -c zgemv_conjv.cu -o zgemv_conjv.o
我在哪里复制了 -Xcompiler 开关。 有谁知道这是否是预期的行为?我找不到任何关于它的引用或文档,而且我很确定它不像以前版本的 CUDA 那样工作。会不会是一个错误?
最佳答案
根据 this ,您必须用逗号分隔不同的 -Xcompiler
子选项,或者您必须为每个选项使用单独的 -Xcompiler
,就像您在上次尝试中所做的那样。看起来这是故意的。
关于c++ - NVCC,与 -Xcompiler 的奇怪交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26674885/