C++ 避免在Mac OSX上运行MPI中的“接受传入网络连接”对话框

C++ 避免在Mac OSX上运行MPI中的“接受传入网络连接”对话框,c++,osx-mountain-lion,openmpi,C++,Osx Mountain Lion,Openmpi,我是MPI初学者。我正试图在运行Mac_OSX Mountain Lion的macbook上运行最简单的MPI“hello world”代码。它只有1个处理器,但有4个内核。C++代码是这样的< /P> #include <iostream> #include "mpi.h" using namespace std; int main(int argc, char* argv[]) { int rank, size; MPI::Init(); rank =

我是MPI初学者。我正试图在运行Mac_OSX Mountain Lion的macbook上运行最简单的MPI“hello world”代码。它只有1个处理器,但有4个内核。C++代码是这样的< /P>
#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;
}
我立即看到两个对话框,显示警告“您希望应用程序“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不要使用网络连接,因为我在一台计算机上运行它?
谢谢

不,没有办法告诉OpenMPI不要使用网络连接。除了程序员明确指示这样做外,OpenMPI进程还相互通信,并与MPI启动器通信,以交换控制数据,即所谓的带外消息传递。
oob
框架负责交换带外信息,该框架只有一个实现,该实现使用TCP/IP

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

进入设置->安全和隐私->防火墙

解锁(从左下方)

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


为我工作!;)

对我来说还不够。
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