pycuda共享内存达到设备硬限制

时间:2019-06-24 10:29:35

标签: pycuda

这是此处讨论的扩展: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听起来很有希望,但我找不到应该替换的方法。

谢谢!

2 个答案:

答案 0 :(得分:1)

PyCUDA使用驱动程序API,并且用于设置函数动态内存限制的相应函数调用为cuFuncSetAttribute

我在当前PyCUDA树的任何地方都找不到,因此怀疑它尚未实现。

答案 1 :(得分:0)

我不确定这是否是您要寻找的东西,但这可能会对某个朝这个方向的人有所帮助。

可以使用以下任一方法设置PyCUDA中的动态共享内存大小:

    直接内核调用(“未准备好的调用”)中的
  1. shared参数。例如:
myFunc(arg1, arg2, shared=numBytes, block=(1,1,1), grid=(1,1))
    准备的内核调用中的
  1. shared_size自变量。例如:
myFunc.prepared_call(grid, block, arg1, arg2, shared_size=numBytes)

其中numBytes是您希望在运行时分配的内存量(以字节为单位)。