首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PyCuda mem_alloc_pitch()

如何使用PyCuda mem_alloc_pitch()
EN

Stack Overflow用户
提问于 2021-06-11 08:07:35
回答 1查看 183关注 0票数 0

我最近一直在尝试PyCuda。

我现在想做一些很简单的事情,分配一些内存。我想我有一些基本的误解,因为这是一个相当简单的任务。我的理解是,使用下面的代码,我将创建一个宽512、160高、元素大小为1字节的2d Cuda数组。

下面是一些测试代码。

代码语言:javascript
复制
import pycuda.driver as cuda
import pycuda.autoinit
# Alloc some gpu memory
test_pitch = cuda.mem_alloc_pitch(512,160,1)

当我尝试运行这段代码时,我会得到以下错误

代码语言:javascript
复制
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
pycuda._driver.LogicError: cuMemAllocPitch failed: invalid argument

如果有人对我做错了什么有深刻的见解,那将是非常感激的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-11 09:59:21

引用CUDA驱动程序API 文档

代码语言:javascript
复制
cuMemAllocPitch ( CUdeviceptr* dptr, 
                  size_t* pPitch, 
                  size_t WidthInBytes, 
                  size_t Height, 
                  unsigned int  ElementSizeBytes )

该函数可以填充分配,以确保任意给定行中的相应指针在地址逐行更新时继续满足合并的对齐要求。ElementSizeBytes指定将在内存范围内执行的最大读写的大小。ElementSizeBytes可以是4、8或16 (因为在其他数据大小上不可能合并内存事务)

在本例中,前两个参数是mem_alloc_pitch的返回值,而ElementSizeBytes是PyCUDA调用中的access_size

你有:

代码语言:javascript
复制
cuda.mem_alloc_pitch(512,160,1)

也就是说,你的access_size是1,这是非法的。只有4,8或16是合法的。因此,错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67933438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档