Skip to content

Commit 83eeb10

Browse files
committed
TRY gpu build
Signed-off-by: Larry Gritz <lg@larrygritz.com>
1 parent 05338dd commit 83eeb10

File tree

4 files changed

+338
-5
lines changed

4 files changed

+338
-5
lines changed

.github/workflows/build-steps.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ on:
1818
type: string
1919
container:
2020
type: string
21+
container_args:
22+
type: string
2123
cc_compiler:
2224
type: string
2325
cxx_compiler:
@@ -88,6 +90,8 @@ jobs:
8890
runs-on: ${{ inputs.runner }}
8991
container:
9092
image: ${{ inputs.container }}
93+
# options: ${{ inputs.container_options }}
94+
options: --gpus all,"capabilities=compute,utility"
9195

9296
env:
9397
CXX: ${{inputs.cxx_compiler}}

.github/workflows/ci.yml

Lines changed: 330 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ concurrency:
4545
jobs:
4646

4747
aswf-old:
48-
if: ${{ ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'macos-only') }}
48+
if: ${{ ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'macos-only') && ! contains(github.ref, 'gpu-only') }}
4949
name: "VFX${{matrix.vfxyear}} ${{matrix.desc}}"
5050
strategy:
5151
fail-fast: false
@@ -208,7 +208,7 @@ jobs:
208208
209209
210210
linux:
211-
if: ${{ ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'macos-only') }}
211+
if: ${{ ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'macos-only') && ! contains(github.ref, 'gpu-only') }}
212212
name: "${{matrix.desc}}"
213213
uses: ./.github/workflows/build-steps.yml
214214
with:
@@ -268,7 +268,7 @@ jobs:
268268
setenvs: export OSL_CMAKE_FLAGS="-DOSL_USE_OPTIX=1"
269269
OPTIX_VERSION=7.0.0
270270
OPENIMAGEIO_CMAKE_FLAGS=-DBUILD_FMT_VERSION=9.1.0
271-
- desc: VP2024 gcc11/C++17 llvm17 py3.11 boost1.82 oiio-rel avx2
271+
- desc: VP2024 gcc11/C++17 llvm17 py3.11 oiio-rel avx2
272272
nametag: linux-vfx2024
273273
runner: ubuntu-latest
274274
container: aswftesting/ci-osl:2024-clang17
@@ -490,8 +490,77 @@ jobs:
490490
CLANG_FORMAT_EXE=clang-format-17
491491

492492

