всегда ли nvcc работает как gcc, когда в коде нет элементов CUDA?

Я на Ubuntu 12.04 LTS и установил CUDA 5.5. Я понимаю, что без каких-либо элементов CUDA/GPGPU в коде nvcc ведет себя как компилятор C/C++ — больше похоже на gcc, однако есть ли исключения из этого правила? если нет, то могу ли я использовать nvcc как gcc для кодов C/C++, отличных от CUDA?


person Arkapravo    schedule 25.08.2013    source источник
comment
Кажется странным, что вы не использовали gcc напрямую.   -  person apartridge    schedule 25.08.2013
comment
Я хочу увидеть ограничения nvcc, это не вопрос полезности, а сравнение gcc и nvcc!   -  person Arkapravo    schedule 25.08.2013
comment
Я думаю, что что-то об этом есть в руководстве по CUDA. Я бы ожидал проблем с аргументами командной строки...   -  person apartridge    schedule 25.08.2013
comment
Можете ли вы дать мне ссылку на эту ссылку?   -  person Arkapravo    schedule 25.08.2013
comment
Погуглив, вы найдете это; docs.nvidia.com/cuda/cuda-c-programming-guide. Посмотрите раздел о компиляции с NVCC, там может быть некоторая информация по этому поводу.   -  person apartridge    schedule 25.08.2013
comment
Спасибо, посмотрю!   -  person Arkapravo    schedule 25.08.2013
comment
Вы можете передать параметры gcc, которые не поддерживаются nvcc, используя -Xcompiler OPTIONS   -  person Pavan Yalamanchili    schedule 25.08.2013


Ответы (2)


Нет, nvcc не ведет себя как компилятор C/C++ для основного кода. Он делает следующее:

  1. отделить устройство от кода хоста в два отдельных файла
  2. скомпилировать код устройства (с nvcc, cudafe, ptxas)
  3. вызвать gcc для кода хоста

Если код устройства не существует, шаги 1) и 2) не выполняются. Таким образом, nvcc на самом деле не является компилятором, это драйвер компилятора, который вызывает правильные компиляторы для каждой части в правильном порядке. Чтобы ответить на ваш вопрос, если вы используете nvcc только для компиляции кода хоста, вы все равно используете gcc.

person kunzmi    schedule 25.08.2013
comment
Вы также можете прочитать руководство пользователя nvcc. . - person Robert Crovella; 26.08.2013

Он не принимает опции для подавления предупреждений (-W*)

person Leo    schedule 03.04.2015