RDN 2 - 使用 conda 为 gcc '7.5.0' 进行从源构建的更新
作者 | RAPIDS Ops |
状态 | 已完成 |
主题 | 构建变更 |
RAPIDS 版本 | v0.18 |
创建时间 | 2021 年 2 月 11 日 |
更新时间 | 不适用 |
概述
最近,conda-forge
已切换到使用 gcc/g++ 9.3.0
构建堆栈发布 conda 软件包。RAPIDS v0.18
也已为其 conda 依赖项切换到此构建堆栈,这给开发者带来了以下变化。
影响
所有使用 conda 依赖项、针对 CUDA 10.1/10.2/11.0
并使用 gcc 7.5.0
进行的从源构建都受到影响,需要进行修改才能成功构建 RAPIDS v0.18+
。
注意:使用 conda 依赖项、针对 CUDA
11.0
并使用 gcc9.3.0
进行的 RAPIDS 从源构建不受影响(CUDA10.1/10.2
不支持使用 gcc9.3.0
进行构建)。
Ubuntu 16.04/18.04/20.04
对于所有 Ubuntu 版本,我们使用此 PPA 安装 gcc 7.5.0
并更新 alternatives 以将其设置为默认编译器。
sudo apt-get update
sudo apt-get install -y software-properties-common
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install -y gcc-7 g++-7 libstdc++6
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 7
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 7
sudo update-alternatives --set gcc /usr/bin/gcc-7
sudo update-alternatives --set g++ /usr/bin/g++-7
注意:此代码对应的 docker 版本可在此处找到:here
安装 gcc 7.5.0
和更新的 libstdc++6
包后,您应该能够使用 conda 依赖项从源构建 RAPIDS。如果在构建过程中遇到任何 GLIBC
错误,请务必检查下面列出的 libstdc++6
包版本。
检查 libstdc++6
包版本
为了使用来自 conda-forge
的 conda 依赖项进行构建,安装的 libstdc++6
包版本必须 >= 9.3.0
。您可以通过以下命令验证当前安装的版本和可用版本。
sudo apt-get update
sudo apt-cache policy `libstdc++6`
如果版本不是 >= 9.3.0
,请再次安装该包以进行更新。
sudo apt-get install libstdc++6
CentOS 7/8 或 RHEL 7/8
对于 CentOS 和 RHEL,我们从源构建 gcc 7.5.0
用于我们的 docker 镜像,并将其提供为一个 tarball。我们的公共 tarball 现已打补丁,包含一个来自 gcc 9.3.0
构建的 libstdc++
版本,该版本使得使用 conda 依赖项从源构建 RAPIDS 成为可能。
安装我们打补丁的 gcc 7.5.0
将 tarball 下载并解压到目标机器或 docker 镜像。该 tarball 应从根目录解压,并解压到以下路径:/usr/local/gcc7
。
sudo wget --quiet https://gpuci.s3.us-east-2.amazonaws.com/builds/gcc7.tgz -O /gcc7.tgz
sudo tar xzf /gcc7.tgz
sudo rm -f /gcc7.tgz
注意:此代码对应的 docker 版本可在此处找到:here
解压后,设置环境变量以启用已安装的 gcc 7.5.0
。
export GCC7_DIR=/usr/local/gcc7
export CC=${GCC7_DIR}/bin/gcc
export CXX=${GCC7_DIR}/bin/g++
export CUDAHOSTCXX=${GCC7_DIR}/bin/g++
export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=${GCC7_DIR}/lib64:$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/lib
export PATH=${GCC7_DIR}/bin:$PATH
注意:此代码对应的 docker 版本可在此处找到:here
从这里开始,RAPIDS 仓库中的所有 ./build.sh
脚本都应该可以无误构建。