【发布时间】:2016-07-09 01:35:53
【问题描述】:
我正在尝试在CUDA 中实现一个名为"Conjugate Gradient Solver" 的迭代线性求解器,它可以求解形式方程,
A*x=b,
其中 A 是大小为 nXn 的稀疏对称正定矩阵, x 是大小为 n 的未知向量,初始猜测为 0,并且 b 是等式右侧大小为 n 的向量。
我的代码中包含许多操作,例如稀疏矩阵向量乘法,向量向量操作。
我的代码在矩阵大小最大为 31 X 31,但不超过 31 X 31 的情况下工作正常。这可能是因为分配给内核函数的线程数。我将线程分配为
mul<<<1,nrows>>>()
这里 mul 是一个用于执行稀疏矩阵向量乘法的函数,nrows 是稀疏矩阵 A 中的行数。
这个问题是否与 1 wrap size=32 个线程有关?
如果有人知道,请告诉我。
谢谢你..!!
【问题讨论】:
-
如果没有任何代码,这个问题是不可能在没有推测的情况下回答的。请附上minimal reproducible example。