LLVM f18
[追記: R1.6.28] 今は普通に指示通りにやって install までゆくようです。また、f18-parse-demo では gfortran が起動されているようです。
LLVM の言語の中にはすでに flang という Fortran コンパイラがあるのですが、フロントエンドが NVidia/PGI の提供になっています。
これを C++17 のようなモダン C++ で新たに書き直そうとしているのが f18 です。
以前、試してみた時はうまく動かなかったのですが、最近 WSL/Ubuntu18.04 で一応コンパイル&実行できたのでメモっておきます。
fortran66.hatenablog.com
f18 のページにビルド&インストールの手引きがあるのですが、その通りにやってもビルドはされますが、インストールがされません。今回これを手作業で1個1個それらしきものをコピーして、何とか行くようになりました。
まず llvm 環境一式が必要なのですが、適宜用意してくださいw 並列実行でもコンパイルに半日くらいかかるので寝る前に始めるとよいかと思います。
写し
llvm をデフォでインストールすると /usr/local 以下にファイルがはいります。指示に従ってその場所を環境変数に入れておきます。入れなくても次の cmake のところでで何とかなります。
cd f18 mkdir build cd build export LLVM=/usr/local cmake -DLLVM_DIR=$LLVM -DCMAKE_INSTALL_PREFIX=/usr/local/bin -DCMAKE_BUILD_TYPE=Release .. make -j 8
これで build は出来ます。しかし sudo make install しても「指示分からじ」と言われて窮します。そこで、これでいいのか分かりませんが、手動でファイルをコピーしてゆくことにします。遊び環境で試してください。
sudo cp include/flang/Config/ /usr/local/include/flang/Config/ sudo cp lib/FIR/libFortranFIR.a /usr/local/lib sudo cp lib/common/libFortranCommon.a /usr/local/lib sudo cp lib/evaluate/libFortranEvaluate.a /usr/local/lib sudo cp lib/parser/libFortranParser.a /usr/local/lib sudo cp lib/semantics/libFortranSemantics.a /usr/local/lib sudo cp runtime/libFortranRuntime.a /usr/local/lib sudo cp tools/f18/f18 /usr/local/bin sudo cp tools/f18/f18-parse-demo /usr/local/bin
これで実行できます。ただしコンパイラドライバは、f18-parse-demo になっています。
program hello eps = epsilon(1.0) print *, eps print *, nearest(eps, +1.0) print *, nearest(eps, -1.0) end program hello
f18-parse-demo eps.f90 ./a.out 1.19209290E-07 1.19209304E-07 1.19209282E-07
- 作者: Michael Metcalf,John Reid,Malcolm Cohen
- 出版社/メーカー: Oxford Univ Pr
- 発売日: 2018/11/06
- メディア: ハードカバー
- この商品を含むブログを見る