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_limit
和 chunk_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_limit
和 pass_read_limit
将无效。
禁用 CUDA 管理内存#
默认情况下,cudf_polars
将默认使用带有 RMM 池分配器的 CUDA 管理内存。在不支持管理内存的系统上,将使用非管理的异步池分配器。可以通过将 POLARS_GPU_ENABLE_CUDA_MANAGED_MEMORY
设置为 0
来关闭管理内存。管理内存的系统要求可以在此处找到。