代码之家  ›  专栏  ›  技术社区  ›  pletnes

阅读大型dask。来自旋转盘的阵列h5py

  •  0
  • pletnes  · 技术社区  · 9 年前

    看到马修·罗克林(Matthew Rocklin)在2017年的pycon节目中关于达斯克(dask)的精彩演讲后,立即开始玩它。

    我正在研究高光谱记录。数据集的总大小约为1-3 TB,我要分析的每个单独记录/图像约为12 GB,并被分割为2000 MB的文件(通常每个记录7个)。我已将数组连接成一个数组 dask.array 使用 da.concatenate 有几个 da.from_array 在h5py数据集上调用。我注意到CPU使用率低,IO性能差;在我的系统监视器上,磁盘读取速度约为15-30MB/s。经验表明,该磁盘上的最大读写速度约为250 MB/s(RAID-0中的2倍6 TB HDD)。

    版本和硬件:Ubuntu 16.04、anaconda python 3.5、dask 0.15.1(conda的最新版本)。2x六核Intel Xeon CPU(总共24个超线程),80 GB RAM,2个RAID-0硬盘。

    1 回复  |  直到 9 年前
        1
  •  0
  •   MRocklin    9 年前

    锁定以避免冲击磁盘

    我觉得你的假设是多个并发读取正在破坏你的磁盘。要测试这一点,您可以使用 lock= da.from_array

    经过 True

    从线程导入锁 lock=lock()

    数组=[da.from_array(inp,lock=lock,chunk=…)对于输入端的输入端]

    您还应该确保从HDF5中提取数据的方式与HDF5存储数据的方式完全一致。如果这两者没有很好地对齐,则很容易破坏输入/输出带宽。例如,如果您的HDF5文件根本没有分块,那么它们可能以C顺序存储。在这种情况下,您需要确保在分块时根本没有分解后一个索引。