4

这应该很简单,但我找不到详尽的答案:

我需要用矩阵执行 A+B = C,其中 A 和 B 是两个未知大小的矩阵(它们可以是 2x2 或 20.000x20.000 作为最大值)

我应该使用带有 Sgemm 函数的 CUBLAS 来计算吗?

我需要可达到的最大速度,所以我想到了应该优化的 CUBLAS 库

4

3 回答 3

3

对于任何类型的技术计算,您应该始终使用优化的库(如果可用)。现有的库,被数百人使用,将比你自己做的任何事情都得到更好的测试和更好的优化,而且你不花时间编写(以及调试和优化)功能自己可以更好地花在工作上您想要解决的实际高级问题,而不是重新发现其他人已经实施的事情。这只是劳动力的基本专业化;专注于您想要解决的计算问题,并让那些花费大量时间专业编写 GPGPU 矩阵例程的人来为您解决这些问题。

只有当您确定现有库不能满足您的需求时——也许它们解决了过于笼统的问题,或者做出了某些不适合您的假设——您才应该自己动手。

我同意其他人的观点,在这种特殊情况下,操作非常简单,DIY 是可行的;但是,如果您在添加完这些矩阵后还要对这些矩阵做任何其他事情,那么最好为您所在的任何平台使用优化的 BLAS 例程。

于 2011-03-24T16:28:20.633 回答
1

您想要做的事情在 CUDA 中实现起来很简单,并且会受到带宽限制。

于 2011-03-24T16:13:37.407 回答
1

从 CUBLAS5.0 开始,可以使用 cublasgeam。它计算 2 个可选转置矩阵的加权和。

于 2012-09-26T16:14:14.490 回答