# syntax=docker/dockerfile:1 # SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 ARG CUDA_BUILD_IMAGE=nvcr.io/nvidia/cuda:12.8.1-base-ubuntu22.04 ARG OPENSHELL_SANDBOX_BASE_IMAGE=nvcr.io/nvidia/base/ubuntu:24.04 FROM ${CUDA_BUILD_IMAGE} AS builder ARG DEBIAN_FRONTEND=noninteractive ARG CUDA_SAMPLES_REF=v12.8 ARG CUDA_SAMPLES_REPO=https://github.com/NVIDIA/cuda-samples RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ ca-certificates \ cmake \ cuda-nvcc-12-8 \ curl \ g++ \ && rm -rf /var/lib/apt/lists/* WORKDIR /build/cuda-samples RUN set -eux; \ curl -fsSL "${CUDA_SAMPLES_REPO}/archive/refs/tags/${CUDA_SAMPLES_REF}.tar.gz" \ -o /tmp/cuda-samples.tar.gz; \ tar -xzf /tmp/cuda-samples.tar.gz \ --strip-components=1 \ --wildcards \ '*/Common/*' \ '*/cmake/*' \ '*/Samples/0_Introduction/vectorAdd/*' \ '*/Samples/1_Utilities/deviceQuery/*' \ '*/LICENSE'; \ sed -i 's/CUDA::cudart/CUDA::cudart_static/g' \ Samples/1_Utilities/deviceQuery/CMakeLists.txt; \ cmake -S Samples/1_Utilities/deviceQuery -B /tmp/build-device-query \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CUDA_RUNTIME_LIBRARY=Static; \ cmake --build /tmp/build-device-query --parallel; \ cmake -S Samples/0_Introduction/vectorAdd -B /tmp/build-vector-add \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CUDA_RUNTIME_LIBRARY=Static; \ cmake --build /tmp/build-vector-add --parallel; \ mkdir -p /opt/openshell-gpu-workload; \ cp /tmp/build-device-query/deviceQuery /opt/openshell-gpu-workload/deviceQuery; \ cp /tmp/build-vector-add/vectorAdd /opt/openshell-gpu-workload/vectorAdd; \ cp LICENSE /opt/openshell-gpu-workload/cuda-samples.LICENSE; \ rm -f /tmp/cuda-samples.tar.gz FROM ${OPENSHELL_SANDBOX_BASE_IMAGE} ARG CUDA_SAMPLES_REF=v12.8 LABEL com.nvidia.openshell.gpu-workload.name="cuda-basic" \ com.nvidia.openshell.gpu-workload.cuda-samples-ref="${CUDA_SAMPLES_REF}" USER root RUN mkdir -p /usr/local/lib/openshell-gpu-workload \ /usr/local/share/doc/openshell-gpu-workload COPY --from=builder /opt/openshell-gpu-workload/deviceQuery /usr/local/lib/openshell-gpu-workload/deviceQuery COPY --from=builder /opt/openshell-gpu-workload/vectorAdd /usr/local/lib/openshell-gpu-workload/vectorAdd COPY --from=builder /opt/openshell-gpu-workload/cuda-samples.LICENSE /usr/local/share/doc/openshell-gpu-workload/cuda-samples.LICENSE COPY workload.sh /usr/local/bin/openshell-gpu-workload RUN chmod 0755 /usr/local/bin/openshell-gpu-workload \ /usr/local/lib/openshell-gpu-workload/deviceQuery \ /usr/local/lib/openshell-gpu-workload/vectorAdd USER 1000:1000 ENTRYPOINT ["/usr/local/bin/openshell-gpu-workload"]