Я достиг своего предела по следующей проблеме:
Как часть моего кода FEA (в MATLAB) мне нужно найти x, x = A \ b . И A , и b имеют разреженную, сложную матрицу двойной точности и вектор соответственно. Размер A равен (n, n), а b равен (n, 1), где n равно 850000 и может увеличиваться до 2000000. Кроме того, A является симметричным c и в основном диагональным.
В моем распоряжении два кластера HP C, один с 5,7 ТБ ОЗУ и другой с 1,5 ТБ (но более быстрые ядра). Технически говоря, я могу решить систему как есть, и просто ждать примерно 15 дней. Однако мне нужно выполнить решение системы уравнений до 10х за симуляции. Поэтому 15 дней - неприемлемое количество времени.
Я пробовал итерационные методы, однако они не дали тех же результатов, что и оператор backsla sh. Также в некоторых случаях конвергенция не была получена.
Я преобразовал часть x = A \ b в формат mexa64, чтобы потенциально сократить время. Тем не менее, я боюсь, что это все еще займет дни.
Любые предложения о том, как решить эту проблему? Существуют ли коммерческие коды, которые могут сделать это быстрее / эффективнее? И как коммерческие пакеты FEA решают эту проблему, когда модель имеет более 1 миллиона узлов?
Любая помощь очень ценится! Заранее спасибо.