0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

高效地扩展Polars GPU Parquet读取器

NVIDIA英伟达企业解决方案 来源:NVIDIA英伟达企业解决方案 2025-04-21 17:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

51b13412-1c3a-11f0-9310-92fbcf53809c.png

在处理大型数据集时,数据处理工具的性能至关重要。Polars 作为一个以速度和效率著称的开源数据处理库,它提供了由 cuDF 驱动的 GPU 加速后端,能够显著提升性能。

然而,要想充分发挥 Polars GPU 后端的优势,优化数据加载过程并有效地管理工作流所需的内存至关重要。随着 GPU 后端开发的持续进展,在使用 GPU Parquet 读取器处理不断增大的数据集时,可以使用一些其他技术来保持高性能。现有的 Polars GPU Parquet 读取器(包括至 24.10 版本)无法针对更大的数据集进行扩展。

本文探讨了分块 Parquet 读取器与统一虚拟内存(UVM)相结合,如何能够超越非分块读取器和基于 CPU 的方法。

标度因数和非分块读取器带来的挑战

随着标度因数(SF)的增加,非分块 GPU Polars 读取器(24.10 版)常常会遇到困难。当标度因数超过 200 时,性能会显著下降。在 Query 9 等特定场景下,非分块 GPU 读取器甚至在标度因数达到 50 之前就会出问题。这种限制源于将大型 Parquet 文件加载到 GPU 内存时的内存限制。非分块 Parquet 读取器图表会缺失数据,这凸显了在标度因数较高时遇到的内存溢出(OOM)错误。

51bbc968-1c3a-11f0-9310-92fbcf53809c.png

图 1. Query 13 执行的可靠性,对比 24.10 版和 24.1 2版 Parquet 读取器

通过分块 Parquet 读取提升 I/O 和峰值内存性能

为了突破这些内存限制,分块 Parquet 读取器就变得至关重要。通过将 Parquet 文件切分为较小数据块进行读取,可以减少内存占用,使 Polars GPU 能够处理更大的数据集。对于任何给定的查询,与非分块读取器相比,使用单次读取限制为 16GB 的分块 Parquet 读取器能够执行更多的标度因数。对于 Query 9,必须使用 16GB 或 32GB 的分块 Parquet 读取方式才能执行并实现更高的吞吐量。

51c87fbe-1c3a-11f0-9310-92fbcf53809c.png

图 2. 针对 Query 9,通过改变标度因数不同分块大小(pass_read_limit)进行吞吐量对比

借助统一虚拟内存读取更大的数据集

虽然分块读取优化了内存管理,但统一虚拟内存将性能提升到了新的高度。统一虚拟内存使 GPU 能够直接访问系统内存,进一步缓解了内存限制并提高了数据传输效率。

相比之下,未配备统一虚拟内存的分块读取器在标度因数达到 100 之前就会触发内存溢出错误。分块读取器与统一虚拟内存相结合,可以在更高的标度因数下成功地执行查询,不过吞吐量会受到影响。

图 3 显示了这一显著优势。与非分块 Parquet 读取器相比,配备统一虚拟内存的分块 Parquet 读取器能够成功地执行标度因数更高的查询。

51d51c60-1c3a-11f0-9310-92fbcf53809c.png

图 3. 配备统一虚拟内存的分块读取器、CPU 以及未配备统一虚拟内存时的 Query 13 吞吐量(数值越高性能表现越好)

稳定性和吞吐量

在选择最佳的pass_read_limit时,需要重点考虑稳定性和吞吐量之间的平衡。图 1-图 3 表明,16GB 或 32GB 的pass_read_limit实现了两者最优的平衡。

32GBpass_read_limit:除了 Query 9 和 Query 19 因内存溢出异常遭遇失败外,所有其他查询均成功完成。

16GBpass_read_limit:所有查询均成功完成。

分块 GPU 与 CPU 的比较

观察结果显示,每次查询的吞吐量通常高于 CPU Polars,这使得许多在未分块时无法完成的查询得以完成。建议将pass_read_limit参数设置为 16GB 或 32GB,该阈值设定具有合理性。与非分块 Parquet 读取器相比,16GB 或 32GB 的pass_read_limit能够在更高的标度因数下成功地执行查询。

结论

对于 Polars GPU 而言,配备统一虚拟内存的分块 Parquet 读取器通常优于 Polars CPU 和非分块Parquet 读取器,尤其是在处理大规模数据集和高标度因数场景时。通过优化数据加载过程,可以充分发挥 Polars GPU 的潜力,显著提升性能。作为最新的cudf-polars(24.12 版及更高版本)的一部分,分块 Parquet 读取器和统一虚拟内存是读取 Parquet 文件的默认方式。这使得所有查询和标度因数都实现了像上述的性能提升。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • gpu
    gpu
    +关注

    关注

    28

    文章

    5110

    浏览量

    134511
  • 读取器
    +关注

    关注

    0

    文章

    52

    浏览量

    5548
  • 虚拟内存
    +关注

    关注

    0

    文章

    79

    浏览量

    8416

