PROGRAM main IMPLICIT NONE INTEGER :: n,i,j REAL*8, allocatable :: A(:,:) INTEGER :: count, count_rate, count_max, T1, T2 REAL*8 Rand CHARACTER*80 :: argc1, argc2 INTEGER :: NUM_THREADS call getarg(1,argc1) read(argc1,*) n call getarg(2,argc2) read(argc2,*) NUM_THREADS print *, "Array size: ", n print *, "Number of Processors: ", NUM_THREADS allocate(A(n,n)) call OMP_SET_NUM_THREADS(NUM_THREADS) open(40, file='input') read(40,*) A ! Get time call system_clock(count, count_rate, count_max) T1 = count ! Real work here call lu_factor(n,A) ! Check time call system_clock(count, count_rate, count_max) T2 = count print *, "Time = ",T2-T1 open(60, file='par.output') write(60,*) A END PROGRAM main SUBROUTINE lu_factor(n,A) IMPLICIT NONE INTEGER :: n REAL*8 :: A(n,n) INTEGER i,j,k DO k = 1, n-1 DO i = k+1, n A(i, k) = A(i, k) / A(k, k) END DO DO i = k+1, n DO j = k+1, n A(i, j) = A(i, j) - A(i, k)*A(k, j) END DO END DO END DO END SUBROUTINE lu_factor