LoginSignup
0
0

More than 3 years have passed since last update.

OpenFOAM v1912 with AOCC

Last updated at Posted at 2020-07-17

最初に・・・

今回が初投稿となります。不出来なところもあろうかと思いますが,ご容赦ください。また,本記事も結局のところ,計算の高速化を達成できていません。もし,本件で何かご存知のことがあれば,コメントいただければ幸いです。

今回の目的

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ファイルをダウンロード。

install
sudo apt install aocc-compiler-2.1.0_1_amd64.deb

これで,/opt/AMD/ 内にコンパイラがインストールされます。同ディレクトリ下にある設定用のシェルを叩いて,clangが見える様にします。

install
source /opt/AMD/setup.sh
pathcheck
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で投げかけたところ,そんなもんとのコメントでしたので,これ以上の深堀りは辞めました。


  1. ちなみに,デフォルトの使用では /home/hoge/OpenFOAM/下に展開してコンパイルする様なインストラクションが出されていますが,基本,どこで作業しても支障はありません。 

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0