MPI 통신에 MPI_B캐스트 사용
MPI_Bcast를 사용하여 루트 노드에서 다른 모든 노드로 메시지를 브로드캐스트하려고 함.하지만 내가 이 프로그램을 실행할 때마다 항상 시작에 걸려.뭐가 문제인지 아는 사람 있어?
#include <mpi.h>
#include <stdio.h>
int main(int argc, char** argv) {
int rank;
int buf;
MPI_Status status;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if(rank == 0) {
buf = 777;
MPI_Bcast(&buf, 1, MPI_INT, 0, MPI_COMM_WORLD);
}
else {
MPI_Recv(&buf, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status);
printf("rank %d receiving received %d\n", rank, buf);
}
MPI_Finalize();
return 0;
}
이것은 MPI에 익숙하지 않은 사람들에게 공통적인 혼란의 원천이다.브로드캐스트에서 전송된 데이터를 수신하는 데 사용하는 것이 아니라 를 사용하는 경우.
네가 원하는 건 이것이야
#include <mpi.h>
#include <stdio.h>
int main(int argc, char** argv) {
int rank;
int buf;
const int root=0;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if(rank == root) {
buf = 777;
}
printf("[%d]: Before Bcast, buf is %d\n", rank, buf);
/* everyone calls bcast, data is taken from root and ends up in everyone's buf */
MPI_Bcast(&buf, 1, MPI_INT, root, MPI_COMM_WORLD);
printf("[%d]: After Bcast, buf is %d\n", rank, buf);
MPI_Finalize();
return 0;
}
MPI 집단 통신의 경우, 모든 사람이 참여해야 한다; 모든 사람은 Bcast, 또는 Allreduce, 또는 당신이 가진 것을 불러야 한다. (그래서 Bcast 루틴에는 "루트"를 명시하는 매개변수가 있다. 또는 누가 전송을 하고 있는가; 만약 Bcast라고 불리는 송신자만 있다면, 당신은 이것이 필요하지 않을 것이다.)수신자를 포함한 모든 사람이 방송을 부른다; 수신자는 수신자만 게시하는 것이 아니다.
그 이유는 집단 운영이 통신에 모든 사람을 참여시킬 수 있기 때문에, 통신 패턴을 최적화하기 위한 범위(예: 루트 프로세서가 다른 모든 등급에 걸쳐 루핑을 하고 전송을 하는 것)가 아니라, 어떤 일이 일어나기를 원하는지(모든 사람이 한 프로세스의 데이터를 얻는다)를 명시하기 위해서(예: 루트 프로세서가 다른 모든 등급에 걸쳐서 루프를 하고 전송을 한다)가 되기 때문이다.필요한 계층적 통신log(P)
…보다 오히려 스텝을 밟다P
P 프로세스에 대한 단계).
MPI_Bcast
집합적 운영이며, 완료하기 위해서는 모든 과정에 의해 호출되어야 한다.
그리고 전화할 필요가 없다.MPI_Recv
사용할 때MPI_Bcast
. 당신에게 도움이 될 수 있는 게시물이 있다. 여기를 클릭하십시오.
참조URL: https://stackoverflow.com/questions/7864075/using-mpi-bcast-for-mpi-communication
'IT이야기' 카테고리의 다른 글
github/gitlab 페이지가 있는 vuejs 기록 모드 (0) | 2022.04.21 |
---|---|
FreeMarker 템플릿에 변수가 있는지 확인하는 방법 (0) | 2022.04.21 |
왜 이러한 구성들은 사전 및 사후 증가 미정의 행동을 사용하는가? (0) | 2022.04.19 |
vuex에서 로그인 작업 후 Axios 요청에 헤더 토큰 추가 (0) | 2022.04.19 |
SPA VueJS에서 mapState 및 mapUtions를 전체적으로 선언 (0) | 2022.04.19 |