私は、たとえ同じマシン上であっても、MPI プロセスが最初から最後まで個別の一意のデータで動作するという前提で作業しています。ただし、MPI プロセスごとにグローバル オブジェクトがあると予想される私のコードは次のとおりです。
class global { // the class };
extern global obj;
global obj;
int main( int argc, char * argv[] ) {
MPI_Init();
// determine rank
std::cout << rank << " global object is at " << &obj << std::endl;
MPI_Finalize();
}
-np 2 を使用すると、次のようになります。
0 global object is at 0x620740
1 global object is at 0x620740
これは、2 つの MPI プロセスが同じマシン上の同じメモリ アドレスにアクセスして独自のグローバル オブジェクトにアクセスしている場合に、セグメンテーション フォールトまたはその他のエラーの原因になる可能性がありますか?
編集:私の意図における「グローバル」は、すべての MPI プロセスでグローバルではなく、個別の MPI プロセス内でグローバルであることに言及する必要があります。