我有一个使用 POSIX 的系统用 g++ 编译我的程序,但是,我有机会访问一台有多个处理器的大型机器,它必须有 mvapich2 和 openmpi 模块,所以,我认为 openmpi 应该是正确的迁移我的系统。问题是我在openmpi方面没有太多经验,也不知道如何将我的程序迁移到这个新环境。
稍微阅读一下,我认为我必须使用 MPI 函数来让我的系统在这种环境中工作并更改 POSIX 函数?
在本节中,我将调用 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 环境中运行它的技巧。
多谢