CUDA を使用して数百の行列を並列に乗算する必要があるプログラムを作成しています。誰かがこの操作を実行する方法を説明できますか?
ケプラー アーキテクチャが動的な並列処理を実行できることを確認しました。誰かがこのアーキテクチャを使用していますか? はいの場合は、どの Nvidia グラフィックス カードを使用していますか?
CUDA を使用して数百の行列を並列に乗算する必要があるプログラムを作成しています。誰かがこの操作を実行する方法を説明できますか?
ケプラー アーキテクチャが動的な並列処理を実行できることを確認しました。誰かがこのアーキテクチャを使用していますか? はいの場合は、どの Nvidia グラフィックス カードを使用していますか?
CUDA を使用して並列で行列乗算を高速に実行する最も簡単な方法は、 GFOR ループを使用してArrayFire CUDA ライブラリを使用することです。ここにあなたが望むことをするいくつかのコードがあります:
int n = 8, int m = 8; // dimensions
int t = 10; // number of different matricies
array A = randu(m,n,t); // many matricies
array B = randu(m,n); // one matrix
array C = zeros(m,n,t); // destination
// multiply C=A*B for all A, at the same time
gfor (array i, A.dims(2)) {
C(span,span,i) = matmul(A(span,span,i), B);
}
print( A );
print( B );
print( C );
ArrayFire は、GPU で実行するために計算を効率的にタイルアウトします。すべてが舞台裏で最適化されています。手書きで書くよりも早いと思います。