|
| 1 | +#!/bin/bash |
| 2 | +# Copyright 2020 JD.com, Inc. Galileo Authors. All Rights Reserved. |
| 3 | +# |
| 4 | +# Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | +# you may not use this file except in compliance with the License. |
| 6 | +# You may obtain a copy of the License at |
| 7 | +# |
| 8 | +# http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | +# |
| 10 | +# Unless required by applicable law or agreed to in writing, software |
| 11 | +# distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | +# See the License for the specific language governing permissions and |
| 14 | +# limitations under the License. |
| 15 | +# ============================================================================== |
| 16 | + |
| 17 | +set -e -u |
| 18 | + |
| 19 | +INSTALL_CUDA=${INSTALL_CUDA:-0} |
| 20 | +MAX_JOBS=${MAX_JOBS:-32} |
| 21 | +PYPI_URL=https://mirrors.ustc.edu.cn/pypi/web/simple |
| 22 | +TORCH_URL=https://download.pytorch.org/whl/torch_stable.html |
| 23 | +HADOOP_URL=${HADOOP_URL:-https://downloads.apache.org/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz} |
| 24 | +ZK_BIN_URL=${ZK_BIN_URL:-https://archive.apache.org/dist/zookeeper/zookeeper-3.5.6/apache-zookeeper-3.5.6-bin.tar.gz} |
| 25 | +OPENSSL_URL=${OPENSSL_URL:-http://www.openssl.org/source/openssl-1.1.0c.tar.gz} |
| 26 | + |
| 27 | + |
| 28 | +function install_gcc() { |
| 29 | + #for nvidia/cuda:10.1-cudnn7-devel-centos7 |
| 30 | + GCC_VERSION=8.4.0 |
| 31 | + GCC_URL=https://mirrors.ustc.edu.cn/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.xz |
| 32 | + MAKE_URL=https://mirrors.ustc.edu.cn/gnu/make/make-4.3.tar.gz |
| 33 | + CMAKE_URL=https://github.com/Kitware/CMake/releases/download/v3.19.2/cmake-3.19.2-Linux-x86_64.sh |
| 34 | + |
| 35 | + sed -e 's|^mirrorlist=|#mirrorlist=|g' \ |
| 36 | + -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' \ |
| 37 | + -i.bak /etc/yum.repos.d/CentOS-Base.repo |
| 38 | + yum -y install wget which vim |
| 39 | + yum -y groupinstall 'Development Tools' |
| 40 | + wget -qO make.tar.gz ${MAKE_URL} && tar xf make.tar.gz && rm -f make.tar.gz |
| 41 | + pushd make-4.3 && ./configure --prefix=/usr/local/ && make -j${MAX_JOBS} |
| 42 | + make install && popd && rm -rf make-4.3 && yum -y remove make |
| 43 | + ln -srf /usr/local/bin/make /usr/bin/gmake |
| 44 | + ln -srf /usr/local/bin/make /usr/bin/make |
| 45 | + |
| 46 | + wget -qO cmake.sh ${CMAKE_URL} && bash cmake.sh --skip-license --prefix=/usr/local && rm -f cmake.sh |
| 47 | + wget -q ${GCC_URL} && tar xf gcc-${GCC_VERSION}.tar.xz && rm -f gcc-${GCC_VERSION}.tar.xz |
| 48 | + pushd gcc-${GCC_VERSION} && ./contrib/download_prerequisites |
| 49 | + ./configure --enable-checking=release --enable-languages=c,c++,obj-c++ --disable-multilib |
| 50 | + make -j${MAX_JOBS} && make install && popd && rm -rf gcc-${GCC_VERSION} && yum -y remove gcc |
| 51 | +} |
| 52 | + |
| 53 | +function install_ssl() { |
| 54 | + yum -y install wget zlib zlib-devel |
| 55 | + wget -O openssl-1.1.0c.tar.gz ${OPENSSL_URL} |
| 56 | + tar xf openssl-1.1.0c.tar.gz |
| 57 | + pushd openssl-1.1.0c |
| 58 | + ./config shared zlib |
| 59 | + make -j${MAX_JOBS} |
| 60 | + make install_sw |
| 61 | + popd |
| 62 | + rm -fr openssl-1.1.0* |
| 63 | + yum clean all && rm -rf /var/cache/yum/* |
| 64 | +} |
| 65 | + |
| 66 | +function install_zk() { |
| 67 | + yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel |
| 68 | + yum clean all && rm -rf /var/cache/yum/* |
| 69 | + echo "export JAVA_HOME=/usr/lib/jvm/java" >> /root/.bashrc |
| 70 | + echo "export CLASSPATH=\$(/opt/hadoop/bin/hadoop classpath --glob)" \ |
| 71 | + >> /root/.bashrc |
| 72 | + |
| 73 | + wget -O hadoop.tar.gz ${HADOOP_URL} |
| 74 | + tar -xf hadoop.tar.gz -C /opt |
| 75 | + rm -f hadoop.tar.gz |
| 76 | + mv /opt/hadoop* /opt/hadoop |
| 77 | + |
| 78 | + wget -O zookeeper.tar.gz ${ZK_BIN_URL} |
| 79 | + tar xf zookeeper.tar.gz -C /usr/local/ |
| 80 | + rm -f zookeeper.tar.gz && mv /usr/local/apache-zookeeper-3.5.6-bin \ |
| 81 | + /usr/local/zookeeper |
| 82 | + mkdir -p /usr/local/zookeeper/data |
| 83 | + echo -e "dataDir=/usr/local/zookeeper/data\nclientPort=2181" \ |
| 84 | + > /usr/local/zookeeper/conf/zoo.cfg |
| 85 | + echo "JAVA_HOME=/usr/lib/jvm/java" \ |
| 86 | + > /usr/local/zookeeper/conf/zookeeper-env.sh |
| 87 | +} |
| 88 | + |
| 89 | +function setup_env() { |
| 90 | + paths="" |
| 91 | + libs="/lib64:/usr/local/lib:/usr/local/lib64" |
| 92 | + libs+=":/usr/lib/jvm/java/jre/lib/amd64/server" |
| 93 | + libs+=":/opt/hadoop/lib/native" |
| 94 | + if [ ${INSTALL_CUDA} -ne 0 ];then |
| 95 | + paths+="/usr/local/bin" |
| 96 | + paths+=":/usr/local/anaconda3/bin" |
| 97 | + paths+=":/usr/local/cuda/bin" |
| 98 | + libs+=":/usr/local/anaconda3/lib" |
| 99 | + libs+=":/usr/local/cuda/lib64" |
| 100 | + libs+=":/usr/local/nvidia/lib" |
| 101 | + libs+=":/usr/local/nvidia/lib64" |
| 102 | + fi |
| 103 | + paths+=":/usr/lib/jvm/java/bin" |
| 104 | + paths+=":/usr/local/zookeeper/bin" |
| 105 | + paths+=":/opt/hadoop/bin" |
| 106 | + echo "export PATH=${paths}:\$PATH" >> /root/.bashrc |
| 107 | + echo "export LD_LIBRARY_PATH=${libs}:\$LD_LIBRARY_PATH" >> /root/.bashrc |
| 108 | + echo "export LIBRARY_PATH=${libs}:\$LIBRARY_PATH" >> /root/.bashrc |
| 109 | + echo "export MAX_JOBS=${MAX_JOBS}" >> /root/.bashrc |
| 110 | + set +u |
| 111 | + source /root/.bashrc || true |
| 112 | +} |
| 113 | + |
| 114 | +function install_py3() { |
| 115 | + #for nvidia/cuda:10.1-cudnn7-devel-centos7 |
| 116 | + ANACONDA_URL=https://repo.anaconda.com/archive/Anaconda3-2020.07-Linux-x86_64.sh |
| 117 | + wget -qO anaconda3.sh ${ANACONDA_URL} && bash anaconda3.sh -b -p /usr/local/anaconda3 |
| 118 | + rm -f anaconda3.sh && cp /usr/local/anaconda3/lib/libstdc++.so.6.0.26 /lib64 |
| 119 | + ln -srf /lib64/libstdc++.so.6.0.26 /lib64/libstdc++.so.6 |
| 120 | + ln -srf /lib64/libstdc++.so.6.0.26 /usr/lib64/libstdc++.so.6 |
| 121 | +} |
| 122 | + |
| 123 | +function install_deps_gpu() { |
| 124 | + #for nvidia/cuda:10.1-cudnn7-devel-centos7 |
| 125 | + pip=/usr/local/anaconda3/bin/pip3 |
| 126 | + conda=/usr/local/anaconda3/bin/conda |
| 127 | + ${pip} install -i ${PYPI_URL} pip -U |
| 128 | + ${pip} config set global.index-url ${PYPI_URL} |
| 129 | + ${pip} install tensorflow==2.3.0 networkx==2.3 attrs |
| 130 | + ${pip} install torch==1.6.0+cu101 torchvision==0.7.0+cu101 torch-scatter -f ${TORCH_URL} |
| 131 | + ${conda} install -y numpy scipy pyyaml ipython mkl mkl-include scikit-learn |
| 132 | + ${conda} install -c conda-forge -y kazoo py3nvml |
| 133 | + ${conda} clean -ya && ${pip} cache purge |
| 134 | +} |
| 135 | + |
| 136 | +function install_deps_cpu() { |
| 137 | + echo "install for python $1" |
| 138 | + pip=/opt/python/$1/bin/pip |
| 139 | + ${pip} config set global.index-url ${PYPI_URL} |
| 140 | + ${pip} install pip -U |
| 141 | + ${pip} install torch==1.6.0+cpu torchvision==0.7.0+cpu -f ${TORCH_URL} |
| 142 | + ${pip} install torch-scatter tensorflow==2.3.0 networkx==2.3 kazoo attrs |
| 143 | + ${pip} cache purge |
| 144 | + ln -sf /opt/python/$1/bin/pip3 /usr/local/bin/pip3 |
| 145 | + ln -sf /usr/local/bin/python3.8 /usr/local/bin/python3 |
| 146 | +} |
| 147 | + |
| 148 | +if [ ${INSTALL_CUDA} -eq 0 ];then |
| 149 | + echo "install cpu version" |
| 150 | + install_deps_cpu cp38-cp38 |
| 151 | +else |
| 152 | + echo "install gpu version" |
| 153 | + install_gcc |
| 154 | + install_deps_gpu |
| 155 | +fi |
| 156 | + |
| 157 | +install_ssl |
| 158 | +install_zk |
| 159 | +setup_env |
0 commit comments