头条
推荐列表
Dao Wei
By 超神经
GPU 和数据库各有所长,GPU 擅长处理机器学习等任务,而数据库擅长有特定要求的计算,比如复杂的连接计算。
目前有一些提供 GPU 加速的数据库解决方案产品,其中有大家熟悉的 MapD 、 Kinetica,我们今天要介绍是一款年轻的开源产品 BlazingSQL 。
BlazingSQL 是基于 RAPIDS 构建的基于 GPU 加速的数据库查询工具,BlazingSQL 扩展了 RAPIDS 并使用户能够在 GPU 内存中的 Apache Arrow 上直接运行 SQL 查询。
除了对 GPU 的适配程度和速度,远远快于其他同类产品之外,大多数 SQL 数据仓库需要企业自行提取和复制数据,而 BlazingDB 可以直接从 Apache Parquet 中读取数据,这样简化了数据渠道架构,同时也能够支持高性能负载。
更重要的是,BlazingSQL 还获得了 NVIDIA 、三星的投资,还和 NVIDIA 保持了非常好的合作关系。
想要对比工具之间的性能,得对比的 bechmark 测试,先运行一个端到端的分析工作负载。
* 步骤是:数据湖 > FTL 特征工程 > XGBoost 训练
* 我们在 GCP 上构建了两个价格相当的集群,分别使用 Apache Spark 和 BlazingSQL 。
* 最后的结果是 BlazingSQL 运行的速度要比 Apache Spark 快了 5 倍。
(在同样的工作负载下,新版本的运行速度比 Apache Spark 快了 20 倍。)
之所以 Blazing SQL 能得到高效的运行结果,也是因为奢侈地采用的是 GCP 的 T4 GPU,这是一种新的入门级 GPU ,虽然价格便宜但性能很强。
使用新的 T4 GPU 将我们的成本降低了一半,为了保持价格一致,将 Apache Spark 集群减少到 4 个 CPU 节点。
但最后的结果是,即使 GPU 内存减半,整个工作量也会明显加快。
Blazing SQL 的工程师还开发了一种专为 GPU DataFrames(GDF)构建的 GPU 执行内核,它被称为「SIMD 表达式解释器」。
要描述 SIMD 表达解释器需要很大的篇幅,在这里只简单的分享一些细节,关于它是如何工作的,以及为什么会产生这样的性能提升。
SIMD 表达式解释器的性能提升主要是通过这几个关键步骤:
1. 机器支持多个输入。这些输入可以是 GDF 列、文字、函数。
2. 当加载这些输入时, SIMD 表达解释器优化了 GPU 上寄存器的分配,这提升了 GPU 的占用率,并最终提升了性能。
3. 此外,虚拟机处理这些输入并同时生成多个输出。例如,假设有以下 SQL 查询: SELECT colA + colB * 10, sin(colA) — cos(colD) FROM tableA