目次

5.5 ビルド方法

WindowsでOpenFDTDをそのまま実行するときはビルド作業(コンパイル・リンク)は不要ですが、 ソースコードを修正してビルドするには、 開発環境をインストールしたのち以下を行ってください。
コマンドラインでの開発環境については[3]を参考にしてください。

5.5.1 Windows+VC++環境

Windows+VC++環境ではコマンドプロンプトを起動してOpenFDTDフォルダに移動した後、 以下のコマンドを実行してください。

> cd sol
> nmake.exe clean
> nmake.exe    CPU版計算プログラム(ofd.exe)が作成されます
> cd ..\post
> nmake.exe clean
> nmake.exe    ポスト処理プログラム(ofd_post.exe)が作成されます
> cd ..\mpi
> nmake.exe clean
> nmake.exe    MPI対応CPU版計算プログラム(ofd_mpi.exe)が作成されます
> cd ..\cuda
> nmake.exe clean
> nmake.exe    GPU版計算プログラム(ofd_cuda.exe)が作成されます
> cd ..\cuda_mpi
> nmake.exe clean
> nmake.exe    MPI対応GPU版計算プログラム(ofd_cuda_mpi.exe)が作成されます
> cd ..

5.5.2 Linux+gcc環境

Linux+gcc環境ではコマンドラインでOpenFDTDフォルダに移動した後、 以下のコマンドを実行してください。

$ cd sol
$ mv Makefile_gcc Makefile
$ make clean
$ make    CPU版計算プログラム(ofd)が作成されます
$ cd ../post
$ mv Makefile_gcc Makefile
$ make clean
$ make    ポスト処理プログラム(ofd_post)が作成されます
$ cd ../mpi
$ mv Makefile_mpicc Makefile
$ make clean
$ make    MPI対応CPU版計算プログラム(ofd_mpi)が作成されます
$ cd ../cuda
$ mv Makefile_linux Makefile
$ make clean
$ make    GPU版計算プログラム(ofd_cuda)が作成されます
$ cd ../cuda_mpi
$ mv Makefile_linux Makefile
$ make clean
$ make    MPI対応GPU版計算プログラム(ofd_cuda_mpi)が作成されます
$ cd ..

5.5.3 プログラム構成

プログラムの構成(ソースコードの依存関係)は図5-5-1のようになっています。
sol/を変更したときはmpi/,cuda/,cuda_mpi/,post/もmake(再コンパイル)してください。
mpi/を変更したときはcuda_mpi/もmakeしてください。
cuda/を変更したときはcuda_mpi/もmakeしてください。


図5-5-1 プログラム構成

5.5.4 コンパイルオプション

特殊な環境のために以下のコンパイルオプションを用意しています。 これらを変更するときは sol/, mpi/, cuda/, cuda_mpi/, post/ にあるMakefileをすべて変更して再コンパイルしてください。
通常の環境では使用しないので既定値ではすべてOFFになっています。

D_ID16, D_ID32, D_ID64
物性値の種類を既定値の256種類以上にするときONにしてください。 それぞれ上限数が216, 231, 263になります。 それに合わせて必要メモリーも増えます。

D_DOUBLE
倍精度で計算するときONにしてください。 必要メモリーが2倍になります。 単精度でも精度よく計算できるので通常は使用しません。

5.5.5 スパコンでの使用法

NECスパコン(NEC SX-Aurora TSUBASA)と 富士通スパコン(Fujitsu Supercomputer PRIMEHPC または 富岳)では、 Makefile_gccの各マクロを下記のように修正してビルドしてください。

表5-5-1 スパコン用のMakefileのマクロ
マクロGCCNECスパコン富士通スパコン
(clangモード)
CCgccnccfcc
OMPOPT-fopenmp-fopenmp-fopenmp
CFLAGS-Ofast -I../include-O2 -I../include -D_ID32-Nclang -Ofast -I../include -D_ID32
LDFLAGS-Ofast -fopenmp-O2 -fopenmp-fopenmp
LIBS-lmなし-Nlibomp
CC (MPI用)mpiccmpinccmpifcc
MPIOPT (MPI用)-D_MPI-D_MPI-D_MPI
定義されるマクロ__GNUC____NEC____CLANG_FUJITSU
(参考)強制ベクトル化なし#pragma _NEC ivdep#pragma clang loop vectorize(assume_safety)