在Ubuntu上实现Fortran并行计算主要有OpenMP和MPI两种方式,步骤如下:
sudo apt update
sudo apt install gfortran libomp-dev # gfortran默认支持OpenMP
!$omp parallel do
等指令标记并行区域,例如:program parallel_example
use omp_lib
implicit none
integer :: i, num_threads
!$omp parallel do private(i)
do i = 1, 10
print *, 'Thread', omp_get_thread_num(), 'executing iteration', i
end do
!$omp end parallel do
print *, 'Total threads:', omp_get_num_threads()
end program
gfortran -fopenmp -o parallel_example parallel_example.f90
./parallel_example
sudo apt update
sudo apt install libopenmpi-dev openmpi-bin # 推荐OpenMPI
use mpi
库编写进程间通信程序,例如:program mpi_example
use mpi
implicit none
integer :: rank, size, ierr
call MPI_Init(ierr)
call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr)
call MPI_Comm_size(MPI_COMM_WORLD, size, ierr)
print *, 'Hello from process', rank, 'of', size
call MPI_Finalize(ierr)
end program
mpif90 -o mpi_example mpi_example.f90
mpirun -np 4 ./mpi_example # 指定4个进程
!$omp
指令标记并行区域。MPI_Send/Recv
等函数实现进程间通信,灵活性更高。根据计算需求选择合适方法,简单并行任务优先用OpenMP,复杂分布式任务选择MPI。