Numpy ошибка памяти с матрицей 1 ГБ, 64 бит Python и загрузкой ОЗУ - PullRequest
0 голосов
/ 26 мая 2020

[Примечание: хотя уже есть несколько сообщений о работе с большими матрицами в numpy, они не касаются моих конкретных c проблем.]

Я пытаюсь загрузить матрицу 30820x12801, хранящуюся в файл .txt размером 1,02 ГБ с расширением numpy.loadtxt(). Я получаю Memory error.

Это было бы не так уж удивительно, за исключением того, что:

  1. Я использую 64-битный Python.
  2. Я использую работа в суперкомпьютере с выделенной для него виртуальной памятью 50 ГБ.

Насколько я знаю, матрица 1 ГБ не должна быть проблемой для 64-битных Python и уж точно не должна быть проблемой для 50 ГБ ОЗУ.

(Я впервые имею дело с большими наборами данных, поэтому мне может что-то не хватать c).


Дополнительная информация:

  • При использовании open () файл без проблем загружается в Python.
  • Вывод ulimit -a | grep "max memory size: '(kbytes, -m) unlimited'
  • Full сообщение об ошибке:

    Traceback (most recent call last):
      File "jPCA/jPCA_pipeline.py", line 87, in <module>
        MATRIX = get_matrix(new_file_prefix, N)
      File "jPCA/jPCA_pipeline.py", line 70, in get_matrix
        MATRIX = np.loadtxt('{}_N={}.txt'.format(new_file_prefix, N))
      File "/home/hers_en/fsimoes/miniconda3/lib/python3.7/site-packages/numpy/lib/npyio.py", line 1159, in loadtxt
        for x in read_data(_loadtxt_chunksize):
      File "/home/hers_en/fsimoes/miniconda3/lib/python3.7/site-packages/numpy/lib/npyio.py", line 1087, in read_data
        items = [conv(val) for (conv, val) in zip(converters, vals)]
      File "/home/hers_en/fsimoes/miniconda3/lib/python3.7/site-packages/numpy/lib/npyio.py", line 1087, in <listcomp>
        items = [conv(val) for (conv, val) in zip(converters, vals)]
    MemoryError

1 Ответ

0 голосов
/ 28 мая 2020

Оказывается, использования 50 ГБ виртуальной памяти было достаточно: оказалось, что моя работа раньше использовала только 10 ГБ (в конце концов, не 200 ГБ - у меня были некоторые проблемы с отправкой работы). После того, как я решил эту проблему, 50 Гбит / с было достаточно, но все равно потребовалось около 6 часов для работы. комментарии, это связано с тем, как работает loadtxt.

...