我是CUDA的新手。在编写三维快速阵列求和程序时,我脑海中浮现出一些问题:
-
最自然的方法是将每个矩阵条目用作线程,并且每个线程在三维上循环。在这种情况下,内存是否被认为是合并的?由于相邻线程访问相邻元素;他们只在循环变量上有进步。
-
为了提高性能,减少第三维度当然会有所帮助。
-
有图书馆可以用吗?对于2D求和,使用cuBLAS被认为是一个不错的选择。我正在考虑一种强制类型转换,它欺骗编译器将内存块视为2D数组,并使用cuBLAS中的矩阵向量乘法。
-
这是一个联合阅读。
-
你可以用同样的方式使用cuBLAS。只需告诉GEMV,第一个(未收缩的)维度是nx*ny。