Skip to content

Commit 8e73593

Browse files
author
m7221sa
committed
refs llvm#7145 Added SWPL processing related files
1 parent caa6574 commit 8e73593

13 files changed

+19305
-0
lines changed

README_2024-base-llvm17.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
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

Comments
 (0)