用途:填补 cuPyNumeric 内置加载器的空白。单个 .npy 可用 cupynumeric.load;单文件 HDF5 可用 legate.io.hdf5.from_file 或 from_file_batched;分片多文件、Parquet/Arrow、原始二进制和自定义布局没有内置加载器,需用本技能手动划分并启动 Legate Python 任务。
主要能力:只在轴 0 分片,尾部轴整体随每个 tile 移动;各分片行数可不同,只要求 dtype 与尾部轴一致;按可用处理器数量而非文件数划分,启动可填满所有 GPU/节点。磁盘格式自带的 shape、dtype 元数据用于发现分片布局,错误布局会明确报错。
使用方式:五步——读取每个分片的元数据并构建累计行偏移表;用 cn.empty 创建目标数组;按处理器数计算 tile_rows 并 partition_by_tiling;定义带 CPU/OMP/GPU 变体的 @task 写入分片,再用 create_manual_task 手动启动;最后 issue_execution_fence(block=True)。示例命令(保留原样): legate --gpus 4 --fbmem 4000 --min-gpu-chunk 1 assets/examples/parallel_npy_load.py read --shard-dir /shared/scratch/demo 多节点可用 --launcher srun --nodes 2 --ranks-per-node 4。
适用场景:用并行逐 GPU 读取替代 np.concatenate([read(f) for f in files]);演示自定义 Legate 任务通过手动启动写入 cuPyNumeric 输出数组。
限制:只负责加载,假定数据已按可索引方式放在共享文件系统;分片须同 dtype 且同尾部形状,命名需连续;mmap 切片需先 ascontiguousarray;叶任务内不能调用 cn.asarray;任务内 assert 会终止运行时;启动域须与分区 tile 数一致;多节点要求共享文件系统路径。其余细节资料未提供。