Update to solana-perf-libs v0.14.0, with support for both CUDA 10.0 and 10.1
This commit is contained in:
parent
44967abd1c
commit
5683282c94
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue