Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Матрицы большого размера

46K
26 января 2009 года
vitalfire
2 / / 26.01.2009
Существуют ли алгоритмы, способы, библиотеки, позволяющие работать с матрицами большого размера, например, 50 млн * 50 млн?
Необходимо найти решение системы линейных уравнений A*x=b, но выделить память под матрицу таких размеров сразу не возможно.
11
26 января 2009 года
oxotnik333
2.9K / / 03.08.2007
СУБД самое то
1.8K
26 января 2009 года
CilCatblack
251 / / 20.09.2007
Цитата: vitalfire
Существуют ли алгоритмы, способы, библиотеки, позволяющие работать с матрицами большого размера, например, 50 млн * 50 млн?
Необходимо найти решение системы линейных уравнений A*x=b, но выделить память под матрицу таких размеров сразу не возможно.



ИМХО один выход - База данных:)

1.6K
26 января 2009 года
Vov4ick
476 / / 01.02.2007
А скорость БД представляете? ;-)
Пошукайте различные математические методы решения систем. Память таки изменила, возможно попробовать итеративными методами. Начните с википедии.
А вообще, эта задача не для ПЭВМ с её скромными объёмами памяти и ОС.
14
26 января 2009 года
Phodopus
3.3K / / 19.06.2008
Алгоритмы работы со структурами данных не умещающимися в оперативной памяти достаточно полно расписаны у Кнута в "Искусстве программирования".
505
26 января 2009 года
vAC
343 / / 28.02.2006
Все зависит от вида матрицы.

1. Как правило, в задачах, решаемых конечно-разностным методом или методом МКЭ, бОльшая часть элементов имеют значение, равное 0. В этом случае применяются разреженные матрицы (sparse matrix). Алгоритмы для работы с такими матрицами имеется в библиотеке boost.ublas.

2. Второй вариант - это когда большая часть элементов функционально зависит от некоторого значения. Тогда можно вычислять значения таких матриц "налету", но возрастет нагрузка на процессор.

3. Если же бОльшая часть элементов являются независимыми и ненулевыми, то при таких объемах можно воспользоваться распределенными вычислениями. Сам таким вариантом матриц я не имел дело, могу только посоветовать библиотеку ScaLAPACK и заглянуть на сайт http://parallel.ru. Там имеется много информации по этому направлению.
46K
26 января 2009 года
vitalfire
2 / / 26.01.2009
Всем большое спасибо за ответы :) Буду пробовать, читать. Про СУБД идея приходила, но скорость решения задачи будет очень невысокой, поэтому этот вариант на самый крайний случай оставлю :)
502
28 января 2009 года
Jail
550 / / 30.01.2007
Цитата: vitalfire
Всем большое спасибо за ответы :) Буду пробовать, читать. Про СУБД идея приходила, но скорость решения задачи будет очень невысокой, поэтому этот вариант на самый крайний случай оставлю :)


Если использовать Embeded database, то можно получить вполне приемлемую скорость записи/считывания. Можно и миллион строк вносить в базу довольно таки быстро, главное знать как. И в этом случае стараться не пользоваться всякими тяжеловесными фрэймворками, кот. еще больше будут тормозить.
К примеру в Embeded JavaDB можно очень шустро внести мильен строк без использования хайбернейта. Скорость кстате, вполне радует. Так что не отметайте этот вариан так скоро.

505
29 января 2009 года
vAC
343 / / 28.02.2006
Цитата: Jail
Если использовать Embeded database, то можно получить вполне приемлемую скорость записи/считывания. Можно и миллион строк вносить в базу довольно таки быстро, главное знать как. И в этом случае стараться не пользоваться всякими тяжеловесными фрэймворками, кот. еще больше будут тормозить.
К примеру в Embeded JavaDB можно очень шустро внести мильен строк без использования хайбернейта. Скорость кстате, вполне радует. Так что не отметайте этот вариан так скоро.



А вы прикидывали объем памяти для одной такой матрицы (50M x 50M)?
По моим скромным подсчетам - это десятки петабайт.
Имхо, задачи с такими размерностями решать "влоб" практически невозможно. Ну по крайней мере на сегодняшний день.

502
29 января 2009 года
Jail
550 / / 30.01.2007
Цитата: vAC
А вы прикидывали объем памяти для одной такой матрицы (50M x 50M)?
По моим скромным подсчетам - это десятки петабайт.
Имхо, задачи с такими размерностями решать "влоб" практически невозможно. Ну по крайней мере на сегодняшний день.


Ну почему же. Возможно - если у вас имеется высокопроизводительный вычислительный кластер или data center. Понятное дело, что на домашнем компьютере подобные задачи впринципе не решаются :)

63
29 января 2009 года
Zorkus
2.6K / / 04.11.2006
Цитата: vitalfire
Существуют ли алгоритмы, способы, библиотеки, позволяющие работать с матрицами большого размера, например, 50 млн * 50 млн?
Необходимо найти решение системы линейных уравнений A*x=b, но выделить память под матрицу таких размеров сразу не возможно.


Мне гораздо интересней что за задача и предметная область.
Где требуется решать системы линейных уравнений в 50 миллионов уравнений? Какая у вас математическая модель?
В рамках какой мат. дисциплины она построена и проанализирована?
Как и кем решаются подобные задачи в мире?
Распределенность, кластеры -- здесь это вторично.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог