Python 如何使用PyCuda mem_alloc_pitch()
我最近一直在尝试PyCuda 我现在想做一些非常简单的事情,分配一些内存。我假设我有一些基本的误解,因为这是一个相当简单的任务。我的理解是,通过下面的代码,我将创建一个512宽、160高、elementsize为1字节的2d Cuda阵列 下面是一些测试代码Python 如何使用PyCuda mem_alloc_pitch(),python,cuda,nvidia,pycuda,Python,Cuda,Nvidia,Pycuda,我最近一直在尝试PyCuda 我现在想做一些非常简单的事情,分配一些内存。我假设我有一些基本的误解,因为这是一个相当简单的任务。我的理解是,通过下面的代码,我将创建一个512宽、160高、elementsize为1字节的2d Cuda阵列 下面是一些测试代码 import pycuda.driver as cuda import pycuda.autoinit # Alloc some gpu memory test_pitch = cuda.mem_alloc_pitch(512,160,1)
import pycuda.driver as cuda
import pycuda.autoinit
# Alloc some gpu memory
test_pitch = cuda.mem_alloc_pitch(512,160,1)
当我试着运行这段代码时,我得到了以下错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
pycuda._driver.LogicError: cuMemAllocPitch failed: invalid argument
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
pycuda.\u driver.LogicError:CumeAllocPictch失败:参数无效
如果有人对我做错了什么有任何见解,我们将不胜感激。引用CUDA驱动程序API 该功能可以填充分配,以确保相应的 任何给定行中的指针都将继续满足对齐条件 地址从一行更新到另一行时合并的要求。 ElementSizeBytes指定最大读取和写入的大小 这将在内存范围内执行元素大小字节可以是4, 8或16(因为在其他系统上不可能合并内存事务 数据大小) 在这种情况下,前两个参数是PyCUDA调用中
mem\u alloc\u pitch
的返回值,ElementSizeBytes
是access\u size
你有:
cuda.mem_alloc_pitch(512,160,1)
i、 e.您的
access\u size
为1,这是非法的。只有4、8或16是合法的。这就是错误。谢谢你的回答。这是给皮库达的还是给库达的?在PyCuda文档中,它提到了一些关于访问大小的内容,这与CUDA函数中的ElementSizeBytes参数相同吗。以下是[PyCUDA API是CUDA驱动程序API的一个非常薄的包装。如果有疑问,请阅读CUDA驱动程序API文档,因为它们是获得最佳答案的唯一工具。
cuda.mem_alloc_pitch(512,160,1)