分布式GPU SQL引擎BlazingSQL最新版本应用程序与Apache Spark测试比较,在执行相同工作负载且维持相同成本的条件下,BlazingSQL的执行效能是Apache Spark的20倍。在去年10月才对外发布的BlazingSQL,是采用RAPIDS数据科学框架的GPU加速SQL引擎,RAPIDS为一个全GPU端到端资料科学工作管线的开源函式库集,BlazingSQL扩展了RAPIDS,并让用户以Apache Arrow在GPU内存中执行SQL查询。在一月的时候,BlazingSQL先进行了一次效能实验,他们在网络大厂云端平台上建立了Apache Spark以及BlazingSQL两个丛集,为维持相同成本配置,Apache Spark丛集使用8个8 CPU的节点,在BlazingSQL丛集使用一个搭载Tesla V1000 GPU与10个CPU的节点,官方提到,这两种硬件配置每月的支出约都在1500美元左右。
官方在GitHub公开了测试程序代码,他们让这两个丛集执行相同的端到端分析工作负载,对数据进行特征萃取工程,并以机器学习函式库XGBoost进行训练。对两种大小的数据集进行测试,BlazingSQL的执行速度比Apache Spark快了5倍。而现在他们又再次对新版BlazingSQL做了一次基准检验,执行与上次相同的工作负载并在成本相当的条件下,BlazingSQL的执行速度是Apache Spark的20倍。在新测试中,除了BlazingSQL丛集用了Nvidia的T4 GPU,还改善了BlazingSQL中的SIMD Expression Interpreter。
官方表示,虽然T4是一颗入门级的GPU,价格较便宜但是却拥有良好的效能,比起前一个实验他们所使用的V100,价格便宜许多,因此将成本列入比较的限制时,这次Apache Spark丛集使用的节点也降低至4 CPU,以维持相同的成本支出。
不过,官方表示,这次试验大部分的效能增加,是来自于引擎的改进。BlazingSQL正在发展一个专为GPU DataFrames(GDF)打造的GPU执行核心SIMD表达式直译器(SIMD Expression Interpreter)。SIMD表达式直译器可以让系统同时接收多重输入,包括GDF字段、文字,并在未来将能支持函式。当系统加载这些输入时,SIMD表达式直译器能够优化GPU上缓存器的配置,因此能进一步优化GPU线程的占用率以及效能,让虚拟机能同时处理多重输入以及输出,官方举例,过去BlazingSQL处理SELECT colA + colB * 10, sin(colA) — cos(colD) FROM tableA,会将该查询转换成+、*、 sin、cos和—等5个单独的运算,最后产生两个输出,SIMD表达式直译器则使用colA、colB和colD三个输入,并在单个核心执行全部5种运算,而后产生两个输出。官方表示。以这样的方式系统只需要加载一次colA、colB和colD,而非原本的两次。目前SIMD Expression Interpreter的进度只能支持过滤器和投影运算,但已经能加速大多数的热门SQL运算。由于BlazingSQL仍处在发展初期,目前仍在0.2版本,官方也坦承说,BlazingSQL目前只能以单节点和单GPU执行,因此他们在实验上限制了运算数据量。信息及图片来源至:乐彩爱公益