달리는 동안그로마크서로 다른 설정(Infiniband에 연결된 노드 내 2, 3, 4개 노드)에서 벤치마킹한 결과 심각한 성능 저하가 나타났습니다. 본 연구의 목적을 위해 MPI_Alltoall()
모든 노드 간에 다양한 크기(4바이트 ~ 2MB)의 패킷을 전송하는 테스트 프로그램을 만들었습니다. 테스트 프로그램의 내부 타이밍과 I_MPI_STATS
IntelMPI 시설에서 수집된 통계는 모두 동일한 패턴을 보여줍니다. 즉, 적은 양의 데이터의 경우 결과 대역폭이 허용 가능한 반면, 더 큰 페이로드의 경우 동작이 불규칙해집니다. 일부 전송에는 매우 오랜 시간이 필요합니다(약 2.15초), 평균 성능이 저하됩니다. 이러한 매우 긴 지연은 무작위로 발생하는 것으로 나타나므로 존재하지 않거나 샘플 크기가 작을 수도 있습니다(예: 페이로드 크기당 전송 100개). 다음은 4개의 노드, 각 크기의 1000개 전송을 사용하여 얻은 일부 샘플 데이터입니다.
# Message size Call count Min time Avr time Max time Total time
Alltoall
1 2097152 1000 5649.09 13420.98 2152225.97 13420980.69
2 1048576 1000 2874.85 13000.87 2151684.05 13000867.13
3 524288 1000 1404.05 8484.15 2149509.91 8484153.99
4 262144 1000 719.07 5308.87 2148617.98 5308866.74
5 131072 1000 364.78 9223.77 2148303.99 9223767.04
6 65536 1000 206.95 5124.41 2147943.97 5124409.44
7 32768 1000 120.88 12562.09 2147678.85 12562089.68
8 16384 1000 36.00 57.03 93.94 57034.25
9 8192 1000 22.89 34.80 103.00 34803.87
관리되지 않는 스위치를 통해 QDR Infiniband 및 IntelMPI 4.0.3을 사용하고 있습니다. ib_send_bw를 사용하여 링 전송(node1 -> node2 -> node3 -> node4 -> node1)을 설정하여 MPI를 확인하려고 시도했지만 문제가 되는 동작은 관찰되지 않았습니다.
#bytes #iterations BW peak[MB/sec] BW average[MB/sec]
16384 10000 1202.93 1202.91
32768 10000 1408.94 1367.46
65536 10000 1196.71 1195.85
131072 10000 1195.68 1180.71
262144 10000 1197.27 1167.45
524288 10000 1162.94 1154.15
1048576 10000 1184.48 1151.31
2097152 10000 1163.39 1143.60
4194304 10000 1157.77 1141.84
8388608 10000 1141.23 1138.36
내 질문: 이 문제를 더 깊이 파고들어 문제의 근본 원인이 무엇인지 알아낼 수 있는 방법이 있습니까? IntelMPI 참조 매뉴얼을 살펴봤지만 I_MPI_STATS
.