Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new NVIDIA CUDA feature #80

Merged
merged 38 commits into from
Aug 21, 2022
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
caa4520
Add new Nvidia feature
jungaretti Aug 4, 2022
2e115a9
Remove random empty files
jungaretti Aug 4, 2022
82cf979
Update comments
jungaretti Aug 4, 2022
25a7dc7
Merge branch 'main' into jungaretti/nvidia-feature
joshspicer Aug 5, 2022
0d6fe41
Rename feature to nvidia-cuda
jungaretti Aug 8, 2022
f0dee9d
Add feature to tests
jungaretti Aug 8, 2022
c729aef
Add version
jungaretti Aug 8, 2022
ce560c7
Merge branch 'main' of https://github.com/devcontainers/features into…
jungaretti Aug 8, 2022
f329740
Move test to match new name
jungaretti Aug 8, 2022
ccc5282
Add final output message
jungaretti Aug 8, 2022
2a7d079
Fix capitalization of NVIDIA
jungaretti Aug 8, 2022
9aef242
Remove option for base CUDA
jungaretti Aug 11, 2022
67309af
Use camelCase
jungaretti Aug 11, 2022
8a44491
Check for required packages
jungaretti Aug 15, 2022
30a4aa6
Use os-release instead of lsb_release
jungaretti Aug 15, 2022
90afb4a
Clean up keyring variables
jungaretti Aug 15, 2022
ba1da2a
Collapse keyring lines
jungaretti Aug 15, 2022
62bceba
Always install CUDA libraries
jungaretti Aug 15, 2022
96423df
Add option to install NVTX
jungaretti Aug 15, 2022
caf879a
Merge branch 'main' of https://github.com/devcontainers/features into…
jungaretti Aug 16, 2022
3ab6580
Always use ubuntu2004 repo
jungaretti Aug 16, 2022
c1a051d
Use test instead of brackets
jungaretti Aug 17, 2022
8a6d52b
Add default values to feature
jungaretti Aug 17, 2022
f246115
Add version options for CUDA and cuDNN
jungaretti Aug 17, 2022
52da1e5
Rename CUDA version option
jungaretti Aug 17, 2022
d3e145b
Add scenario to test specific CUDA/cuDNN version
jungaretti Aug 17, 2022
287aa65
Rename cuDNN scenario
jungaretti Aug 17, 2022
ef45b35
Fix typo in test scenario
jungaretti Aug 17, 2022
e6b9356
Update variable casing
jungaretti Aug 17, 2022
11d217a
Add more helpful error messages
jungaretti Aug 18, 2022
a89dac0
Remove default values from script
jungaretti Aug 19, 2022
d17069e
Use enum for version option
jungaretti Aug 20, 2022
9e6255c
Polish new scenarios
jungaretti Aug 20, 2022
c7a61d3
Remove apt_get_update_if_needed and check_packages
jungaretti Aug 20, 2022
f4b62d2
Merge branch 'main' of https://github.com/devcontainers/features into…
jungaretti Aug 20, 2022
ae65577
Add more versions
jungaretti Aug 20, 2022
7d57487
Improve error messages
jungaretti Aug 20, 2022
fe2bada
Comments and feature description
jungaretti Aug 21, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions src/nvidia/devcontainer-feature.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"id": "nvidia",
jungaretti marked this conversation as resolved.
Show resolved Hide resolved
"name": "Nvidia",
jungaretti marked this conversation as resolved.
Show resolved Hide resolved
jungaretti marked this conversation as resolved.
Show resolved Hide resolved
"description": "Installs Nvidia's CUDA libraries.",
"options": {
"install_cuda": {
"type": "boolean",
"default": true,
"description": "Install CUDA libraries"
jungaretti marked this conversation as resolved.
Show resolved Hide resolved
},
"install_cudnn": {
"type": "boolean",
"default": true,
"description": "Install cuDNN libraries"
jungaretti marked this conversation as resolved.
Show resolved Hide resolved
}
}
}
36 changes: 36 additions & 0 deletions src/nvidia/install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/usr/bin/env bash

set -e

install_cuda=${INSTALL_CUDA:-"true"}
install_cudnn=${INSTALL_CUDNN:-"true"}

if [ "$(id -u)" -ne 0 ]; then
echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
exit 1
fi

# Download Nvidia's keyring package
ubuntu_version="$(lsb_release -sr | sed 's/\.//g')"
keyring_repo="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu$ubuntu_version/x86_64"
keyring_package="cuda-keyring_1.0-1_all.deb"
keyring_package_url="$keyring_repo/$keyring_package"
keyring_package_path="$(mktemp -d)"
keyring_package_file="$keyring_package_path/$keyring_package"
wget -O "$keyring_package_file" "$keyring_package_url"

# Install Nvidia's keyring package
apt-get install -yq "$keyring_package_file"
apt-get update -yq

if [ "$install_cuda" = "true" ]; then
echo "Installing CUDA libraries..."
apt-get install -yq cuda-libraries-11-7
echo "Successfully installed CUDA libraries!"
fi

if [ "$install_cudnn" = "true" ]; then
echo "Installing cuDNN libraries..."
apt-get install -yq libcudnn8
echo "Successfully installed cuDNN libraries!"
fi
jungaretti marked this conversation as resolved.
Show resolved Hide resolved
19 changes: 19 additions & 0 deletions test/nvidia/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/bin/bash
jungaretti marked this conversation as resolved.
Show resolved Hide resolved

set -e

# Optional: Import test library
source dev-container-features-test-lib

# Definition specific tests
check "libcudart.so.11.0" [ 1 -eq "$(find /usr -name 'libcudart.so.11.0' | wc -l)" ]
check "libcublas.so.11" [ 1 -eq "$(find /usr -name 'libcublas.so.11' | wc -l)" ]
check "libcublasLt.so.11" [ 1 -eq "$(find /usr -name 'libcublasLt.so.11' | wc -l)" ]
check "libcufft.so.10" [ 1 -eq "$(find /usr -name 'libcufft.so.10' | wc -l)" ]
check "libcurand.so.10" [ 1 -eq "$(find /usr -name 'libcurand.so.10' | wc -l)" ]
check "libcusolver.so.11" [ 1 -eq "$(find /usr -name 'libcusolver.so.11' | wc -l)" ]
check "libcusparse.so.11" [ 1 -eq "$(find /usr -name 'libcusparse.so.11' | wc -l)" ]
check "libcudnn.so.8" [ 1 -eq "$(find /usr -name 'libcudnn.so.8' | wc -l)" ]

# Report result
reportResults