問題タブ [openmpi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mpi - openMPI マスター ノードのセットアップ構成
openMPI を使用して比較的小さなクラスター (36 コア) をセットアップしようとしていますが、小さな問題が発生しました。すべての openMPI ライブラリとすべての依存関係がインストールされ、正しく実行されています (ローカルホストとして各コンピューターで hello world MPI プログラムを実行できます)。問題は、複数のコンピューターでプログラムを一緒に実行する方法に関するドキュメントがあまり見つからないことです。mpirun --hostfile コマンドは実行できますが、ジョブを実行するたびにホスト ファイルを指定する必要はありません。さらに、将来のユーザーは、クラスター上のすべての IP アドレスに常にアクセスできるわけではありません。彼らと私は、問題なく mpirun -np 20 programFile を実行できることを期待しています。この時点から何をする必要があるかについて、誰かがガイダンスを提供できますか? 公平を期すために、私は' 大学で MPI を使って並列プログラムを書いたクラスを 1 つだけ取ったことがありますが、openMPI を使って新しいクラスターをセットアップする方法は教えてくれませんでした。皆さんからのアドバイスに感謝します。検索でこのガイドを見つけましたMPICH_Cluster_Setupは、openMPI である場合に最適です。openMPI に関する同様のガイドはありますか?
openmpi - OpenMPIを使用したデータ配信
OpenMPIを使用してTCP/IPネットワークで接続された複数のマシンにデータを配布したいと思います。誰でも適切なリソースと方向性を教えてくれますか。私はOpenMPIを初めて使用します。
ありがとう
bash - bashで奇妙な動作を示すmpirunコマンド
簡単な質問があります。
最近、学校のサーバーを使用してmpiプログラムを実行しようとしましたが、次の「奇妙な」問題が発生しました。
'mpirun'コマンドを実行するには、そのパスを.bashrcのデフォルトパスに配置してから、次のように入力する必要がありました。
libmpi.so.0と呼ばれる欠落しているライブラリに関するエラーを取得するためだけに
ただし、以下のような完全なmpirunパスを使用してプログラムを実行しようとした場合
すべてが良かった。
openmpiのFAQを確認したところ、.bashrcに次の行を入力する必要があるとのことでした。
これは実際に私のために物事を修正しましたが、私の質問はまだ未解決のままです:
なぜそれが起こったのですか?
よろしくお願いします。
fortran - mpirun が 2 つのノードで動作しない
各ノードに 16 個のプロセッサがあるクラスターで作業しています。私の Open MPI のバージョンは 1.5.3 です。Fortran で次の簡単なコードを書きました。
次に、コードを次のようにコンパイルします。
そしてそれを実行します
私のノードファイルは次のようになります。
node1 と node2 をそれぞれ 16 回繰り返します。
正常にコンパイルできます。-np 16 (ノードが 1 つだけ) で実行すると、正常に動作します。各スレーブがタスクを終了し、ターミナルにプロンプトが返されます。しかし、-np 32 を試すと、すべてのスレーブが作業を終了するわけではなく、16 個だけです。
実際には 32 ノードの場合、プログラムからプロンプトが返されないため、プログラムがどこかにスタックされ、何らかのタスクが実行されるのを待っていると思います。
この些細な問題に時間を費やした限り、コメントをお待ちしています。
ありがとう。
parallel-processing - CPUとGPUのMPI-2
MPI-2を使用してコードの並列化に取り組んでいます。私が8コアプロセッサを使用している間、それは首尾よくスピードアップしています。
CPUの代わりに同じ目的でGPUを使用した場合、どのような影響があるのでしょうか。これまでの私の調査によると、OpenMPIはGPUと互換性があり、CPUと比較してプロセッサ間通信が多い場合にのみ高速化が向上します。誰かがそれを試したことがありますか、または同じことについて何か意見がありますか?
openmpi - OpenMPIのバージョンをどのように確認しますか?
OpenMPIを搭載したサーバーでコードをコンパイルしていますが、適切なドキュメントを読むことができるように、使用しているバージョンを知る必要があります。<mpi.h>
現在のバージョンを表示するために印刷できるという定数はありますか?
openmpi - カスタム データ型 (MPI_Datatype データ型)?
MPI にカスタム データ型のようなものはありますか?それとも、すべてをテキスト文字列にフラット化して MPI_CHAR として渡す必要がありますか? すべてを平坦化する必要がある場合、見落としている組み込み関数はありますか?
openmpi - MPI-スレッドの数で均等に割り切れない動的な作業負荷にアプローチするにはどうすればよいですか?
すべてのMPI呼び出しにある程度の対称性が必要であるか、ハングしたり、予期しない結果が発生したりすることに気づきました。動的問題またはデータセットをどのように攻撃しますか?
私がオンラインで見つけたすべての例は、常に問題を均等に分割可能なチャンクに分割するか、計算にコードブロックの繰り返しを使用します。
利用可能なスレッドが8つあるとしましょう。しかし、やりたい作業は57、80、99、64、13などの単位で行われます。
そのような問題に取り組むための好ましいアプローチはありますか?削減には、スレッド間で関数を同等に呼び出す必要があるようです。(つまり、最後の7つは無意味ですが、57では各スレッドから8つの呼び出しが必要になります)Scatterも同様のようです。不均等に分割可能な問題セットで機能するScatterのようなものはありますか?
c++ - MPI を使用して異なるプロセッサで同じ配列を使用する方法
hist(1:1000)
OpenMPI を使用して、異なるプロセッサで同じ配列を呼び出して、1 つのプロセッサが変更したときに、hist
この変更が残りのプロセッサで更新されるようにしたいと考えています。
コードを作成して宣言しhist(1:1000)
ましたが、問題はhist
各プロセッサで個別に更新されることです。次に、データを「マスター ノード」に送信して、スレーブの情報に基づいて別のヒストグラムを更新しますが、これは私が欲しくないもの。各プロセッサで同じヒストグラムを更新したいと考えています。
OpenMPIでこれを行うことは可能ですか?
c - クラスタ上の MPI の簡単なテスト プログラム
各スレッドは、ファイルの一部を読み取り、それを書き留めます。
ローカル マシン (mpich) で完全に正常に動作します。クラスター (openmpi) でエラーが発生しました。
関数 write_result の close(fd) でプログラムが終了しました。
ここにエラーメッセージがあります
関連する問題を検索した後、問題はファイルの開閉プロセスに起因する可能性があると推測しています。特定のスレッドによって開かれたファイルは、同じスレッドによって閉じられる必要があります。おそらくopenmpiは、どのスレッドがそれを開き、どのスレッドが閉じたかを認識していません。しかし、MPICH では問題なく動作します。