Cython内存分配

2024-09-29 18:59:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的数据集,我正在将其读入易失性存储器以在其上运行FFT。目前,我正在通过内存映射一组~2GB文件并读取将它们复制到numpy阵列来实现这一点

    #Memory mapping
    comf              =   np.memmap(file_name,  dtype = dt, mode = 'c')
    comf1             =   np.memmap(file_name1, dtype = dt, mode = 'c')

    #Defining Numpy array
    cdef np.ndarray tempcomf            =   np.zeros((templen, 1024), dtype = np.int8)
    cdef np.ndarray tempcomf1           =   np.zeros((templen1, 1024), dtype = np.int8)

    #Copying as numpy array
    tempcomf          =   np.memmap.copy(comf['data'][0:])
    tempcomf1         =   np.memmap.copy(comf1['data'][0:])

这是在Cython中完成的,读取的数据集随后被传递到Fortran函数以执行FFT。尽管此功能会在一段时间内淹没易失性内存,但内存访问速度相当快。但最大的瓶颈是将memmaped数据复制到numpy数组,在这方面我有以下问题:

  1. 是否可以提高将memmaped数组复制到numpy数组的效率
  2. 在某些情况下,除了已经读取的2GB文件集之外,我还需要一些更大的数据块,但由于易失性内存使用量已经很大,因此会导致交换。Cython中有更好的内存分配方法吗

在此方面的任何帮助都将不胜感激


Tags: 文件数据内存fftnumpymodenpdt

热门问题