当代码中没有CUDA元素时,nvcc是否始终作为gcc工作?

当代码中没有CUDA元素时,nvcc是否始终作为gcc工作?,cuda,ubuntu-12.04,nvcc,Cuda,Ubuntu 12.04,Nvcc,我在Ubuntu12.04LTS上,已经安装了CUDA5.5。我知道,如果代码中没有任何CUDA/GPGPU元素,nvcc的行为就像一个C/C++编译器——更像是gcc,但是这个规则有什么例外吗?如果不是,那么我可以将nvcc用作非CUDA C/C++代码的gcc吗 不,nvcc的行为不像主机代码的C/C++编译器。它的作用如下: 将设备与主机代码分离为两个单独的文件 编译设备代码(使用nvcc、cudafe、ptxas) 为主机代码调用gcc 如果不存在设备代码,则在步骤1)和2)中不执行任何

我在Ubuntu12.04LTS上,已经安装了CUDA5.5。我知道,如果代码中没有任何CUDA/GPGPU元素,nvcc的行为就像一个C/C++编译器——更像是gcc,但是这个规则有什么例外吗?如果不是,那么我可以将nvcc用作非CUDA C/C++代码的gcc吗

不,nvcc的行为不像主机代码的C/C++编译器。它的作用如下:

  • 将设备与主机代码分离为两个单独的文件
  • 编译设备代码(使用nvcc、cudafe、ptxas)
  • 为主机代码调用gcc

  • 如果不存在设备代码,则在步骤1)和2)中不执行任何操作。所以nvcc实际上不是编译器,它是一个编译器驱动程序,它以正确的顺序为每个部分调用正确的编译器。为了回答您的问题,如果您仅使用nvcc编译主机代码,您仍然使用gcc。

    它不接受抑制警告的选项(-W*)

    您不直接使用gcc似乎很奇怪。我希望看到nvcc的限制,这不是实用程序的问题,而是gcc和nvcc的比较!我认为CUDA手册中有关于这方面的内容。我认为命令行参数可能会出现问题……您可以让我参考该链接吗?您可以使用
    -Xcompiler options
    传递nvcc不支持的gcc选项。您可能还想阅读该链接。