|
| 1 | +## ソースコード |
| 2 | +[email protected]:RIKEN-RCCS/llvm-project.git |
| 3 | +branch:2024-base-llvm17 (It is a temporary name) |
| 4 | + |
| 5 | +## ビルド方法 |
| 6 | + |
| 7 | +1. リポジトリからソースコードをcloneする |
| 8 | + |
| 9 | + ``` |
| 10 | + $ git clone -b 2024-base-llvm17 https://github.com/RIKEN-RCCS/llvm-project.git |
| 11 | + ``` |
| 12 | +
|
| 13 | +2. llvm-projectディレクトリ直下でBUILD用ディレクトリを作成する |
| 14 | +
|
| 15 | + ``` |
| 16 | + $ cd llvm-project |
| 17 | + $ mkdir build |
| 18 | + ``` |
| 19 | +
|
| 20 | +3. cmakeコマンドでMakefileを生成する |
| 21 | +
|
| 22 | + cmakeで指定可能なパラメータはBuilding LLVM with CMake(https://llvm.org/docs/CMake.html )を参照してください。 |
| 23 | +
|
| 24 | + ``` |
| 25 | + $ cd build |
| 26 | + $ cmake ../llvm \ |
| 27 | + -DCMAKE_BUILD_TYPE=Release \ |
| 28 | + -DCMAKE_INSTALL_PREFIX=../install \ |
| 29 | + -DLLVM_TARGETS_TO_BUILD="AArch64" \ |
| 30 | + -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_INCLUDE_BENCHMARKS=OFF |
| 31 | + ``` |
| 32 | +
|
| 33 | + CMAKE_BUILD_TYPE: ビルドタイプ(Release|Debug) |
| 34 | + CMAKE_INSTALL_PREFIX: インストール先 |
| 35 | + LLVM_TARGETS_TO_BUILD: ビルドするアーキテクチャ |
| 36 | + LLVM_ENABLE_PROJECTS: ビルドするプロジェクト |
| 37 | +
|
| 38 | +4. makeする |
| 39 | +
|
| 40 | + ``` |
| 41 | + $ make -j8 && make install |
| 42 | + ``` |
| 43 | +
|
| 44 | +5. ビルド結果の確認 |
| 45 | +
|
| 46 | + アプリケーションの翻訳を行います。 |
| 47 | +
|
| 48 | + ``` |
| 49 | + $ cd ../install |
| 50 | + $ ./bin/clang++ -mcpu=a64fx --target=aarch64-linux-gnu -Ofast -msve-vector-bits=512 -fswp -fls -S ~/axhelm-4.cpp -o ~/axhelm-4.s -foptimization-record-file=./axhelm-4.yaml |
| 51 | + ``` |
| 52 | +
|
| 53 | + 生成されたaxhelm-4.yamlを参照し、以下のメッセージがあればSWPLが |
| 54 | + 動作しています(メッセージ内の数字は異なる場合があります)。 |
| 55 | +
|
| 56 | + 「software pipelining (IPC: 2.03, ITR: 4, MVE: 2, II: 65, Stage: 4, 」 |
| 57 | +
|
| 58 | +6. リンクまで行う場合 |
| 59 | +
|
| 60 | + ログインノード上でリンクまで行い実行ファイルを生成するときは以下のオプションを付け加えてください。 |
| 61 | +
|
| 62 | + ``` |
| 63 | + -fuse-ld=lld --sysroot=/opt/FJSVxos/devkit/aarch64/rfs |
| 64 | + ``` |
| 65 | +
|
| 66 | +## MaxIIおよびbudgetの調整について |
| 67 | +以下の翻訳オプションにてMaxII、budgetを調整することで、SWPLの翻訳時間を削減できる場合があります。<br> |
| 68 | +budgetはSWPLにて命令の配置を試みる回数の上限であり、大きくなるほど翻訳時間が長くなる傾向となります。 |
| 69 | +
|
| 70 | +### 翻訳オプション |
| 71 | +| オプション名 | 機能 | 指定例 | 備考 | |
| 72 | +| --- | --- | --- | --- | |
| 73 | +| -swpl-maxii | 命令配置を試みる最大のIIを指定する。 | -mllvm -swpl-maxii=100 | 指定無し、または0が指定された場合は 1000。 | |
| 74 | +| -swpl-budget-ratio-less | SWPL対象命令数が100より小さい場合の、budget算出の係数を指定する。<br>budget数は、SWPL対象命令数×係数となる。 | -mllvm -swpl-budget-ratio-less=10.0 | 指定無し、または0が指定された場合は 50.0。 | |
| 75 | +| -swpl-budget-ratio-more | SWPL対象命令数が100以上である場合の、budget算出の係数を指定する。<br>budget数は、SWPL対象命令数×係数となる。 | -mllvm -swpl-budget-ratio-more=5.0 | 指定無し、または0が指定された場合は 25.0。 | |
| 76 | +
|
| 77 | +### 注意点 |
| 78 | +SWPLが適用されていたループが、MaxII、budgetの調整によりSWPLが適用されなくなる場合があります。 |
| 79 | +
|
0 commit comments