我有一个系统使用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环境中运行它,请告知如何处理此问题。
非常感谢
答案 0 :(得分:0)
从多线程程序转到并行MPI程序并不是一项简单的任务,您将不得不学习MPI,并且可能无法解决这个问题。
我将从基本的MPI示例开始,通过快速google search
找到了很多我还建议您参考MPI实施文档(您提到openmpi)并参考MPI standard documentation