gpu-burn编译与OCI-image构建
gpu-burn 容器 OCI 镜像构建 CMD CUDA 13.0.0:
make IMAGE_NAME=local_repo/gpu-burn:cuda-13.0.0-ubuntu22.04-multi-arch CUDA_VERSION=13.0.0 IMAGE_DISTRO=ubuntu22.04 image
原始 Dockerfile 中需要修改的内容:
(1)修改引用的构建的 CUDA 的原始镜像的拉取地址为正确的拉取地址,或者改成本地已经拉去的地址
(2)修改构建的 CUDA 版本的环境变量名
(3)修改构建的 容器镜像发行版的名称
(4)注释掉原有的 ARG COMPUTE=75 参数,值改为空
(5)增加如下的编译参数:
Dockerfile 内容示例:
ARG CUDA_VERSION=13.0.0
ARG IMAGE_DISTRO=ubuntu22.04
FROM nvcr.io/nvidia/cuda:${CUDA_VERSION}-devel-${IMAGE_DISTRO} AS builder
ARG COMPUTE=
ARG NVCCFLAGS="-gencode=arch=compute_75,code=sm_75 \
-gencode=arch=compute_80,code=sm_80 \
-gencode=arch=compute_86,code=sm_86 \
-gencode=arch=compute_89,code=sm_89 \
-gencode=arch=compute_90,code=sm_90 \
-gencode=arch=compute_100,code=sm_100 \
-gencode=arch=compute_103,code=sm_103 \
-gencode=arch=compute_120,code=sm_120"
WORKDIR /build
COPY compare.cu gpu_burn-drv.cpp Makefile /build/
RUN make COMPUTE=${COMPUTE} NVCCFLAGS="${NVCCFLAGS}"
FROM nvcr.io/nvidia/cuda:${CUDA_VERSION}-runtime-${IMAGE_DISTRO}
COPY --from=builder /build/gpu_burn /app/
COPY --from=builder /build/compare.fatbin /app/
WORKDIR /app
#ENTRYPOINT ["./gpu_burn"]
CMD ["./gpu_burn"]
构建示例 CUDA 12.4:
/bin/cp -fa ./Dockerfile.cuda12.4 ./Dockerfile
make IMAGE_NAME=local_repo/gpu-burn:cuda-12.4.0-centos7-multi-sm-arch CUDA_VERSION=12.4.0 IMAGE_DISTRO=centos7 image
docker build --build-arg COMPUTE=75 --build-arg CUDA_VERSION=12.4.0 --build-arg IMAGE_DISTRO=centos7 -t local_repo/gpu-burn:cuda-12.4.0-centos7-multi-sm-arch .
[+] Building 4.1s (14/14) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 712B 0.0s
=> [internal] load metadata for nvcr.io/nvidia/cuda:12.4.0-runtime-centos7 0.0s
=> [internal] load metadata for nvcr.io/nvidia/cuda:12.4.0-devel-centos7 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [builder 1/4] FROM nvcr.io/nvidia/cuda:12.4.0-devel-centos7 0.0s
=> [stage-1 1/4] FROM nvcr.io/nvidia/cuda:12.4.0-runtime-centos7 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 97B 0.0s
=> CACHED [builder 2/4] WORKDIR /build 0.0s
=> CACHED [builder 3/4] COPY compare.cu gpu_burn-drv.cpp Makefile /build/ 0.0s
=> [builder 4/4] RUN make COMPUTE=75 NVCCFLAGS="-gencode=arch=compute_75,code=sm_75 -gencode=arch=compute_80,code=sm_80 -gencode=arch=compute_86,code=sm_86 -gen 3.9s
=> CACHED [stage-1 2/4] COPY --from=builder /build/gpu_burn /app/ 0.0s
=> [stage-1 3/4] COPY --from=builder /build/compare.fatbin /app/ 0.0s
=> [stage-1 4/4] WORKDIR /app 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:ac26d542fb4d3afba4a1e0337dbec7054133533eb9ae90a9e3faa8e0e4555c05 0.0s
=> => naming to docker.io/local_repo/gpu-burn:cuda-12.4.0-centos7-multi-sm-arch
构建示例 CUDA 12.8:
/bin/cp -fa ./Dockerfile.cuda12.8 ./Dockerfile
make IMAGE_NAME=local_repo/gpu-burn:cuda-12.8.0-ubuntu22.04-multi-sm-arch CUDA_VERSION=12.8.0 IMAGE_DISTRO=ubuntu22.04 image
docker build --build-arg COMPUTE=75 --build-arg CUDA_VERSION=12.8.0 --build-arg IMAGE_DISTRO=ubuntu22.04 -t local_repo/gpu-burn:cuda-12.8.0-ubuntu22.04-multi-sm-arch .
[+] Building 5.1s (14/14) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 805B 0.0s
=> [internal] load metadata for nvcr.io/nvidia/cuda:12.8.0-runtime-ubuntu22.04 0.0s
=> [internal] load metadata for nvcr.io/nvidia/cuda:12.8.0-devel-ubuntu22.04 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [builder 1/4] FROM nvcr.io/nvidia/cuda:12.8.0-devel-ubuntu22.04 0.0s
=> [stage-1 1/4] FROM nvcr.io/nvidia/cuda:12.8.0-runtime-ubuntu22.04 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 97B 0.0s
=> CACHED [builder 2/4] WORKDIR /build 0.0s
=> CACHED [builder 3/4] COPY compare.cu gpu_burn-drv.cpp Makefile /build/ 0.0s
=> [builder 4/4] RUN make COMPUTE=75 NVCCFLAGS="-gencode=arch=compute_75,code=sm_75 -gencode=arch=compute_80,code=sm_80 -gencode=arch=compute_86,code=sm_86 -gen 5.0s
=> CACHED [stage-1 2/4] COPY --from=builder /build/gpu_burn /app/ 0.0s
=> CACHED [stage-1 3/4] COPY --from=builder /build/compare.fatbin /app/ 0.0s
=> CACHED [stage-1 4/4] WORKDIR /app 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:3aea8ae72c879dfd3f0e4cd846a2d0f08c0e2b2317e61d0be7c9f7fdb5d40a82 0.0s
=> => naming to docker.io/local_repo/gpu-burn:cuda-12.8.0-ubuntu22.04-multi-sm-arch
构建示例 CUDA 13.0:
make IMAGE_NAME=local_repo/gpu-burn:cuda-13.0.0-ubuntu22.04-multi-arch CUDA_VERSION=13.0.0 IMAGE_DISTRO=ubuntu22.04 image
docker build --build-arg COMPUTE=75 --build-arg CUDA_VERSION=13.0.0 --build-arg IMAGE_DISTRO=ubuntu22.04 -t local_repo/gpu-burn:cuda-13.0.0-ubuntu22.04-multi-arch .
[+] Building 11.3s (14/14) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 845B 0.0s
=> [internal] load metadata for nvcr.io/nvidia/cuda:13.0.0-runtime-ubuntu22.04 0.0s
=> [internal] load metadata for nvcr.io/nvidia/cuda:13.0.0-devel-ubuntu22.04 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [builder 1/4] FROM nvcr.io/nvidia/cuda:13.0.0-devel-ubuntu22.04 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 97B 0.0s
=> CACHED [stage-1 1/4] FROM nvcr.io/nvidia/cuda:13.0.0-runtime-ubuntu22.04 0.0s
=> CACHED [builder 2/4] WORKDIR /build 0.0s
=> CACHED [builder 3/4] COPY compare.cu gpu_burn-drv.cpp Makefile /build/ 0.0s
=> [builder 4/4] RUN make COMPUTE=75 NVCCFLAGS="-gencode=arch=compute_75,code=sm_75 -gencode=arch=compute_80,code=sm_80 -gencode=arch=compute_86,code=sm_86 -ge 11.0s
=> [stage-1 2/4] COPY --from=builder /build/gpu_burn /app/ 0.0s
=> [stage-1 3/4] COPY --from=builder /build/compare.fatbin /app/ 0.0s
=> [stage-1 4/4] WORKDIR /app 0.0s
=> exporting to image 0.1s
=> => exporting layers 0.0s
=> => writing image sha256:1b3fcf59b434d0d28ad1d122efc4964519c8bd361e7c31465398f50be99f8fb5 0.0s
=> => naming to docker.io/local_repo/gpu-burn:cuda-13.0.0-ubuntu22.04-multi-arch
支持的硬件架构说明
| SM 代号 | 典型 GPU 与架构 |
|---|---|
| SM_75 | RTX 20XX 系列 GPU and (Turing) |
| SM_80 | A100/A800/A10/A40 |
| SM_86 | RTX 30 系列 GPU (Ampere) |
| SM_89 | RTX 40 系列 GPU and AdaLovelace (L40/L40S/L4) |
| SM_90 | H100/H200/H800/H20 (Hopper) |
| SM_100 | B100 B200 |
| SM_103 | B300 |
| SM_120 | RTX 50XX 系列 and Blackwell RTX PRO 6000/6000D |
| SM_70 | Volta GPU |
| SM_61 | Pascal GTX 10XX/TITAN XP,Titan Xp, Tesla P40, Tesla P4 |
| SM_60 | Quadro GP100, Tesla P100 |

浙公网安备 33010602011771号