python - 如何使用 numba 在内核中分配数组?
问题描述
我正在尝试for
在内核内部的循环中分配一些数组。内核看起来像这样:
@cuda.jit
def forcecudatiling(p_num,d_num,r,force):
threadsInBlock=cuda.blockDim.x
threadsInGrid=threadsInBlock*cuda.gridDim.x
tid=cuda.threadIdx.x + cuda.blockIdx.x*cuda.blockDim.x
tiles=p_num/cuda.blockDim.x + 1
shared_p_mx = cuda.shared.array(0,dtype=np.float32)
shared_p_my = cuda.shared.array(0,dtype=np.float32)
alpha=(1.5)
rho=(1.0)
beta=(1.5*(1.0+alpha))
for k in range(tid,p_num,threadsInGrid):
r_k=cuda.device_array((d_num,p_num))
forcetemp=cuda.device_array((d_num,p_num))
r_k[0,k]=r[0,k]
r_k[1,k]=r[1,k]
forcetemp[0,k]=0.0
forcetemp[1,k]=0.0
我试图分配的数组是r_k
,forcetemp
但是使用上面的代码我得到以下错误:
TypingError:在 nopython 模式管道中失败(步骤:nopython 前端)Module() 类型的未知属性“device_array”
文件“”,第 117 行:def forcecudutiling(p_num,d_num,r,force): for k in range(tid,p_num,threadsInGrid): r_k=cuda.device_array((d_num,p_num))
解决方案
我正在尝试在内核内部的 for 循环中分配一些数组
你不能那样做。Numba CUDA 内核不支持内存分配或数组创建 。
推荐阅读
- laravel - Laravel 未创建响应自定义标头
- excel - 根据日期范围创建每日计数
- java - 公共到本地 IP 通信
- django - 在 django 中获取绝对 url 有点困惑
- jhipster - jhipster 的分离前端和 API
- javascript - 当我尝试切换时,Else 语句在“单击”事件中不起作用
- java - JPA 坚持的 OffsetDateTime 相差 2 小时
- wso2 - Wso2 身份服务器版本 5.3.0 OAuth 客户端密钥
- javascript - 使用NodeJS在数组中搜索关键字,只获取MongoDB中匹配的元素
- django - 使用电话和密码注册 Django 用户