避免在Mac-OSX上的mpirun中接受“接收网络连接”对话框

时间:2013-09-17 01:42:24

标签: c++ osx-mountain-lion openmpi

我是MPI的初学者。我正在尝试在运行Mac_OSX Mountain Lion的macbook上运行最简单的MPI“hello world”代码。它只有1个处理器,但它有4个核心。 C ++代码就像这样

#include <iostream>
#include "mpi.h"
using namespace std;

int main(int argc, char* argv[])
{
    int rank, size;
    MPI::Init();
    rank = MPI::COMM_WORLD.Get_rank();
    size = MPI::COMM_WORLD.Get_size();
    std::cout << "Hello, world!  I am " << rank << " of " << size << std::endl;
    cout << "size is " << size << endl;
    cout << "rank is " << rank << endl;
    MPI::Finalize();
    return 0;
}

然后我编译并运行代码

$ mpic++ -o bb code2.cpp
$ mpirun -np 2 bb

我立即得到2个对话框,显示警告“你想要应用程序”bb“接受传入网络连接吗?”。对话框出现并消失,代码运行正常 -

Hello, world!  I am 0 of 2
size is 2
rank is 0
Hello, world!  I am 1 of 2
size is 2
rank is 1

我认为MPI在群集或CPU组上运行时使用网络连接。但看到防火墙对话框出现并一次又一次地消失是令人讨厌的。我可以禁用防火墙,或者我可以允许特定可执行文件的传入连接,但我不想这样做。有没有办法告诉MPI不使用网络连接,因为我在一台计算机上运行它? 谢谢。

2 个答案:

答案 0 :(得分:1)

不,没有办法告诉Open MPI根本不使用网络连接。此外,当程序员明确指示这样做时,Open MPI进程也会相互通信并与MPI启动器进行通信,以便交换控制数据 - 即所谓的带外消息传递。 oob框架负责交换带外信息,并且该框架有一个实现,该实现使用TCP / IP。

Open MPI中有很多隐藏的通信渠道。例如,当所有进程在同一节点上运行时,它们使用共享内存段来传输数据,但它们也使用FIFO来传递控制信息,并使用TCP / IP连接到MPI启动器orterun(通常称为{{ 1}}或mpiexec)。

答案 1 :(得分:-1)

试试这个:

  

转到设置 - &gt;安全与安全隐私 - &gt;防火墙

     

解锁(从左下方)

     

转到防火墙选项并取消选中“启用隐身模式”按钮

为我工作! ;)