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