루트 프로세스에서 값을 브로드 캐스트하고 다른 모든 프로세스에서 값을 수신하려고합니다. 필자는 다음 두 가지 형식으로 구현했습니다.부스트 mpi 방송 기능을 효율적으로 사용하는 방법은 무엇입니까?
if (world.rank() == 0) {
value = "Hello, World!";
broadcast(world, value, 0);
}
else {
world.recv(boost::mpi::any_source, boost::mpi::any_tag, value);
}
둘 것 다음과 같이 1. 나는 전화가 다른 프로세스로부터받는 동안
#include <boost/mpi.hpp>
#include <iostream>
#include <boost/serialization/string.hpp>
namespace mpi = boost::mpi;
int main(int argc, char* argv[])
{
mpi::environment env(argc, argv);
mpi::communicator world;
std::string value;
if (world.rank() == 0) {
value = "Hello, World!";
}
broadcast(world, value, 0);
std::cout << "Process #" << world.rank() << " says " << value << std::endl;
return 0;
}
2. 나는 단지 루트에서 방송 호출 방송 모든 프로세스의 기능 (루트 및 다른 모든 노예를) 사용 이 예제에서 비슷하게 작동하지만 코드 효율성과 성능면에서 어떤 선호도가 있는지 알고 싶습니다.
감사합니다.