Программа Fortran OpenMP не показывает ускорения CPU_TIME ()

Использование параллелизма должно привести к минимизации времени выполнения программы, но со мной этого не произошло. Когда я программировал свой код параллельно с использованием OpenMP, время выполнения увеличивается, то есть PARALLEL TIME> SERIAL TIME.

Мой код:

    PROGRAM MAIN
    use omp_lib
    implicit none
    REAL*8 Times1,Times2
    INTEGER I,J
    real, allocatable, dimension(:) :: a
    allocate(a(1000))
    DO J = 1, 1000
    a(j)=j  
    ENDDO
!    ***************NO PARALLEL CODE ************************************
    call CPU_TIME(Times1)
    write(*,*) 'CPU NO PARALLEL STARTED:',Times1
    DO I = 1, 1000
    DO J = 1, 500000
    a(I)=a(I)+0.0001
    end do 
    a(I)=a(I)+a(I)+a(I)
    ENDDO
    call CPU_TIME(Times2)
    write(*,*) 'CPU CPU NO PARALLEL finished:',Times2
    write(*,*) 'NO PARALLEL TIMES:',Times2-Times1
    write(*,*) '---------------------------------------------------'
!    ***************PARALLEL CODE ************************************
    call CPU_TIME(Times1)
    write(*,*) 'CPU PARALLEL STARTED:',Times1
!$OMP PARALLEL DEFAULT(shared), private(I,J)
!$OMP DO
    DO I = 1, 1000
    DO J = 1, 500000
    a(I)=a(I)+0.0001
    end do 
    a(I)=a(I)+a(I)+a(I)
    ENDDO
!$OMP END DO
!$OMP END PARALLEL
    call CPU_TIME(Times2)
    write(*,*) 'CPU PARALLEL finished:',Times2
    write(*,*) 'PARALLEL TIMES:',Times2-Times1
    deallocate(a)
    STOP
    END

и результат:

 CPU NO PARALLEL STARTED:  1.560010000000000E-002
 CPU CPU NO PARALLEL finished:   4.86723120000000
 NO PARALLEL TIMES:   4.85163110000000
 CPU PARALLEL STARTED:   4.86723120000000
 CPU PARALLEL finished:   9.89046340000000
 PARALLEL TIMES:   5.02323220000000

Почему мое время, измеряемое CPU_TIME (), увеличивается с OpenMP?

Ответы на вопрос(1)

Ваш ответ на вопрос