6

アプリケーションをさまざまなタスクに分割し、マルチスレッド環境用に変換しているときに、基本的な概念が根本的に間違っていることに気付きました。OpenCL は、アプリで実行する必要がある種類の操作には適していません。問題の数学的部分について。

そのため、この時点で、MPI を使用して異なるデバイスで n 個のスレッドを起動し、デバイスに GPU がある場合は OpenCL カーネルを起動できるかどうか疑問に思っていました。

これは一般的に行われていることですか、それとも MPI を使用して OCL を除外し、その逆ですか?

私の目的は、コンピューターでアプリを実行し、それに接続されているデバイス (存在する場合) を使用して、計算能力を高め、タスクを共有することです。タスク自体は、数値の計算 (OCL に最適)、データの計算部分からの結果の OGL レンダリング、UI の管理と対話、およびデータの管理 (保存、保存、置換) に分かれています。

私が理解していることから、MPI は OCL のようにスレッドを GPU にアドレス指定することはできませんが、OCL の主な用途は数学計算であるため、たとえばアプリが情報を取得するためにネットワークにアクセスする必要がある場合、またはそれがスレッドの結果をプロットするために OGL を使用する必要があります。その場合、最良の選択は MPI です。

実行可能なオプションについての提案は大歓迎です。

4

2 に答える 2

5

MPI と OpenMP は、HPC の非常に標準的なハイブリッド プログラミング モデルです。MPI と OpenCL で同じことを行う場合、実用的または理論的な制限はありません。

MPI はプロセス間の通信を処理し、openCL は GPU で計算集約的な部分を処理します。

一般に、環境が一貫している限り (同じ OS、同じライブラリ バージョン、同じアーキテクチャなど)、複数のマシン上の一連の異なるプロセス間の調整言語として、任意のライブラリを MPI と共に使用することに制限はありません。

于 2012-10-31T01:52:33.320 に答える
5

これは間違いなく実行可能です (この質問と回答を参照してください)。MPI が実際に行うことは、プログラムの複数のインスタンスを生成し、それらの間の通信を処理することだけです。個々のノードでローカルに実行される操作は関係ありません。たとえば、ある時点で、メイン プロセスが Qt を使用してワーカーから受け取ったデータを視覚化する MPI プログラムを作成しました。

于 2012-10-31T01:47:54.090 に答える