잠재적으로 차단 부스트 mpi "send"가 실제로 차단되어 교착 상태가 발생하는 경우를 찾으려고합니다.부스트 MPI (어떻게 MPICH 컴파일러 사용)와 교착 상태 시나리오가 있습니까?
#include <boost/mpi.hpp>
#include <iostream>
int main(int argc, char *argv[])
{
boost::mpi::environment env{argc, argv};
boost::mpi::communicator world;
if (world.rank() == 0)
{
char buffer[14];
const char *c = "Hello, world from 1!";
world.send(1, 1, c, 13);
std::cout << "1--11111\n";
world.send(1, 1, c, 13);
std::cout << "1--22222\n";
world.recv(1, 1, buffer, 13);
std::cout << "1--33333\n";
world.recv(1, 1, buffer, 13);
std::cout << "1--44444\n";
buffer[13] = '\0';
std::cout << buffer << "11 \n";
}
else
{
char buffer[14];
const char *c = "Hello, world from 2!";
world.send(0, 1, c, 13);
std::cout << "2--11111\n";
world.send(0, 1, c, 13);
std::cout << "2--22222\n";
world.recv(0, 1, buffer, 13);
std::cout << "2--33333\n";
world.recv(0, 1, buffer, 13);
std::cout << "2--44444\n";
buffer[13] = '\0';
std::cout << buffer << "22 \n";
}
}
하지만 그냥 잘 실행이 순서로 :
2--11111
2--22222
1--11111
1--22222
1--33333
1--44444
Hello, world 11
2--33333
2--44444
Hello, world 22
누군가가 나에게 내가 실제로 교착 보유하고있는 시나리오를 줄 수 있다면 나는 감사합니다. 잠재적으로 차단 부스트 mpi는 어떻게 작동합니까?
감사합니다.
Boost는 MPI 구현이 아니며 C++에 더 잘 어울리는 인터페이스 래퍼입니다. MPICH, OpenMPI, MVAPICH, Intel MPI, Cray, IBM, SGI 등과 같은 특정 MPI 구현에 대해 묻고 싶습니다. – Novelocrat