Unverified Commit 243671ee authored by Masahiro Wada's avatar Masahiro Wada Committed by GitHub

Enhancements in CUDA Support (#699)

* add cuda tookit installing support

* add nvcc installing support

* add libcudnn8-dev installing support

* add new cuda versions adn cudnn versions

* add specificaitons of new option

* remove installNvcc

installNvcc process is included in installToolkit

* add tests for new nvidia-cuda options

* fix wrong scenario name

* Revert "add specificaitons of new option"

This reverts commit 0dcdb92406e38caa297643eab5af641f814b4f69.

README.md should be generated by CI workflow.

* make cudnn-dev installation isolated

* dump minor version to 1.1.0
parent 0d2fc3ad
{ {
"id": "nvidia-cuda", "id": "nvidia-cuda",
"version": "1.0.7", "version": "1.1.0",
"name": "NVIDIA CUDA", "name": "NVIDIA CUDA",
"description": "Installs shared libraries for NVIDIA CUDA.", "description": "Installs shared libraries for NVIDIA CUDA.",
"documentationURL": "https://github.com/devcontainers/features/tree/main/src/nvidia-cuda", "documentationURL": "https://github.com/devcontainers/features/tree/main/src/nvidia-cuda",
...@@ -10,14 +10,27 @@ ...@@ -10,14 +10,27 @@
"default": false, "default": false,
"description": "Additionally install CUDA Deep Neural Network (cuDNN) shared library" "description": "Additionally install CUDA Deep Neural Network (cuDNN) shared library"
}, },
"installCudnnDev": {
"type": "boolean",
"default": false,
"description": "Additionally install CUDA Deep Neural Network (cuDNN) development libraries and headers"
},
"installNvtx": { "installNvtx": {
"type": "boolean", "type": "boolean",
"default": false, "default": false,
"description": "Additionally install NVIDIA Tools Extension (NVTX)" "description": "Additionally install NVIDIA Tools Extension (NVTX)"
}, },
"installToolkit": {
"type": "boolean",
"default": false,
"description": "Additionally install NVIDIA CUDA Toolkit"
},
"cudaVersion": { "cudaVersion": {
"type": "string", "type": "string",
"proposals": [ "proposals": [
"12.2",
"12.1",
"12.0",
"11.8", "11.8",
"11.7", "11.7",
"11.6", "11.6",
...@@ -32,6 +45,15 @@ ...@@ -32,6 +45,15 @@
"cudnnVersion": { "cudnnVersion": {
"type": "string", "type": "string",
"proposals": [ "proposals": [
"8.9.5.29",
"8.9.4.25",
"8.9.3.28",
"8.9.2.26",
"8.9.1.23",
"8.9.0.131",
"8.8.1.3",
"8.8.0.121",
"8.7.0.84",
"8.6.0.163", "8.6.0.163",
"8.5.0.96", "8.5.0.96",
"8.4.1.50", "8.4.1.50",
......
...@@ -6,7 +6,9 @@ set -e ...@@ -6,7 +6,9 @@ set -e
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
INSTALL_CUDNN=${INSTALLCUDNN} INSTALL_CUDNN=${INSTALLCUDNN}
INSTALL_CUDNNDEV=${INSTALLCUDNNDEV}
INSTALL_NVTX=${INSTALLNVTX} INSTALL_NVTX=${INSTALLNVTX}
INSTALL_TOOLKIT=${INSTALLTOOLKIT}
CUDA_VERSION=${CUDAVERSION} CUDA_VERSION=${CUDAVERSION}
CUDNN_VERSION=${CUDNNVERSION} CUDNN_VERSION=${CUDNNVERSION}
...@@ -47,6 +49,7 @@ apt-get update -yq ...@@ -47,6 +49,7 @@ apt-get update -yq
# Ensure that the requested version of CUDA is available # Ensure that the requested version of CUDA is available
cuda_pkg="cuda-libraries-${CUDA_VERSION/./-}" cuda_pkg="cuda-libraries-${CUDA_VERSION/./-}"
nvtx_pkg="cuda-nvtx-${CUDA_VERSION/./-}" nvtx_pkg="cuda-nvtx-${CUDA_VERSION/./-}"
toolkit_pkg="cuda-toolkit-${CUDA_VERSION/./-}"
if ! apt-cache show "$cuda_pkg"; then if ! apt-cache show "$cuda_pkg"; then
echo "The requested version of CUDA is not available: CUDA $CUDA_VERSION" echo "The requested version of CUDA is not available: CUDA $CUDA_VERSION"
exit 1 exit 1
...@@ -67,11 +70,28 @@ if [ "$INSTALL_CUDNN" = "true" ]; then ...@@ -67,11 +70,28 @@ if [ "$INSTALL_CUDNN" = "true" ]; then
apt-get install -yq "$cudnn_pkg_version" apt-get install -yq "$cudnn_pkg_version"
fi fi
if [ "$INSTALL_CUDNNDEV" = "true" ]; then
# Ensure that the requested version of cuDNN development package is available AND compatible
cudnn_dev_pkg_version="libcudnn8-dev=${CUDNN_VERSION}-1+cuda${CUDA_VERSION}"
if ! apt-cache show "$cudnn_dev_pkg_version"; then
echo "The requested version of cuDNN development package is not available: cuDNN $CUDNN_VERSION for CUDA $CUDA_VERSION"
exit 1
fi
echo "Installing cuDNN dev libraries..."
apt-get install -yq "$cudnn_dev_pkg_version"
fi
if [ "$INSTALL_NVTX" = "true" ]; then if [ "$INSTALL_NVTX" = "true" ]; then
echo "Installing NVTX..." echo "Installing NVTX..."
apt-get install -yq "$nvtx_pkg" apt-get install -yq "$nvtx_pkg"
fi fi
if [ "$INSTALL_TOOLKIT" = "true" ]; then
echo "Installing CUDA Toolkit..."
apt-get install -yq "$toolkit_pkg"
fi
# Clean up # Clean up
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
......
...@@ -8,8 +8,14 @@ source dev-container-features-test-lib ...@@ -8,8 +8,14 @@ source dev-container-features-test-lib
# Check installation of libcudnn8 # Check installation of libcudnn8
check "libcudnn.so.8" test 1 -eq "$(find /usr -name 'libcudnn.so.8' | wc -l)" check "libcudnn.so.8" test 1 -eq "$(find /usr -name 'libcudnn.so.8' | wc -l)"
# Check installation of libcudnn8-dev
check "cudnn.h" test 1 -eq "$(find /usr -name 'cudnn.h' | wc -l)"
# Check installation of cuda-nvtx-11-<version> # Check installation of cuda-nvtx-11-<version>
check "cuda-11+nvtx" test -e '/usr/local/cuda-11/targets/x86_64-linux/include/nvtx3' check "cuda-11+nvtx" test -e '/usr/local/cuda-11/targets/x86_64-linux/include/nvtx3'
# Check installation of cuda-nvcc-11-<version>
check "cuda-11+nvcc" test -e '/usr/local/cuda-11/bin/nvcc'
# Report result # Report result
reportResults reportResults
{ {
"install_cudnn_nvxt": { "install_all_options": {
"image": "debian", "image": "debian",
"features": { "features": {
"nvidia-cuda": { "nvidia-cuda": {
"installCudnn": true, "installCudnn": true,
"installNvtx": true "installCudnnDev": true,
"installNvtx": true,
"installToolkit": true
} }
} }
}, },
...@@ -19,4 +21,4 @@ ...@@ -19,4 +21,4 @@
} }
} }
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment