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 内核

(py)CUDA中的网格和块尺寸[重复]

CUDA测量2个_syncthread()点之间的时间[重复]

CUDA中的线程和块结构以及如何分配具有不同结构的线程(c ++)

CUDA 一维数组未更新

CUDA笔记(一)线程与数据量的关系