3

私は、たとえ同じマシン上であっても、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 プロセス内でグローバルであることに言及する必要があります。

4

1 に答える 1