-1

我有一个使用 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 环境中运行它的技巧。

多谢

4

1 回答 1

0

从多线程程序到并行 MPI 程序并不是一项简单的任务,您必须学习 MPI,并且可能没有办法解决这个问题。

我将从基本的 MPI 示例开始,通过快速谷歌搜索可以找到很多

我还建议您参考 MPI 实现的文档(您提到openmpi)并参考MPI 标准文档

于 2013-02-16T20:51:59.580 回答