Эффективное решение разреженных матриц - PullRequest
1 голос
/ 03 марта 2010

Для решения запасных матриц,

в общем, насколько большой должна быть матрица (как правило)

для методов, таких как спуск по магистратуре, быстрее, чем для тех, кто решает грубую силу (которые не используют преимущества разреженности)?

Ответы [ 2 ]

3 голосов
/ 06 марта 2010

Это зависит не только от размера матриц, но и от того, насколько они разрежены, и какую структуру разреженности они имеют. Очевидно, вы можете решить трехдиагональную систему намного быстрее, чем система с таким же количеством ненулевых элементов, распределенных случайным образом по матрице.

Как отметил High-Performance Mark, CG работает как с плотными матрицами, так и с разреженными, поэтому вопрос, который вы хотите задать, состоит в следующем: «насколько большой и разреженной должна быть матрица, прежде чем решатели смогут извлечь выгоду из рассматривая его как разреженную матрицу вместо плотной матрицы, в которой много нулей ".

Ответ на это зависит, как я уже отмечал, от структуры разреженности. Матрица без специальной структуры, заполненная на 10%, на первый взгляд, я бы использовал плотные методы до заполнения кеша матрицы (на современном обычном оборудовании это будет около 1000 x 1000). Если матрица значительно более разреженная или имеет какую-то особую структуру, с которой легче работать (например, плотные блоки ненулевых данных или некоторая структура полосы), то этот порог станет намного меньше.

Не могли бы вы дать нам больше информации о конкретной проблеме, с которой вы работаете?

1 голос
/ 06 марта 2010

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

...