-
Notifications
You must be signed in to change notification settings - Fork 316
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add workflow for building test across plantforms & pytorch & CUDA (#38)
* workflow for pypi publish * workflow for building wheels on github --------- Co-authored-by: Ruilong Li <[email protected]> Co-authored-by: Vickie Ye <[email protected]>
- Loading branch information
1 parent
ee9f1b6
commit 88577be
Showing
1 changed file
with
139 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
name: Building Wheels | ||
|
||
on: [workflow_dispatch] | ||
|
||
jobs: | ||
|
||
wheel: | ||
runs-on: ${{ matrix.os }} | ||
environment: production | ||
|
||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ubuntu-20.04, windows-2019] | ||
# support version based on: https://download.pytorch.org/whl/torch/ | ||
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] | ||
torch-version: [1.11.0, 1.12.0, 1.13.0, 2.0.0] | ||
cuda-version: ['cu113', 'cu115', 'cu116', 'cu117', 'cu118'] | ||
exclude: | ||
- torch-version: 1.11.0 | ||
python-version: '3.11' | ||
- torch-version: 1.11.0 | ||
cuda-version: 'cu116' | ||
- torch-version: 1.11.0 | ||
cuda-version: 'cu117' | ||
- torch-version: 1.11.0 | ||
cuda-version: 'cu118' | ||
|
||
- torch-version: 1.12.0 | ||
python-version: '3.11' | ||
- torch-version: 1.12.0 | ||
cuda-version: 'cu115' | ||
- torch-version: 1.12.0 | ||
cuda-version: 'cu117' | ||
- torch-version: 1.12.0 | ||
cuda-version: 'cu118' | ||
|
||
- torch-version: 1.13.0 | ||
cuda-version: 'cu102' | ||
- torch-version: 1.13.0 | ||
cuda-version: 'cu113' | ||
- torch-version: 1.13.0 | ||
cuda-version: 'cu115' | ||
- torch-version: 1.13.0 | ||
cuda-version: 'cu118' | ||
|
||
- torch-version: 2.0.0 | ||
python-version: '3.7' | ||
- torch-version: 2.0.0 | ||
cuda-version: 'cu102' | ||
- torch-version: 2.0.0 | ||
cuda-version: 'cu113' | ||
- torch-version: 2.0.0 | ||
cuda-version: 'cu115' | ||
- torch-version: 2.0.0 | ||
cuda-version: 'cu116' | ||
|
||
- os: windows-2019 | ||
cuda-version: 'cu102' | ||
- os: windows-2019 | ||
torch-version: 1.13.0 | ||
python-version: '3.11' | ||
|
||
# - os: windows-2019 | ||
# torch-version: 1.13.0 | ||
# cuda-version: 'cu117' | ||
# python-version: '3.9' | ||
|
||
|
||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- name: Upgrade pip | ||
run: | | ||
pip install --upgrade setuptools | ||
pip install ninja | ||
- name: Free up disk space | ||
if: ${{ runner.os == 'Linux' }} | ||
run: | | ||
sudo rm -rf /usr/share/dotnet | ||
- name: Install CUDA ${{ matrix.cuda-version }} | ||
if: ${{ matrix.cuda-version != 'cpu' }} | ||
run: | | ||
bash .github/workflows/cuda/${{ runner.os }}.sh ${{ matrix.cuda-version }} | ||
- name: Install PyTorch ${{ matrix.torch-version }}+${{ matrix.cuda-version }} | ||
run: | | ||
pip install torch==${{ matrix.torch-version }} --extra-index-url https://download.pytorch.org/whl/${{ matrix.cuda-version }} | ||
python -c "import torch; print('PyTorch:', torch.__version__)" | ||
python -c "import torch; print('CUDA:', torch.version.cuda)" | ||
python -c "import torch; print('CUDA Available:', torch.cuda.is_available())" | ||
- name: Patch PyTorch static constexpr on Windows | ||
if: ${{ runner.os == 'Windows' }} | ||
run: | | ||
Torch_DIR=`python -c 'import os; import torch; print(os.path.dirname(torch.__file__))'` | ||
sed -i '31,38c\ | ||
TORCH_API void lazy_init_num_threads();' ${Torch_DIR}/include/ATen/Parallel.h | ||
shell: bash | ||
|
||
- name: Set version | ||
if: ${{ runner.os != 'macOS' }} | ||
run: | | ||
VERSION=`sed -n 's/^__version__ = "\(.*\)"/\1/p' gsplat/version.py` | ||
TORCH_VERSION=`echo "pt${{ matrix.torch-version }}" | sed "s/..$//" | sed "s/\.//g"` | ||
CUDA_VERSION=`echo ${{ matrix.cuda-version }}` | ||
echo "New version name: $VERSION+$TORCH_VERSION$CUDA_VERSION" | ||
sed -i "s/$VERSION/$VERSION+$TORCH_VERSION$CUDA_VERSION/" gsplat/version.py | ||
shell: | ||
bash | ||
|
||
- name: Install main package for CPU | ||
if: ${{ matrix.cuda-version == 'cpu' }} | ||
run: | | ||
BUILD_NO_CUDA=1 pip install . | ||
- name: Build wheel | ||
run: | | ||
pip install wheel | ||
source .github/workflows/cuda/${{ runner.os }}-env.sh ${{ matrix.cuda-version }} | ||
python setup.py bdist_wheel --dist-dir=dist | ||
shell: bash # `source` does not exist in windows powershell | ||
|
||
- name: Test wheel | ||
run: | | ||
cd dist | ||
ls -lah | ||
pip install *.whl | ||
python -c "import gsplat; print('gsplat:', gsplat.__version__)" | ||
cd .. | ||
shell: bash # `ls -lah` does not exist in windows powershell |