From 8bd1c57448cb72ebd168f9585fb248a4045c3532 Mon Sep 17 00:00:00 2001 From: Michael Vines Date: Wed, 19 Jun 2019 08:29:56 -0700 Subject: [PATCH] Defer CUDA selection to env.sh, also always create env.sh --- ci/test-stable.sh | 1 + fetch-perf-libs.sh | 96 ++++++++++++++++++++++++---------------------- 2 files changed, 51 insertions(+), 46 deletions(-) diff --git a/ci/test-stable.sh b/ci/test-stable.sh index a3f780485..035a26750 100755 --- a/ci/test-stable.sh +++ b/ci/test-stable.sh @@ -44,6 +44,7 @@ test-stable-perf) Cargo.toml$ \ ci/test-stable-perf.sh \ ci/test-stable.sh \ + ^fetch-perf-libs.sh \ ^programs/ \ ^sdk/ \ || { diff --git a/fetch-perf-libs.sh b/fetch-perf-libs.sh index 2e8682ea9..5a9f3793e 100755 --- a/fetch-perf-libs.sh +++ b/fetch-perf-libs.sh @@ -26,66 +26,70 @@ if [[ ! -f target/perf-libs/.$PERF_LIBS_VERSION ]]; then rm -f solana-perf.tgz touch .$PERF_LIBS_VERSION ) + echo fi - -write_env() { - rm -f target/perf-libs/env.sh - cat >> target/perf-libs/env.sh <> target/perf-libs/env.sh <<'EOF' +cat > target/perf-libs/env.sh <<'EOF' +if [[ -n $SOLANA_PERF_LIBS ]]; then + echo "solana-perf-libs version: $(cat $SOLANA_PERF_LIBS/solana-perf-HEAD.txt)" + return +fi SOLANA_PERF_LIBS="$(cd $(dirname "${BASH_SOURCE[0]}"); pwd)" -echo "solana-perf-libs version: $(cat $SOLANA_PERF_LIBS/solana-perf-HEAD.txt)" -echo CUDA_HOME="$CUDA_HOME" - -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/$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/$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/$SOLANA_PERF_LIBS_CUDA"/cuda-version.txt)" - echo "Detected version: $(cat "$CUDA_HOME"/version.txt)" - echo ============================================== - fi -else - echo ============================================== - echo Warning: unable to validate CUDA version - 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 +SOLANA_PERF_LIBS_CUDA= +for _supported_cuda in $(cd $SOLANA_PERF_LIBS; find . -maxdepth 1 -type d -regex './cuda-.*' | sort -r); do + _supported_cuda=$(basename "$_supported_cuda") + CUDA_HOME=/usr/local/$_supported_cuda [[ -d $CUDA_HOME ]] || { - echo "$cuda not detected: $CUDA_HOME directory does not exist" + echo "$_supported_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" + echo "$_supported_cuda not detected: $CUDA_HOME/version.txt does not exist" continue } echo cat "$CUDA_HOME/version.txt" echo "CUDA_HOME=$CUDA_HOME" - write_env + SOLANA_PERF_LIBS_CUDA=$_supported_cuda + export CUDA_HOME + export SOLANA_PERF_LIBS_CUDA + break done +if [[ -z $SOLANA_PERF_LIBS_CUDA ]]; then + echo No supported CUDA versions detected + echo + echo LD_LIBRARY_PATH="$SOLANA_PERF_LIBS:$LD_LIBRARY_PATH" + export LD_LIBRARY_PATH="$SOLANA_PERF_LIBS:$SOLANA_PERF_LIBS/$SOLANA_PERF_LIBS_CUDA:$CUDA_HOME/lib64:$LD_LIBRARY_PATH" +else + echo + echo LD_LIBRARY_PATH="$SOLANA_PERF_LIBS:$SOLANA_PERF_LIBS/$SOLANA_PERF_LIBS_CUDA:$CUDA_HOME/lib64:$LD_LIBRARY_PATH" + export LD_LIBRARY_PATH="$SOLANA_PERF_LIBS:$SOLANA_PERF_LIBS/$SOLANA_PERF_LIBS_CUDA:$CUDA_HOME/lib64:$LD_LIBRARY_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/$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/$SOLANA_PERF_LIBS_CUDA"/cuda-version.txt)" + echo "Detected version: $(cat "$CUDA_HOME"/version.txt)" + echo ============================================== + fi + else + echo ============================================== + echo Warning: unable to validate CUDA version + echo ============================================== + fi +fi echo -echo No supported CUDA versions detected +echo "solana-perf-libs version: $(cat $SOLANA_PERF_LIBS/solana-perf-HEAD.txt)" + +EOF + +echo "Setup shell environment with:" +echo " source $PWD/target/perf-libs/env.sh" exit 0