2012-01-09 278 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