首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >PyCUDA: GPUArray.get()返回无法访问的数组

PyCUDA: GPUArray.get()返回无法访问的数组
EN

Stack Overflow用户
提问于 2020-12-10 12:09:46
回答 1查看 177关注 0票数 1

我尝试在GPU中总结一个数组,然后在主机上获取它。为此,我使用了pycuda.gpuarray.sum()函数。

代码语言:javascript
运行
AI代码解释
复制
import pycuda.gpuarray
a = np.array([1,2,3,4,5])
b = gpuarray.to_gpu(a)
c = gpuarray.sum(b)
c = c.get()
print(c)   #Prints array(15)
print(type(c)) #Prints numpy.ndarray
print(c[0]) #Error, Index error - too many indices for array
print(c.shape) #Prints (), empty tuple

如何将sum()函数的解恢复为正常的整数元素?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-12 05:57:14

正如@Robert Crovella所说,函数gpuarray.sum()只是在对所有元素求和后返回一个标量。因此,您的变量c将始终被初始化为一个0维numpy数组(换句话说,一个标量),这就是为什么当您尝试访问其中的元素时,您会得到一个空元组作为输出,并得到一个错误。

如果你希望它是一个一维数组,你可以这样做:

代码语言:javascript
运行
AI代码解释
复制
import pycuda.autoinit
import pycuda.gpuarray as gpuarray
import numpy as np

a = np.array([1,2,3,4,5])
d_a = gpuarray.to_gpu(a)
d_c = gpuarray.sum(d_a)

h_d = np.zeros((1,))
h_d[0] = d_c.get()
print("np.array h_d: ", h_d)
print("h_d[0] = ", h_d[0])

(PyCuda 2020.1)

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

https://stackoverflow.com/questions/65234252

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文