【发布时间】:2022-01-24 18:09:15
【问题描述】:
import math # all the libraries i import
import numpy as np
!pip install pycuda
import pycuda.gpuarray as gpu
import pycuda.cumath as cm
import pycuda.autoinit
import pycuda.driver as drv
from pycuda.compiler import SourceModule
在使用带有 for 循环的 PyCUDA GPUarrays 后,我遇到了一个错误。我定义了一个使用 for 循环的函数 PropagatorS,当我刚刚使用 numpy 时它运行良好,但在切换到 cuda 之后就不行了。
def PropagatorS(N, L, area, z0):
p = gpu.zeros((N,N), dtype = 'complex_')
for ii in gpu.arange(0, N, 1):
for jj in gpu.arange(0, N, 1):
u = (ii - N/2 - 1)/area
v = (jj - N/2 - 1)/area
p[ii, jj] = cm.exp(1j*np.pi*L*z0*(u**2 + v**2))
return p
尝试一些值:
p = PropagatorS(200, 700*10**-9, 0.002, 0.08))
返回 “IndexError:轴 0 中的子索引无效”。错误发生在这一行:
---> p[ii, jj] = cm.exp(1j*np.pi*L*z0*(u**2 + v**2))
我正在使用 Colab 运行此代码。我找不到任何故障排除线程,希望有人可以提供帮助。 :)
【问题讨论】:
标签: python cuda index-error pycuda