мне нужно решить систему линейных алгебраических уравнений A.X = B
Как сохранить память для решения симметричной (или верхней трагической) матрицы?
матрица А является двойной точности с о размере 33000x33000 и я получаю сообщение об ошибке при попытке передать его:
Невозможно выделить массив - переполнение по размеру массива.
Поскольку я использую LAPACK dposv
с библиотекой Intel MKL, мне было интересно, если есть способ, чтобы каким-то образом передать меньшую матрицу к библиотечной функции? (Потому что только половина матричных массивов необходимо решить)
dposv
функция должна только верхнюю или нижнюю треугольную матрицу для А. Here is more details about dposv.
Update: Пожалуйста, обратите внимание, что матрица Н х Н и тем не менее он принимает lda: INTEGER
как The leading dimension of a; lda ≥ max(1, n)
. Может быть, есть способ разбора A как массива 1D?
кстати 33000^2 * 8/1024^3 = более 8 гигабайт. Правильно ли мои расчеты? – Saeid
Да, приблизительно 8.1 Гбайт –
Если ваша матрица разрежена, читайте об использовании разреженных матриц. В противном случае купите больше памяти. –