2012-01-09 280 views
0

[更新]如何从compiler.SourceModule(kernel_code)输出警告消息? 在@flipchart的帮助下,我能够将正确的参数传递给NVC通过PyCUDA,但我仍然不知道,在哪里访问编译器警告。显示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'

源问题是,我花了整整一天的调试,因为我忽略了一个隐性转换,从floatint

Warnings from system-header with "--compiler-options -Wall" since CUDA 3.0 *

回答

5

-Wall选项不是nvcc编译选项,而是被上到支撑编译器(g++cl.exe)传递的一个。您需要传递选项--compiler-options -Wall以指示nvcc该选项用于支持编译器。在你的Python代码:

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

PyCuda似乎想指定为列表项的每个选项,否则它包装在引号整件事这nvcc不喜欢。

+0

我仍然得到'nvcc致命:未知选项'-compiler-options -Wall''我注意到'-Wall'没有在这里列出:http://camolab.googlecode.com/svn-history/r18/ trunk/mycode/cuda/nvcc -help.txt – Framester 2012-01-10 10:13:12

+1

在'compiler-options'前面需要2个连字符:'--compiler-options'。 '-Wall'不会在那里列出,因为它不是和'nvcc'选项。正如我在答复中所说的那样。 'nvcc'将该参数传递给支持的编译器 – flipchart 2012-01-10 14:03:40

+0

对不准确。如果我通过''--compiler-options -Wall'',那么在错误信息中只会出现1个连字符。要在错误消息中获得两个连字符,我必须在函数调用中添加第三个连字符。我不知道为什么会发生。 – Framester 2012-01-10 15:42:37