2011-05-12 11 views
1

私はmpiを使って通信するクラスタ環境でgpuについて研究しています。
スピードアップを比較するために、私は作成時に考えます:CUDA + MPIを使用した行列乗算

単なるGPU用の行列の乗算です。
今すぐCPU MatrixMulti、ok。
しかし、私はCUDA + MPI行列乗算の素敵な実装を見つけることができません。

誰かが私がこれを克服することができるというヒントを持っていますか?あるいは、一つの実装を提案する。

+0

を見て、開始するにはMPICH2と私のenvが使用する準備ができているので、私は、OpenMPよりも好みます – Custodio

答えて

1

MTL4 Matrix Template Libraryは素晴らしい出発点になります。現在、MTL4にはマルチコアのDMMが搭載されており、ほぼ完全なGPU実装が行われています。 Peterと私は分散GPUアルゴリズムについて話してきましたが、私たちの焦点は今のところPDEソルバーによって推進されているため、分散GPUアルゴリズムは堅牢なDMMとの競争を困難にしています。

しかし、私は、データセットがより控えめでGPUのビデオ機能が有益であるため、分散型GPUの計算に役立つ新しい地球物理学/医用画像ソルバーセットに取り組んでいます。

MTL4 tutorial

1

周囲はあまりありません。あなたの最善の策は、実際には、各ノードがGPU上でローカルにブロック乗算を行うようにしたMPI上でのブロック行列乗算を書くことです。

0

Combinatorial BLASは、疎な行列 - 行列乗算演算を持つテンプレート化されたC++ MPIコードです。これは、sqrt(p)-by-sqrt(p)プロセッサグリッドと行列乗算のSUMMAアルゴリズムを使用します。テンプレート引数の1つは、1つのプロセスにローカルな行列である「順次」コンポーネントです。 CUDA構造のfinnagledテンプレート引数で直接使用できますが、少なくとも自分のコードの参照として使用できます。