程序从pthread(posix)迁移到openmpi

时间:2013-02-15 18:44:42

标签: c++ posix mpi

我有一个系统使用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环境中运行它,请告知如何处理此问题。

非常感谢

1 个答案:

答案 0 :(得分:0)

从多线程程序转到并行MPI程序并不是一项简单的任务,您将不得不学习MPI,并且可能无法解决这个问题。

我将从基本的MPI示例开始,通过快速google search

找到了很多

我还建议您参考MPI实施文档(您提到openmpi)并参考MPI standard documentation