Похоже, я исчерпал 32-битное адресное пространство.Какие у меня варианты? - PullRequest
10 голосов
/ 27 ноября 2011

Я пытаюсь взять ковариацию большой матрицы, используя numpy.cov.Я получаю следующую ошибку:

Python(22498,0xa02e3720) malloc: *** mmap(size=1340379136) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug

Process Python bus error

Кажется, что это не редкость для 32-разрядных машин / сборок (у меня есть 64-разрядная версия Mac OS X 10,5, но я использую 32-разрядный Python и Numpyсборка, так как у меня были проблемы со сборкой numpy + scipy + matplotlib на 64-битной установке).

Итак, на данном этапе, какой будет рекомендуемый порядок действий, который позволит мне продолжить анализ, если не будет переключениямашины (на данный момент мне больше не доступны)?Экспорт в фортран / C?Есть ли простое (r) решение?Спасибо за ваши предложения.

1 Ответ

1 голос
/ 28 ноября 2011

Чтобы оказаться на вашем месте, я бы попытался «засолить» (сохранить) матрицу на моем жестком диске, закрыть python, а затем в командной строке заново открыть файл pickeled и выполнить мои вычисления на экземпляре «fresh python»..

Я бы сделал это, потому что, возможно, ваша проблема до вычисления ковариации.

import cPickle
import numpy
M = numpy.array([[1,2],[3,4]]) # here it will be your matrix
cPickle( M , open( "~/M.pic", "w") ) # here it's where you pickle the file

Здесь вы закрываете python.Ваш файл должен быть сохранен в вашем домашнем каталоге как «M.pic».

import cPickle
import numpy
M = cPickle.load( open( "~/M.pic", "r") )
M = numpy.coa( M )

Если он все еще не работает, попробуйте установить «хороший» dtype для ваших данных.numpy швы, чтобы использовать dtype 'float64' из 'int64' по умолчанию.Это огромно, и если вам не нужна эта точность, вы можете уменьшить ее до 'int32' или 'float32'.

import numpy
M = numpy.array([[1,2],[3,4]] , dtype.float32 )

Действительно, я могу гарантировать вам, что C / Fortran не вариантдля тебя.Numpy уже написан на C / Fortran и, вероятно, людьми умнее вас и меня;)

Из любопытства, насколько велика ваша матрица?насколько большой твой маринованный файл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...