- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在使用 Python 中的 h5py 处理大型 (1.2TB) 未压缩、未分 block 的 hdf5 文件,用于机器学习应用程序,这需要我们反复处理整个数据集,以随机顺序单独加载约 15MB 的切片。我们正在使用 192 GB RAM 的 linux (Ubuntu 18.04) 机器。我们注意到程序正在缓慢地填充缓存。当缓存的总大小达到与全机 RAM 相当的大小时(空闲内存几乎为 0,但有大量“可用”内存),交换会降低所有其他应用程序的速度。为了查明问题的根源,我们编写了一个单独的最小示例来隔离我们的数据加载过程 - 但发现问题与我们方法的每个部分无关。
我们尝试了:
构建 numpy memmap 并访问请求的切片:
#on init:
f = h5py.File(tv_path, 'r')
hdf5_event_data = f["event_data"]
self.event_data = np.memmap(tv_path, mode="r", shape=hdf5_event_data.shape,
offset=hdf5_event_data.id.get_offset(),dtype=hdf5_event_data.dtype)
self.e = np.ones((512,40,40,19))
#on __getitem__:
self.e = self.event_data[index,:,:,:19]
return self.e
#on __getitem__:
self.event_data = np.memmap(self.path, mode="r", shape=self.shape,
offset=self.offset, dtype=self.dtype)
self.e = self.event_data[index,:,:,:19]
return self.e
#on init:
f = h5py.File(tv_path, 'r')
hdf5_event_data = f["event_data"]
self.event_data = hdf5_event_data
self.e = np.ones((512,40,40,19))
#on __getitem__:
self.e = self.event_data[index,:,:,:19]
return self.e
最佳答案
您可以使用 os.posix_fadvise
告诉操作系统您计划加载的区域将如何使用。这自然需要进行一些低级调整来确定您的文件描述符,并了解您计划读取的区域。
获取文件描述符的最简单方法是自己提供:
pf = open(tv_path, 'rb')
f = h5py.File(pf, 'r')
os.posix_fadvise(os.fileno(pf), 0, f.id.get_filesize(), os.POSIX_FADV_DONTNEED)
os.posix_fadvise(os.fileno(pf), hdf5_event_data.id.get_offset(),
hdf5_event_data.id.get_storage_size(), os.POSIX_FADV_DONTNEED)
f = h5py.File(..., rdcc_nbytes=0)
'sec2'
:
f = h5py.File(..., driver='sec2')
关于python - 有没有办法用 POSIX_FADV_DONTNEED 标志打开 hdf5 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62415606/
我一直在研究 madvise。 例子: https://www.youtube.com/watch?v=bg6-LVCHmGM&feature=youtu.be&t=1h13m24s Does mad
我们正在使用 Python 中的 h5py 处理大型 (1.2TB) 未压缩、未分 block 的 hdf5 文件,用于机器学习应用程序,这需要我们反复处理整个数据集,以随机顺序单独加载约 15MB
更新:在做了更多测试后,现在更多的是文档。。TL;DR使用POSIX_FADV_DONTNEED是不值得的。不使用它可以获得最快的速度。在AMD64上,它甚至似乎没有得到尊重。。支持ext4文件系统的
我是一名优秀的程序员,十分优秀!