저는 MPI를 배우기위한 프로그램을 작성하고 있습니다. 좋아, 나는 사각형 행렬을 곱하는 프로그램을 만들 것이다.mpiun이없는 프로그램은 매우 느립니다.
long **multiplyMatrices(long **matrix1, long **matrix2, long capacity)
{
long **resultMatrix = new long*[capacity];
for (long i = 0; i < capacity; ++i) {
resultMatrix[i] = new long[capacity];
}
for (long i = 0, j, k; i < capacity; ++i) {
for (j = 0; j < capacity; ++j) {
resultMatrix[i][j] = 0;
for (k = 0; k < capacity; ++k) {
resultMatrix[i][j] = resultMatrix[i][j] + matrix1[i][k] * matrix2[k][j];
}
}
}
return resultMatrix;
}
여기서 capacity == 1000
.
로컬 호스트 (Mac Mini 2012, Core i7, OS X 10.8.2)에서이 코드를 LLVM을 사용하는 XCode로 컴파일합니다. 계산에는 17 초가 소요됩니다. 네, 하나의 스레드에서. 원격 호스트
(일 OS 5.11, 듀얼 코어 CPU 8의 vCPU)는 I는mpirun main
계산할 152 초가 소요 ...
g++ -I/usr/openmpi/ompi-1.5/include -I/usr/openmpi/ompi-1.5/include/openmpi -O2 main.cpp -R/opt/mx/lib -R/usr/openmpi/ompi-1.5/lib -L/usr/openmpi/ompi-1.5/lib -lmpi -lopen-rte -lopen-pal -lnsl -lrt -lm -ldl -lsocket -o main
하거나
g++ -O2 main.cpp -o main
하지만 그것을 컴파일 이 ... 뭐가 잘못 됐니? 내가 놓친 게 있니? 그것은 서버의 CPU 아키텍처에 관한 것입니까?