GPUEngine 配置选项#

polars.GPUEngine 对象可以通过多种方式进行配置。

Parquet 读取器选项#

读取大型 Parquet 文件会占用大量内存,尤其是在文件被压缩时。这可能会导致某些工作流程出现内存不足错误。为了缓解此问题,可以选择“分块” Parquet 读取器。启用后,Parquet 文件将按块读取,从而限制峰值内存使用量,但会牺牲少量性能。

要配置 Parquet 读取器,我们将一个选项字典提供给 GPUEngine 对象的 parquet_options 关键字参数。有效的键和值如下:

  • chunked 表示使用分块 Parquet 读取。默认情况下,分块读取是开启的。

  • chunk_read_limit 控制每个块的最大大小。默认情况下,最大块大小不受限制。

  • pass_read_limit 控制用于解压缩的最大内存量。默认的 pass read limit 是 16GiB。

例如,要选择分块读取器并为 pass_read_limitchunk_read_limit 设置自定义值

engine = GPUEngine(
    parquet_options={
        'chunked': True,
        'chunk_read_limit': int(1e9),
        'pass_read_limit': int(4e9)
    }
)
result = query.collect(engine=engine)

注意,传递 chunked: False 会完全禁用分块读取,因此 chunk_read_limitpass_read_limit 将无效。

禁用 CUDA 管理内存#

默认情况下,cudf_polars 将默认使用带有 RMM 池分配器的 CUDA 管理内存。在不支持管理内存的系统上,将使用非管理的异步池分配器。可以通过将 POLARS_GPU_ENABLE_CUDA_MANAGED_MEMORY 设置为 0 来关闭管理内存。管理内存的系统要求可以在此处找到。