Update to solana-perf-libs v0.14.0, with support for both CUDA 10.0 and 10.1
This commit is contained in:
		| @@ -1,23 +0,0 @@ | |||||||
| #!/usr/bin/env bash |  | ||||||
| # |  | ||||||
| # Builds perf-libs from the upstream source and installs them into the correct |  | ||||||
| # location in the tree |  | ||||||
| # |  | ||||||
| set -e |  | ||||||
| cd "$(dirname "$0")" |  | ||||||
|  |  | ||||||
| if [[ -d target/perf-libs ]]; then |  | ||||||
|   echo "target/perf-libs/ already exists, to continue run:" |  | ||||||
|   echo "$ rm -rf target/perf-libs" |  | ||||||
|   exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| ( |  | ||||||
|   set -x |  | ||||||
|   git clone git@github.com:solana-labs/solana-perf-libs.git target/perf-libs |  | ||||||
|   cd target/perf-libs |  | ||||||
|   make -j"$(nproc)" |  | ||||||
|   make DESTDIR=. install |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| ./fetch-perf-libs.sh |  | ||||||
| @@ -60,9 +60,7 @@ test-stable-perf) | |||||||
|  |  | ||||||
|   # Run root package tests with these features |   # Run root package tests with these features | ||||||
|   ROOT_FEATURES= |   ROOT_FEATURES= | ||||||
|   if [[ $(uname) = Darwin ]]; then |   if [[ $(uname) = Linux ]]; then | ||||||
|     ./build-perf-libs.sh |  | ||||||
|   else |  | ||||||
|     # Enable persistence mode to keep the CUDA kernel driver loaded, avoiding a |     # Enable persistence mode to keep the CUDA kernel driver loaded, avoiding a | ||||||
|     # lengthy and unexpected delay the first time CUDA is involved when the driver |     # lengthy and unexpected delay the first time CUDA is involved when the driver | ||||||
|     # is not yet loaded. |     # is not yet loaded. | ||||||
| @@ -72,7 +70,7 @@ test-stable-perf) | |||||||
|     ./fetch-perf-libs.sh |     ./fetch-perf-libs.sh | ||||||
|     # shellcheck source=/dev/null |     # shellcheck source=/dev/null | ||||||
|     source ./target/perf-libs/env.sh |     source ./target/perf-libs/env.sh | ||||||
|     ROOT_FEATURES=$ROOT_FEATURES,cuda |     ROOT_FEATURES=cuda | ||||||
|   fi |   fi | ||||||
|  |  | ||||||
|   # Run root package library tests |   # Run root package library tests | ||||||
|   | |||||||
| @@ -12,7 +12,12 @@ fn main() { | |||||||
|             let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); |             let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); | ||||||
|             let mut path = Path::new(&manifest_dir); |             let mut path = Path::new(&manifest_dir); | ||||||
|             path = path.parent().unwrap(); |             path = path.parent().unwrap(); | ||||||
|             path.join(Path::new("target/perf-libs")) |             let mut path = path.join(Path::new("target/perf-libs")); | ||||||
|  |             path.push( | ||||||
|  |                 env::var("SOLANA_PERF_LIBS_CUDA") | ||||||
|  |                     .unwrap_or_else(|err| panic!("SOLANA_PERF_LIBS_CUDA not defined: {}", err)), | ||||||
|  |             ); | ||||||
|  |             path | ||||||
|         }; |         }; | ||||||
|         let perf_libs_dir = perf_libs_dir.to_str().unwrap(); |         let perf_libs_dir = perf_libs_dir.to_str().unwrap(); | ||||||
|  |  | ||||||
| @@ -26,8 +31,16 @@ fn main() { | |||||||
|         }); |         }); | ||||||
|         println!("cargo:rerun-if-changed={}", perf_libs_dir); |         println!("cargo:rerun-if-changed={}", perf_libs_dir); | ||||||
|         println!("cargo:rustc-link-search=native={}", perf_libs_dir); |         println!("cargo:rustc-link-search=native={}", perf_libs_dir); | ||||||
|         println!("cargo:rerun-if-changed={}/libcuda-crypt.a", perf_libs_dir); |         if cfg!(windows) { | ||||||
|         println!("cargo:rustc-link-lib=static=cuda-crypt"); |             println!("cargo:rerun-if-changed={}/libcuda-crypt.dll", perf_libs_dir); | ||||||
|  |         } else if cfg!(target_os = "macos") { | ||||||
|  |             println!( | ||||||
|  |                 "cargo:rerun-if-changed={}/libcuda-crypt.dylib", | ||||||
|  |                 perf_libs_dir | ||||||
|  |             ); | ||||||
|  |         } else { | ||||||
|  |             println!("cargo:rerun-if-changed={}/libcuda-crypt.so", perf_libs_dir); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         let cuda_home = match env::var("CUDA_HOME") { |         let cuda_home = match env::var("CUDA_HOME") { | ||||||
|             Ok(cuda_home) => cuda_home, |             Ok(cuda_home) => cuda_home, | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
|  |  | ||||||
| PERF_LIBS_VERSION=v0.13.2 | PERF_LIBS_VERSION=v0.14.0 | ||||||
|  |  | ||||||
| set -e | set -e | ||||||
| cd "$(dirname "$0")" | cd "$(dirname "$0")" | ||||||
| @@ -20,37 +20,39 @@ if [[ ! -f target/perf-libs/.$PERF_LIBS_VERSION ]]; then | |||||||
|   ( |   ( | ||||||
|     set -x |     set -x | ||||||
|     cd target/perf-libs |     cd target/perf-libs | ||||||
|     curl https://solana-perf.s3.amazonaws.com/$PERF_LIBS_VERSION/x86_64-unknown-linux-gnu/solana-perf.tgz | tar zxvf - |     curl -L --retry 5 --retry-delay 2 --retry-connrefused -o solana-perf.tgz \ | ||||||
|  |       https://github.com/solana-labs/solana-perf-libs/releases/download/$PERF_LIBS_VERSION/solana-perf.tgz | ||||||
|  |     tar zxvf solana-perf.tgz | ||||||
|  |     rm -f solana-perf.tgz | ||||||
|     touch .$PERF_LIBS_VERSION |     touch .$PERF_LIBS_VERSION | ||||||
|   ) |   ) | ||||||
| fi | fi | ||||||
|  |  | ||||||
| cat > target/perf-libs/env.sh <<'EOF' |  | ||||||
|  | write_env() { | ||||||
|  |   rm -f target/perf-libs/env.sh | ||||||
|  |   cat >> target/perf-libs/env.sh <<EOF | ||||||
|  | export CUDA_HOME="$CUDA_HOME" | ||||||
|  | export SOLANA_PERF_LIBS_CUDA="$SOLANA_PERF_LIBS_CUDA" | ||||||
|  | EOF | ||||||
|  | cat >> target/perf-libs/env.sh <<'EOF' | ||||||
| SOLANA_PERF_LIBS="$(cd $(dirname "${BASH_SOURCE[0]}"); pwd)" | SOLANA_PERF_LIBS="$(cd $(dirname "${BASH_SOURCE[0]}"); pwd)" | ||||||
|  |  | ||||||
| echo "solana-perf-libs version: $(cat $SOLANA_PERF_LIBS/solana-perf-HEAD.txt)" | echo "solana-perf-libs version: $(cat $SOLANA_PERF_LIBS/solana-perf-HEAD.txt)" | ||||||
|  |  | ||||||
| if [[ -r "$SOLANA_PERF_LIBS"/solana-perf-CUDA_HOME.txt ]]; then |  | ||||||
|   CUDA_HOME=$(cat "$SOLANA_PERF_LIBS"/solana-perf-CUDA_HOME.txt) |  | ||||||
| else |  | ||||||
|   CUDA_HOME=/usr/local/cuda |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| echo CUDA_HOME="$CUDA_HOME" | echo CUDA_HOME="$CUDA_HOME" | ||||||
| export CUDA_HOME="$CUDA_HOME" |  | ||||||
|  |  | ||||||
| echo LD_LIBRARY_PATH="$SOLANA_PERF_LIBS:$CUDA_HOME/lib64:$LD_LIBRARY_PATH" | echo LD_LIBRARY_PATH="$SOLANA_PERF_LIBS/$SOLANA_PERF_LIBS_CUDA:$CUDA_HOME/lib64:$LD_LIBRARY_PATH" | ||||||
| export LD_LIBRARY_PATH="$SOLANA_PERF_LIBS:$CUDA_HOME/lib64:$LD_LIBRARY_PATH" | export LD_LIBRARY_PATH="$SOLANA_PERF_LIBS/$SOLANA_PERF_LIBS_CUDA:$CUDA_HOME/lib64:$LD_LIBRARY_PATH" | ||||||
|  |  | ||||||
| echo PATH="$SOLANA_PERF_LIBS:$CUDA_HOME/bin:$PATH" | echo PATH="$SOLANA_PERF_LIBS/$SOLANA_PERF_LIBS_CUDA:$CUDA_HOME/bin:$PATH" | ||||||
| export PATH="$SOLANA_PERF_LIBS:$CUDA_HOME/bin:$PATH" | export PATH="$SOLANA_PERF_LIBS/$SOLANA_PERF_LIBS_CUDA:$CUDA_HOME/bin:$PATH" | ||||||
|  |  | ||||||
| if [[ -r "$CUDA_HOME"/version.txt && -r $SOLANA_PERF_LIBS/cuda-version.txt ]]; then | if [[ -r "$CUDA_HOME"/version.txt && -r $SOLANA_PERF_LIBS/$SOLANA_PERF_LIBS_CUDA/cuda-version.txt ]]; then | ||||||
|   if ! diff "$CUDA_HOME"/version.txt "$SOLANA_PERF_LIBS"/cuda-version.txt > /dev/null; then |   if ! diff "$CUDA_HOME"/version.txt "$SOLANA_PERF_LIBS/$SOLANA_PERF_LIBS_CUDA"/cuda-version.txt > /dev/null; then | ||||||
|       echo ============================================== |       echo ============================================== | ||||||
|       echo "Warning: possible CUDA version mismatch with $CUDA_HOME" |       echo "Warning: possible CUDA version mismatch with $CUDA_HOME" | ||||||
|       echo |       echo | ||||||
|       echo "Expected version: $(cat "$SOLANA_PERF_LIBS"/cuda-version.txt)" |       echo "Expected version: $(cat "$SOLANA_PERF_LIBS/$SOLANA_PERF_LIBS_CUDA"/cuda-version.txt)" | ||||||
|       echo "Detected version: $(cat "$CUDA_HOME"/version.txt)" |       echo "Detected version: $(cat "$CUDA_HOME"/version.txt)" | ||||||
|       echo ============================================== |       echo ============================================== | ||||||
|   fi |   fi | ||||||
| @@ -60,7 +62,30 @@ else | |||||||
|   echo ============================================== |   echo ============================================== | ||||||
| fi | fi | ||||||
| EOF | EOF | ||||||
|  |   echo | ||||||
|  |   echo "source $PWD/target/perf-libs/env.sh to setup environment" | ||||||
|  |   exit 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | for cuda in $(cd target/perf-libs; find . -maxdepth 1 -type d -regex './cuda-.*' | sort -r); do | ||||||
|  |   cuda=$(basename "$cuda") | ||||||
|  |   CUDA_HOME=/usr/local/$cuda | ||||||
|  |   SOLANA_PERF_LIBS_CUDA=$cuda | ||||||
|  |   [[ -d $CUDA_HOME ]] || { | ||||||
|  |     echo "$cuda not detected: $CUDA_HOME directory does not exist" | ||||||
|  |     continue | ||||||
|  |   } | ||||||
|  |   [[ -r $CUDA_HOME/version.txt ]] || { | ||||||
|  |     echo "$cuda not detected: $CUDA_HOME/version.txt does not exist" | ||||||
|  |     continue | ||||||
|  |   } | ||||||
|  |   echo | ||||||
|  |   cat "$CUDA_HOME/version.txt" | ||||||
|  |   echo "CUDA_HOME=$CUDA_HOME" | ||||||
|  |   write_env | ||||||
|  | done | ||||||
|  |  | ||||||
| echo | echo | ||||||
| echo "source $PWD/target/perf-libs/env.sh to setup environment" | echo No supported CUDA versions detected | ||||||
| exit 0 | exit 1 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user