Skip to content

Commit 0f33a46

Browse files
committed
[update] LLVM version
2 parents 078fcb1 + cabb6eb commit 0f33a46

File tree

121 files changed

+114662
-73
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

121 files changed

+114662
-73
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ cmake-build-release/
55
# Nested build directory
66
/build*
77

8+
/dev*
9+
/docs*
10+
811
# Nested install directory
912
/install*
1013

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ project(soda-opt LANGUAGES CXX C)
33

44
set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON)
55

6-
set(CMAKE_CXX_STANDARD 14 CACHE STRING "C++ standard to conform to")
6+
set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard to conform to")
77

88
find_package(MLIR REQUIRED CONFIG)
99

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ And follow one of our tutorials [here](docs/tutorials).
3030
This setup assumes that you have built LLVM and MLIR in `$BUILD_DIR` and
3131
installed it to `$PREFIX`.
3232
The current version of this project was tested with `llvm-project` commit:
33-
`d0a4450ecdaf124f9d422dbcba8cbdbeb50c836a`.
33+
`99020b3c73c1e22fa388be8fd0c44391d40b3a38`.
3434
Make sure you have the correct commit checked-out.
3535

3636
**Note**: Make sure to pass `-DLLVM_INSTALL_UTILS=ON` when building LLVM/MLIR

docs/tutorials/isc2022/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Create a python environment with needed dependencies
3131
# with virtualenv, vscode current_project_root_folder must contain the .venv_isc2022 folder
3232
virtualenv .venv_isc2022
3333
source .venv_isc2022/bin/activate
34-
pip install tensorflow-cpu pandas lxml
34+
pip install tensorflow pandas lxml
3535
3636
# Option 2 - using conda
3737
conda create --name isc2022 tensorflow-cpu pandas lxml

docs/tutorials/pact2022/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
main_kernel_*.xml

