From 897af2974810a6545a9390000bd782d7e96e21f5 Mon Sep 17 00:00:00 2001 From: Ruobing Han Date: Thu, 13 Jan 2022 13:30:45 -0500 Subject: [PATCH] add CI --- .github/workflows/build.yml | 34 +++++++++++++++++++ .github/workflows/lint.yml | 28 +++++++++++++++ .gitignore | 43 ++++++++++++++++++++++++ .pre-commit-config.yaml | 20 +++++++++++ README.md | 22 +++++++----- CONTRIBUTING.md => docs/CONTRIBUTING.md | 13 +++---- docs/figures/workflow.png | Bin 0 -> 111623 bytes docs/workflow.md | 11 ++++++ 8 files changed, 156 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/lint.yml create mode 100644 .gitignore create mode 100644 .pre-commit-config.yaml rename CONTRIBUTING.md => docs/CONTRIBUTING.md (72%) create mode 100644 docs/figures/workflow.png create mode 100644 docs/workflow.md diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..05e8dc3 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,34 @@ +name: build + +on: + push: + paths-ignore: + - '*.md' + + pull_request: + paths-ignore: + - '*.md' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Install LLVM and Clang + uses: KyleMayes/install-llvm-action@v1 + with: + version: "10.0" + - name: Build project + run: | + mkdir build + cd build + cmake .. -DLLVM_CONFIG_PATH=`which llvm-config` + make + - name: Execute the test example + run: | + cd ${{ github.workspace }}/compilation/examples + bash run_example.sh diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..f9af12f --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,28 @@ +# copied from MMCV (github.com/open-mmlab/mmcv) +name: lint + +on: [push, pull_request] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + lint: + runs-on: ubuntu-18.04 + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.7 + uses: actions/setup-python@v2 + with: + python-version: 3.7 + - name: Install pre-commit hook + run: | + # markdownlint requires ruby >= 2.7 + sudo apt-add-repository ppa:brightbox/ruby-ng -y + sudo apt-get update + sudo apt-get install -y ruby2.7 + pip install pre-commit + pre-commit install + - name: Linting + run: pre-commit run --all-files diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9795b88 --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +# LLVM files +*.bc + +# CMake temp files +Makefile +CMakeCache.txt +*.cmake + +# Log files +*.log diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..2c1037f --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,20 @@ +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v2.3.0 + hooks: + - id: end-of-file-fixer + - id: trailing-whitespace + - id: check-added-large-files +- repo: https://github.com/pre-commit/mirrors-clang-format + rev: v13.0.0 + hooks: + - id: clang-format +- repo: https://github.com/cheshirekow/cmake-format-precommit + rev: v0.6.13 + hooks: + - id: cmake-format + - id: cmake-lint +- repo: https://github.com/igorshubovych/markdownlint-cli + rev: v0.30.0 + hooks: + - id: markdownlint-fix diff --git a/README.md b/README.md index 34461f1..013d9f7 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# COX: CUDA on X86 +# CuPBoP: Cuda for Parallelized and Broad-range Processors ## Introduction -This project consists of two parts: a series of LLVM passes that -achieve a SPMD NVVM IR as input, and output the corresponding -MPMD+SIMD version of LLVM IR which can be execute on CPU devices. +CuPBoP (Cuda for parallelized and broad-range processors) is a framework +aims to execute CUDA source code on non-NVIDIA devices, +including CPU, GPU and other architectures. ## Install @@ -22,8 +22,8 @@ MPMD+SIMD version of LLVM IR which can be execute on CPU devices. 1. Clone from github ```bash - git clone https://github.com/drcut/open_source_template - cd open_source_template + git clone https://github.com/cupbop/CuPBoP + cd CuPBoP ``` 2. Build the transformer for NVVM IR to LLVM IR for X86 @@ -55,8 +55,12 @@ g++ ../compilation/examples/vecadd/host.cpp \ ./vecadd_example ``` +## Contribution + +We sincerely appreciate all kinds of contributions. +Please refer to [CONTRIBUTING](docs/CONTRIBUTING.md) for the contributing guideline. + ## Author -[Ruobing Han](https://drcut.github.io/) is a CS phd student in -Georgia Institute Technology, under the supervision -of Prof. [Hyesoon Kim](https://www.cc.gatech.edu/~hyesoon/). +* [Ruobing Han](https://drcut.github.io/) +* [Hyesoon Kim](https://www.cc.gatech.edu/~hyesoon/) diff --git a/CONTRIBUTING.md b/docs/CONTRIBUTING.md similarity index 72% rename from CONTRIBUTING.md rename to docs/CONTRIBUTING.md index 90d3f91..0284fbc 100644 --- a/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -1,6 +1,6 @@ -# Contributing to COX +# Contributing to CuPBoP -Thank you for your interest in contributing to COX! +Thank you for your interest in contributing to CuPBoP! We appreciate all contributions, including but not limited to: - Add documentation @@ -10,9 +10,9 @@ We appreciate all contributions, including but not limited to: ## How to contribute? 0. (Optional) Open an issue and discuss your idea before start -1. Fork the latest version COX +1. Fork the latest version CuPBoP 2. Commit to the forked repo -3. Create a Pull Request to COX main branch +3. Create a Pull Request to CuPBoP main branch ## Code style @@ -21,14 +21,15 @@ To make sure your contribution is following the correct style, we highly recommend you to install [pre-commit](https://pre-commit.com/) before development. ```bash -# Python environment is required +# Python3 environment is required pip install pre-commit ``` Then, from the repository folder, execute the following instruction: ```bash - pre-commit install +# execute in CuPBoP's root folder +pre-commit install ``` With pre-commit plugin, each local commit will be automatically checked. diff --git a/docs/figures/workflow.png b/docs/figures/workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..3019f92997152c87784e3b28723298d80048446f GIT binary patch literal 111623 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 literal 0 HcmV?d00001 diff --git a/docs/workflow.md b/docs/workflow.md new file mode 100644 index 0000000..cef8328 --- /dev/null +++ b/docs/workflow.md @@ -0,0 +1,11 @@ +# The workflow of CuPBoP + +The workflow of CuPBoP is described as following: +![The workflow of executing CUDA applications on CuPBoP.](figures/workflow.png) +First, CuPBoP uses Clang to compile the CUDA source code into NVVM IR, +which consists of two parts: Host part and Kernel Part. +In the next step, CuPBoP-compilation parses and transforms these NVVM IRs +to make it suitable for executing on specific architectures. +The CuPBoP-runtime compiles the transformed Host IR and executes the generated programs, +which will compile the transformed Kernel IR and +upload the compiled kernel programs to specific architectures.