以下のファイル (test.f90) をコンパイルする.
$cat test.f90 program test implicit none real(4) var var = 40.0e0 write(*,*) var end program test
最適化レベルは -fast でコンパイル. 最適化オプションについては PGI コンパイラ・オプションの使用法参照.
$ pgfortran -fast test.f90
最適化レベルは -fast でコンパイル
$ ifort -fast test.f90
以下のファイル (procedure.f90, module.f90) をコンパイルする (ファイルは http://www.nag-j.co.jp/fortran/FI_16.html を参考にしている).
$cat procedure.f90
program procedure
use matrix_operations
implicit none
integer,dimension(2,3) :: v
v(1,1) = 10
v(2,1) = 20
v(1,2) = 30
v(2,2) = 40
v(1,3) = 50
v(2,3) = 60
call mat_print(v)
end program procedure
$cat module.f90
module matrix_operations
implicit none
contains ! contains以降にモジュール手続きを記述する
subroutine mat_print( a ) ! 行列を出力するサブルーチン
integer,dimension(:,:),intent(in) :: a
integer :: i, j
do i = lbound(a,1), ubound(a,1)
do j = lbound(a,2), ubound(a,2)
write (*, '(I3)', advance='no') a(i,j) ! advance='no'は改行しない指定
end do
write (*,*) ! 改行
end do
end subroutine
end module matrix_operations最適化レベルは -fast でコンパイル.
$ pgfortran -fast -c module.f90 $ pgfortran -fast procedure.f90 module.o
最適化レベルは -fast でコンパイル.
$ ifort -fast module.f90 procedure.f90
最適化レベルは -fast でコンパイル.
$ pgfortran -fast -Mconcur test.f90
最適化レベルは -fast でコンパイル.
$ ifort -fast -parallel -static-intel test.f90
最適化レベルは -fast でコンパイル.
$ pgfortran -fast -mp test.f90
最適化レベルは -fast でコンパイル.
$ ifort -fast -openmp -static-intel test.f90
ジョブスクリプトの例 (今回は test.sh). 逐次版.
#!/bin/sh #PBS -N sample #PBS -j oe #PBS -o /work00/hogehoge/outfile #PBS -q long #PBS -M hogehoge@domain.jp #PBS -m abe cd /work00/hogehoge/test ./a.out exit 0
ジョブスクリプトの例 (今回は test.sh). MPI 並列版
#!/bin/sh #PBS -N sample #PBS -j oe #PBS -o /work00/hogehoge/outfile #PBS -q long #PBS -M hogehoge@domain.jp #PBS -m abe #PBS -l nodes=2:ppn=4 cd /work00/hogehoge/test mpiexec -n 8 ./a.out exit 0
ジョブスクリプトの例 (今回は test.sh). 自動並列版 & OpenMP 版
#!/bin/sh #PBS -N sample #PBS -j oe #PBS -o /work00/hogehoge/outfile #PBS -q long #PBS -M hogehoge@domain.jp #PBS -m abe #PBS -l nodes=1:ppn=4 cd /work00/hogehoge/test export OMP_NUM_THREADS=4 ./a.out exit 0
ジョブの実行
$ qsub test.sh
ジョブの確認
$ qstat
ジョブの中止
$ qdel [ジョブ番号]
計算ノードの確認
$ pbsnodes -a
export PGI=/work00/pgi export PATH=$PGI/linux86-64/2012/bin:$PATH export MANPATH=$MANPATH:$PGI/linux86-64/2012/man export LM_LICENSE_FILE=$PGI/license.dat