这是此处讨论的扩展:pycuda shared memory error "pycuda._driver.LogicError: cuLaunchKernel failed: invalid value"
pycuda中是否有一个等效于以下C ++ API调用的方法?
looper
在最近的GPU(Nvidia V100)上工作时,超过48 KB的共享内存需要设置此功能属性。没有它,将出现与上述主题相同的启动错误。设备的“硬”限制是96 KB共享内存(L1缓存保留32 KB)。
有一个已弃用的方法HandlerThread
听起来很有希望,但我找不到应该替换的方法。
谢谢!
答案 0 :(得分:1)
PyCUDA使用驱动程序API,并且用于设置函数动态内存限制的相应函数调用为cuFuncSetAttribute。
我在当前PyCUDA树的任何地方都找不到,因此怀疑它尚未实现。
答案 1 :(得分:0)
我不确定这是否是您要寻找的东西,但这可能会对某个朝这个方向的人有所帮助。
可以使用以下任一方法设置PyCUDA中的动态共享内存大小:
shared
参数。例如:myFunc(arg1, arg2, shared=numBytes, block=(1,1,1), grid=(1,1))
shared_size
自变量。例如:myFunc.prepared_call(grid, block, arg1, arg2, shared_size=numBytes)
其中numBytes
是您希望在运行时分配的内存量(以字节为单位)。