2

OpenMP ベースの並列プログラムを使用してクラスター上で実行するコード コンバーターを作成したいと考えています。

この問題についてどうすればよいですか?どのライブラリを使用しますか? このために小さなクラスターをセットアップするにはどうすればよいですか?

インターネット上でクラスター コンピューティングに関する優れた資料を見つけるのは非常に難しいと感じています。

編集: それが不可能な場合、インテルはどのようにそれを行うのですか? Intel コンパイラは、私がやりたいことを正確に実行しているようです。実行したい特定のアプリケーションはありません。アプリケーションではなく、「コンバーター/コンパイラー」を書きたい。共有メモリは分散メモリとは異なることは理解していますが、アプリケーションがカスタム構成で記述されていることを意味する場合でも、すべての場合ではないにしても、特定の場合にメモリを同期する方法が必要です。

4

4 に答える 4

3

Intelには、x8664ビットクラスター用のC++およびFortranコンパイラーで動作するOpenMPの実装があります。これらのコンパイラの30日間の評価バージョンを無料で入手できます。それ以外は、Zifreはほとんど正しいです。スケーラビリティに関心がある場合は、弾丸をかじって、分散システムを念頭に置いて設計された別のプログラミングモデル(MPI、CUDA、Cilkなど)で並列プログラムを記述してください。アプリケーションについてもう少し情報を提供していただければ、その面でより役立つガイダンスを提供できる可能性があります。

于 2009-06-09T22:47:07.413 に答える
2

これは良い考えではないように思えます。

OpenMP の背後にある基本的な考え方は、データ共有の並列実行です。共有データへのアクセスに費用がかからない場合は、うまく機能します。すべてのスレッドは、共有キャッシュまたは RAM 内の変数にアクセスできます。

クラスター内のコンピューターには分散メモリがあるため、クラスターの計算ではメッセージ パッシングが利用されます。あるプロセスが別のプロセスからのデータを必要とする場合、ネットワーク上を通過するデータを管理する必要があります。手間のかかる操作です。

したがって、このようなコンパイラを作成する場合は、OpenMP でデータ アクセスごとにデータ ブロードキャスト操作 (MPI からの MPI_Bcast など) を実装する必要があります。これにより、並列パフォーマンスがまったく失われます。

于 2009-06-20T14:18:52.687 に答える
1

これは単に不可能です。コードをクラスターで動作させるには、まったく異なる方法でコードを構成する必要があります (複数のマシンのプログラミングは、1 つのマシンのプログラミングとは大きく異なります)。

これを行うための魔法の妖精の粉はありません。

一方、クラスターを念頭に置いてプログラムを作成すると、単一のマシンで実行することができます (ただし、明らかに遅くなります)。

于 2009-06-09T22:39:25.837 に答える
1

SCORE/SCASH および Omni OpenMP コンパイラ

于 2009-07-13T19:53:32.940 に答える