用途:通过 legate.io.hdf5 将 cuPyNumeric 数组写入或读取 HDF5(.h5/.hdf5)文件,各 rank 并行读写自己的分块,避免把大数组经单进程中转。适用于保存 cuPyNumeric 数组到 HDF5、加载 HDF5 数据集、分块读取大文件、为 HPC 后处理流水线生成单文件,或借助 GPUDirect Storage 加速磁盘 I/O。
主要能力:to_file(array, path, dataset_name) 将数组写成单个 HDF5 虚拟数据集(VDS),每 rank 写自己的分块;from_file(path, dataset_name) 将数据集读为分布式数组;from_file_batched(path, dataset_name, chunk_size) 按块产出 (LogicalArray, offsets)。
使用方式:先安装 h5py(conda install -c conda-forge h5py),再从 legate.io.hdf5 导入三个函数。dataset_name 须指向单个数组(如 /data 或 /group/x),不能是组。将 cuPyNumeric 数组直接传给 to_file;读取结果用 cn.asarray(...) 桥接回数组。I/O 是异步的,外部读取器打开文件前须调用 get_legate_runtime().issue_execution_fence(block=True)。所有 rank 须使用相同路径。to_file 会覆盖已存在文件,path 须为文件名而非目录,且数组须为有形状的绑定数组。GPU 读取时应设置 LEGATE_IO_USE_VFD_GDS=1,否则默认 POSIX VFD 经 128 MB ZCMEM 暂存,读取大于约 128 MB 的数组可能中止;CPU 读取无需设置。
限制:仅支持单文件 HDF5,不支持 Parquet/Arrow/cuDF、原始二进制或分片布局、Zarr、S3、.npz/序列化文件或纯数组计算。需 Legate 26.01+,旧版 legate.core.io.hdf5 导入需改写。从源码树外运行,避免包被遮蔽。具体版本的更多细节资料中未提供。