2013-10-14 59 views
0

我試圖從另一個調用內核CUDA內核,但出現以下錯誤麻煩:有無GTX泰坦,具有動態並行

Traceback (most recent call last): 
    File "C:\temp\GPU Program Shell.py", line 22, in <module> 
    """) 
    File "C:\Python33\lib\site-packages\pycuda\compiler.py", line 262, in __init__ 
    arch, code, cache_dir, include_dirs) 
    File "C:\Python33\lib\site-packages\pycuda\compiler.py", line 252, in compile 
    return compile_plain(source, options, keep, nvcc, cache_dir) 
    File "C:\Python33\lib\site-packages\pycuda\compiler.py", line 134, in compile_plain 
    cmdline, stdout=stdout.decode("utf-8"), stderr=stderr.decode("utf-8")) 
pycuda.driver.CompileError: nvcc compilation of   c:\users\karste~1\appdata\local\temp\tmpgq8t45\kernel.cu failed 
[command: nvcc --cubin -arch sm_35 -m64 -Ic:\python33\lib\site-packages\pycuda\cuda kernel.cu] 
[stderr: 
kernel.cu(14): error: kernel launch from __device__ or __global__ functions requires separate   compilation mode 

我的理解是,這是已經與動態並行做與此錯誤有關的另一個問題是由於沒有適當硬件的用戶。我有一個GTX泰坦,但是,它應該是兼容的。我錯過了什麼? \ python33 \ lib中\: ' - 的cubin', ' - RDC =真', ' - - lcudart', '-lcudadevrt,','Ic的

EDIT

加入「選項= [後站點包\ pycuda \ CUDA kernel.cu']」以SourceModule,我得到以下錯誤:

Traceback (most recent call last): 
    File "C:\temp\GPU Program Shell.py", line 22, in <module> 
""", options=['--cubin','-rdc=true' ,'-lcudart', '-lcudadevrt,','-Ic:\python33\lib\site-packages\pycuda\cuda kernel.cu']) 
    File "C:\Python33\lib\site-packages\pycuda\compiler.py", line 265, in __init__ 
self.module = module_from_buffer(cubin) 
pycuda._driver.LogicError: cuModuleLoadDataEx failed: not found - 

回答

5

Python是編制在飛行的CUDA代碼:

nvcc --cubin -arch sm_35 -m64 -Ic:\python33\lib\site-packages\pycuda\cuda kernel.cu 

爲了編譯包含dynam的代碼ic並行性,需要在編譯命令中添加特定的開關以啓用單獨的編譯,設備代碼鏈接,設備運行時庫的鏈接和適當的體系結構目標(sm_35)。

有效nvcc命令組合的一些示例在programming guide section on dynamic parallelism中給出。

您的命令行應該是這個樣子:

nvcc --cubin -arch=sm_35 -m64 -rdc=true -Ic:\python33\lib\site-packages\pycuda\cuda kernel.cu -lcudadevrt 

您也不妨閱讀NVCC手冊上separate compilation

+0

感謝您的指點,羅伯特。當我回家時我會檢查這一點。 –

+0

我通過將-rdc,-IC和-lcudadevrt開關添加到源模塊的選項列表中進行了更改。我將錯誤編輯到原始問題中!生活是悲傷的。 –

+0

現在這是一個不同的問題。 PyCUDA沒有找到cubin。這可能有多種原因,例如代碼體系結構不匹配,編譯器緩存問題,某種編譯錯誤或其他問題。你在32位或64位環境中工作嗎?你能夠運行其他pycuda代碼嗎?我不是pycuda專家,所以如果你發表一個涉及這個問題的新問題,你可能會獲得更好的牽引力。 –