总线错误:使用numpy memmap

时间:2018-01-18 09:43:14

标签: python arrays numpy memory

我正在尝试对非常大的数组执行计算,尺寸为65536 x 65536.由于我读到np.memmap可以允许我执行核心计算以便我不受内存限制我试图这样做。此方法适用于小型数组,如8192 x 8192.但是,当我尝试更大的维度时,我得到一个总线错误(核心转储)。可能导致此问题的原因是什么?我怎样才能克服它?非常感谢任何建议。代码如下。我有2个数组X和Y,以二进制格式存储,我加载并执行计算。另外,我有一个128 GB的RAM,因此在分配这些新阵列时没有问题。

import numpy as np 

X = np.memmap('X.bin',dtype='float64',mode='r',shape=(65536,65536))
Y = np.memmap('Y.bin',dtype='float64',mode='r',shape=(65536,65536))

A = np.fft.rfft2(np.fft.fftshift(X))
B = np.fft.rfft2(Y)
C = np.fft.irfft2(A*B)
alpha_x,alpha_y = np.gradient(C,edge_order=2)

一起,这将是

alpha_x,alpha_y = np.gradient(np.fft.irfft2(np.fft.rfft2(Y)*np.fft.rfft2(np.fft.fftshift(X))),edge_order=2)

0 个答案:

没有答案