mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-21 05:30:26 +08:00
Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/16024 codemod with 'Yes to all': s/fwdproxy.any/fwdproxy/g in fbsource Reviewed By: maxgeorg Differential Revision: D13666336 fbshipit-source-id: a5a694d66efec5304a1c8c231d638441f88efe1d
93 lines
2.5 KiB
Bash
Executable File
93 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This script installs CCache with CUDA support.
|
|
# Example usage:
|
|
# ./ccache_setup.sh --path /installed/folder
|
|
|
|
set -e
|
|
shopt -s expand_aliases
|
|
|
|
# Setup the proxy
|
|
alias with_proxy="HTTPS_PROXY=http://fwdproxy:8080 HTTP_PROXY=http://fwdproxy:8080 FTP_PROXY=http://fwdproxy:8080 https_proxy=http://fwdproxy:8080 http_proxy=http://fwdproxy:8080 ftp_proxy=http://fwdproxy:8080 http_no_proxy='*.facebook.com|*.tfbnw.net|*.fb.com'"
|
|
|
|
# Parse options
|
|
path="$HOME/ccache"
|
|
force=false
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--path)
|
|
shift
|
|
path="$1"
|
|
path=$(realpath "$path")
|
|
;;
|
|
--force) # Force install
|
|
force=true
|
|
;;
|
|
--help)
|
|
echo 'usage: ./ccache_setup.py --path /installed/folder [--force]'
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Invalid option: $1"
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
# Check whether you put nvcc in PATH
|
|
set +e
|
|
nvcc_path=$(which nvcc)
|
|
if [[ -z "$nvcc_path" ]]; then
|
|
nvcc_path="/usr/local/cuda/bin/nvcc"
|
|
export PATH="/usr/local/cuda/bin:$PATH"
|
|
fi
|
|
set -e
|
|
if [ ! -f "$nvcc_path" ] && ! $force; then
|
|
# shellcheck disable=SC2016
|
|
echo 'nvcc is not detected in $PATH'
|
|
exit 1
|
|
fi
|
|
echo "nvcc is detected at $nvcc_path"
|
|
|
|
if [ -f "$CUDA_NVCC_EXECUTABLE" ] && [[ "$CUDA_NVCC_EXECUTABLE" == *"ccache"* ]]; then # Heuristic rule
|
|
if $CUDA_NVCC_EXECUTABLE --version; then
|
|
if ! $force; then
|
|
echo "CCache with nvcc support is already installed at $CUDA_NVCC_EXECUTABLE, please add --force"
|
|
exit 0
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# Installing CCache
|
|
echo "CCache will be installed at $path"
|
|
if [ -e "$path" ]; then
|
|
mv --backup=t -T "$path" "${path}.old"
|
|
fi
|
|
|
|
with_proxy git clone https://github.com/colesbury/ccache.git "$path" -b ccbin
|
|
cd "$path"
|
|
./autogen.sh
|
|
./configure
|
|
make install prefix="$path"
|
|
|
|
mkdir -p "$path/lib"
|
|
mkdir -p "$path/cuda"
|
|
ln -sf "$path/bin/ccache" "$path/lib/cc"
|
|
ln -sf "$path/bin/ccache" "$path/lib/c++"
|
|
ln -sf "$path/bin/ccache" "$path/lib/gcc"
|
|
ln -sf "$path/bin/ccache" "$path/lib/g++"
|
|
ln -sf "$path/bin/ccache" "$path/cuda/nvcc"
|
|
"$path/bin/ccache" -M 25Gi
|
|
|
|
# Make sure the nvcc wrapped in CCache is runnable
|
|
"$path/cuda/nvcc" --version
|
|
echo 'Congrats! The CCache with nvcc support is installed!'
|
|
echo -e "Please add the following lines to your bash init script:\\n"
|
|
echo "################ Env Var for CCache with CUDA support ################"
|
|
# shellcheck disable=SC2016
|
|
echo 'export PATH="'"$path"'/lib:$PATH"'
|
|
echo 'export CUDA_NVCC_EXECUTABLE="'"$path"'/cuda/nvcc"'
|
|
echo '######################################################################'
|