493+
# linux-optix:
494+
# if: ${{ ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'macos-only') }}
495+
# name: "${{matrix.desc}}"
496+
# uses: ./.github/workflows/build-steps.yml
497+
# with:
498+
# nametag: ${{ matrix.nametag || 'unnamed!' }}
499+
# runner: ${{ matrix.runner || 'ubuntu-latest' }}
500+
# container: ${{ matrix.container }}
501+
# container_args: ${{ matrix.container_args }}
502+
# cc_compiler: ${{ matrix.cc_compiler || 'gcc' }}
503+
# cxx_compiler: ${{ matrix.cxx_compiler || 'g++' }}
504+
# cxx_std: ${{ matrix.cxx_std || '17' }}
505+
# build_type: ${{ matrix.build_type || 'Release' }}
506+
# depcmds: ${{ matrix.depcmds }}
507+
# extra_artifacts: ${{ matrix.extra_artifacts }}
508+
# fmt_ver: ${{ matrix.fmt_ver }}
509+
# opencolorio_ver: ${{ matrix.opencolorio_ver }}
510+
# openexr_ver: ${{ matrix.openexr_ver }}
511+
# openimageio_ver: ${{ matrix.openimageio_ver }}
512+
# pybind11_ver: ${{ matrix.pybind11_ver }}
513+
# python_ver: ${{ matrix.python_ver }}
514+
# setenvs: ${{ matrix.setenvs }}
515+
# simd: ${{ matrix.simd }}
516+
# batched: ${{ matrix.batched }}
517+
# skip_build: ${{ matrix.skip_build }}
518+
# skip_tests: ${{ matrix.skip_tests }}
519+
# abi_check: ${{ matrix.abi_check }}
520+
# build_docs: ${{ matrix.build_docs }}
521+
# generator: ${{ matrix.generator }}
522+
# ctest_args: ${{ matrix.ctest_args }}
523+
# ctest_test_timeout: ${{ matrix.ctest_test_timeout || '800' }}
524+
# coverage: ${{ matrix.coverage || 0 }}
525+
# sonar: ${{ matrix.sonar || 0 }}
526+
# llvm_action_ver: ${{ matrix.llvm_action_ver }}
527+
# clang_format: ${{ matrix.clang_format }}
528+
# strategy:
529+
# fail-fast: false
530+
# matrix:
531+
# include:
532+
# # - desc: VP2023 GPU Cuda11 gcc11/C++17 llvm15 py3.10 OIIO-main avx2
533+
# # nametag: linux-optix7-2023
534+
# # runner: ubuntu-latest
535+
# # container: aswftesting/ci-osl:2023-clang15
536+
# # cxx_std: 17
537+
# # openimageio_ver: main
538+
# # python_ver: "3.10"
539+
# # pybind11_ver: v2.10.0
540+
# # simd: avx2,f16c
541+
# # skip_tests: 1
542+
# # setenvs: export OSL_CMAKE_FLAGS="-DOSL_USE_OPTIX=1"
543+
# # OPTIX_VERSION=7.0.0
544+
# # OPENIMAGEIO_CMAKE_FLAGS=-DBUILD_FMT_VERSION=9.1.0
545+
# - desc: VP2025 gcc11/C++17 llvm19 py3.11 oiio-rel avx2
546+
# nametag: linux-optix-vfx2025
547+
# runner: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-20.04-gpu-t4-4c-16g-176h') || 'ubuntu-latest' }}
548+
# # runner: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }}
549+
# container: aswf/ci-osl:2025
550+
# # container_options: --gpus all,capabilities=compute,utility
551+
# cxx_std: 17
552+
# # openimageio_ver: release
553+
# python_ver: "3.11"
554+
# pybind11_ver: v2.11.1
555+
# simd: avx2,f16c
556+
# setenvs: export OSL_CMAKE_FLAGS="-DOSL_USE_OPTIX=1"
557+
# OPTIX_VERSION=9.0.0
558+
# OPENIMAGEIO_CMAKE_FLAGS=-DBUILD_FMT_VERSION=9.1.0
559+
# # setenvs: export CONAN_PACKAGES="ptex/2.4.2@aswf/vfx2024"
560+
561+
493562
macos:
494-
if: ${{ ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'linux-only') }}
563+
if: ${{ ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'linux-only') && ! contains(github.ref, 'gpu-only') }}
495564
name: "${{matrix.desc}}"
496565
uses: ./.github/workflows/build-steps.yml
497566
with:
@@ -560,7 +629,7 @@ jobs:
560629

561630

