2012-03-01 3 views
0

私はC++で書かれたユーティリティを持っていますが、MPICH2を使うと計算量が増え、パフォーマンスに満足できず、多くの改善の余地があります。MPICH2対応のコードをOpenCLコードに変換する

まず、MPICH2はexesを使用するだけなので、データをファイルに書き込んで、そのファイルをそのユーティリティの引数として渡して、再びすべてのデータを読み込んで出力をファイルに書き戻す必要があります。 これをdllに入れることができれば、データを渡すのに多くの時間を節約できます。また、私は何とかGPU上でこれを実行することができれば、これはブースト(あまり確かではない)を与えるでしょう。

ユーティリティーコードをOpenCLに変換するのにどれだけの労力がかかっているのか、あるいは変換タスクの60〜70%を行うツールがあるのでしょうか。

答えて

2

私の最高の推測では、同等のシリアルコードをパラレルコードに変換するのと同じくらい、コードをOpenCLに変換することが必要です。私は、MPIコードをOpenCLコードに変換するプロセスを自動化できるツールがないことを知っています。私はそのようなツールのため、他の人から学ぶことに非常に興味があります。

MPIをGPU上で実行すると、いくつかの研究が行われ、結果が公開されています。私の印象は、この作品のどれもまだ研究グレードであり、おそらく信頼性も携帯性もないということです。

最後に、GPUの使用には役立ちませんが、MPIコードで障害を修正しないでください。私は少しはっきりしていませんが、問題の1つは、MPIコードがデータを渡す方法としてファイルの書き込みと読み取りを行うことです。これはMPIプログラムの必要な機能ではなく、改訂することができます

+2

+1;ファイルI/Oの通信媒体としての使用を中止してください。しかし、MPIとOpenCLも直交しています。 1つは、ノード(またはノード上のプロセッサ)間の問題の部分を通信することによって計算を高速化するためのものであり、1つはノード上の計算を高速化するためのものである。物事がどちらか一方になる理由はありません。 –

+0

私は読み込みを削除し、バッファアドレスを渡すだけで、ユーティリティはデータを更新でき、私は結果を得ることができます。しかし、私はユーティリティexeをdllに変換する必要がありますが、MPICH2はdllで動作しません。 – Mohit

+0

他のライブラリ(dllなど)をmpiやmpich2とリンクすることは問題ありません。そのため、あなたが何を求めているのかははっきりしません。 –

関連する問題