numpy循环可以。
cupy循环1次,3次可以。但10次会出错
我该如何解决这个问题
这是gpu内存问题吗?
(源代码(
import cupy as cp
import numpy as np
mc = 5000
def fcal(ff, nloop, skey):
maa = ff.zeros((mc,mc)) + 0.0
mbb = ff.zeros((mc,mc)) + 0.0
for jj in range(nloop): maa = ff.dot(maa, mbb)
asum = ff.sum(maa)
print("[fcal] (%s) nloop=[%2d] asum=[%s]" % (skey, nloop, asum))
fcal(np, 1, "np")
fcal(np, 3, "np")
fcal(np, 10, "np")
fcal(cp, 1, "cp")
fcal(cp, 3, "cp")
fcal(cp, 10, "cp")
(执行结果(
[fcal] (np) nloop=[ 1] asum=[0.0]
[fcal] (np) nloop=[ 3] asum=[0.0]
[fcal] (np) nloop=[10] asum=[0.0]
[fcal] (cp) nloop=[ 1] asum=[0.0]
[fcal] (cp) nloop=[ 3] asum=[0.0]
Traceback (most recent call last):
File "C:testdir2cupy_test.py", line 30, in <module>
fcal(cp, 10, "cp")
File "C:testdir2cupy_test.py", line 22, in fcal
print("[fcal] (%s) nloop=[%2d] asum=[%s]" % (skey, nloop, asum))
File "cupycorecore.pyx", line 1596, in cupy.core.core.ndarray.__str__
File "cupycorecore.pyx", line 1643, in cupy.core.core.ndarray.get
File "cupycudamemory.pyx", line 372, in cupy.cuda.memory.MemoryPointer.copy_to_host
File "cupycudaruntime.pyx", line 255, in cupy.cuda.runtime.memcpy
File "cupycudaruntime.pyx", line 135, in cupy.cuda.runtime.check_status
cupy.cuda.runtime.CUDARuntimeError: cudaErrorLaunchFailure: unspecified launch failure
您的代码中没有问题:当您在顺序模式中对零求和时,每个迭代都是独立的。如果您可以使用一次迭代无错误地运行它,那么您的问题就不在代码实现中。
正如Robert Crovella在评论中指出的那样,您可能会遇到TDR错误,因为更多的迭代可能会延迟GPU对查询操作系统的响应时间。
我想检查一下你是否真的遇到了TDR问题,假设一次迭代运行没有问题,试着在每次ff.dot操作之间添加几秒钟的简单睡眠,以便操作系统从GPU接收响应。
我强调这不是TDR问题的解决方案,而是一种简单的检测方法。
import time
...
for jj in range(nloop):
maa = ff.dot(maa, mbb)
time.sleep(10)