Skip to content

Commit

Permalink
Defer CUDA selection to env.sh, also always create env.sh
Browse files Browse the repository at this point in the history
  • Loading branch information
mvines committed Jun 19, 2019
1 parent 2562e48 commit 8bd1c57
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 46 deletions.
1 change: 1 addition & 0 deletions ci/test-stable.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ test-stable-perf)
Cargo.toml$ \
ci/test-stable-perf.sh \
ci/test-stable.sh \
^fetch-perf-libs.sh \
^programs/ \
^sdk/ \
|| {
Expand Down
96 changes: 50 additions & 46 deletions fetch-perf-libs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 <<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)"
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 ==============================================
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
EOF
echo
echo "source $PWD/target/perf-libs/env.sh to setup environment"
exit 0
}

SOLANA_PERF_LIBS="$(cd $(dirname "${BASH_SOURCE[0]}"); pwd)"
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

0 comments on commit 8bd1c57

Please sign in to comment.