前几天,我正想使用Python在 GPU 上读取箭头缓冲区,但就我所知,conda 或 pip 上提供的 pyarrow 包都没有使用 CUDA 支持构建。与编译 C 包装到 Python 生态系统中的许多包一样,Apache Arrow被全面记录,但如何选择使用 CUDA 支持构建 pyarrow的排列数量很快变得令人难以接受。
在这篇文章中,我将向您展示如何使用Docker和Virtualenv在Ubuntu上用CUDA支持构建pyarrow。这些方向与官方的 Apache Arrow 文档大致相同,但在这里,我逐步解释它们,并仅显示我使用的单一构建工具链。
第 1 步:具有 GPU 支持的 Docker
尽管我在带有 NVIDIA GPU 的工作站上使用了 Ubuntu 18.04 LTS,但每当我执行这样的项目时,我都喜欢使用 Docker 容器来隔离所有内容。您最不想做的事情是调试环境错误、更改一个项目的依赖项并破坏其他内容。值得庆幸的是,NVIDIA Docker 开发人员映像可通过 DockerHub 获得:
bash在这里,
-it
标志将我们置于容器内的 bash 提示符;--gpus=all
允许 Docker 容器访问工作站的 GPU,并在--rm
完成空间后删除容器。第 2 步:设置 Ubuntu Docker 容器
当您经常从 DockerHub 提取 Docker 容器时,它们在包含的库方面是赤裸裸的。它们通常也可以更新。对于构建 pyarrow,安装以下内容非常有用:
壳
xxxxxxx
1181git ]4wget |
5利布斯-德夫 |
6自动conf |
7弯曲 |
8野人 |
9llvm-7 |
10clang |
11拍拍 |
12
14利布升德 |
15libboost-文件系统-dev |
16利博升系统开发 |
17利布升-雷格ex-dev |
18-y
在后面的步骤中,我们将使用 Arrow 第三方依赖项脚本来确保所有所需的依赖项都存在,但这些是一个良好的开端。
第 3 步:从 GitHub 克隆阿帕奇箭头
从 GitHub 克隆箭头非常简单。
git checkout apache-arrow-0.15.0
这条线是可选的;我需要版本 0.15.0 用于我正在探索的项目,但如果要从 Arrow 的主分支生成,则可以省略该行。壳
xxxxxxx
1121(塔罗根=9260485caca3:/存储库/箭头/python/dist=点安装 pyarrow-0
1.dev0_g40d468e16.d20200402-cp36-cp36m-linux_x86_64.whl
2处理。/双罗-0.15.1.dev0=g40d468e16。d20200402-cp36-cp36m-linux_x86_64。whl
3要求已经满足六>=1.0.0in/存储库/箭头/pyarrow/lib/python3.6/站点-包(从pyarrow=0.15.1。dev0=g40d468e16。d20200402)(1.14.0)
4要求已满足数字>=1
6/站点-包(从 pyarrow=0.15.1。dev0=g40d468e16。d20200402)(1.18.2)
5安装收集的软件包塔罗
6已成功安装的 pyarrow-0.15.1。dev0=g40d468e16。d20200402
7(塔罗根=9260485caca3:/存储库/箭头/python/dist=python
8Python3.6.9 (默认2019 年 11月7日10:44:02)
9在 linux 上10键入"帮助""版权""信用"或"许可证"for了解更多信息。
11>>>从塔罗进口库达
12>>>
当线路
from pyarrow import cuda
运行时没有错误,那么我们知道,我们与CUDA的pyarrow构建是成功的。 Comments are closed.