1. 安装Fortran编译器
在Ubuntu中,GNU Fortran(gfortran) 是最常用的开源编译器,可通过包管理器快速安装:
sudo apt update
sudo apt install gfortran
安装完成后,通过 gfortran --version
验证安装(需显示版本号,如 GNU Fortran (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
)。
2. 安装科学计算核心库
Fortran的科学计算依赖BLAS(基础线性代数子程序)、LAPACK(线性代数包)、FFTW(快速傅里叶变换) 等优化库,均可以通过 apt
安装开发包:
sudo apt install libblas-dev liblapack-dev libfftw3-dev
这些库提供了矩阵运算、线性方程组求解、傅里叶变换等核心功能,是科学计算的基础。
3. 编写与编译Fortran程序
使用文本编辑器(如 nano
、vim
)创建Fortran源文件(以 .f90
为扩展名,支持现代Fortran特性),例如编写一个简单的数值积分程序:
program numerical_integration
implicit none
integer, parameter :: dp = selected_real_kind(15) ! 双精度浮点
real(dp) :: a, b, h, sum
integer :: i, n
! 积分区间与划分
a = 0.0_dp; b = 1.0_dp; n = 1000
h = (b - a) / n
! 梯形法则计算积分(被积函数 f(x) = x²)
sum = 0.5_dp * (func(a) + func(b))
do i = 1, n-1
sum = sum + func(a + i*h)
end do
sum = h * sum
print *, "积分结果:", sum
contains
function func(x) result(y)
real(dp), intent(in) :: x
real(dp) :: y
y = x**2 ! 被积函数定义
end function func
end program numerical_integration
保存后,通过 gfortran
编译生成可执行文件:
gfortran -o integrate numerical_integration.f90
运行程序:
./integrate
输出结果应为 积分结果:0.3333333333333333
(接近理论值 1/3)。
4. 链接科学计算库
若程序需要使用外部库(如LAPACK求解线性方程组),编译时需通过 -l
选项链接库文件,-L
指定库路径(系统默认路径无需额外指定):
gfortran -o linear_solver linear_solver.f90 -llapack -lblas
例如,使用LAPACK的 dgesv
函数解线性方程组 (AX = B) 的程序,需链接 lapack
和 blas
库。
5. 优化计算性能
-O3
选项开启最高级别优化,提升代码执行效率:gfortran -O3 -o optimized_program my_program.f90
program parallel_matrix_mul
use omp_lib
implicit none
integer, parameter :: n = 2000
real(kind=8), dimension(:,:), allocatable :: A, B, C
integer :: i, j, k
real(kind=8) :: start_time, end_time
! 分配内存
allocate(A(n,n), B(n,n), C(n,n))
! 初始化矩阵(略)
C = 0.0
! 并行计算(OpenMP指令)
!$OMP PARALLEL DO PRIVATE(i,j,k)
do j = 1, n
do i = 1, n
do k = 1, n
C(i,j) = C(i,j) + A(i,k) * B(k,j)
end do
end do
end do
!$OMP END PARALLEL DO
! 计算耗时
end_time = omp_get_wtime()
print *, "并行计算耗时:", end_time - start_time, "秒"
deallocate(A, B, C)
end program parallel_matrix_mul
编译时添加 -fopenmp
选项:gfortran -fopenmp -O3 -o parallel_program parallel_matrix_mul.f90
通过 omp_get_wtime()
函数测量并行计算的耗时,对比串行版本的性能提升。6. 使用集成开发环境(IDE)
推荐使用 Visual Studio Code(VS Code) 提升开发效率:
tasks.json
文件,实现一键编译与运行(例如定义 gfortran
编译任务)。通过以上步骤,可在Ubuntu上搭建Fortran科学计算环境,实现从基础数值计算到高性能并行处理的完整流程。