docs/tutorials/pact2022/README.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# PACT-2022 Tutorial - SODA-OPT
2+
3+
Part of the *SODA Synthesizer: Accelerating Data Science Applications with an end-to-end Silicon Compiler* toturial in the PACT2022 conference:
4+
5+
* [Tutorial website](https://pact22.cs.illinois.edu/tutorials.html#tut1-1)
6+
7+
8+
* Presentation date: Sunday, Oct 09, 2022
9+
* Time: 9:00 AM to 5:45 PM (CDT)
10+
11+
In this section you will learn how to use our compiler frontend to perform hardware software partitioning of high-level applications and automatic optimization of selected kernels.
12+
13+
# Instructions for docker users
14+
15+
Download this project on a machine **capable of running docker containers**
16+
17+
```
18+
git clone https://gitlab.pnnl.gov/sodalite/soda-opt
19+
```
20+
21+
Navigate to the turorial folder
22+
23+
```
24+
cd soda-opt/docs/tutorials/pact2022/docker-version
25+
```
26+
27+
Update/download the `soda` docker image
28+
29+
```
30+
docker pull agostini01/soda
31+
```
32+
33+
Create a python environment with needed dependencies
34+
35+
```
36+
# Option 1 - using virtualenv
37+
# with virtualenv, vscode current_project_root_folder must contain the .venv_pact2022 folder
38+
virtualenv .venv_pact2022
39+
source .venv_pact2022/bin/activate
40+
pip install tensorflow pandas lxml
41+
42+
# Option 2 - using conda
43+
conda create --name pact2022 tensorflow-cpu pandas lxml
44+
conda activate pact2022
45+
```
46+
47+
Enter the PACT tutorial directory with vscode or another tool capable of rendering jupyter notebooks.
48+
49+
```
50+
vscode soda-opt/docs/tutorials/pact2022/docker-version
51+
# Open this folder with vscode
52+
```
53+
54+
Open the tutorial file `tutorial.ipynb` and select the correct virtual env.
55+
If required, **grant permissions for vscode to install any missing dependencies**.
56+
57+
# Instructions for users without docker access
58+
59+
Please follow the tutorial using the files and folders available [here](docs/tutorials/pact2022/docker-version-executed).
Loading
Loading
Loading

docs/tutorials/pact2022/docker-version-executed/output/01searched-edited.mlir

Lines changed: 183 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
module attributes {llvm.data_layout = "", soda.bambu.container_module, soda.container_module, tf.versions = {bad_consumers = [], min_consumer = 0 : i32, producer = 1087 : i32}} {
2+
llvm.func @main_kernel(%arg0: !llvm.ptr<f32>, %arg1: !llvm.ptr<f32>, %arg2: !llvm.ptr<f32>) {
3+
%0 = llvm.mlir.undef : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
4+
%1 = llvm.insertvalue %arg0, %0[0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
5+
%2 = llvm.insertvalue %arg0, %1[1] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
6+
%3 = llvm.mlir.constant(0 : index) : i64
7+
%4 = llvm.insertvalue %3, %2[2] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
8+
%5 = llvm.mlir.constant(1 : index) : i64
9+
%6 = llvm.insertvalue %5, %4[3, 0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
10+
%7 = llvm.mlir.constant(32 : index) : i64
11+
%8 = llvm.insertvalue %7, %6[4, 0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
12+
%9 = llvm.mlir.constant(4 : index) : i64
13+
%10 = llvm.insertvalue %9, %8[3, 1] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
14+
%11 = llvm.mlir.constant(8 : index) : i64
15+
%12 = llvm.insertvalue %11, %10[4, 1] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
16+
%13 = llvm.mlir.constant(8 : index) : i64
17+
%14 = llvm.insertvalue %13, %12[3, 2] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
18+
%15 = llvm.mlir.constant(1 : index) : i64
19+
%16 = llvm.insertvalue %15, %14[4, 2] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
20+
%17 = llvm.mlir.undef : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
21+
%18 = llvm.insertvalue %arg1, %17[0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
22+
%19 = llvm.insertvalue %arg1, %18[1] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
23+
%20 = llvm.mlir.constant(0 : index) : i64
24+
%21 = llvm.insertvalue %20, %19[2] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
25+
%22 = llvm.mlir.constant(1 : index) : i64
26+
%23 = llvm.insertvalue %22, %21[3, 0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
27+
%24 = llvm.mlir.constant(32 : index) : i64
28+
%25 = llvm.insertvalue %24, %23[4, 0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
29+
%26 = llvm.mlir.constant(8 : index) : i64
30+
%27 = llvm.insertvalue %26, %25[3, 1] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
31+
%28 = llvm.mlir.constant(4 : index) : i64
32+
%29 = llvm.insertvalue %28, %27[4, 1] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
33+
%30 = llvm.mlir.constant(4 : index) : i64
34+
%31 = llvm.insertvalue %30, %29[3, 2] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
35+
%32 = llvm.mlir.constant(1 : index) : i64
36+
%33 = llvm.insertvalue %32, %31[4, 2] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
37+
%34 = llvm.mlir.undef : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
38+
%35 = llvm.insertvalue %arg2, %34[0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
39+
%36 = llvm.insertvalue %arg2, %35[1] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
40+
%37 = llvm.mlir.constant(0 : index) : i64
41+
%38 = llvm.insertvalue %37, %36[2] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
42+
%39 = llvm.mlir.constant(1 : index) : i64
43+
%40 = llvm.insertvalue %39, %38[3, 0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
44+
%41 = llvm.mlir.constant(16 : index) : i64
45+
%42 = llvm.insertvalue %41, %40[4, 0] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
46+
%43 = llvm.mlir.constant(4 : index) : i64
47+
%44 = llvm.insertvalue %43, %42[3, 1] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
48+
%45 = llvm.mlir.constant(4 : index) : i64
49+
%46 = llvm.insertvalue %45, %44[4, 1] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
50+
%47 = llvm.mlir.constant(4 : index) : i64
51+
%48 = llvm.insertvalue %47, %46[3, 2] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
52+
%49 = llvm.mlir.constant(1 : index) : i64
53+
%50 = llvm.insertvalue %49, %48[4, 2] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
54+
%51 = llvm.mlir.constant(8 : index) : i64
55+
%52 = llvm.mlir.constant(4 : index) : i64
56+
%53 = llvm.mlir.constant(1 : index) : i64
57+
%54 = llvm.mlir.constant(0 : index) : i64
58+
llvm.br ^bb1(%54 : i64)
59+
^bb1(%55: i64): // 2 preds: ^bb0, ^bb6
60+
%56 = llvm.icmp "slt" %55, %52 : i64
61+
llvm.cond_br %56, ^bb2(%54 : i64), ^bb7
62+
^bb2(%57: i64): // 2 preds: ^bb1, ^bb5
63+
%58 = llvm.icmp "slt" %57, %52 : i64
64+
llvm.cond_br %58, ^bb3(%54 : i64), ^bb6
65+
^bb3(%59: i64): // 2 preds: ^bb2, ^bb4
66+
%60 = llvm.icmp "slt" %59, %51 : i64
67+
llvm.cond_br %60, ^bb4, ^bb5
68+
^bb4: // pred: ^bb3
69+
%61 = llvm.extractvalue %16[1] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
70+
%62 = llvm.mlir.constant(32 : index) : i64
71+
%63 = llvm.mul %54, %62 : i64
72+
%64 = llvm.mlir.constant(8 : index) : i64
73+
%65 = llvm.mul %55, %64 : i64
74+
%66 = llvm.add %63, %65 : i64
75+
%67 = llvm.add %66, %59 : i64
76+
%68 = llvm.getelementptr %61[%67] : (!llvm.ptr<f32>, i64) -> !llvm.ptr<f32>
77+
%69 = llvm.load %68 : !llvm.ptr<f32>
78+
%70 = llvm.extractvalue %33[1] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
79+
%71 = llvm.mlir.constant(32 : index) : i64
80+
%72 = llvm.mul %54, %71 : i64
81+
%73 = llvm.mlir.constant(4 : index) : i64
82+
%74 = llvm.mul %59, %73 : i64
83+
%75 = llvm.add %72, %74 : i64
84+
%76 = llvm.add %75, %57 : i64
85+
%77 = llvm.getelementptr %70[%76] : (!llvm.ptr<f32>, i64) -> !llvm.ptr<f32>
86+
%78 = llvm.load %77 : !llvm.ptr<f32>
87+
%79 = llvm.extractvalue %50[1] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
88+
%80 = llvm.mlir.constant(16 : index) : i64
89+
%81 = llvm.mul %54, %80 : i64
90+
%82 = llvm.mlir.constant(4 : index) : i64
91+
%83 = llvm.mul %55, %82 : i64
92+
%84 = llvm.add %81, %83 : i64
93+
%85 = llvm.add %84, %57 : i64
94+
%86 = llvm.getelementptr %79[%85] : (!llvm.ptr<f32>, i64) -> !llvm.ptr<f32>
95+
%87 = llvm.load %86 : !llvm.ptr<f32>
96+
%88 = llvm.fmul %69, %78 : f32
97+
%89 = llvm.fadd %87, %88 : f32
98+
%90 = llvm.extractvalue %50[1] : !llvm.struct<(ptr<f32>, ptr<f32>, i64, array<3 x i64>, array<3 x i64>)>
99+
%91 = llvm.mlir.constant(16 : index) : i64
100+
%92 = llvm.mul %54, %91 : i64
101+
%93 = llvm.mlir.constant(4 : index) : i64
102+
%94 = llvm.mul %55, %93 : i64
103+
%95 = llvm.add %92, %94 : i64
104+
%96 = llvm.add %95, %57 : i64
105+
%97 = llvm.getelementptr %90[%96] : (!llvm.ptr<f32>, i64) -> !llvm.ptr<f32>
106+
llvm.store %89, %97 : !llvm.ptr<f32>
107+
%98 = llvm.add %59, %53 : i64
108+
llvm.br ^bb3(%98 : i64)
109+
^bb5: // pred: ^bb3
110+
%99 = llvm.add %57, %53 : i64
111+
llvm.br ^bb2(%99 : i64)
112+
^bb6: // pred: ^bb2
113+
%100 = llvm.add %55, %53 : i64
114+
llvm.br ^bb1(%100 : i64)
115+
^bb7: // pred: ^bb1
116+
llvm.return
117+
}
118+
}
119+

0 commit comments

Comments
 (0)