| 
									
										
										
										
											2018-11-11 08:19:04 -08:00
										 |  |  | #!/usr/bin/env bash
 | 
					
						
							| 
									
										
										
										
											2019-06-17 14:31:41 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-27 09:32:32 +02:00
										 |  |  | PERF_LIBS_VERSION=v0.15.0 | 
					
						
							| 
									
										
										
										
											2019-06-17 14:31:41 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-11 08:19:04 -08:00
										 |  |  | set -e | 
					
						
							| 
									
										
										
										
											2019-05-24 09:28:52 -07:00
										 |  |  | cd "$(dirname "$0")" | 
					
						
							| 
									
										
										
										
											2018-06-20 15:11:59 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-17 14:31:41 -07:00
										 |  |  | if [[ ! -f target/perf-libs/.$PERF_LIBS_VERSION ]]; then | 
					
						
							| 
									
										
										
										
											2019-05-24 09:28:52 -07:00
										 |  |  |   if [[ $(uname) != Linux ]]; then | 
					
						
							|  |  |  |     echo Performance libraries are only available for Linux | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2018-06-20 15:11:59 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-24 09:28:52 -07:00
										 |  |  |   if [[ $(uname -m) != x86_64 ]]; then | 
					
						
							|  |  |  |     echo Performance libraries are only available for x86_64 architecture | 
					
						
							|  |  |  |     exit 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2018-06-20 15:11:59 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-24 09:28:52 -07:00
										 |  |  |   mkdir -p target/perf-libs | 
					
						
							| 
									
										
										
										
											2018-08-16 18:49:23 -07:00
										 |  |  |   ( | 
					
						
							|  |  |  |     set -x | 
					
						
							| 
									
										
										
										
											2019-05-24 18:06:38 -07:00
										 |  |  |     cd target/perf-libs | 
					
						
							| 
									
										
										
										
											2019-06-18 08:24:41 -07:00
										 |  |  |     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 | 
					
						
							| 
									
										
										
										
											2019-06-17 14:31:41 -07:00
										 |  |  |     touch .$PERF_LIBS_VERSION | 
					
						
							| 
									
										
										
										
											2018-08-16 18:49:23 -07:00
										 |  |  |   ) | 
					
						
							| 
									
										
										
										
											2019-06-19 08:29:56 -07:00
										 |  |  |   echo | 
					
						
							| 
									
										
										
										
											2019-05-24 09:28:52 -07:00
										 |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-19 08:29:56 -07:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2019-05-24 09:28:52 -07:00
										 |  |  | fi | 
					
						
							| 
									
										
										
										
											2019-06-19 08:29:56 -07:00
										 |  |  | SOLANA_PERF_LIBS="$(cd $(dirname "${BASH_SOURCE[0]}"); pwd)" | 
					
						
							| 
									
										
										
										
											2019-06-18 08:24:41 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-19 08:29:56 -07:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2019-06-18 08:24:41 -07:00
										 |  |  |   [[ -d $CUDA_HOME ]] || { | 
					
						
							| 
									
										
										
										
											2019-06-19 08:29:56 -07:00
										 |  |  |     echo "$_supported_cuda not detected: $CUDA_HOME directory does not exist" | 
					
						
							| 
									
										
										
										
											2019-06-18 08:24:41 -07:00
										 |  |  |     continue | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   [[ -r $CUDA_HOME/version.txt ]] || { | 
					
						
							| 
									
										
										
										
											2019-06-19 08:29:56 -07:00
										 |  |  |     echo "$_supported_cuda not detected: $CUDA_HOME/version.txt does not exist" | 
					
						
							| 
									
										
										
										
											2019-06-18 08:24:41 -07:00
										 |  |  |     continue | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   echo | 
					
						
							|  |  |  |   cat "$CUDA_HOME/version.txt" | 
					
						
							|  |  |  |   echo "CUDA_HOME=$CUDA_HOME" | 
					
						
							| 
									
										
										
										
											2019-06-19 08:29:56 -07:00
										 |  |  |   SOLANA_PERF_LIBS_CUDA=$_supported_cuda | 
					
						
							|  |  |  |   export CUDA_HOME | 
					
						
							|  |  |  |   export SOLANA_PERF_LIBS_CUDA | 
					
						
							|  |  |  |   break | 
					
						
							| 
									
										
										
										
											2019-06-18 08:24:41 -07:00
										 |  |  | done | 
					
						
							| 
									
										
										
										
											2018-11-12 17:50:16 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-19 08:29:56 -07:00
										 |  |  | if [[ -z $SOLANA_PERF_LIBS_CUDA ]]; then | 
					
						
							|  |  |  |   echo No supported CUDA versions detected | 
					
						
							|  |  |  |   echo | 
					
						
							|  |  |  |   echo LD_LIBRARY_PATH="$SOLANA_PERF_LIBS:$LD_LIBRARY_PATH" | 
					
						
							| 
									
										
										
										
											2019-09-08 21:20:08 -07:00
										 |  |  |   export LD_LIBRARY_PATH="$SOLANA_PERF_LIBS:$LD_LIBRARY_PATH" | 
					
						
							| 
									
										
										
										
											2019-06-19 08:29:56 -07:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2019-05-24 09:28:52 -07:00
										 |  |  | echo | 
					
						
							| 
									
										
										
										
											2019-06-19 08:29:56 -07:00
										 |  |  | 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" | 
					
						
							| 
									
										
										
										
											2019-06-18 21:17:20 -07:00
										 |  |  | exit 0 |