diff --git a/.github/actions/workflow-build/build-workflow.py b/.github/actions/workflow-build/build-workflow.py index 58b818ffe30..598f8b64b42 100755 --- a/.github/actions/workflow-build/build-workflow.py +++ b/.github/actions/workflow-build/build-workflow.py @@ -269,6 +269,8 @@ def get_job_type_info(job): result['name'] = job.capitalize() if not 'gpu' in result: result['gpu'] = False + if not 'cuda_ext' in result: + result['cuda_ext'] = False if not 'needs' in result: result['needs'] = None if not 'invoke' in result: @@ -413,13 +415,16 @@ def generate_dispatch_job_image(matrix_job, job_type): ctk = matrix_job['ctk'] host_compiler = generate_dispatch_job_host_compiler(matrix_job, job_type) + job_info = get_job_type_info(job_type) + ctk_suffix = "ext" if job_info['cuda_ext'] else "" + if is_windows(matrix_job): - return f"rapidsai/devcontainers:{devcontainer_version}-cuda{ctk}-{host_compiler}" + return f"rapidsai/devcontainers:{devcontainer_version}-cuda{ctk}{ctk_suffix}-{host_compiler}" if is_nvhpc(matrix_job): return f"rapidsai/devcontainers:{devcontainer_version}-cpp-{host_compiler}" - return f"rapidsai/devcontainers:{devcontainer_version}-cpp-{host_compiler}-cuda{ctk}" + return f"rapidsai/devcontainers:{devcontainer_version}-cpp-{host_compiler}-cuda{ctk}{ctk_suffix}" def generate_dispatch_job_command(matrix_job, job_type): diff --git a/ci/matrix.yaml b/ci/matrix.yaml index d4f19f5b2a3..0fbc24906dd 100644 --- a/ci/matrix.yaml +++ b/ci/matrix.yaml @@ -8,6 +8,10 @@ workflows: # - {jobs: ['test'], project: 'thrust', std: 17, ctk: 'curr', cxx: ['gcc12', 'llvm16']} # override: + - {jobs: ['test_ext'], project: 'cudax', ctk: ['12.0' ], std: 'min', cxx: ['gcc12'], cmake_options: '-Dcudax_ENABLE_CUDASTF_MATHLIBS=ON'} + - {jobs: ['test_ext'], project: 'cudax', ctk: [ 'curr'], std: 'all', cxx: ['gcc12'], cmake_options: '-Dcudax_ENABLE_CUDASTF_MATHLIBS=ON'} + - {jobs: ['test_ext'], project: 'cudax', ctk: ['12.0' ], std: 'max', cxx: ['clang14'], cmake_options: '-Dcudax_ENABLE_CUDASTF_MATHLIBS=ON'} + - {jobs: ['test_ext'], project: 'cudax', ctk: [ 'curr'], std: 'max', cxx: ['clang18'], cmake_options: '-Dcudax_ENABLE_CUDASTF_MATHLIBS=ON'} pull_request: # Old CTK @@ -46,10 +50,10 @@ workflows: - {jobs: ['build'], project: 'cudax', ctk: ['12.0' ], std: 17, cxx: ['gcc12'], sm: "90"} - {jobs: ['build'], project: 'cudax', ctk: [ 'curr'], std: 17, cxx: ['gcc13'], sm: "90a"} - {jobs: ['build'], project: 'cudax', ctk: [ 'curr'], std: 'all', cxx: ['gcc13', 'clang16'], cpu: 'arm64'} - - {jobs: ['test'], project: 'cudax', ctk: ['12.0' ], std: 'min', cxx: ['gcc12']} - - {jobs: ['test'], project: 'cudax', ctk: [ 'curr'], std: 'all', cxx: ['gcc12']} - - {jobs: ['test'], project: 'cudax', ctk: ['12.0' ], std: 'max', cxx: ['clang14']} - - {jobs: ['test'], project: 'cudax', ctk: [ 'curr'], std: 'max', cxx: ['clang18']} + - {jobs: ['test_ext'], project: 'cudax', ctk: ['12.0' ], std: 'min', cxx: ['gcc12'], cmake_options: '-Dcudax_ENABLE_CUDASTF_MATHLIBS=ON'} + - {jobs: ['test_ext'], project: 'cudax', ctk: [ 'curr'], std: 'all', cxx: ['gcc12'], cmake_options: '-Dcudax_ENABLE_CUDASTF_MATHLIBS=ON'} + - {jobs: ['test_ext'], project: 'cudax', ctk: ['12.0' ], std: 'max', cxx: ['clang14'], cmake_options: '-Dcudax_ENABLE_CUDASTF_MATHLIBS=ON'} + - {jobs: ['test_ext'], project: 'cudax', ctk: [ 'curr'], std: 'max', cxx: ['clang18'], cmake_options: '-Dcudax_ENABLE_CUDASTF_MATHLIBS=ON'} # Python and c/parallel jobs: - {jobs: ['test'], project: ['cccl_c_parallel', 'pycuda'], ctk: '12.6'} # cccl-infra: @@ -169,8 +173,9 @@ host_compilers: # Jobs support the following properties: # -# - gpu: Whether the job requires a GPU runner. Default is false. # - name: The human-readable name of the job. Default is the capitalized job key. +# - gpu: Whether the job requires a GPU runner. Default is false. +# - cuda_ext: Whether the job requires a devcontainer with extra CUDA libraries. Default is false. # - needs: # - A list of jobs that must be completed before this job can run. Default is an empty list. # - These are automatically added if needed: @@ -188,6 +193,10 @@ jobs: test: { gpu: true, needs: 'build' } test_nobuild: { gpu: true, name: 'Test', invoke: { prefix: 'test' } } + # Use images with extra CUDA libs: + build_ext: { name: "Build (extra CTK libs)", gpu: false, cuda_ext: true } + test_ext: { name: "Test (extra CTK libs)", gpu: true, cuda_ext: true, needs: 'build_ext' } + # CCCL: infra: { gpu: true } # example project launches a kernel