From 85125f11582a1c257e62f5d55d06c957718c13d4 Mon Sep 17 00:00:00 2001 From: Yuqi Sun <791079835@qq.com> Date: Fri, 23 May 2025 00:16:42 +0800 Subject: [PATCH 01/20] [P0] Verify the clang++ version used in the test #18 --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e3c70d0d..452dcaea 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -59,6 +59,8 @@ jobs: -DCMAKE_CXX_COMPILER_LAUNCHER=ccache cmake --build . --target check-mlir + clang++ -v + dpkg -l | grep llvm # setup mlir-cgra - name: setup dataflow tool-chain From 8b3dfd9b4a76fe008cf861ee7bb15ef8997f0df6 Mon Sep 17 00:00:00 2001 From: yuqisun <7748145+yuqisun@users.noreply.github.com> Date: Fri, 23 May 2025 11:07:33 +0800 Subject: [PATCH 02/20] Update main.yml Test LLVM version. --- .github/workflows/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 452dcaea..eba1ada2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -59,8 +59,9 @@ jobs: -DCMAKE_CXX_COMPILER_LAUNCHER=ccache cmake --build . --target check-mlir - clang++ -v dpkg -l | grep llvm + sudo apt-get purge llvm-13 + sudo apt-get purge llvm-15 # setup mlir-cgra - name: setup dataflow tool-chain From 98044c2117d5cb03af8a5dab4153e689a873e72f Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Fri, 23 May 2025 14:57:44 +0800 Subject: [PATCH 03/20] Test with apt install llvm instead of source code. --- .github/workflows/main.yml | 37 ++++++------------------------------- 1 file changed, 6 insertions(+), 31 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7ae6665d..4a83c8a4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -34,45 +34,20 @@ jobs: sudo apt-get install ccache sudo apt-get install lld - # setup LLVM - - name: install a specific version of LLVM - working-directory: ${{github.workspace}} + # install llvm/clang via apt + - name: install llvm/clang via apt run: | - git clone https://github.com/llvm/llvm-project.git - cd llvm-project - git checkout cd70802 - mkdir build && cd build - cmake -G Ninja ../llvm \ - -DLLVM_ENABLE_PROJECTS="mlir" \ - -DLLVM_BUILD_EXAMPLES=OFF \ - -DLLVM_TARGETS_TO_BUILD="Native" \ - -DCMAKE_BUILD_TYPE=Release \ - -DLLVM_ENABLE_ASSERTIONS=ON \ - -DCMAKE_C_COMPILER=clang \ - -DCMAKE_CXX_COMPILER=clang++ \ - -DCMAKE_CXX_STANDARD=17 \ - -DCMAKE_CXX_FLAGS="-std=c++17 -frtti" \ - -DLLVM_ENABLE_LLD=ON \ - -DMLIR_INSTALL_AGGREGATE_OBJECTS=ON \ - -DLLVM_ENABLE_RTTI=ON \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache - - cmake --build . --target check-mlir + sudo apt-get -y install llvm-14 llvm-14-dev llvm-14-tools clang-14 dpkg -l | grep llvm - sudo apt-get purge llvm-13 - sudo apt-get purge llvm-15 - + # setup mlir-cgra - name: setup dataflow tool-chain working-directory: ${{github.workspace}} run: | mkdir build && cd build cmake -G Ninja .. \ - -DLLVM_DIR=${{github.workspace}}/llvm-project/build/lib/cmake/llvm \ - -DMLIR_DIR=${{github.workspace}}/llvm-project/build/lib/cmake/mlir \ - -DMLIR_SOURCE_DIR=${{github.workspace}}/llvm-project/mlir \ - -DMLIR_BINARY_DIR=${{github.workspace}}/llvm-project/build \ + -DLLVM_DIR=/usr/lib/llvm-14/lib/cmake/llvm \ + -DMLIR_DIR=/usr/lib/llvm-14/lib/cmake/mlir \ -DCMAKE_CXX_FLAGS="-std=c++17" ninja From 7b872b6bcefc98c14eb58f22615132d293c7b956 Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Fri, 23 May 2025 15:11:42 +0800 Subject: [PATCH 04/20] Revert to install from source code, install from apt doesn't include MLIR. --- .github/workflows/main.yml | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4a83c8a4..7ae6665d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -34,20 +34,45 @@ jobs: sudo apt-get install ccache sudo apt-get install lld - # install llvm/clang via apt - - name: install llvm/clang via apt + # setup LLVM + - name: install a specific version of LLVM + working-directory: ${{github.workspace}} run: | - sudo apt-get -y install llvm-14 llvm-14-dev llvm-14-tools clang-14 - dpkg -l | grep llvm + git clone https://github.com/llvm/llvm-project.git + cd llvm-project + git checkout cd70802 + mkdir build && cd build + cmake -G Ninja ../llvm \ + -DLLVM_ENABLE_PROJECTS="mlir" \ + -DLLVM_BUILD_EXAMPLES=OFF \ + -DLLVM_TARGETS_TO_BUILD="Native" \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_ENABLE_ASSERTIONS=ON \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_CXX_STANDARD=17 \ + -DCMAKE_CXX_FLAGS="-std=c++17 -frtti" \ + -DLLVM_ENABLE_LLD=ON \ + -DMLIR_INSTALL_AGGREGATE_OBJECTS=ON \ + -DLLVM_ENABLE_RTTI=ON \ + -DCMAKE_C_COMPILER_LAUNCHER=ccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache + cmake --build . --target check-mlir + dpkg -l | grep llvm + sudo apt-get purge llvm-13 + sudo apt-get purge llvm-15 + # setup mlir-cgra - name: setup dataflow tool-chain working-directory: ${{github.workspace}} run: | mkdir build && cd build cmake -G Ninja .. \ - -DLLVM_DIR=/usr/lib/llvm-14/lib/cmake/llvm \ - -DMLIR_DIR=/usr/lib/llvm-14/lib/cmake/mlir \ + -DLLVM_DIR=${{github.workspace}}/llvm-project/build/lib/cmake/llvm \ + -DMLIR_DIR=${{github.workspace}}/llvm-project/build/lib/cmake/mlir \ + -DMLIR_SOURCE_DIR=${{github.workspace}}/llvm-project/mlir \ + -DMLIR_BINARY_DIR=${{github.workspace}}/llvm-project/build \ -DCMAKE_CXX_FLAGS="-std=c++17" ninja From 8a4e8b5cd826ef42c8c8dbcc69514ada2acd161b Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Fri, 23 May 2025 21:43:12 +0800 Subject: [PATCH 05/20] Upgrade to llvm-19. --- .github/workflows/main.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7ae6665d..b4cf9580 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -34,13 +34,17 @@ jobs: sudo apt-get install ccache sudo apt-get install lld + # install clang for LLVM build + - name: install clang + run: sudo apt-get install -y clang + # setup LLVM - name: install a specific version of LLVM working-directory: ${{github.workspace}} run: | git clone https://github.com/llvm/llvm-project.git cd llvm-project - git checkout cd70802 + git checkout release/19.x mkdir build && cd build cmake -G Ninja ../llvm \ -DLLVM_ENABLE_PROJECTS="mlir" \ @@ -55,6 +59,7 @@ jobs: -DLLVM_ENABLE_LLD=ON \ -DMLIR_INSTALL_AGGREGATE_OBJECTS=ON \ -DLLVM_ENABLE_RTTI=ON \ + -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache From b4ab42abe6c89da3758353dde172174bfc33d290 Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Fri, 23 May 2025 22:25:41 +0800 Subject: [PATCH 06/20] Clone the latest llvm repo code only to speed up. --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b4cf9580..791f7865 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -42,7 +42,7 @@ jobs: - name: install a specific version of LLVM working-directory: ${{github.workspace}} run: | - git clone https://github.com/llvm/llvm-project.git + git clone --depth 1 https://github.com/llvm/llvm-project.git cd llvm-project git checkout release/19.x mkdir build && cd build From e4e18e14773bc37f80aa0ae481438cb5bcb131f7 Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Fri, 23 May 2025 22:28:15 +0800 Subject: [PATCH 07/20] Specify branch for cloning LLVM repository in workflow --- .github/workflows/main.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 791f7865..1a99ae70 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -42,9 +42,8 @@ jobs: - name: install a specific version of LLVM working-directory: ${{github.workspace}} run: | - git clone --depth 1 https://github.com/llvm/llvm-project.git + git clone --depth 1 --branch release/19.x https://github.com/llvm/llvm-project.git cd llvm-project - git checkout release/19.x mkdir build && cd build cmake -G Ninja ../llvm \ -DLLVM_ENABLE_PROJECTS="mlir" \ From 9e43f7b14bdefaf182ccfe5bdf31ac5548e3d397 Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Fri, 23 May 2025 23:21:19 +0800 Subject: [PATCH 08/20] Add Dockerfile for automated build and test environment setup --- .github/docker/Dockerfile | 58 +++++++++++++++++++++++++++++++++++++++ README.md | 13 +++++++++ 2 files changed, 71 insertions(+) create mode 100644 .github/docker/Dockerfile diff --git a/.github/docker/Dockerfile b/.github/docker/Dockerfile new file mode 100644 index 00000000..80c225d1 --- /dev/null +++ b/.github/docker/Dockerfile @@ -0,0 +1,58 @@ +FROM ubuntu:22.04 + +SHELL ["/bin/bash", "-c"] + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update \ + && apt install software-properties-common -y \ + && add-apt-repository ppa:deadsnakes/ppa -y \ + && apt update \ + && apt install python3.12 -y \ + && apt-get install ninja-build -y \ + && apt-get install ccache -y \ + && apt-get install lld -y \ + && apt-get -y install cmake -y \ + && apt-get install -y clang \ + && apt-get -y install git \ + && mkdir /cgra \ + && cd /cgra \ + && git clone https://github.com/yuqisun/dataflow.git \ + && cd dataflow \ + && until git clone --depth 1 --branch release/19.x https://github.com/llvm/llvm-project.git; do sleep 5; done \ + && cd llvm-project \ + && git checkout release/19.x \ + && mkdir build && cd build \ + && cmake -G Ninja ../llvm \ + -DLLVM_ENABLE_PROJECTS="mlir" \ + -DLLVM_BUILD_EXAMPLES=OFF \ + -DLLVM_TARGETS_TO_BUILD="Native" \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_ENABLE_ASSERTIONS=ON \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DCMAKE_CXX_STANDARD=17 \ + -DCMAKE_CXX_FLAGS="-std=c++17 -frtti" \ + -DLLVM_ENABLE_LLD=ON \ + -DMLIR_INSTALL_AGGREGATE_OBJECTS=ON \ + -DLLVM_ENABLE_RTTI=ON \ + -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ + -DCMAKE_C_COMPILER_LAUNCHER=ccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + && cmake --build . --target check-mlir \ + && dpkg -l | grep llvm \ + && cd /cgra/dataflow \ + && mkdir build && cd build \ + && cmake -G Ninja .. \ + -DLLVM_DIR=/cgra/dataflow/llvm-project/build/lib/cmake/llvm \ + -DMLIR_DIR=/cgra/dataflow/llvm-project/build/lib/cmake/mlir \ + -DMLIR_SOURCE_DIR=/cgra/dataflow/llvm-project/mlir \ + -DMLIR_BINARY_DIR=/cgra/dataflow/llvm-project/build \ + -DCMAKE_CXX_FLAGS="-std=c++17" \ + && ninja \ + && cd /cgra/dataflow/test \ + && /cgra/dataflow/llvm-project/build/bin/llvm-lit * -v + +CMD ["tail", "-f", "/dev/null"] + + diff --git a/README.md b/README.md index 710df7e3..c4e0b363 100644 --- a/README.md +++ b/README.md @@ -54,3 +54,16 @@ Build LLVM & Neura $ /workspace/llvm-project/build/bin/llvm-lit * ``` +Docker-based Environment Setup +-------------------------------------------------------- +You can quickly set up the build and test environment using the provided Dockerfile: + +```sh +# In the root directory of this repo: +$ cd docker +$ docker build -t neura:v1 . +$ docker run --name myneura -it neura:v1 +``` + +This will automatically clone, build, and test LLVM/MLIR and Neura inside a container, ensuring a consistent environment. + From 2bb49ff53901ca81a0c0d9e7de3c97096fe9b181 Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Sat, 24 May 2025 08:33:34 +0800 Subject: [PATCH 09/20] Update LLVM checkout to specific commit cd70802 in Dockerfile and workflow --- .github/docker/Dockerfile | 2 +- .github/workflows/main.yml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/docker/Dockerfile b/.github/docker/Dockerfile index 80c225d1..7bc2963e 100644 --- a/.github/docker/Dockerfile +++ b/.github/docker/Dockerfile @@ -21,7 +21,7 @@ RUN apt-get update \ && cd dataflow \ && until git clone --depth 1 --branch release/19.x https://github.com/llvm/llvm-project.git; do sleep 5; done \ && cd llvm-project \ - && git checkout release/19.x \ + && git checkout cd70802 \ && mkdir build && cd build \ && cmake -G Ninja ../llvm \ -DLLVM_ENABLE_PROJECTS="mlir" \ diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1a99ae70..9477676a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -43,6 +43,7 @@ jobs: working-directory: ${{github.workspace}} run: | git clone --depth 1 --branch release/19.x https://github.com/llvm/llvm-project.git + git checkout cd70802 cd llvm-project mkdir build && cd build cmake -G Ninja ../llvm \ @@ -65,6 +66,7 @@ jobs: cmake --build . --target check-mlir dpkg -l | grep llvm sudo apt-get purge llvm-13 + sudo apt-get purge llvm-14 sudo apt-get purge llvm-15 # setup mlir-cgra From 5e0e577d06fc871e2d233ed197a7d80ec8bde278 Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Sat, 24 May 2025 08:41:00 +0800 Subject: [PATCH 10/20] Fix checkout order for LLVM setup in workflow --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9477676a..41dcd50a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -43,8 +43,8 @@ jobs: working-directory: ${{github.workspace}} run: | git clone --depth 1 --branch release/19.x https://github.com/llvm/llvm-project.git - git checkout cd70802 cd llvm-project + git checkout cd70802 mkdir build && cd build cmake -G Ninja ../llvm \ -DLLVM_ENABLE_PROJECTS="mlir" \ From 24b88ce557a9fd7b02531a10d0eb5a7bb4392c53 Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Sat, 24 May 2025 08:53:02 +0800 Subject: [PATCH 11/20] Clone includes history commit tree. --- .github/docker/Dockerfile | 2 +- .github/workflows/main.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/docker/Dockerfile b/.github/docker/Dockerfile index 7bc2963e..7dd9f1a0 100644 --- a/.github/docker/Dockerfile +++ b/.github/docker/Dockerfile @@ -19,7 +19,7 @@ RUN apt-get update \ && cd /cgra \ && git clone https://github.com/yuqisun/dataflow.git \ && cd dataflow \ - && until git clone --depth 1 --branch release/19.x https://github.com/llvm/llvm-project.git; do sleep 5; done \ + && until git clone --branch release/19.x https://github.com/llvm/llvm-project.git; do sleep 5; done \ && cd llvm-project \ && git checkout cd70802 \ && mkdir build && cd build \ diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 41dcd50a..e49ab59d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -42,7 +42,7 @@ jobs: - name: install a specific version of LLVM working-directory: ${{github.workspace}} run: | - git clone --depth 1 --branch release/19.x https://github.com/llvm/llvm-project.git + git clone --branch release/19.x https://github.com/llvm/llvm-project.git cd llvm-project git checkout cd70802 mkdir build && cd build From fd95c0e826a1442bfac34c7a72c7597386eb03d3 Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Sat, 24 May 2025 08:56:38 +0800 Subject: [PATCH 12/20] Update LLVM checkout to full commit hash in Dockerfile and workflow --- .github/docker/Dockerfile | 2 +- .github/workflows/main.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/docker/Dockerfile b/.github/docker/Dockerfile index 7dd9f1a0..d09f78eb 100644 --- a/.github/docker/Dockerfile +++ b/.github/docker/Dockerfile @@ -21,7 +21,7 @@ RUN apt-get update \ && cd dataflow \ && until git clone --branch release/19.x https://github.com/llvm/llvm-project.git; do sleep 5; done \ && cd llvm-project \ - && git checkout cd70802 \ + && git checkout cd708029e0b2869e80abe31ddb175f7c35361f90 \ && mkdir build && cd build \ && cmake -G Ninja ../llvm \ -DLLVM_ENABLE_PROJECTS="mlir" \ diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e49ab59d..b519fc3a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -44,7 +44,7 @@ jobs: run: | git clone --branch release/19.x https://github.com/llvm/llvm-project.git cd llvm-project - git checkout cd70802 + git checkout cd708029e0b2869e80abe31ddb175f7c35361f90 mkdir build && cd build cmake -G Ninja ../llvm \ -DLLVM_ENABLE_PROJECTS="mlir" \ From 61949a54574cef924743749b9ab5b929b18498fa Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Sat, 24 May 2025 13:43:37 +0800 Subject: [PATCH 13/20] Shallow clone LLVM source code for faster checkout. --- .github/docker/Dockerfile | 3 +-- .github/workflows/main.yml | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/docker/Dockerfile b/.github/docker/Dockerfile index d09f78eb..05b093ce 100644 --- a/.github/docker/Dockerfile +++ b/.github/docker/Dockerfile @@ -19,9 +19,8 @@ RUN apt-get update \ && cd /cgra \ && git clone https://github.com/yuqisun/dataflow.git \ && cd dataflow \ - && until git clone --branch release/19.x https://github.com/llvm/llvm-project.git; do sleep 5; done \ + && until git clone --depth 1 --branch release/19.x https://github.com/llvm/llvm-project.git; do sleep 5; done \ && cd llvm-project \ - && git checkout cd708029e0b2869e80abe31ddb175f7c35361f90 \ && mkdir build && cd build \ && cmake -G Ninja ../llvm \ -DLLVM_ENABLE_PROJECTS="mlir" \ diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b519fc3a..b729db44 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -42,9 +42,8 @@ jobs: - name: install a specific version of LLVM working-directory: ${{github.workspace}} run: | - git clone --branch release/19.x https://github.com/llvm/llvm-project.git + git clone --depth 1 --branch release/19.x https://github.com/llvm/llvm-project.git cd llvm-project - git checkout cd708029e0b2869e80abe31ddb175f7c35361f90 mkdir build && cd build cmake -G Ninja ../llvm \ -DLLVM_ENABLE_PROJECTS="mlir" \ From db3a1aff5a931fc25bcf4e4552726fa0d31d559f Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Sat, 24 May 2025 14:02:14 +0800 Subject: [PATCH 14/20] Refine LLVM build instructions in README.md for clarity and stability --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index c4e0b363..36ad635d 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,13 @@ Build LLVM & Neura -------------------------------------------------------- - - Clone llvm-project. - - - Clone this repo. - + - Clone llvm-project (we prefer llvm-19). +```sh +$ git clone --depth 1 --branch release/19.x https://github.com/llvm/llvm-project.git +``` - Build LLVM: - - Check out to commit `cd70802` (a stable version randomly picked, will sync to the latest version). - - Build: ```sh + $ cd llvm-project $ mkdir build && cd build # May need install ccache and lld. $ cmake -G Ninja ../llvm \ @@ -25,6 +24,7 @@ Build LLVM & Neura -DLLVM_ENABLE_LLD=ON \ -DMLIR_INSTALL_AGGREGATE_OBJECTS=ON \ -DLLVM_ENABLE_RTTI=ON \ + -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache $ cmake --build . --target check-mlir From accef66d174aa3ee79498f3728441ee8ce5795a8 Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Mon, 26 May 2025 18:58:04 +0800 Subject: [PATCH 15/20] Update Dockerfile and workflow to install additional dependencies and enable clang support in LLVM build --- .github/docker/Dockerfile | 11 +++++++---- .github/workflows/main.yml | 11 +++++++---- README.md | 19 +++++++++++++++---- test/c2llvm2mlir/test.mlir | 6 ++++++ 4 files changed, 35 insertions(+), 12 deletions(-) diff --git a/.github/docker/Dockerfile b/.github/docker/Dockerfile index 05b093ce..2f1043ab 100644 --- a/.github/docker/Dockerfile +++ b/.github/docker/Dockerfile @@ -12,9 +12,8 @@ RUN apt-get update \ && apt-get install ninja-build -y \ && apt-get install ccache -y \ && apt-get install lld -y \ - && apt-get -y install cmake -y \ && apt-get install -y clang \ - && apt-get -y install git \ + && apt-get -y install build-essential cmake git libxml2-dev zlib1g-dev libncurses5-dev \ && mkdir /cgra \ && cd /cgra \ && git clone https://github.com/yuqisun/dataflow.git \ @@ -23,7 +22,7 @@ RUN apt-get update \ && cd llvm-project \ && mkdir build && cd build \ && cmake -G Ninja ../llvm \ - -DLLVM_ENABLE_PROJECTS="mlir" \ + -DLLVM_ENABLE_PROJECTS="clang;mlir" \ -DLLVM_BUILD_EXAMPLES=OFF \ -DLLVM_TARGETS_TO_BUILD="Native" \ -DCMAKE_BUILD_TYPE=Release \ @@ -38,7 +37,9 @@ RUN apt-get update \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - && cmake --build . --target check-mlir \ + # && cmake --build . --target check-mlir \ + && ninja \ + && ninja check-clang check-mlir \ && dpkg -l | grep llvm \ && cd /cgra/dataflow \ && mkdir build && cd build \ @@ -52,6 +53,8 @@ RUN apt-get update \ && cd /cgra/dataflow/test \ && /cgra/dataflow/llvm-project/build/bin/llvm-lit * -v +ENV PATH=/cgra/dataflow/llvm-project/build/bin:$PATH + CMD ["tail", "-f", "/dev/null"] diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b729db44..b8df50ed 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -34,9 +34,9 @@ jobs: sudo apt-get install ccache sudo apt-get install lld - # install clang for LLVM build + # install for LLVM build - name: install clang - run: sudo apt-get install -y clang + run: sudo apt-get install -y clang build-essential libxml2-dev zlib1g-dev libncurses5-dev # setup LLVM - name: install a specific version of LLVM @@ -46,7 +46,7 @@ jobs: cd llvm-project mkdir build && cd build cmake -G Ninja ../llvm \ - -DLLVM_ENABLE_PROJECTS="mlir" \ + -DLLVM_ENABLE_PROJECTS="clang;mlir" \ -DLLVM_BUILD_EXAMPLES=OFF \ -DLLVM_TARGETS_TO_BUILD="Native" \ -DCMAKE_BUILD_TYPE=Release \ @@ -62,11 +62,14 @@ jobs: -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache - cmake --build . --target check-mlir + # cmake --build . --target check-mlir + ninja + ninja check-clang check-mlir dpkg -l | grep llvm sudo apt-get purge llvm-13 sudo apt-get purge llvm-14 sudo apt-get purge llvm-15 + export PATH=${{github.workspace}}/llvm-project/build/bin:$PATH # setup mlir-cgra - name: setup dataflow tool-chain diff --git a/README.md b/README.md index 36ad635d..d66f13f3 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ $ git clone --depth 1 --branch release/19.x https://github.com/llvm/llvm-project $ mkdir build && cd build # May need install ccache and lld. $ cmake -G Ninja ../llvm \ - -DLLVM_ENABLE_PROJECTS="mlir" \ + -DLLVM_ENABLE_PROJECTS="clang;mlir" \ -DLLVM_BUILD_EXAMPLES=OFF \ -DLLVM_TARGETS_TO_BUILD="Native" \ -DCMAKE_BUILD_TYPE=Release \ @@ -28,6 +28,9 @@ $ git clone --depth 1 --branch release/19.x https://github.com/llvm/llvm-project -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache $ cmake --build . --target check-mlir + $ ninja + $ ninja check-clang check-mlir + $ export PATH=/workspace/llvm-project/build/bin:$PATH ``` - Build Neura: @@ -56,8 +59,17 @@ $ git clone --depth 1 --branch release/19.x https://github.com/llvm/llvm-project Docker-based Environment Setup -------------------------------------------------------- -You can quickly set up the build and test environment using the provided Dockerfile: +**Option 1: Pull Pre-built Image** + +You can directly pull and use the pre-built Docker image: +```sh +$ docker pull cgra/neura:v1 +$ docker run --name myneura -it cgra/neura:v1 +``` + +**Option 2: Build Image from Dockerfile** +Alternatively, you can build the Docker image yourself using the provided Dockerfile: ```sh # In the root directory of this repo: $ cd docker @@ -65,5 +77,4 @@ $ docker build -t neura:v1 . $ docker run --name myneura -it neura:v1 ``` -This will automatically clone, build, and test LLVM/MLIR and Neura inside a container, ensuring a consistent environment. - +Both methods will provide a consistent environment with LLVM/MLIR(version 19) and Neura built and ready to use. diff --git a/test/c2llvm2mlir/test.mlir b/test/c2llvm2mlir/test.mlir index fb0bbb78..b8ffd178 100644 --- a/test/c2llvm2mlir/test.mlir +++ b/test/c2llvm2mlir/test.mlir @@ -1,3 +1,9 @@ +// Note: +// We recommend using the clang++ built from the same LLVM/MLIR 19.x source. +// Please add your build directory to PATH before running tests: +// `export PATH=/path/to/llvm-project/build/bin:$PATH` +// This ensures all clang++ invocations use the correct version. + // Compiles the original kernel. // RUN: clang++ kernel.cpp -o %t-kernel.out From 6d3dd27cbfc0cc329b4e0e98d3f658d7e8d91076 Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Mon, 26 May 2025 19:01:35 +0800 Subject: [PATCH 16/20] DCMAKE_EXPORT_COMPILE_COMMANDS=ON for VS Code users (to avoid warning in the IDE for include paths) --- .github/docker/Dockerfile | 1 + .github/workflows/main.yml | 1 + README.md | 1 + 3 files changed, 3 insertions(+) diff --git a/.github/docker/Dockerfile b/.github/docker/Dockerfile index 2f1043ab..dda4e3b9 100644 --- a/.github/docker/Dockerfile +++ b/.github/docker/Dockerfile @@ -35,6 +35,7 @@ RUN apt-get update \ -DMLIR_INSTALL_AGGREGATE_OBJECTS=ON \ -DLLVM_ENABLE_RTTI=ON \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ # && cmake --build . --target check-mlir \ diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b8df50ed..b5e5fe8e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -59,6 +59,7 @@ jobs: -DMLIR_INSTALL_AGGREGATE_OBJECTS=ON \ -DLLVM_ENABLE_RTTI=ON \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache diff --git a/README.md b/README.md index d66f13f3..0ad9f956 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ $ git clone --depth 1 --branch release/19.x https://github.com/llvm/llvm-project -DMLIR_INSTALL_AGGREGATE_OBJECTS=ON \ -DLLVM_ENABLE_RTTI=ON \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache $ cmake --build . --target check-mlir From 389e3d199f1ba64e06224a34d235c66b1f0b0736 Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Mon, 26 May 2025 22:51:00 +0800 Subject: [PATCH 17/20] Move docker path. --- {.github/docker => docker}/Dockerfile | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {.github/docker => docker}/Dockerfile (100%) diff --git a/.github/docker/Dockerfile b/docker/Dockerfile similarity index 100% rename from .github/docker/Dockerfile rename to docker/Dockerfile From 6b56c406f2e2eae226a6b5637d91190bb218b38a Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Wed, 28 May 2025 12:01:06 +0800 Subject: [PATCH 18/20] Refactor LLVM build setup by removing clang installation and adjusting project configuration --- .github/workflows/main.yml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b5e5fe8e..5663d47b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -34,9 +34,9 @@ jobs: sudo apt-get install ccache sudo apt-get install lld - # install for LLVM build - - name: install clang - run: sudo apt-get install -y clang build-essential libxml2-dev zlib1g-dev libncurses5-dev + # install clang for LLVM build + # - name: install clang + # run: sudo apt-get install -y clang # setup LLVM - name: install a specific version of LLVM @@ -46,7 +46,7 @@ jobs: cd llvm-project mkdir build && cd build cmake -G Ninja ../llvm \ - -DLLVM_ENABLE_PROJECTS="clang;mlir" \ + -DLLVM_ENABLE_PROJECTS="mlir" \ -DLLVM_BUILD_EXAMPLES=OFF \ -DLLVM_TARGETS_TO_BUILD="Native" \ -DCMAKE_BUILD_TYPE=Release \ @@ -63,14 +63,11 @@ jobs: -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache - # cmake --build . --target check-mlir - ninja - ninja check-clang check-mlir + cmake --build . --target check-mlir dpkg -l | grep llvm sudo apt-get purge llvm-13 sudo apt-get purge llvm-14 sudo apt-get purge llvm-15 - export PATH=${{github.workspace}}/llvm-project/build/bin:$PATH # setup mlir-cgra - name: setup dataflow tool-chain From 2f06d19adc7fe7be511499620d69884619188c42 Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Wed, 28 May 2025 12:08:02 +0800 Subject: [PATCH 19/20] Check clang version instead of installing it in the workflow --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5663d47b..8afad6a6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -35,8 +35,8 @@ jobs: sudo apt-get install lld # install clang for LLVM build - # - name: install clang - # run: sudo apt-get install -y clang + - name: check clang version + run: clang --version # setup LLVM - name: install a specific version of LLVM From 6da365e7d12fd3215978594db26bfeca6ba89c2d Mon Sep 17 00:00:00 2001 From: Yuqi <791079835@qq.com> Date: Wed, 28 May 2025 12:15:54 +0800 Subject: [PATCH 20/20] Update README and test documentation for clang version consistency --- README.md | 4 ++++ test/c2llvm2mlir/test.mlir | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0ad9f956..863df2b4 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,10 @@ Build LLVM & Neura $ git clone --depth 1 --branch release/19.x https://github.com/llvm/llvm-project.git ``` - Build LLVM: + > **Note:** +> `clang` is optional for building Neura itself, but installing and building `clang` together with `mlir` (by setting `-DLLVM_ENABLE_PROJECTS="clang;mlir"`) ensures that you have a `clang`/`clang++` matching the same LLVM/MLIR version (19). +> This is recommended if you want to use `clang++` for C++ to LLVM IR/MLIR workflows and to avoid version mismatch issues. + ```sh $ cd llvm-project $ mkdir build && cd build diff --git a/test/c2llvm2mlir/test.mlir b/test/c2llvm2mlir/test.mlir index b8ffd178..738a92c4 100644 --- a/test/c2llvm2mlir/test.mlir +++ b/test/c2llvm2mlir/test.mlir @@ -2,7 +2,7 @@ // We recommend using the clang++ built from the same LLVM/MLIR 19.x source. // Please add your build directory to PATH before running tests: // `export PATH=/path/to/llvm-project/build/bin:$PATH` -// This ensures all clang++ invocations use the correct version. +// This ensures all clang++ invocations use the same version. // Compiles the original kernel. // RUN: clang++ kernel.cpp -o %t-kernel.out