Показать все предупреждения NVCC в PyCUDA - PullRequest
0 голосов
/ 09 января 2012

[обновление] Как вывести предупреждающие сообщения из compiler.SourceModule(kernel_code)?С помощью @flipchart мне удалось передать правильные параметры в NVCC через PyCUDA, но я до сих пор не знаю, где получить доступ к предупреждениям компилятора.

[оригинальный вопрос]

Используя NVCC напрямую, можно использовать переключатель компилятора -Wall*.Как архивировать это в pycuda?

Я пытался mod = compiler.SourceModule(kernel_code,options=['-Wall']), но сообщение об ошибке гласит:

pytools.prefork.ExecError: error invoking 'nvcc --cubin -Wall -arch sm_11 -I/usr/local/lib/python2.6/dist-packages/pycuda-0.94.2-py2.6-linux-x86_64.egg/pycuda/../include/pycuda kernel.cu': status 255 invoking 'nvcc --cubin -Wall -arch sm_11 -I/usr/local/lib/python2.6/dist-packages/pycuda-0.94.2-py2.6-linux-x86_64.egg/pycuda/../include/pycuda kernel.cu': nvcc fatal : Unknown option 'Wall'

Проблема в том, что я потратилвесь день отладки, потому что я упустил неявное преобразование из float в int.

* Предупреждения из системного заголовка с "--compiler-options -Wall" начиная с CUDA 3.0

1 Ответ

5 голосов
/ 10 января 2012

Параметр -Wall - это не параметр компилятора nvcc, а параметр, передаваемый вспомогательному компилятору (g++ или cl.exe). Вам нужно передать параметр --compiler-options -Wall, чтобы указать nvcc, что этот параметр предназначен для поддерживающего компилятора. В вашем коде Python:

mod = compiler.SourceModule(kernel_code,options=['--compiler-options','-Wall'])

PyCuda, кажется, хочет, чтобы каждая опция была указана как элемент списка, в противном случае все это заключено в кавычки, которые nvcc не нравятся.

...