Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROGRAM DAY9
- USE MPI
- INTEGER :: I,IERR,A,B,C,D,E,N
- INTEGER(8) :: PART1,PART2
- CHARACTER(LEN=1) CHAR
- INTEGER, ALLOCATABLE :: PROG(:)
- INTEGER :: IERROR, NPROC, ICOMM, IRANK ,INTERCOMM ,ERRCODES(1)
- LOGICAL :: AMROOT,RUNNING,SETUP,FIRST
- INTEGER :: STATUS(MPI_STATUS_SIZE)
- CALL MPI_INIT(IERROR)
- ICOMM = MPI_COMM_WORLD
- CALL MPI_COMM_SIZE(ICOMM,NPROC,IERROR)
- CALL MPI_COMM_RANK(ICOMM, IRANK, IERROR)
- CALL MPI_COMM_SPAWN("./intcode",MPI_ARGV_NULL,1,MPI_INFO_NULL,0,ICOMM,INTERCOMM,ERRCODES,IERROR)
- OPEN(1,FILE="input.txt")
- N=1
- DO
- READ(1,'(A1)',IOSTAT=IERR,ADVANCE="NO")CHAR
- IF(IERR.NE.0)EXIT
- IF(CHAR.EQ.",")N=N+1
- END DO
- REWIND(1)
- ALLOCATE(PROG(0:N-1))
- READ(1,*)PROG
- CALL MPI_SEND(N,1,MPI_INTEGER,I,0,INTERCOMM,IERROR)
- CALL MPI_SEND(PROG,N,MPI_INTEGER,I,1,INTERCOMM,IERROR)
- CALL MPI_SEND(1_8,1,MPI_DOUBLE_PRECISION,0,2,INTERCOMM,IERROR)
- CALL MPI_RECV(PART1,1,MPI_DOUBLE_PRECISION,0,999,INTERCOMM,STATUS,IERROR)
- WRITE(*,'("Part 1: ",I0)') PART1
- CALL MPI_SEND(2_8,1,MPI_DOUBLE_PRECISION,0,2,INTERCOMM,IERROR)
- CALL MPI_RECV(PART2,1,MPI_DOUBLE_PRECISION,0,999,INTERCOMM,STATUS,IERROR)
- WRITE(*,'("Part 2: ",I0)') PART2
- CALL MPI_SEND(-1_8,1,MPI_DOUBLE_PRECISION,0,2,INTERCOMM,IERROR)
- CALL MPI_FINALIZE(IERROR)
- END PROGRAM DAY9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement