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 | ||||
|   ROOT_FEATURES= | ||||
|   if [[ $(uname) = Darwin ]]; then | ||||
|     ./build-perf-libs.sh | ||||
|   else | ||||
|   if [[ $(uname) = Linux ]]; then | ||||
|     # 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 | ||||
|     # is not yet loaded. | ||||
| @@ -72,7 +70,7 @@ test-stable-perf) | ||||
|     ./fetch-perf-libs.sh | ||||
|     # shellcheck source=/dev/null | ||||
|     source ./target/perf-libs/env.sh | ||||
|     ROOT_FEATURES=$ROOT_FEATURES,cuda | ||||
|     ROOT_FEATURES=cuda | ||||
|   fi | ||||
|  | ||||
|   # Run root package library tests | ||||
|   | ||||
| @@ -12,7 +12,12 @@ fn main() { | ||||
|             let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); | ||||
|             let mut path = Path::new(&manifest_dir); | ||||
|             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(); | ||||
|  | ||||
| @@ -26,8 +31,16 @@ fn main() { | ||||
|         }); | ||||
|         println!("cargo:rerun-if-changed={}", perf_libs_dir); | ||||
|         println!("cargo:rustc-link-search=native={}", perf_libs_dir); | ||||
|         println!("cargo:rerun-if-changed={}/libcuda-crypt.a", perf_libs_dir); | ||||
|         println!("cargo:rustc-link-lib=static=cuda-crypt"); | ||||
|         if cfg!(windows) { | ||||
|             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") { | ||||
|             Ok(cuda_home) => cuda_home, | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| PERF_LIBS_VERSION=v0.13.2 | ||||
| PERF_LIBS_VERSION=v0.14.0 | ||||
|  | ||||
| set -e | ||||
| cd "$(dirname "$0")" | ||||
| @@ -20,37 +20,39 @@ if [[ ! -f target/perf-libs/.$PERF_LIBS_VERSION ]]; then | ||||
|   ( | ||||
|     set -x | ||||
|     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 | ||||
|   ) | ||||
| 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)" | ||||
|  | ||||
| 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" | ||||
| export CUDA_HOME="$CUDA_HOME" | ||||
|  | ||||
| echo LD_LIBRARY_PATH="$SOLANA_PERF_LIBS:$CUDA_HOME/lib64:$LD_LIBRARY_PATH" | ||||
| export 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/$SOLANA_PERF_LIBS_CUDA:$CUDA_HOME/lib64:$LD_LIBRARY_PATH" | ||||
|  | ||||
| echo PATH="$SOLANA_PERF_LIBS:$CUDA_HOME/bin:$PATH" | ||||
| export 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/$SOLANA_PERF_LIBS_CUDA:$CUDA_HOME/bin:$PATH" | ||||
|  | ||||
| if [[ -r "$CUDA_HOME"/version.txt && -r $SOLANA_PERF_LIBS/cuda-version.txt ]]; then | ||||
|   if ! diff "$CUDA_HOME"/version.txt "$SOLANA_PERF_LIBS"/cuda-version.txt > /dev/null; 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/$SOLANA_PERF_LIBS_CUDA"/cuda-version.txt > /dev/null; then | ||||
|       echo ============================================== | ||||
|       echo "Warning: possible CUDA version mismatch with $CUDA_HOME" | ||||
|       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 ============================================== | ||||
|   fi | ||||
| @@ -60,7 +62,30 @@ else | ||||
|   echo ============================================== | ||||
| fi | ||||
| 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 No supported CUDA versions detected | ||||
| exit 1 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user