jo3vpsmochi jo3vpsmochi 2019-04-04 07:31:18

[その他] FORTRAN IVで書いた素数計算プログラム(MPI並列版) このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

約60年の歳月をワープして現代に出現したFORTRAN IV版素数計算プログラムです。 FORTRAN77すら知らない人が書くとこうなります(笑)。

C     CALCULATES PRIME NUMBER
C     24.MAR.,2019
      INCLUDE 'mpif.h'
      INTEGER IERR,RANK,SIZE,LEN
      INTEGER ISTATUS(MPI_STATUS_SIZE)
      DOUBLE PRECISION DTIME
      DIMENSION MAT(999999)
      DIMENSION IMAT(999999)

      CALL MPI_INIT(IERR)
      CALL MPI_COMM_SIZE(MPI_COMM_WORLD,SIZE,IERR)
      CALL MPI_COMM_RANK(MPI_COMM_WORLD,RANK,IERR)

      DTIME=MPI_WTIME()
      X=FLOAT(999999)
      NMAX=IFIX(SQRT(X))
      DO 10 I=1,999999
      MAT(I)=2*I+1
   10 CONTINUE
      IF(RANK.NE.0) GOTO 15
      WRITE(6,100) SIZE
  100 FORMAT(1H ,13HPRIME NUMBERS/1H ,8HPROCS : ,I2)
   15 CONTINUE
      DO 20 N=RANK*2+3,NMAX*2+1,SIZE*2
      I=(N-1)/2
      IF(MAT(I).EQ.0) GO TO 20
      DO 25 J=I+N,999999,N
      MAT(J)=0
   25 CONTINUE
   20 CONTINUE
      CALL MPI_REDUCE(MAT,IMAT,999999,MPI_INTEGER,MPI_BAND,0,
     1MPI_COMM_WORLD,IERR)
      IF(RANK.NE.0) GOTO 35
      T=SNGL(MPI_WTIME()-DTIME)
      WRITE(6,120) T
  120 FORMAT(1H ,15HELAPSED TIME : ,F7.3,4H SEC)
      DO 30 I=1,999999
      IF(IMAT(I).EQ.0) GO TO 30
      WRITE(6,110) IMAT(I)
  110 FORMAT(1H ,I10)
   30 CONTINUE
   35 CALL MPI_FINALIZE(IERR)
      STOP
      END

使い方ヒント: 「これは臭う」という行を見付けたら、各行のsmellをクリックしてマーキングしておきましょう(要Twitter OAuth認証)

コメント

まだコメントがありません。最初にコメントを残しませんか?

コメント投稿には、twitter認証が必要です。

Twitter認証