以下のファイル (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