NVCC,与-Xcompiler的奇怪交互

时间:2014-10-31 12:36:59

标签: c++ cuda compilation compiler-errors

我正在尝试构建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中没有像以前一样工作。这可能是个错误吗?

1 个答案:

答案 0 :(得分:3)

根据this,您必须使用逗号分隔不同的-Xcompiler子选项,或者您必须为每个选项使用单独的-Xcompile,就像您在上次尝试时所做的那样。看起来这是有意的。