set -eou pipefail SIMULTANEOUS_DOWNLOADS=4 SIMULTANEOUS_EXTRACTS=2 URLS=( https://developer.download.nvidia.com/compute/cuda/11.0.1/local_installers/cuda_11.0.1_450.36.06_linux.run https://developer.download.nvidia.com/compute/cuda/11.0.2/local_installers/cuda_11.0.2_450.51.05_linux.run https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda_11.0.3_450.51.06_linux.run https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.run https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda_11.2.0_460.27.04_linux.run https://developer.download.nvidia.com/compute/cuda/11.2.1/local_installers/cuda_11.2.1_460.32.03_linux.run https://developer.download.nvidia.com/compute/cuda/11.2.2/local_installers/cuda_11.2.2_460.32.03_linux.run https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda_11.2.0_460.27.04_linux.run https://developer.download.nvidia.com/compute/cuda/11.2.1/local_installers/cuda_11.2.1_460.32.03_linux.run https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda_11.3.1_465.19.01_linux.run https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux.run https://developer.download.nvidia.com/compute/cuda/11.4.1/local_installers/cuda_11.4.1_470.57.02_linux.run https://developer.download.nvidia.com/compute/cuda/11.4.2/local_installers/cuda_11.4.2_470.57.02_linux.run https://developer.download.nvidia.com/compute/cuda/11.4.3/local_installers/cuda_11.4.3_470.82.01_linux.run https://developer.download.nvidia.com/compute/cuda/11.4.4/local_installers/cuda_11.4.4_470.82.01_linux.run https://developer.download.nvidia.com/compute/cuda/11.5.0/local_installers/cuda_11.5.0_495.29.05_linux.run https://developer.download.nvidia.com/compute/cuda/11.5.1/local_installers/cuda_11.5.1_495.29.05_linux.run https://developer.download.nvidia.com/compute/cuda/11.5.2/local_installers/cuda_11.5.2_495.29.05_linux.run https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux.run https://developer.download.nvidia.com/compute/cuda/11.6.1/local_installers/cuda_11.6.1_510.47.03_linux.run https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda_11.6.2_510.47.03_linux.run https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run ) function cuda_release { version_re='/([0-9]+\.[0-9]+\.[0-9]+)/' if [[ $1 =~ $version_re ]]; then echo ${BASH_REMATCH[1]} else echo "no match" exit 1 fi } function download { wget --no-check-certificate -c $1 } export -f download # export to subshells function extract { fname=$(basename $1) dirname="${fname%.*}" echo "$1 -> $dirname" rm -rf $dirname $SHELL $fname --extract=$PWD/$dirname } export -f extract # export to subshells function cuda_version { fname=$(basename $1) dirname="${fname%.*}" version=$(grep -roh -E 'CUDA_VERSION ([0-9]+)' $dirname/cuda_cudart/include | grep -o -E '[0-9]+') echo CUDA_VERSION '(CUDA API Version)' $version } function dir_size { fname=$(basename $1) dirname="${fname%.*}" size=$(du -s $dirname/$2 | cut -f1) echo $size } function cusparse_version { fname=$(basename $1) dirname="${fname%.*}" major=$(grep -roh -E 'CUSPARSE_VER_MAJOR ([0-9]+)' $dirname/libcusparse/include | grep -o -E '[0-9]+') minor=$(grep -roh -E 'CUSPARSE_VER_MINOR ([0-9]+)' $dirname/libcusparse/include | grep -o -E '[0-9]+') patch=$(grep -roh -E 'CUSPARSE_VER_PATCH ([0-9]+)' $dirname/libcusparse/include | grep -o -E '[0-9]+') build=$(grep -roh -E 'CUSPARSE_VER_BUILD ([0-9]+)' $dirname/libcusparse/include | grep -o -E '[0-9]+') echo $major.$minor.$patch.$build } function cusparse_size { dir_size $1 libcusparse } function cublas_version { fname=$(basename $1) dirname="${fname%.*}" major=$(grep -roh -E 'CUBLAS_VER_MAJOR ([0-9]+)' $dirname/libcublas/include | grep -o -E '[0-9]+') minor=$(grep -roh -E 'CUBLAS_VER_MINOR ([0-9]+)' $dirname/libcublas/include | grep -o -E '[0-9]+') patch=$(grep -roh -E 'CUBLAS_VER_PATCH ([0-9]+)' $dirname/libcublas/include | grep -o -E '[0-9]+') build=$(grep -roh -E 'CUBLAS_VER_BUILD ([0-9]+)' $dirname/libcublas/include | grep -o -E '[0-9]+') echo $major.$minor.$patch.$build } function cublas_size { dir_size $1 libcublas } function cuda_size { fname=$(basename $1) dirname="${fname%.*}" size=$(du -s $dirname | cut -f1) echo $size } function nvcc_size { dir_size $1 cuda_nvcc/bin/nvcc } function cufft_size { dir_size $1 libcufft } function curand_size { dir_size $1 libcurand } function cusolver_size { dir_size $1 libcusolver } function npp_size { dir_size $1 libnpp } function nsight_compute_size { dir_size $1 nsight_compute } function nsight_systems_size { dir_size $1 nsight_systems } function cupti_size { dir_size $1 cuda_cupti } function gdb_size { dir_size $1 cuda_gdb } function cudart_size { dir_size $1 cuda_cudart } function nvrtc_size { dir_size $1 cuda_nvrtc } function nsight_size { dir_size $1 cuda_nsight } function driver_size { fname=$(basename $1) dirname="${fname%.*}" size=$(du -s $dirname/NVIDIA-* | cut -f1) echo $size } function pct { echo "x=$1 / $2 * 100; scale=2; x/1" | bc -l } # echo "downloading" # nice -n20 parallel -j${SIMULTANEOUS_DOWNLOADS} download {} ::: ${URLS[*]} # echo "extracting" # nice -n20 parallel -j${SIMULTANEOUS_EXTRACTS} extract {} ::: ${URLS[*]} echo "" echo "" for url in ${URLS[*]}; do _r=$(cuda_release "$url") _cs_v=$(cusparse_version "$url") _cb_v=$(cublas_version "$url") echo "" done echo "
CUDA Release cuSPARSE Version cuBLAS Version
$_r $_cs_v $_cb_v
" echo "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo "" for url in ${URLS[*]}; do _r=$(cuda_release "$url") _c_s=$(cuda_size "$url") _cs_s=$(cusparse_size "$url") _cb_s=$(cublas_size "$url") _nvcc_s=$(nvcc_size "$url") _cufft_s=$(cufft_size "$url") _curand_s=$(curand_size "$url") _cusolver_s=$(cusolver_size "$url") _npp_s=$(npp_size "$url") _nsight_compute_s=$(nsight_compute_size "$url") _nsight_systems_s=$(nsight_systems_size "$url") _cupti_s=$(cupti_size "$url") _gdb_s=$(gdb_size "$url") _cudart_s=$(cudart_size "$url") _nvrtc_s=$(nvrtc_size "$url") _nsight_s=$(nsight_size "$url") _driver_s=$(driver_size "$url") echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo -n "" echo "" done echo "
CUDA Release Size (K) cuSPARSE Size cuBLAS Size nvcc Size cuFFT Size cuRAND Size cuSOLVER Size npp Size Nsight Compute Nsight Systems cuPTI Size CUDA GDB Size cudart Size nvrtc Size nsight Size driver Size
$_r $_c_s $_cs_s ("$(pct $_cs_s $_c_s)"%) $_cb_s ("$(pct $_cb_s $_c_s)"%) $_nvcc_s ("$(pct $_nvcc_s $_c_s)"%) $_cufft_s ("$(pct $_cufft_s $_c_s)"%) $_curand_s ("$(pct $_curand_s $_c_s)"%) $_cusolver_s ("$(pct $_cusolver_s $_c_s)"%) $_npp_s ("$(pct $_npp_s $_c_s)"%) $_nsight_compute_s ("$(pct $_nsight_systems_s $_c_s)"%) $_nsight_systems_s ("$(pct $_nsight_compute_s $_c_s)"%) $_cupti_s ("$(pct $_cupti_s $_c_s)"%) $_gdb_s ("$(pct $_gdb_s $_c_s)"%) $_cudart_s ("$(pct $_cudart_s $_c_s)"%) $_nvrtc_s ("$(pct $_nvrtc_s $_c_s)"%) $_nsight_s ("$(pct $_nsight_s $_c_s)"%) $_driver_s ("$(pct $_driver_s $_c_s)"%)
" echo -n "CUDA Release," echo -n "cuSPARSE," echo -n "cuBLAS," echo -n "nvcc," echo -n "cuFFT," echo -n "cuRAND," echo -n "cuSOLVER," echo -n "npp," echo -n "Nsight Compute," echo -n "Nsight Systems," echo -n "cuPTI," echo -n "CUDA GDB," echo -n "cudart," echo -n "nvrtc," echo -n "nsight," echo -n "driver," echo "" for url in ${URLS[*]}; do _r=$(cuda_release "$url") _c_s=$(cuda_size "$url") _cs_s=$(cusparse_size "$url") _cb_s=$(cublas_size "$url") _nvcc_s=$(nvcc_size "$url") _cufft_s=$(cufft_size "$url") _curand_s=$(curand_size "$url") _cusolver_s=$(cusolver_size "$url") _npp_s=$(npp_size "$url") _nsight_compute_s=$(nsight_compute_size "$url") _nsight_systems_s=$(nsight_systems_size "$url") _cupti_s=$(cupti_size "$url") _gdb_s=$(gdb_size "$url") _cudart_s=$(cudart_size "$url") _nvrtc_s=$(nvrtc_size "$url") _nsight_s=$(nsight_size "$url") _driver_s=$(driver_size "$url") echo -n "$_r," echo -n "$_cs_s," echo -n "$_cb_s," echo -n "$_nvcc_s," echo -n "$_cufft_s," echo -n "$_curand_s," echo -n "$_cusolver_s," echo -n "$_npp_s," echo -n "$_nsight_compute_s," echo -n "$_nsight_systems_s," echo -n "$_cupti_s," echo -n "$_gdb_s," echo -n "$_cudart_s," echo -n "$_nvrtc_s," echo -n "$_nsight_s," echo -n "$_driver_s," echo "" done