NEW
通过分块读取和UVM提升Polars GPU Parquet Reader性能 - Blockchain.News

通过分块读取和UVM提升Polars GPU Parquet Reader性能

realtime news Apr 11, 2025 07:39

探索Polars GPU Parquet Reader如何通过分块读取和统一虚拟内存(UVM)提高性能,增强大数据集的数据处理能力。

通过分块读取和UVM提升Polars GPU Parquet Reader性能

在处理大型数据集时,数据处理工具的性能至关重要。Polars是一个以速度和效率著称的开源库,现在提供了由cuDF支持的GPU加速后端,根据NVIDIA的博客,大大增强了其性能能力。

解决非分块读取器的挑战

在24.10版本之前,Polars GPU Parquet Reader在处理较大数据集时面临扩展性挑战。随着比例因子的增加,性能下降变得明显,尤其是在超过SF200标记时。这是由于将大规模Parquet文件加载到GPU内存时的内存限制,导致内存不足错误。

引入分块Parquet读取

为减轻内存限制,引入了分块Parquet读取。它通过分块读取Parquet文件来减少内存占用,从而使Polars GPU能够更有效地处理大型数据集。例如,实施一个16 GB的读取限制可以在各种查询中实现比非分块读取器更好的执行。

利用统一虚拟内存 (UVM)

虽然分块读取改善了内存管理,但集成UVM通过允许GPU直接访问系统内存,进一步提升了性能。这减少了内存限制并提高了数据传输效率。分块读取与UVM的结合使在更高比例因子下成功执行查询成为可能,尽管吞吐量可能会受到影响。

优化稳定性和吞吐量

选择合适的pass_read_limit对于平衡稳定性和吞吐量至关重要。16 GB或32 GB的限制似乎是最佳的,前者确保所有查询均能成功,而不会出现内存不足的异常。这种优化对于在处理较大数据集时保持高性能至关重要。

比较分块-GPU和CPU方法

即使在分块的情况下,观察到的吞吐量通常超过基于CPU的Polars。16 GB或32 GB的pass_read_limit使在更高比例因子下的成功执行成为可能,比非分块方法更具优势,使分块-GPU成为处理大数据集的优秀选择。

结论

对于Polars GPU来说,使用带有UVM的分块Parquet Reader比基于CPU的方法和非分块读取器更有效,特别是在处理大数据集和高比例因子时。通过优化数据加载过程,用户可以实现显著的性能提升。随着最新的cudf-polars(24.12版及以上)的推出,分块Parquet Reader和UVM已成为标准方法,在所有查询和比例因子上提供显著的改进。

有关更多详细信息,请访问NVIDIA博客

Image source: Shutterstock