我需要使用小矩阵和内核进行多次卷积,我希望利用 GPU 的许多处理器能够让我尽快完成它。
问题如下:我有很多矩阵(~1,000 到~10,000)或相对较小的尺寸(~15x15 到 1x1 - 如标量),以及一定数量的卷积掩码(~20 到 1)。我需要将所有矩阵与每个卷积掩码示例进行卷积:
A; %5,000 matrices of size 10x10, A(i) = a 10x10 matrix
B; 10 matrices of size 5x5, B(k) = a 5x5 matrix
res(j)=conv(A,B(1)); %res(j) is the result of convolving all 5,000
%matrices in A by the j'th kernel B(j)
目标是尽快计算 res(1),...,res(10)
我想听听有关如何实现最有效算法的建议。基于 FFT 的卷积可能会太慢。
到目前为止,我看到的每个实现都是用于 2d 卷积,意在对 2 个大矩阵进行卷积,而我需要对许多小矩阵进行卷积。
我现在对 CUDA 编程知之甚少,但我正在学习中。
我希望自己解决这个问题,但由于时间限制,我不得不向任何有经验的人寻求任何建议,同时我学习如何在 CUDA 中编码。
谢谢!
ps 任何指向适合我目的的实现的指针都非常感谢。我是一名大学生,这是一个小型研究项目,所以我不需要支付任何费用...