我正在尝试构建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'

即使在-Xcompiler后面,它在下一个非nvcc选项上也会失败。这是可行的:
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/

10-11 00:46