这应该很简单,但我找不到详尽的答案:
我需要用矩阵执行A + B = C,其中A和B是两个未知大小的矩阵(它们可以是2x2或20.000x20.000作为最大值)
我应该使用带有Sgemm函数的CUBLAS来计算吗?
我需要达到最大速度,所以我想到了CUBLAS库,它应该被很好地优化
答案 0 :(得分:3)
对于任何类型的技术计算,您应始终在可用时使用优化库。数百名其他人使用的现有库将比你自己做的任何事情都更好地进行测试和优化,并且你不花费自己编写(以及调试和优化)这些功能的时间可以更好地用于工作您想要解决的实际高级问题,而不是重新发现其他人已经实现的事情。这只是劳动力的基本专业化;专注于您想要解决的计算问题,让那些花时间专业编写GPGPU矩阵例程的人为您做到这一点。
只有当您确定现有的库不能满足您的需求时 - 可能它们解决了一般性问题,或者做出了一些不适合您的情况的假设 - 如果您自己推出它们。
我同意其他人的观点,在这种特殊情况下,操作非常简单,DIY也是可行的;但是如果你在完成添加它们之后要对这些基质做任何其他事情,那么你最好在你所使用的任何平台上使用优化的BLAS例程。
答案 1 :(得分:1)
您想要做的事情在CUDA中实现起来是微不足道的,并且带宽有限。
答案 2 :(得分:1)
从CUBLAS5.0开始,可以使用cublasgeam。它计算2个可选转置矩阵的加权和。