我正在寻找一些专门用于典型密集矩阵乘法的特殊函数(CUDA),例如A*B,其中A的大小为6*n, B的大小为n*6, n非常大(n=2^24)。我使用了CUBLAS和其他一些库来测试这个例子,在CUBLAS中,对于这个例子,我们使用6*6=36个线程,这与GPU的总并行度相差甚远,所以我将A和B分成子矩阵(向量),然后对它们分别实现点积函数,性能得到了很好的提高。问题是,在这种情况下,我们需要启动36个CUDA内核,在它们之间有很多相同的数据足迹(相同的数据已经从GPU的全局内存中访问了几次)。所以我想问是否存在解决这种问题的方法
我最近为我的一个客户写了这样一个矩阵乘法例程。诀窍是通过将长内部求和拆分为几个较小的求和来提取更多的并行性。然后使用单独的内核启动来计算部分和的完整和。