主题:fortran77写的程序如何采用Openmp并行?
在这个帖子http://bbs.pfan.cn/post-368849.html
里看到f90程序并行方法,试了下,可以达到目的
!$ call omp_set_num_threads(8)
!$OMP PARALLEL DEFAULT(PRIVATE)
threads = omp_get_num_threads()
print *,threads
!$OMP DO
do i=1,10
myTest = i*i*i-i*i
end do
!$OMP END DO
!$OMP END PARALLEL
改成fortran77格式,好像不好使了
progranm main
!$ call omp_set_num_threads(8)
!$OMP PARALLEL DEFAULT(PRIVATE)
threads = omp_get_num_threads()
write(*,*) threads
!$OMP DO
do i=1,10
myTest = i*i*i-i*i
end do
!$OMP END DO
!$OMP END PARALLEL
end
我又改造了一个fortran77程序,这个好像可以
progranm main
!$omp parallel
!$omp critical
do i=1, 10000000
write(*,*) i, "hello word"
enddo
!$omp end critical
!$omp end parallel
end
编译:gfortran -fopenmp hello.f -o hellof
执行:OMP_NUM_THREADS=2 ./hellof
可以看到有两个进程,为什么第一个改的程序还是一个进程在跑呢?
注:我是在ubuntu系统下测试的
里看到f90程序并行方法,试了下,可以达到目的
!$ call omp_set_num_threads(8)
!$OMP PARALLEL DEFAULT(PRIVATE)
threads = omp_get_num_threads()
print *,threads
!$OMP DO
do i=1,10
myTest = i*i*i-i*i
end do
!$OMP END DO
!$OMP END PARALLEL
改成fortran77格式,好像不好使了
progranm main
!$ call omp_set_num_threads(8)
!$OMP PARALLEL DEFAULT(PRIVATE)
threads = omp_get_num_threads()
write(*,*) threads
!$OMP DO
do i=1,10
myTest = i*i*i-i*i
end do
!$OMP END DO
!$OMP END PARALLEL
end
我又改造了一个fortran77程序,这个好像可以
progranm main
!$omp parallel
!$omp critical
do i=1, 10000000
write(*,*) i, "hello word"
enddo
!$omp end critical
!$omp end parallel
end
编译:gfortran -fopenmp hello.f -o hellof
执行:OMP_NUM_THREADS=2 ./hellof
可以看到有两个进程,为什么第一个改的程序还是一个进程在跑呢?
注:我是在ubuntu系统下测试的