Cuda 有GTX Titan,在动态并行性方面有问题

Cuda 有GTX Titan,在动态并行性方面有问题,cuda,nvcc,pycuda,Cuda,Nvcc,Pycuda,我试图从另一个内核调用CUDA内核,但出现以下错误: 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, inclu

我试图从另一个内核调用CUDA内核,但出现以下错误:

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
回溯(最近一次呼叫最后一次):
文件“C:\temp\GPU程序Shell.py”,第22行,在
""")
文件“C:\Python33\lib\site packages\pycuda\compiler.py”,第262行,在\uuu init中__
arch、代码、缓存目录、包含目录)
文件“C:\Python33\lib\site packages\pycuda\compiler.py”,第252行,在compile中
返回编译目录(源代码、选项、保留、nvcc、缓存目录)
文件“C:\Python33\lib\site packages\pycuda\compiler.py”,第134行,在compile\u plain中
cmdline,stdout=stdout.decode(“utf-8”),stderr=stderr.decode(“utf-8”))
pycuda.driver.CompileError:c:\users\karste~1\appdata\local\temp\tmpgq8t45\kernel.cu的nvcc编译失败
[命令:nvcc--cubin-arch sm_35-m64-Ic:\python33\lib\site packages\pycuda\cuda kernel.cu]
[标准:
cu(14):错误:从_设备_或_全局_)函数启动内核需要单独的编译模式
我的理解是,这与动态并行性有关,与此错误相关的另一个问题是由于用户没有合适的硬件。但是,我有一个GTX Titan,因此它应该兼容。我缺少什么

编辑

将“options=['--cubin'、'-rdc=true'、'-lcudart'、'-lcudadevrt'、'-Ic:\python33\lib\site packages\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 - 
回溯(最近一次呼叫最后一次):
文件“C:\temp\GPU程序Shell.py”,第22行,在
“”,options=['--cubin','-rdc=true','-lcudart','-lcudadevrt','-Ic:\python33\lib\site packages\pycuda\cuda kernel.cu'])
文件“C:\Python33\lib\site packages\pycuda\compiler.py”,第265行,在_init中__
self.module=来自缓冲区的模块(立方英寸)
pycuda.\u driver.LogicError:cuModuleLoadDataEx失败:未找到-

Python正在动态编译CUDA代码:

nvcc --cubin -arch sm_35 -m64 -Ic:\python33\lib\site-packages\pycuda\cuda kernel.cu
为了编译包含动态并行性的代码,有必要向compile命令添加特定的开关,以启用单独的编译、设备代码链接、设备运行库链接和适当的体系结构目标(
sm_35

中给出了一些有效的
nvcc
命令组合示例

您的命令行应该类似于:

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

您还可以阅读上的nvcc手册。

Python正在动态编译CUDA代码:

nvcc --cubin -arch sm_35 -m64 -Ic:\python33\lib\site-packages\pycuda\cuda kernel.cu
为了编译包含动态并行性的代码,有必要向compile命令添加特定的开关,以启用单独的编译、设备代码链接、设备运行库链接和适当的体系结构目标(
sm_35

中给出了一些有效的
nvcc
命令组合示例

您的命令行应该类似于:

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

你也可以阅读上的nvcc手册。

谢谢你的指点,Robert。我回家后会检查一下。我通过在源模块的选项列表中添加-rdc、-IC和-lcudadevrt开关进行了更改。我将错误编辑为原始问题!生活很悲惨。现在是不同的问题。PyCUDA是找不到cubin。可能有很多原因,例如代码体系结构不匹配、编译器缓存问题、某种编译错误或其他问题。您是否在32位或64位环境中工作?您是否能够运行其他pycuda代码?我不是pycuda专家,因此您可能会得到更好的支持如果你发布了一个新的问题来解决这个问题。嗯,好的。我在一个64位的C++环境中工作,我可以运行其他的PycUDA代码。我会接受你的推荐并发布一个问题,但是不管我做什么,动态并行性都会遇到障碍。我们的,遇到了一个LINK2019错误。上帝恨我。对于任何在编辑之前寻找单独编译问题答案的人,Robert都找到了答案。感谢指针,Robert。我回家后会检查一下。我通过在源代码模块的选项列表中添加-rdc,-IC和-lcudadevrt开关进行了更改e、 我将错误编辑到原始问题中!生活很悲惨。现在是另一个问题。PyCUDA没有找到cubin。这可能有很多原因,例如代码体系结构不匹配、编译器缓存问题、某种编译错误或其他问题。您是在32位还是64位环境中工作onment?你能运行其他pycuda代码吗?我不是pycuda专家,所以如果你发布一个新问题来解决这个问题,你可能会得到更好的关注。嗯,好的。我在64位环境中工作,能够运行其他pycuda代码。我会接受你的建议并发布另一个问题,但看起来不管我做什么,dynamic parallELSIST碰到了一个障碍。我昨晚在C++中尝试了一个类似的实验,在这个新问题被搜索了几个小时后,碰到了一个Link 2019错误。上帝恨我。对于任何想要在编辑之前发现的单独的编译问题的答案,罗伯特都钉住了它。