問題タブ [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アプリにホットプラグすることは可能ですか?5秒のダウンタイムすら許されない本番環境について話しています。私が興味を持っている2つのシナリオがあります:
- ブロードキャストリスナーをもう1つ追加して、計算能力を強化したいと思います。
- ノードが停止し、マスターノードがそれを適切に処理し、タスクを他の誰かに再割り当てします。システム管理者が入り、デッドノードを再起動してクラスターに接続し直します。
上記のシナリオに最適なプラットフォームに依存しないMPI実装はどれですか?ここではOpenMPIは必須ではありません。
security - MPI 実装 (OpenMPI、MPICH) はセキュリティ/認証をどのように処理しますか?
TCP/IP ソケットを介してプロセス間で MPI メッセージを送信する場合、OpenMPI と MPICH はどのようにセキュリティを処理しますか?
特に、同じネットワークの他のユーザーがリッスンしているソケットに接続して偽の MPI メッセージを送信するのをどのように防ぐのでしょうか?
具体的なシナリオは次のとおりです。
- 管理者は信頼されています。信頼されていないユーザーは、ハードウェアやネットワークに物理的にアクセスできません。信頼されていないユーザーには root アクセス権がありません。
- ただし、信頼されていないユーザーは、クラスター内で独自のプログラムを実行できます。クラスタ ノードは典型的な Linux ボックスです。特に、信頼されていないユーザーは、任意のマシンからクラスタ内の他のマシンへの TCP 接続を開き、任意のメッセージを送信できます。
ssh - 複数のユーザー ID を使用するように MPI ホストファイルを構成する
さまざまなマシン セット (Open Mpi 1.5 を搭載したすべての Linux マシン) で mpirun を使用してプログラムを実行したいと考えています。
現在、 でログオンできるマシンとusername A
、 を使用する別のマシンのセットがありますusername B
。すべてのマシンは ssh 経由でアクセスできますが、これを実現する方法がわかりません。
私のホストファイルは次のようになります:
これを達成することは可能ですか?ありがとうございました。
boost - Boost 1.46.1 を構築する *openmpi を使用*?
gcc 4.5.2 を使用して Ubuntu 11.04 ですべてのBoostライブラリをビルドしたいと考えています。そこで、tar.bz2 ファイルをダウンロードしてみました。広げました。bootstrap.sh を実行したところ、Unicode について不平を言っていることに気付いたので、以下をインストールしました。
sudo apt-get install libicu-dev
そして今、それは unicode で楽しく構築されているようです。問題は、OpenMPI にもリンクしたいということです。ええとああ。そこで、ビルド コマンドに追加using mpi ;
して実行しました。./tools/build/v2/user-config.jam
./bjam --layout=versioned --build-type=complete
そしてブーストはエラーを出力します(私は大きな段落を省略しました):
...そして数ページ...
...その後、さらに数ページ...
Boost 1.40 にさかのぼるバグのようです?? しかし、他の人がこれを機能させていることは知っています。Boost 1.46.1をopenmpiでうまく動作させるために必要なブードゥー教を知っている人はいますか?
注:私はグーグルで調べましたが、これはUbuntu固有の問題ではないようです.gentooや他の場所で発生しています. しかし、 mpiなしでビルドする以外に具体的な解決策は見つかりませんでした...それはできません。
ログ全体、パッケージのバージョンなどを喜んで投稿します。
c - OpenMPI 1.4.3mpirunhostfileエラー
4つのノードで単純なMPIプログラムを実行しようとしています。Centos5.5で実行されているOpenMPI1.4.3を使用しています。hostfile / machinefileを使用してMPIRUNコマンドを送信すると、出力が表示されず、空白の画面が表示されます。したがって、私は仕事を殺さなければなりません。。
次の実行コマンドを使用します::mpirun--hostfile hostfile -np 4 new46
これが私が4つのノードで実行しようとしているMPIプログラムです
私のhostfileは次のようになります。
上記のMPIプログラムを各ノードで個別に実行したところ、コンパイルされて正常に実行されました。hostfileを使用すると、「デーモンが起動時にレポートを返さない」という問題が発生します。私は何が問題になるのかを理解しようとしています。
ありがとう!
c++ - スレッドをサポートする MPI と Bcast 呼び出し
スレッドのサポートがあることを指定した MPI プログラムで、すべてのスレッドが MPI::Bcast 呼び出しを行うかどうか疑問に思っていました (呼び出しでは、送信側プロセスが 1 つのスレッドしか所有していないことを確認してください)。他のスレッドまたは各プロセスの 1 つのスレッドのみ (最速)?
c++ - openMPI、C++ で ImageMagick オブジェクトを送信する
プロジェクトに深刻な問題があります。クラスター内の別のノードに画像データを送信する必要があります。次のように、ImageMagick で画像を読み取ります。
そして、私はそれを次のように送信します:
他のノードは次のように受け取る必要があります。
しかし、セグメンテーション違反が発生します:
誰でも助けになれますか?私はほとんどイライラしています!
mpi - OpenMPI の動的ノード
MPI では、起動後に新しいノードを追加できますか? たとえば、既に並列 MPI アプリケーションを実行している 2 台のコンピューターがあります。このアプリケーションの別のインスタンスを 3 台目のコンピューターで起動し、それを既存のコミュニケーターに追加します。すべてのコンピューターはローカル ネットワーク内にあります。
macos - Valgrind を使用した OpenMPI デバッグと OS X での抑制
OS X (Snow Leopard) ラップトップで C++ で並列コードを書いており、memchecker でデバッグしようとしています。以下を使用して、valgrind をサポートする OpenMPI のビルドに成功しましたconfigure --prefix=/opt/openmpi-1.4.3/ --enable-debug --enable-memchecker --with-valgrind=/opt/valgrind-3.6.0/ FFLAGS=-m64 F90FLAGS=-m64
(Fortran フラグは無視してください。これは、私の Fortran コンパイラが GCC からのものであるためです)。
アプリケーションを実行すると
mpirun -np 2 valgrind --suppressions=/opt/openmpi-1.4.3/share/openmpi/openmpi-valgrind.supp --leak-check=yes --dsymutil=yes ./program
Valgrind から大量の警告が表示されます (ほとんどの警告は、最後のヒープ サマリーからのものです)。以下に警告の小さなスニペットを含めました。彼らから得たのは、Valgrind が MPI ライブラリのメモリ リークと初期化されていない値を検出したということですが、私はそれにはあまり関心がありません。私が書いたコードからの警告が欲しい。OpenMPI が提供する抑制ファイルを使用して Valgrind を既に実行していますが、明らかにそれだけでは十分ではありません。OpenMPI ディストリビューションで検出された他のすべての警告を簡単に無視するにはどうすればよいですか? OS X で Valgrind を使用して OpenMPI デバッグ用の抑制ファイルを見つけることは可能ですか?
最初の警告は
実行後、ヒープ サマリーの小さなスニペットは次のようになります。
...
c++ - openMPIデータ型の移植性
FAQ#20は言う:
v1.1以降、Open MPIでは、C、C ++、およびFortranデータ型のサイズが、MPI_BOOLおよびMPI_LOGICALで表される型を除いて、単一の並列アプリケーション内のすべてのプラットフォームで同じである必要があります。これらの型のプロセス間のサイズの違い適切に処理されます。単一のMPIジョブ内のプロセス間のエンディアンの違いは、適切かつ自動的に処理されます。
v1.1より前のバージョンでは、OpenMPIにはデータサイズやエンディアンの異質性のサポートは含まれていませんでした。
MPI_UNSIGNED_LONGは、すべてのホストで32ビット、またはすべてのホストで64ビットでなければならないという意味ですか?私のクラスターは、32ビットと64ビットのLinuxサーバーで構成されています。それを保証しlong
、unsigned long
すべてのホストで同じサイズになるようにするための最良の方法は何ですか?たぶん私は使用する必要がint
あり、「長い長い」のみを使用する必要がありますか?これらは、すべてのホストでそれぞれ32ビットと64ビットです。使用しない限り、データサイズに一貫性がなくても大丈夫ですか?
ありがとうございました。