CUDA线程分配[重复]
Posted
技术标签:
【中文标题】CUDA线程分配[重复]【英文标题】:CUDA thread allocation [duplicate] 【发布时间】: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。 【参考方案1】:尝试运行 NVIDIA CUDA 示例中的 "devicequery" 程序,以获取安装中存在的扭曲大小。如果它显示 warp size=32 那么您的问题可能与它有关,否则必须使用特定代码 sn-p 才能给出任何解决方案。
【讨论】:
以上是关于CUDA线程分配[重复]的主要内容,如果未能解决你的问题,请参考以下文章
CUDA测量2个_syncthread()点之间的时间[重复]