562631
windows:
563-
if: ${{ ! contains(github.ref, 'linux-only') && ! contains(github.ref, 'macos-only') }}
632+
if: ${{ ! contains(github.ref, 'linux-only') && ! contains(github.ref, 'macos-only') && ! contains(github.ref, 'gpu-only') }}
564633
name: "${{matrix.desc}}"
565634
uses: ./.github/workflows/build-steps.yml
566635
with:
@@ -639,3 +708,259 @@ jobs:
639708
OSL_CMAKE_FLAGS="-DUSE_LLVM_BTCODE=ON"
640709
PUGIXML_VERSION=v1.14
641710
OpenImageIO_BUILD_MISSING_DEPS="Freetype;TIFF;libdeflate;libjpeg-turbo"
711+
712+
713+
714+
715+
linux-optix:
716+
if: ${{ ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'macos-only') }}
717+
name: "${{matrix.desc}}"
718+
# name: "${{matrix.cxx_compiler}} c++${{matrix.cxx_std}} py${{matrix.python_ver}}"
719+
strategy:
720+
fail-fast: false
721+
matrix:
722+
include:
723+
# - desc: VP2023 GPU Cuda11 gcc11/C++17 llvm15 py3.10 OIIO-main avx2
724+
# nametag: linux-optix7-2023
725+
# runner: ubuntu-latest
726+
# container: aswftesting/ci-osl:2023-clang15
727+
# cxx_std: 17
728+
# openimageio_ver: main
729+
# python_ver: "3.10"
730+
# pybind11_ver: v2.10.0
731+
# simd: avx2,f16c
732+
# skip_tests: 1
733+
# setenvs: export OSL_CMAKE_FLAGS="-DOSL_USE_OPTIX=1"
734+
# OPTIX_VERSION=7.0.0
735+
# OPENIMAGEIO_CMAKE_FLAGS=-DBUILD_FMT_VERSION=9.1.0
736+
737+
# runner: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }}
738+
739+
# Failures so far:
740+
741+
# with 'ubuntu-20.04-gpu-t4-4c-16g-176h'
742+
# 1 container_options: --gpus all,"capabilities=compute,utility"
743+
# invalid argument "all,capabilities=compute,utility" for "--gpus" flag: invalid count (utility): value must be either "all" or an integer: invalid syntax
744+
# 2 container_options: --gpus 'all,"capabilities=compute,utility"'
745+
# invalid argument "'all,capabilities=compute,utility'" for "--gpus" flag: invalid count ('all): value must be either "all" or an integer: invalid syntax
746+
# 3 container_options: --gpus 'all,\"capabilities=compute,utility\"'
747+
# invalid argument "all,capabilities=compute,utility" for "--gpus" flag: invalid count (utility): value must be either "all" or an integer: invalid syntax
748+
# same with ubuntu-22.04-8c-32g-300h
749+
750+
# 1 container_options: --gpus "all,\"capabilities=compute,utility\""
751+
# Error response from daemon: could not select device driver "" with capabilities: [[compute utility gpu]]
752+
# 2 container_options: --gpus all,\"capabilities=compute,utility\"
753+
# Error response from daemon: could not select device driver "" with capabilities: [[compute utility gpu]]
754+
# 3 --gpus all
755+
# Error response from daemon: could not select device driver "" with capabilities: [[gpu]]
756+
757+
- desc: 0 VP2025 gcc11/C++17 llvm19 py3.11 oiio-rel avx2
758+
nametag: linux-optix-vfx2025
759+
# runner: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-20.04-gpu-t4-4c-16g-176h') || 'ubuntu-latest' }}
760+
container: aswf/ci-osl:2025
761+
# container_options: --gpus "all,\"capabilities=compute,utility\""
762+
cxx_std: 17
763+
python_ver: "3.11"
764+
pybind11_ver: v2.11.1
765+
simd: avx2,f16c
766+
setenvs: export OSL_CMAKE_FLAGS="-DOSL_USE_OPTIX=1"
767+
OPTIX_VERSION=7.0.0
768+
OPENIMAGEIO_CMAKE_FLAGS=-DBUILD_FMT_VERSION=9.1.0
769+
- desc: 1 VP2025 gcc11/C++17 llvm19 py3.11 oiio-rel avx2
770+
nametag: linux-optix-vfx2025
771+
# runner: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-20.04-gpu-t4-4c-16g-176h') || 'ubuntu-latest' }}
772+
container: aswf/ci-osl:2025
773+
# container_options: --gpus "all,\"capabilities=compute,utility\""
774+
cxx_std: 17
775+
python_ver: "3.11"
776+
pybind11_ver: v2.11.1
777+
simd: avx2,f16c
778+
setenvs: export OSL_CMAKE_FLAGS="-DOSL_USE_OPTIX=1"
779+
OPTIX_VERSION=8.0.0
780+
OPENIMAGEIO_CMAKE_FLAGS=-DBUILD_FMT_VERSION=9.1.0
781+
# - desc: 1 VP2025 gcc11/C++17 llvm19 py3.11 oiio-rel avx2
782+
# nametag: linux-optix-vfx2025
783+
# # runner: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-20.04-gpu-t4-4c-16g-176h') || 'ubuntu-latest' }}
784+
# container: aswf/ci-osl:2025
785+
# container_options: --gpus "all,\"capabilities=compute,utility\""
786+
# cxx_std: 17
787+
# python_ver: "3.11"
788+
# pybind11_ver: v2.11.1
789+
# simd: avx2,f16c
790+
# setenvs: export OSL_CMAKE_FLAGS="-DOSL_USE_OPTIX=1"
791+
# OPTIX_VERSION=9.0.0
792+
# OPENIMAGEIO_CMAKE_FLAGS=-DBUILD_FMT_VERSION=9.1.0
793+
# - desc: 2 VP2025 gcc11/C++17 llvm19 py3.11 oiio-rel avx2
794+
# nametag: linux-optix-vfx2025
795+
# # runner: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-20.04-gpu-t4-4c-16g-176h') || 'ubuntu-latest' }}
796+
# container: aswf/ci-osl:2025
797+
# container_options: --gpus all,\"capabilities=compute,utility\"
798+
# cxx_std: 17
799+
# python_ver: "3.11"
800+
# pybind11_ver: v2.11.1
801+
# simd: avx2,f16c
802+
# setenvs: export OSL_CMAKE_FLAGS="-DOSL_USE_OPTIX=1"
803+
# OPTIX_VERSION=9.0.0
804+
# OPENIMAGEIO_CMAKE_FLAGS=-DBUILD_FMT_VERSION=9.1.0
805+
# - desc: 3 VP2025 gcc11/C++17 llvm19 py3.11 oiio-rel avx2
806+
# nametag: linux-optix-vfx2025
807+
# # runner: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-20.04-gpu-t4-4c-16g-176h') || 'ubuntu-latest' }}
808+
# container: aswf/ci-osl:2025
809+
# container_options: --gpus all
810+
# cxx_std: 17
811+
# python_ver: "3.11"
812+
# pybind11_ver: v2.11.1
813+
# simd: avx2,f16c
814+
# setenvs: export OSL_CMAKE_FLAGS="-DOSL_USE_OPTIX=1"
815+
# OPTIX_VERSION=9.0.0
816+
# OPENIMAGEIO_CMAKE_FLAGS=-DBUILD_FMT_VERSION=9.1.0
817+
818+
# runs-on: ${{ matrix.runner }}
819+
runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-20.04-gpu-t4-4c-16g-176h') || 'ubuntu-latest' }}
820+
# runs-on: ${{ (github.repository_owner == 'AcademySoftwareFoundation' && 'ubuntu-22.04-8c-32g-300h') || 'ubuntu-latest' }}
821+
container:
822+
image: ${{ matrix.container }}
823+
# options: ${{ matrix.container_options }}
824+
# options: --gpus 'all,"capabilities=compute,utility"'
825+
options: -e NVIDIA_DRIVER_CAPABILITIES=compute,graphics,utility --gpus all
826+
827+
env:
828+
CXX: ${{matrix.cxx_compiler}}
829+
CC: ${{matrix.cc_compiler}}
830+
CMAKE_BUILD_TYPE: ${{matrix.build_type}}
831+
CMAKE_CXX_STANDARD: ${{matrix.cxx_std}}
832+
CMAKE_GENERATOR: ${{matrix.generator}}
833+
CTEST_ARGS: ${{matrix.ctest_args}}
834+
CTEST_TEST_TIMEOUT: ${{matrix.ctest_test_timeout}}
835+
USE_SIMD: ${{matrix.simd}}
836+
FMT_VERSION: ${{matrix.fmt_ver}}
837+
OPENCOLORIO_VERSION: ${{matrix.opencolorio_ver}}
838+
OPENEXR_VERSION: ${{matrix.openexr_ver}}
839+
OPENIMAGEIO_VERSION: ${{matrix.openimageio_ver}}
840+
PYBIND11_VERSION: ${{matrix.pybind11_ver}}
841+
PYTHON_VERSION: ${{matrix.python_ver}}
842+
USE_BATCHED: ${{matrix.batched}}
843+
ABI_CHECK: ${{matrix.abi_check}}
844+
ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16
845+
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
846+
847+
steps:
848+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
849+
with:
850+
fetch-depth: '0'
851+
- name: Prepare ccache timestamp
852+
id: ccache_cache_keys
853+
shell: bash
854+
run: echo "date=`date -u +'%Y-%m-%dT%H:%M:%SZ'`" >> $GITHUB_OUTPUT
855+
- name: ccache-restore
856+
id: ccache-restore
857+
uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
858+
with:
859+
path: ./ccache
860+
key: ${{github.job}}-${{matrix.nametag}}-${{steps.ccache_cache_keys.outputs.date}}
861+
restore-keys: ${{github.job}}-
862+
- name: Build setup
863+
shell: bash
864+
run: |
865+
${{matrix.setenvs}}
866+
src/build-scripts/ci-startup.bash
867+
- name: Install LLVM and Clang
868+
if: matrix.llvm_action_ver != ''
869+
uses: KyleMayes/install-llvm-action@6ba6e2cd3813def9879be378609d87cb3ef3bac3 # v2.0.6
870+
with:
871+
version: ${{ matrix.llvm_action_ver }}
872+
- name: Dependencies
873+
shell: bash
874+
run: |
875+
${{matrix.depcmds}}
876+
if [[ "$RUNNER_OS" == "Linux" ]]; then
877+
src/build-scripts/gh-installdeps.bash
878+
elif [[ "$RUNNER_OS" == "macOS" ]]; then
879+
src/build-scripts/install_homebrew_deps.bash
880+
if [[ "$OPENIMAGEIO_VERSION" != "" ]] ; then \
881+
OPENIMAGEIO_CMAKE_FLAGS="-DOIIO_BUILD_TESTS=0 -DUSE_OPENGL=0 -DCMAKE_UNITY_BUILD=ON" ; \
882+
source src/build-scripts/build_openimageio.bash ; \
883+
else \
884+
brew install --display-times -q openimageio ; \
885+
PYTHONPATH=$PYTHONPATH:/usr/local/lib/python${PYTHON_VERSION}/site-packages ; \
886+
fi
887+
src/build-scripts/save-env.bash
888+
elif [[ "$RUNNER_OS" == "Windows" ]]; then
889+
src/build-scripts/gh-win-installdeps.bash
890+
fi
891+
- name: Install sonar-scanner and build-wrapper
892+
if: matrix.sonar == '1'
893+
uses: sonarsource/sonarcloud-github-c-cpp@e4882e1621ad2fb48dddfa48287411bed34789b1 # v2.0.2
894+
- name: Build
895+
if: matrix.skip_build != '1'
896+
shell: bash
897+
run: src/build-scripts/ci-build.bash
898+
- name: Testsuite
899+
if: matrix.skip_tests != '1'
900+
shell: bash
901+
run: src/build-scripts/ci-test.bash
902+
- name: clang-format
903+
if: matrix.clang_format == '1'
904+
shell: bash
905+
run: src/build-scripts/run-clang-format.bash
906+
- name: Code coverage
907+
if: matrix.coverage == '1'
908+
run: src/build-scripts/ci-coverage.bash
909+
- name: Sonar-scanner
910+
if: matrix.sonar == 1
911+
env:
912+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
913+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
914+
run: |
915+
which sonar-scanner
916+
ls -l /__w/OpenShadingLanguage/OpenShadingLanguage/bw_output
917+
echo "BUILD_OUTPUT_DIR is " "${{ env.BUILD_WRAPPER_OUT_DIR }}"
918+
find . -name "*.gcov" -print
919+
# sonar-scanner --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}"
920+
time sonar-scanner --define sonar.host.url="${{ env.SONAR_SERVER_URL }}" --define sonar.cfamily.build-wrapper-output="$BUILD_WRAPPER_OUT_DIR" --define sonar.cfamily.gcov.reportsPath="_coverage" --define sonar.cfamily.threads="$PARALLEL"
921+
# Consult https://docs.sonarcloud.io/advanced-setup/ci-based-analysis/sonarscanner-cli/ for more information and options
922+
- name: Check out ABI standard
923+
if: matrix.abi_check != ''
924+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
925+
with:
926+
ref: ${{matrix.abi_check}}
927+
path: abi_standard
928+
- name: Build ABI standard
929+
if: matrix.abi_check != ''
930+
shell: bash
931+
run: |
932+
mkdir -p abi_standard/build
933+
pushd abi_standard
934+
src/build-scripts/ci-build.bash
935+
popd
936+
- name: Check ABI
937+
if: matrix.abi_check != ''
938+
shell: bash
939+
run: |
940+
src/build-scripts/ci-abicheck.bash ./build abi_standard/build \
941+
liboslexec liboslcomp liboslquery liboslnoise
942+
- name: Build Docs
943+
if: matrix.build_docs == '1'
944+
shell: bash
945+
run: |
946+
cd src/doc
947+
time make doxygen
948+
time make sphinx
949+
- uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
950+
if: ${{ failure() || matrix.build_docs == '1'}}
951+
with:
952+
name: osl-${{github.job}}-${{matrix.nametag}}
953+
path: |
954+
build/cmake-save
955+
build/compat_reports
956+
build/sphinx
957+
build/*.cmake
958+
build/CMake*
959+
build/testsuite/*/*.*
960+
${{ matrix.extra_artifacts }}
961+
- name: ccache-save
962+
id: ccache-save
963+
uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
964+
with:
965+
path: ./ccache
966+
key: ${{github.job}}-${{matrix.nametag}}-${{steps.ccache_cache_keys.outputs.date}}

0 commit comments

Comments
 (0)