-1

POSIXを使用してプログラムをg++でコンパイルしているシステムがありますが、複数のプロセッサを搭載した大きなマシンにアクセスする機会があり、モジュールmvapich2とopenmpiが必要なので、openmpiを移行するのが正しいと思います私のシステム。問題は、openmpiの経験があまりなく、プログラムをこの新しい環境に移行する方法がわからないことです。

少し読んで、この環境でシステムを動作させ、POSIX関数を変更するには、MPI関数を使用する必要があると思います。

このセクションでは、一般的な命令だと思うスレッドを処理するためにpthread関数を呼び出しています。

Thread::Thread( PFUNC func, void * arg )
{
        pthread_detach( pthread_self() );
        pthread_attr_t attr;
        pthread_attr_init(&attr);
        pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
        int s = pthread_create( &xThreadId, &attr, func, arg);
    if (s != 0)
            throw EXCEPT_NOTHREAD;

       pthread_attr_destroy(&attr);
       pthread_detach( pthread_self() ); 

}

私のシステムはセマフォ、ミューテックスでも同様に機能します。セマフォとミューテックスの使用も置き換える必要がありますか?どうやって?。プログラムを本当に変更する必要がある場合、またはプログラムを変更してopenmpi環境で実行することを避けるトリックがある場合は、これにアプローチする方法を教えてください。

どうもありがとう

4

1 に答える 1

0

マルチスレッドプログラムからパラレルMPIプログラムに移行することは、MPIを学習する必要がある簡単な作業ではなく、これを回避する方法がない場合があります。

私は基本的なMPIの例から始めますが、グーグルですばやく検索するとたくさん見つかります

また、MPI実装のドキュメント(openmpiについて言及)を参照することをお勧めします。また、 MPI標準のドキュメントも参照することをお勧めします。

于 2013-02-16T20:51:59.580 に答える