set -eou pipefail SIMULTANEOUS_DOWNLOADS=4 SIMULTANEOUS_EXTRACTS=2 URLS=( https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda_12.0.0_525.60.13_linux.run https://developer.download.nvidia.com/compute/cuda/12.0.1/local_installers/cuda_12.0.1_525.85.12_linux.run https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run https://developer.download.nvidia.com/compute/cuda/12.2.1/local_installers/cuda_12.2.1_535.86.10_linux.run https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.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 "
CUDA Release | cuSPARSE Version | cuBLAS Version |
---|---|---|
$_r | $_cs_v | $_cb_v |
CUDA Release | " echo -n "Size (K) | " echo -n "cuSPARSE Size | " echo -n "cuBLAS Size | " echo -n "nvcc Size | " echo -n "cuFFT Size | " echo -n "cuRAND Size | " echo -n "cuSOLVER Size | " echo -n "npp Size | " echo -n "Nsight Compute | " echo -n "Nsight Systems | " echo -n "cuPTI Size | " echo -n "CUDA GDB Size | " echo -n "cudart Size | " echo -n "nvrtc Size | " echo -n "nsight Size | " echo -n "driver Size | " echo "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$_r | " echo -n "$_c_s | " echo -n "$_cs_s ("$(pct $_cs_s $_c_s)"%) | " echo -n "$_cb_s ("$(pct $_cb_s $_c_s)"%) | " echo -n "$_nvcc_s ("$(pct $_nvcc_s $_c_s)"%) | " echo -n "$_cufft_s ("$(pct $_cufft_s $_c_s)"%) | " echo -n "$_curand_s ("$(pct $_curand_s $_c_s)"%) | " echo -n "$_cusolver_s ("$(pct $_cusolver_s $_c_s)"%) | " echo -n "$_npp_s ("$(pct $_npp_s $_c_s)"%) | " echo -n "$_nsight_compute_s ("$(pct $_nsight_systems_s $_c_s)"%) | " echo -n "$_nsight_systems_s ("$(pct $_nsight_compute_s $_c_s)"%) | " echo -n "$_cupti_s ("$(pct $_cupti_s $_c_s)"%) | " echo -n "$_gdb_s ("$(pct $_gdb_s $_c_s)"%) | " echo -n "$_cudart_s ("$(pct $_cudart_s $_c_s)"%) | " echo -n "$_nvrtc_s ("$(pct $_nvrtc_s $_c_s)"%) | " echo -n "$_nsight_s ("$(pct $_nsight_s $_c_s)"%) | " echo -n "$_driver_s ("$(pct $_driver_s $_c_s)"%) | " echo "