Dears colleagues,
I´m having some problems with an OpenMP test program. The running time remains the same for any number of threads. My test code is:
PROGRAM openmp
!$ USE OMP_LIB
IMPLICIT NONE
INTEGER*4 :: i, num_threads
REAL*8 :: start_time
REAL*8 :: end_time
INTEGER*4, ALLOCATABLE, DIMENSION (:) :: m
ALLOCATE ( m (1000000000) )
m = 0
i = 0
DO num_threads = 1,8
CALL OMP_SET_NUM_THREADS ( num_threads )
start_time = OMP_GET_WTIME()
!$OMP PARALLEL DO
DO i = 1, 1000000000
m(i) = m(i) + 1
ENDDO
!$OMP END PARALLEL DO
end_time = OMP_GET_WTIME()
WRITE ( *, 50 ) num_threads, end_time - start_time
ENDDO
50 FORMAT ( ' Threads=', I2, '. Time ', F12.8,' seconds.' )
END PROGRAM openmp
OUTPUT:
Threads= 1. Time 0.44233354 seconds.
Threads= 2. Time 0.41301712 seconds.
Threads= 3. Time 0.38321273 seconds.
Threads= 4. Time 0.40626812 seconds.
Threads= 5. Time 0.40601481 seconds.
Threads= 6. Time 0.39871999 seconds.
Threads= 7. Time 0.70736344 seconds.
Threads= 8. Time 0.40052118 seconds.
Compilation options:
- Release x64,
- Fortran -> Preprocessor -> OpenMP Conditional Compilation -> Yes
- Fortran -> Language -> Process OpenMP Directives -> Generate Parallel Code (/Qopnmp)
Hadware: I7-3632QM
SO - Windows10
I appreciate any help.
Thanks in advance.