gpt4 book ai didi

遍历数组时,Cupy 比 numpy 慢

转载 作者:行者123 更新时间:2023-12-04 18:40:20 26 4
gpt4 key购买 nike

我有代码,我想与 cupy 并行化。我认为这将是直截了当的 - 只需编写“import cupy as cp”,然后将我写的 np., 替换为 cp.,就可以了。

而且,它确实有效,代码确实可以运行,但速度要慢得多。与 numpy 相比,我认为在遍历更大的数组时它最终会更快,但似乎从未发生过。

代码是:

q = np.zeros((5,5))
q[:,0] = 20

def foo(array):

result = array
shedding_row = array*0
for i in range((array.shape[0])):
for j in range((array.shape[1])-1):

shedding_param = 2 * (result[i,j])**.5
shedding = (np.random.poisson( (shedding_param), 1))[0]

if shedding >= result[i,j]:
shedding = result[i,j] - 1

result[i,j+1] = result[i,j] - shedding

if result[i,j+1]<0:
result[i,j+1] = 0

shedding_row[i,j+1] = shedding

return(result,shedding_row)

x,y = foo(q)

使用 cupy 会更快吗?我用错了吗?

最佳答案

要获得 numpycupy 的快速性能,您应该使用并行操作而不是使用 for 循环。

举个例子,

for i in range((array.shape[0])):
for j in range((array.shape[1])-1):

shedding_param = 2 * (result[i,j])**.5

这可以计算为

xp = numpy  # change to cupy for GPU
shedding_param = 2 * xp.sqrt(result[:, :-1])

关于遍历数组时,Cupy 比 numpy 慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57386330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com