这是此处讨论的扩展:pycuda shared memory error "pycuda._driver.LogicError: cuLaunchKernel failed: invalid value"
pycuda 中是否有相当于以下 C++ API 调用的方法?
#define SHARED_SIZE 0x18000 // 96 kbyte
cudaFuncSetAttribute(func, cudaFuncAttributeMaxDynamicSharedMemorySize, SHARED_SIZE)
在最新的 GPU (Nvidia V100) 上工作,超过 48 kbyte 共享内存需要设置此函数属性。如果没有它,就会出现与上述主题相同的启动错误。设备上的“硬”限制是 96 KB 共享内存(为 L1 缓存留出 32 KB)。
有一个已弃用的方法 Fuction.set_shared_size(bytes)
听起来很有希望,但我找不到它应该被替换的方法。
最佳答案
PyCUDA使用驱动程序API,设置函数动态内存限制的相应函数调用是cuFuncSetAttribute 。
我在当前 PyCUDA 树中的任何地方都找不到它,因此怀疑它尚未实现。
关于pycuda共享内存达到设备硬限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56734652/