[更新] 如何从compiler.SourceModule(kernel_code)
输出警告消息?
在@flipchart的帮助下,我能够通过PyCUDA将正确的参数传递给NVCC,但我仍然不知道,在哪里可以访问编译器警告。
[原始问题]
直接使用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
的不明确转换。
* Warnings from system-header with "--compiler-options -Wall" since CUDA 3.0
答案 0 :(得分:5)
-Wall
选项不是nvcc
编译器选项,而是传递给支持编译器(g++
或cl.exe
)的选项。您需要传递选项--compiler-options -Wall
以指示nvcc
该选项是否支持编译器。在你的python代码中:
mod = compiler.SourceModule(kernel_code,options=['--compiler-options','-Wall'])
PyCuda
似乎希望将每个选项指定为列表项,否则它会将整个内容包装在nvcc
不喜欢的引号中。