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環境で実行することを避けるトリックがある場合は、これにアプローチする方法を教えてください。
どうもありがとう