2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Как обработать файлы большого объема (MatLab)?
Сообщение19.11.2012, 03:44 
В общем, имеется база данных объема около 2Гб (таблица размера примерно 10^6 строк и 500 столбцов) и мне требуется обработать эти данные с помощью MatLab'a. Но проблема в том, что файл очень большого размера и я не представляю как с этим работать. Наверное, даже если удастся загрузить эту базу, все равно работа с векторами длины миллион - это как-то сильно. Может у кого-то есть опыт такой работы, посоветуйте пожалуйста как мне быть.

 
 
 
 Re: Как обработать файлы большого объема (MatLab)?
Сообщение19.11.2012, 07:56 
Аватара пользователя
единственно что могу посоветовать - это один раз загрузить файл в матлаб, если он у вас в каком-то своем формате и потом сохранить его с помощью функции
Код:
save
. Скорее всего в будущем он будет подгружаться быстре.

А вообще я, когда с таким столкнулся, обрабатывал mex-ом. Причем с интеловским компилятором: в моем случае он дал пятикратный рост производительности против gcc без всяких openmp.

То есть не совсем корренто написал: я сначала пытался компилить матлабовские файлы, получил не особый прирост производительности, а потом написал критичные функции на С, скормил MEX-у, а потом matlab-у. Помогло.

P.S. Может она у вас какая-нибудь разрженная?

 
 
 
 Re: Как обработать файлы большого объема (MatLab)?
Сообщение19.11.2012, 10:34 
theambient
Обработка МЕХ-ом - это хорошая идея. Правда, у меня есть сомнения, что MatLab считает файл такого размера. От чего это вообще зависит? т.е. объем оперативной памяти должен быть не меньше чем сколько-то, чтобы считать файл размера 2Гб? или там не только оперативка (а скорее всего так и есть), а еще что-то?

theambient в сообщении #646314 писал(а):
P.S. Может она у вас какая-нибудь разрженная?

Ну вообще там БД (по сути она представляет из себя выборку из 10^6 векторов размерности 500) в этой матрице и строковые элементы есть. Но их в принципе легко заменить на числа (типа пол: муж./жен. -> 0/1). Мне нужно найти в этой выборке выбросы: в одном столбце, в нескольких и во всех (пользователь будет в GUI будет выбирать где именно).

 
 
 
 Re: Как обработать файлы большого объема (MatLab)?
Сообщение19.11.2012, 20:39 
Аватара пользователя
64 бита решат вашу проблему с памятью.

а вам точно ради этого надо матлаб юзать? может по быстрому на каком-нибудь питоне или плюсах реализовать лучше?

попробуйте такого зверя как http://julialang.org - потом расскажете.

 
 
 
 Re: Как обработать файлы большого объема (MatLab)?
Сообщение27.11.2012, 10:51 
х64 матлаб по идее сможет загрузить всё сразу даже если не хватит оперативной памяти, надо ему только выделить виртуальную память в системе(своп на жесткий диск) только будет работать всё очень медленно, так что желательно иметь >2гб.

еще вроде есть возможность загрузки кусками .mat файла (не знаю что у вас там за база данных и как вообще делать парсинг бинарных файлов на матлабе)

http://www.mathworks.com/help/matlab/ma ... emory.html
http://www.mathworks.com/help/matlab/ma ... rrors.html

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group