fortran 90 질문 병렬요~
현재 win sever 2003에서
MPICH2 설치하고 FORTRAN 90으로 병렬 코드 연습중입니다.
클러스터 구축전에 단일 컴퓨터(쿼드코어)에서 테스트중입니다.
흔히 예제로 올라와있는 원주율 PI를 구하는 것은 성능이
싱글 코어 대비 쿼드 코어에서 약 4배 빠르게 나옵니다. (여기 까진 예제니깐요..)
하지만 제가 짠 코드를 보면 아래와 같습니다.
PROGRAM MAIN
IMPLICIT NONE
INCLUDE 'mpif.h'
INTEGER(4) :: I,J,K,T
INTEGER(4),PARAMETER :: IM=300,JM=60
INTEGER(4),DIMENSION(IM,JM) :: A,B,C
INTEGER(4) :: IERR,NPROCS,MYRANK
REAL(8) :: STIME,ETIME
CALL MPI_INIT(IERR)
CALL MPI_COMM_SIZE(MPI_COMM_WORLD,NPROCS,IERR)
CALL MPI_COMM_RANK(MPI_COMM_WORLD,MYRANK,IERR)
A(:,:)=0
B(:,:)=1
C(:,:)=2
CALL CPU_TIME(STIME)
DO t=1,1000
DO J=1,JM
DO I=1,IM
A(I,J)=B(I,J)+C(I,J)
ENDDO
ENDDO
ENDDO
CALL CPU_TIME(ETIME)
WRITE(*,'(F6.3)')ETIME-STIME
CALL MPI_FINALIZE(IERR)
ENDPROGRAM
보시는 바와 같이 단순합니다.
지정할 프로세스간에 데이터 통신은 없습니다,
mpiexec - n 4 실행파일명
으로 실행할 경우와
mpiexec - n 1 실행파일명
으로 실행할 경우 속도차이가 약 4배 정도 납니다
예를 들면
mpiexec - n 1 실행파일명 으로 실행한경우
0.5
mpiexec - n 2 실행파일명 으로 실행한경우
1.0
1.0
mpiexec - n 4 실행파일명 으로 실행한경우
2.0
2.0
2.0
2.0
이유를 모르겠습니다
작성한 코드만 생각하면
mpiexec - n 4 실행파일명 으로 실행한경우
0.50
0.50
0.50
0.50
이렇게 나와야 되는 거아닌가요?
quadcore를 사용중인데 프로세서간 통신도 없고...
제가 잘못 작성한건지 ...
부탁드립니다.
긴글 읽어 주셔서 감사합니다.
댓글 달기