Files
OpenShell/e2e/gpu/images/cuda-basic/Dockerfile
2026-09-22 01:12:09 -07:00

73 lines
2.9 KiB
Docker

# 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"]