Merge triton-mlir
branch - Complete rewrite of the backend from scratch (#1004)
This PR merges the `triton-mlir` branch, in which we have been quietly rewriting the Triton backend from scratch to increase maintainability, stability and ultimately performance. Changes to the runtime are minimal, and this new version aims to remain backward-compatible with the previous commit. The legacy backend is now officially deprecated, but can still be accessed via the `legacy-backend` tag. Co-authored-by: Keren Zhou <kerenzhou@openai.com> Co-authored-by: Yan Chunwei <yanchunwei@outlook.com> Co-authored-by: goostavz <109190422+goostavz@users.noreply.github.com> Co-authored-by: Shintaro Iwasaki <siwasaki@fb.com> Co-authored-by: Yan Da <dyanab@connect.ust.hk> Co-authored-by: Jun Yang <yangjunpro@gmail.com> Co-authored-by: Ian Bearman <ianb@microsoft.com> Co-authored-by: Jason Ansel <jansel@jansel.net> Co-authored-by: Qingyi Liu <qingyil@nvidia.com> Co-authored-by: ben-zhang-609 <110140741+ben-zhang-609@users.noreply.github.com> Co-authored-by: Chenggang Zhao <lyricz@yeah.net> Co-authored-by: ben-zhang-609 <benzh609@gmail.com> Co-authored-by: dongdongl <dongdongl@nvidia.com>
This commit is contained in:
57
.github/CODEOWNERS
vendored
Normal file
57
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
# These owners will be the default owners for everything in
|
||||
# the repo. Unless a later match takes precedence,
|
||||
# @global-owner1 and @global-owner2 will be requested for
|
||||
# review when someone opens a pull request.
|
||||
* @ptillet
|
||||
|
||||
# --------
|
||||
# Analyses
|
||||
# --------
|
||||
# Alias analysis
|
||||
include/triton/Analysis/Alias.h @Jokeren
|
||||
lib/Analysis/Alias.cpp @Jokeren
|
||||
# Allocation analysis
|
||||
include/triton/Analysis/Allocation.h @Jokeren
|
||||
lib/Analysis/Allocation.cpp @Jokeren
|
||||
# Membar analysis
|
||||
include/triton/Analysis/Membar.h @Jokeren
|
||||
lib/Analysis/Membar.cpp @Jokeren
|
||||
# AxisInfo analysis
|
||||
include/triton/Analysis/AxisInfo.h @ptillet
|
||||
lib/Analysis/AxisInfo.cpp @ptillet
|
||||
# Utilities
|
||||
include/triton/Analysis/Utility.h @Jokeren
|
||||
lib/Analysis/Utility.cpp @Jokeren
|
||||
|
||||
# ----------
|
||||
# Dialects
|
||||
# ----------
|
||||
# Pipeline pass
|
||||
lib/Dialect/TritonGPU/Transforms/Pipeline.cpp @daadaada
|
||||
# Prefetch pass
|
||||
lib/Dialect/TritonGPU/Transforms/Prefetch.cpp @daadaada
|
||||
# Coalesce pass
|
||||
lib/Dialect/TritonGPU/Transforms/Coalesce.cpp @ptillet
|
||||
# Layout simplification pass
|
||||
lib/Dialect/TritonGPU/Transforms/Combine.cpp @ptillet
|
||||
|
||||
# -----------
|
||||
# Conversions
|
||||
# -----------
|
||||
# TritonGPUToLLVM
|
||||
include/triton/Conversion/TritonGPUToLLVM/ @goostavz @Superjomn
|
||||
lib/Conversions/TritonGPUToLLVM @goostavz @Superjomn
|
||||
# TritonToTritonGPU
|
||||
include/triton/Conversion/TritonToTritonGPU/ @daadaada
|
||||
lib/Dialect/TritonGPU/Transforms/TritonGPUConversion.cpp @daadaada
|
||||
|
||||
|
||||
# -------
|
||||
# Targets
|
||||
# -------
|
||||
# LLVMIR
|
||||
include/triton/Target/LLVMIR/ @goostavz @Superjomn
|
||||
lib/Target/LLVMIR @goostavz @Superjomn
|
||||
# PTX
|
||||
include/triton/Target/PTX/ @goostavz @Superjomn
|
||||
lib/Target/PTX @goostavz @Superjomn
|
55
.github/workflows/documentation.yml
vendored
55
.github/workflows/documentation.yml
vendored
@@ -1,55 +0,0 @@
|
||||
name: Documentation
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
|
||||
jobs:
|
||||
|
||||
Build-Documentation:
|
||||
|
||||
runs-on: [self-hosted, V100]
|
||||
|
||||
steps:
|
||||
|
||||
|
||||
- name: Checkout gh-pages
|
||||
uses: actions/checkout@v1
|
||||
with:
|
||||
ref: 'gh-pages'
|
||||
|
||||
- name: Clear docs
|
||||
run: |
|
||||
rm -r /tmp/triton-docs
|
||||
continue-on-error: true
|
||||
|
||||
- name: Checkout branch
|
||||
uses: actions/checkout@v1
|
||||
|
||||
- name: Build docs
|
||||
run: |
|
||||
git fetch origin master:master
|
||||
cd docs
|
||||
sphinx-multiversion . _build/html/
|
||||
|
||||
- name: Publish docs
|
||||
run: |
|
||||
git branch
|
||||
# update docs
|
||||
mkdir /tmp/triton-docs;
|
||||
mv docs/_build/html/* /tmp/triton-docs/
|
||||
git checkout gh-pages
|
||||
cp -r CNAME /tmp/triton-docs/
|
||||
cp -r index.html /tmp/triton-docs/
|
||||
cp -r .nojekyll /tmp/triton-docs/
|
||||
rm -r *
|
||||
cp -r /tmp/triton-docs/* .
|
||||
# ln -s master/index.html .
|
||||
# mv master docs
|
||||
git add .
|
||||
git commit -am "[GH-PAGES] Updated website"
|
||||
# publish docs
|
||||
eval `ssh-agent -s`
|
||||
DISPLAY=:0 SSH_ASKPASS=~/.ssh/give_pass.sh ssh-add ${{ secrets.SSH_KEY }} <<< ${{ secrets.SSH_PASS }}
|
||||
git remote set-url origin git@github.com:openai/triton.git
|
||||
git push
|
94
.github/workflows/integration-tests.yml
vendored
94
.github/workflows/integration-tests.yml
vendored
@@ -5,50 +5,88 @@ on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
|
||||
- triton-mlir
|
||||
|
||||
jobs:
|
||||
Runner-Preparation:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
||||
steps:
|
||||
- name: Prepare runner matrix
|
||||
id: set-matrix
|
||||
run: |
|
||||
if [ x"${{ github.repository }}" == x"openai/triton" ]; then
|
||||
echo '::set-output name=matrix::[["self-hosted", "A10"], ["self-hosted", "V100"], "macos-10.15"]'
|
||||
else
|
||||
echo '::set-output name=matrix::["ubuntu-latest", "macos-10.15"]'
|
||||
fi
|
||||
|
||||
Integration-Tests:
|
||||
|
||||
runs-on: [self-hosted, V100]
|
||||
needs: Runner-Preparation
|
||||
|
||||
runs-on: ${{ matrix.runner }}
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
runner: ${{fromJson(needs.Runner-Preparation.outputs.matrix)}}
|
||||
|
||||
steps:
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Clear cache
|
||||
run: |
|
||||
rm -r ~/.triton/
|
||||
continue-on-error: true
|
||||
rm -rf ~/.triton/cache/
|
||||
|
||||
- name: Check imports
|
||||
if: ${{ matrix.runner != 'macos-10.15' }}
|
||||
run: |
|
||||
pip install isort
|
||||
isort -c ./python || ( echo '::error title=Imports not sorted::Please run \"isort ./python\"' ; exit 1 )
|
||||
|
||||
- name: Check python style
|
||||
if: ${{ matrix.runner != 'macos-10.15' }}
|
||||
run: |
|
||||
pip install autopep8
|
||||
autopep8 -a -r -d --exit-code ./python || ( echo '::error title=Style issues::Please run \"autopep8 -a -r -i ./python\"' ; exit 1 )
|
||||
|
||||
- name: Check cpp style
|
||||
if: ${{ matrix.runner != 'macos-10.15' }}
|
||||
run: |
|
||||
pip install clang-format
|
||||
find . -regex '.*\.\(cpp\|hpp\|h\|cc\)' -not -path "./python/build/*" -not -path "./include/triton/external/*" -print0 | xargs -0 -n1 clang-format -style=file --dry-run -Werror -i ||
|
||||
(echo '::error title=Style issues:: Please run `find . -regex ".*\.\(cpp\|hpp\|h\|cc\)" -not -path "./python/build/*" -not -path "./include/triton/external/*" -print0 | xargs -0 -n1 clang-format -style=file -i`' ; exit 1)
|
||||
|
||||
- name: Flake8
|
||||
if: ${{ matrix.runner != 'macos-10.15' }}
|
||||
run: |
|
||||
pip install flake8
|
||||
flake8 --config ./python/setup.cfg ./python || ( echo '::error::Flake8 failed; see logs for errors.' ; exit 1 )
|
||||
|
||||
- name: Install Triton
|
||||
run: |
|
||||
alias python='python3'
|
||||
cd python
|
||||
pip3 install -e '.[tests]'
|
||||
TRITON_USE_ASSERT_ENABLED_LLVM=TRUE pip3 install -e '.[tests]'
|
||||
|
||||
- name: Check imports
|
||||
run: "isort -c ./python || ( echo '::error title=Imports not sorted::Please run \"isort ./python\"' ; exit 1 )"
|
||||
|
||||
- name: Check style
|
||||
run: "autopep8 -a -r -d --exit-code ./python || ( echo '::error title=Style issues::Please run \"autopep8 -a -r -i ./python\"' ; exit 1 )"
|
||||
|
||||
- name: Flake8
|
||||
run: "flake8 --config ./python/setup.cfg ./python || ( echo '::error::Flake8 failed; see logs for errors.' ; exit 1 )"
|
||||
|
||||
- name: Unit tests
|
||||
- name: Run lit tests
|
||||
run: |
|
||||
cd python/test/unit
|
||||
pytest -vs .
|
||||
cd python
|
||||
LIT_TEST_DIR="build/$(ls build)/test"
|
||||
if [ ! -d "$LIT_TEST_DIR" ]; then
|
||||
echo "Not found `$LIT_TEST_DIR`. Did you change an installation method?" ; exit -1
|
||||
fi
|
||||
lit -v "$LIT_TEST_DIR"
|
||||
|
||||
- name: Regression tests
|
||||
- name: Run python tests
|
||||
if: ${{matrix.runner[0] == 'self-hosted'}}
|
||||
run: |
|
||||
cd python/test/regression
|
||||
sudo nvidia-smi -i 0 -pm 1
|
||||
sudo nvidia-smi -i 0 --lock-gpu-clocks=1350,1350
|
||||
sudo nvidia-smi -i 0 --lock-memory-clocks=877,877
|
||||
pytest -vs .
|
||||
sudo nvidia-smi -i 0 -rgc
|
||||
sudo nvidia-smi -i 0 -rmc
|
||||
cd python/test/unit/
|
||||
pytest
|
||||
|
||||
|
||||
- name: Run CXX unittests
|
||||
run: |
|
||||
cd python/
|
||||
cd "build/$(ls build)"
|
||||
ctest
|
||||
|
Reference in New Issue
Block a user