C++ 避免在Mac OSX上运行MPI中的“接受传入网络连接”对话框
我是MPI初学者。我正试图在运行Mac_OSX Mountain Lion的macbook上运行最简单的MPI“hello world”代码。它只有1个处理器,但有4个内核。C++代码是这样的< /P>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 =
#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