Skip to content
This repository has been archived by the owner on Jan 22, 2025. It is now read-only.

Commit

Permalink
Update to solana-perf-libs v0.14.0, with support for both CUDA 10.0 a…
Browse files Browse the repository at this point in the history
…nd 10.1
  • Loading branch information
mvines committed Jun 18, 2019
1 parent 44967ab commit 5683282
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 50 deletions.
23 changes: 0 additions & 23 deletions build-perf-libs.sh

This file was deleted.

6 changes: 2 additions & 4 deletions ci/test-stable.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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
Expand Down
19 changes: 16 additions & 3 deletions core/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand All @@ -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,
Expand Down
65 changes: 45 additions & 20 deletions fetch-perf-libs.sh
Original file line number Diff line number Diff line change
@@ -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")"
Expand All @@ -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
Expand All @@ -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 "source $PWD/target/perf-libs/env.sh to setup environment"
exit 0
echo No supported CUDA versions detected
exit 1

0 comments on commit 5683282

Please sign in to comment.