Skip to content

Disable INT8 for sm120 - Blackwell GPUs (#1937) #3227

Disable INT8 for sm120 - Blackwell GPUs (#1937)

Disable INT8 for sm120 - Blackwell GPUs (#1937) #3227

Workflow file for this run

name: CI
on:
push:
branches:
- master
tags:
- v*
pull_request:
branches:
- master
jobs:
build-and-test-cpp-x86_64:
runs-on: ${{ matrix.os }}
env:
CT2_VERBOSE: 1
strategy:
matrix:
os: [ubuntu-22.04]
backend: [mkl, dnnl]
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Intel oneAPI
if: startsWith(matrix.os, 'ubuntu')
run: |
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
sudo apt-key add *.PUB
sudo sh -c 'echo "deb https://apt.repos.intel.com/oneapi all main" > /etc/apt/sources.list.d/oneAPI.list'
sudo apt-get update
- name: Configure with MKL
if: startsWith(matrix.os, 'ubuntu') && matrix.backend == 'mkl'
env:
CT2_USE_MKL: 1
MKL_VERSION: 2023.0.0
run: |
sudo apt-get install -y intel-oneapi-mkl-devel-$MKL_VERSION
cmake -DCMAKE_INSTALL_PREFIX=$PWD/install -DBUILD_TESTS=ON .
- name: Configure with DNNL
if: startsWith(matrix.os, 'ubuntu') && matrix.backend == 'dnnl'
env:
DNNL_VERSION: 2023.0.0-25399
run: |
sudo apt-get install -y intel-oneapi-dnnl-devel=$DNNL_VERSION intel-oneapi-dnnl=$DNNL_VERSION
cmake -DCMAKE_INSTALL_PREFIX=$PWD/install -DBUILD_TESTS=ON -DWITH_MKL=OFF -DOPENMP_RUNTIME=COMP -DWITH_DNNL=ON .
- name: Build
run: |
make install
- name: Download test data
working-directory: tests/data/models
run: |
wget https://opennmt-models.s3.amazonaws.com/pi_lm_step_5000.pt
wget https://opennmt-models.s3.amazonaws.com/transliteration-aren-all.tar.gz
tar xf transliteration-aren-all.tar.gz
- name: Test MKL
if: matrix.backend == 'mkl'
env:
CT2_USE_MKL: 1
run: |
tests/ctranslate2_test tests/data
- name: Test DNNL
if: matrix.backend == 'dnnl'
run: |
tests/ctranslate2_test tests/data
build-and-test-cpp-arm64:
runs-on: ${{ matrix.os }}
env:
CT2_VERBOSE: 1
strategy:
matrix:
include:
- os: ubuntu-22.04-arm
backend: openblas
- os: macos-15
backend: ruy
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Build with OpenBLAS and Ruy
if: matrix.backend == 'openblas'
run: |
wget https://github.com/xianyi/OpenBLAS/archive/v0.3.13.tar.gz
tar xzvf v0.3.13.tar.gz
cd OpenBLAS-0.3.13
make TARGET=ARMV8 NO_LAPACK=1 -j $(nproc)
sudo make PREFIX=/usr/local install
cd ..
export OpenBLAS_HOME=/usr/local
cmake \
-DOPENMP_RUNTIME=COMP \
-DCMAKE_INSTALL_PREFIX=$PWD/install \
-DWITH_MKL=OFF \
-DWITH_OPENBLAS=ON \
-DWITH_RUY=ON \
-DBUILD_TESTS=ON \
.
make -j $(nproc) install
- name: Build Ruy
if: matrix.backend == 'ruy'
run: |
CMAKE_EXTRA_OPTIONS='-DCMAKE_OSX_ARCHITECTURES=arm64 -DWITH_ACCELERATE=ON -DWITH_MKL=OFF -DOPENMP_RUNTIME=NONE -DWITH_RUY=ON'
cmake -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON \
-DCMAKE_INSTALL_PREFIX=$PWD/install \
-DBUILD_TESTS=ON \
$CMAKE_EXTRA_OPTIONS \
.
make -j $(nproc) install
- name: Download test data
run: |
wget https://opennmt-models.s3.amazonaws.com/transliteration-aren-all.tar.gz
tar xf transliteration-aren-all.tar.gz -C tests/data/models/
- name: Test
run: |
tests/ctranslate2_test tests/data
build-python-wheels:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-22.04, windows-2022]
arch: [auto64]
include:
- os: ubuntu-22.04
arch: aarch64
- os: macos-15
arch: arm64
- os: macos-15-intel
arch: x86_64
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: docker/setup-qemu-action@v2
if: ${{ matrix.arch == 'aarch64' }}
name: Set up QEMU
- name: Build wheels
uses: pypa/[email protected]
with:
package-dir: python
output-dir: python/wheelhouse
env:
CIBW_ENVIRONMENT_PASS_LINUX: CIBW_ARCHS
CIBW_ENVIRONMENT_WINDOWS: CTRANSLATE2_ROOT='${{ github.workspace }}\install'
CIBW_ENVIRONMENT_MACOS: "CTRANSLATE2_ROOT='/usr/local' MACOSX_DEPLOYMENT_TARGET=11.00"
CIBW_BEFORE_ALL_LINUX: python/tools/prepare_build_environment_linux.sh
CIBW_BEFORE_ALL_MACOS: python/tools/prepare_build_environment_macos.sh
CIBW_BEFORE_ALL_WINDOWS: bash python/tools/prepare_build_environment_windows.sh
CIBW_BEFORE_BUILD: pip install -r python/install_requirements.txt
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
CIBW_MANYLINUX_AARCH64_IMAGE: manylinux2014
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_SKIP: pp* *-musllinux_*
- name: Upload Python wheels
uses: actions/upload-artifact@v4
with:
name: python-wheels-${{ runner.os }}-${{ matrix.arch }}
path: python/wheelhouse
# We could test the Python wheels using cibuildwheel but we prefer to run the tests outside
# the build environment to ensure wheels correctly embed all dependencies.
test-python-wheels:
needs: [build-python-wheels]
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-22.04
artifact_pattern: python-wheels-Linux-auto64
wheel_pattern: "*cp310*manylinux*x86_64.whl"
- os: ubuntu-22.04-arm
artifact_pattern: python-wheels-Linux-aarch64
wheel_pattern: "*cp310*manylinux*_aarch64.whl"
#- os: windows-2022
# artifact_pattern: python-wheels-Windows-auto64
# wheel_pattern: "*cp310*win*.whl"
- os: macos-15
artifact_pattern: python-wheels-macOS-arm64
wheel_pattern: "*cp310*macosx*arm64.whl"
steps:
- name: Set up Python 3.10.11
uses: actions/setup-python@v5
with:
python-version: "3.10.11"
- uses: actions/checkout@v4
- name: Prepare test environment
shell: bash
run: |
./python/tools/prepare_test_environment.sh
- name: Download Python wheels
uses: actions/download-artifact@v4
with:
pattern: ${{ matrix.artifact_pattern }}
merge-multiple: true
path: .
- name: Install wheel
shell: bash
run: |
ls -l
find .
pip install ${{ matrix.wheel_pattern }}
- name: Test Python wheel
run: |
pytest -v python/tests/ --ignore=python/tests/test_opennmt_tf.py
check-python-style:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.10.11
uses: actions/setup-python@v5
with:
python-version: "3.10.11"
- name: Install dependencies
run: |
python -m pip install black==22.* flake8==3.8.* isort==5.*
- name: Check code format with Black
working-directory: python
run: |
black --check .
- name: Check imports order with isort
working-directory: python
run: |
isort --check-only .
- name: Check code style with Flake8
working-directory: python
if: ${{ always() }}
run: |
flake8 .
publish-python-wheels-on-pypi:
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
needs: [build-and-test-cpp-x86_64, build-and-test-cpp-arm64, build-python-wheels, test-python-wheels, check-python-style]
runs-on: ubuntu-22.04
steps:
- name: Download Python wheels
uses: actions/download-artifact@v4
with:
pattern: python-wheels-*
merge-multiple: true
path: .
- name: Publish Python wheels to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages-dir: .
build-and-push-docker-images:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Show disk and docker usage (before cleanup)
run: |
df -h
echo " -= Docker System =-"
docker system df || true
- name: Free disk space (cleanup heavy preinstalled directories + docker prune)
run: |
echo " -= Removing big preinstalled directories (shouldn't remove the needed tools) =-"
sudo rm -rf /opt/hostedtoolcache || true
sudo rm -rf /usr/share/dotnet || true
sudo rm -rf /usr/lib/jvm || true
sudo rm -rf /usr/local/lib/android || true
echo " -= Running docker prune =-"
docker system prune -af --volumes || true
docker builder prune -af || true
- name: Show disk and docker usage (after cleanup)
run: |
df -h
echo " -= Docker System =-"
docker system df || true
- name: Build Docker images
run: |
./docker/build_all.sh
- name: Login to DockerHub
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Push Docker images
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
run: |
./docker/build_all.sh ${GITHUB_REF##*/v} 1
build-and-deploy-docs:
runs-on: ubuntu-latest
needs: [check-python-style, build-python-wheels]
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.10.11
uses: actions/setup-python@v5
with:
python-version: "3.10.11"
- name: Download CTranslate2 wheels
uses: actions/download-artifact@v4
with:
pattern: python-wheels-${{ runner.os }}-*
merge-multiple: true
path: .
- name: Install CTranslate2 wheel
run: |
pip install *cp310*manylinux*x86_64.whl
- name: Install dependencies to build docs
working-directory: docs
run: |
python -m pip install -r requirements.txt
- name: Build docs
working-directory: docs
run: |
python generate.py python
sphinx-build . build
- name: Deploy docs
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: docs/build
clean: true