最初に・・・
今回が初投稿となります。不出来なところもあろうかと思いますが,ご容赦ください。また,本記事も結局のところ,計算の高速化を達成できていません。もし,本件で何かご存知のことがあれば,コメントいただければ幸いです。
今回の目的
AMDから提供されているコンパイラAOCCを用いて,OpenFOAM v1912をソースからビルドし,自前のRyzen7 3700での計算を少しで良いので高速化しようというのが目的になります。
ビルド環境
- Ryzen7 3700
- Memory 32GB (この情報は不要だとは思いますが)
- Ubuntu 20.04 LTS
- AMD Optimizing C/C++ Compiler ver.2.1 (2020.6.10での最新版) (以下,AOCC)
- OpenMPI (ver. 4.0.3) (Ubuntu20.04LTS でデフォルトで入るもの)
AMD AOCCの準備
何をおいてもAOCCダウンロード,インストールしないことには始まらない。ということで,ここからコンパイラのdebファイルをダウンロード。
sudo apt install aocc-compiler-2.1.0_1_amd64.deb
これで,/opt/AMD/ 内にコンパイラがインストールされます。同ディレクトリ下にある設定用のシェルを叩いて,clangが見える様にします。
source /opt/AMD/setup.sh
which clang
として,パスが通っていればAOCCのインストールは完了です。
OpenFOAM v1912のソースコンパイル準備
AOCC版のSource file探訪
人それぞれ趣向が異なりますので,何とも言えませんが,私は/opt/
ないしは/pub/
下に様々なパッケージを置くことを好んでいます。今回も/pub/
下にソースを展開し,コンパイルすることにしました1。
OpenFOAM.orgからソースをダウンロードし,
- OpenFOAM-v1912
- ThirdParty-v1912
上記の様に展開,詳細は後述するbashrcの設定をGCC → Clang
にしてコンパイルをしたのですが・・・,
結論からするとコンパイルできませんでした。コンパイルオプションがAOCCCのclangに合致していないのが原因の様です。
そこで色々と彷徨ったところ,OpenFOAMのgitlabにissueとして上がっていました。ここを辿ったところ,DeveloperのMarkさんという方がAOCC修正したソースを上げてくれていることを発見。先にダウンロードしたソースは削除し,ここのものに入れ替えました。
環境変数修正の苦悩
これでAOCC修正ありのソースが手に入りましたので,まずは,OpenFOAMのパスを通します。パスの設定は,/installDir/to/OpenFOAM-v1912/etc/bashrc
にあります。この中の,WM=COMPILER
を以下のように修正します。
export WM_COMPILER = Amd
また、原因はわからずじまいでしたが、ThirdPartyDirが/installDir/to/OpenFOAM-v1912/ThirdPartyのような設定になってしまっていました(ThirdPartyが不要な方はスキップください)。
そのため、/installDir/to/OpenFOAM-v1912/etc/config.sh/setupを以下のように修正しました。
WM_THIRD_PARTY_DIR="/installDir/to/ThirdParty-v1912"
これで、source /installDir/to/OpenFOAM-v1912/etc/bash
とすれば環境設定が完了するはずです。
コンパイル
あとはOpenFOAM-v1912のディレクトリに移動し、Allwmake -j 4
などのように並列コンパイルしてあげれば作業は完了です。
で,計算速度は?
OpenCAE学会で利用されているチャンネル流れチュートリアルで,gcc版,aocc版とで比較を行いました。
OF v1912 with AOCC(AOCCコンパイル対応のSource(develop.openfoam.com #1627)からビルド)
AOCC ver.2.1
OpenMPI 4.0.3
シングル計算:938sec
4並列: 475sec
OF v1912 with GCC (OpenFoam.com Sourceからビルド)
gcc(Ubuntu 9.3.0-10ubuntu2) 9.3.0
OpenMPI 4.0.3
シングル計算:986sec
4並列:478sec
ということで,全く早くなりませんでした。
この結果ですが,こちらでも同様の傾向が出ているようですし,15th OpenFOAM Workshopで投げかけたところ,そんなもんとのコメントでしたので,これ以上の深堀りは辞めました。
-
ちなみに,デフォルトの使用では
/home/hoge/OpenFOAM/
下に展開してコンパイルする様なインストラクションが出されていますが,基本,どこで作業しても支障はありません。 ↩