原文标题:高效地扩展 Polars GPU Parquet 读取器

文章出处:【微信号:NVIDIA-Enterprise,微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    什么是可编程读取器

    无线频率识别(RFID)是一种自动 ID 技术,其可识别任何含有编码卷标的物体。 UHFRFID 系统由一个读取器 (或询问) 组成,该读取器调变一个 860MHz 至 960MHz 频率范围内
    发表于 09-30 06:46

    Impinj发布Speedway Revolution读取器

    Impinj 发布Speedway Revolution 读取器 领先的 UHF Gen 2 RFID 技术供应商 Impinj 公司宣布推出 Speedway Revolution 读取器,综合有公司的创新性 Autopi
    发表于 11-13 17:34 1357次阅读

    指纹读取器的扫描范围/分辨率/接口

    指纹读取器的扫描范围/分辨率/接口 扫描范围      
    发表于 12-28 14:27 729次阅读

    指纹读取器

    指纹读取器              指纹读取器是一
    发表于 12-28 14:29 1164次阅读

    指纹读取器的电力规格/支持的操作系统

    指纹读取器的电力规格/支持的操作系统 电力规格    &nb
    发表于 12-28 14:31 805次阅读

    指纹读取器的认证/传感元件

    指纹读取器的认证/传感元件  认证              认证指的是一种产品是不是经过了一些权威部门
    发表于 12-28 14:37 816次阅读

    单一处理简化RFID读取器设计及RFID系统范例分析

    目前大多数RFID读取器必须使用一个以上的处理才能符合应用装置需求,透过使用汇聚型(Convergent)处理,以单一处理即可满足。本文将聚焦于RFID
    发表于 12-11 18:50 1578次阅读
    单一处理<b class='flag-5'>器</b>简化RFID<b class='flag-5'>读取器</b>设计及RFID系统范例分析

    讯宝科技推出第2代移动型RFID读取器RD5000

    近日美国讯宝科技公司宣布推出紧凑式第2代移动型RFID读取器RD5000。该读取器可集成在叉车、平板式起重机、拉伸式包装机和其它原材料处理设备上,以便在不同的空间受限的环境中使用。RD5000移动型RFID读取器将RFID的使用
    发表于 12-13 13:03 1247次阅读

    如何使用处理区来简化rfid读取器

    本文聚焦于RFID读取器的功能,探索必须在RFID读取器上执行的基本软件元件以及伺服连结,并提供利用单一处理完成相关设计的系统设定建议。
    发表于 01-07 16:46 1040次阅读
    如何使用处理区来简化rfid<b class='flag-5'>读取器</b>

    近距离读取器天线的设计示例详细说明

    本文档的主要内容详细介绍的是近距离读取器天线的设计示例详细说明。
    发表于 05-13 17:30 16次下载
    近距离<b class='flag-5'>读取器</b>天线的设计示例详细说明

    让Arduino充当玻璃容器中的控制和传感读取器

    电子发烧友网站提供《让Arduino充当玻璃容器中的控制和传感读取器.zip》资料免费下载
    发表于 11-22 14:27 0次下载
    让Arduino充当玻璃容器中的控制<b class='flag-5'>器</b>和传感<b class='flag-5'>器</b><b class='flag-5'>读取器</b>

    指纹读取器上进行扫描什么意思

    指纹读取器是一种生物识别技术,它通过扫描和分析个人的指纹来识别身份。指纹是人体手指皮肤上的独特纹理,每个人的指纹都是独一无二的,即使是同卵双胞胎的指纹也会有所不同。这种技术已经被广泛应用于安全
    的头像 发表于 10-14 10:57 1411次阅读

    二维码读取器读取DPM金属零件激光雕刻码

    二维码读取器,作为现代自动识别技术的重要组成部分,其在各行各业的应用日益广泛。特别是在工业制造领域,二维码读取器读取DPM(DirectPartMark)金属零件激光雕刻码的技术,更是展现了其高精度
    的头像 发表于 01-02 16:21 1149次阅读
    二维码<b class='flag-5'>读取器</b><b class='flag-5'>读取</b>DPM金属零件激光雕刻码

    二维码读取器是干嘛的

    二维码读取器(用于二维码读取的机器),作为一种现代化的自动识别技术设备,正日益渗透到我们生活的方方面面。从商场购物到物流配送,从医疗管理到工业生产线,二维码读取器凭借其高效、准确的
    的头像 发表于 03-17 15:57 880次阅读
    二维码<b class='flag-5'>读取器</b>是干嘛的

    使用NVIDIA GPU加速Apache Spark中Parquet数据扫描

    的方式组织数据,这使得 Parquet 在查询时仅读取所需的列,而无需扫描整行数据,即可实现高性能的查询和分析。高效的数据布局使 Parquet 在现代分析生态系统中成为了受欢迎的选择
    的头像 发表于 07-23 10:52 760次阅读
    使用NVIDIA <b class='flag-5'>GPU</b>加速Apache Spark中<b class='flag-5'>Parquet</b>数据扫描