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