Я создаю программу ВЭД и имею дело с матрицами порядка 290-96 тысяч квадратных или 27-9 миллиардов элементов.Эти матрицы в значительной степени редки, поэтому я использую SuperLU для их решения.Мне удалось успешно использовать SuperLU для решения проблемы, которая достаточно хорошо совпала с данными валидации с меньшими матрицами.Однако, когда я увеличиваю размер моих матриц, функция SuperLU dgstrf выводит информационное значение примерно 900 миллионов (914459273 один раз, 893813121 другой).
В документации говорится, что это информационное значение равно «числу байтов».выделяется при сбое выделения памяти, плюс A-> ncol. "Однако это не дает никакой информации о том, как работать с этой ошибкой.Что ограничивает память в этом случае?Библиотека ограничивает память?Это жестко закодировано в библиотеке или определяется во время компиляции?Ограничена ли память при компиляции моего кода на Фортране?
Я пишу свой код на Фортране и использую предварительно созданный файл c_fortran_dgssv.c для связи с SuperLU.Этот файл позволяет системе «распределять пространство внутри системы с помощью malloc» (lwork = 0).Это то, что я мог бы изменить, чтобы иметь больше места.
Я вызываю код, используя аналогичные вызовы, как пример на Фортране.
nrhs = 1
ldb = Dim3DFull
iopt = 1
call c_fortran_dgssv(iopt,Dim3DFull,TotalNonZeroElements_BCs,nrhs, &
Global_Matrix_T_Value_BC_CSC,Global_Matrix_T_Row_BC_CSC, &
Global_Matrix_T_Col_BC_CSC,Global_Temp,ldb,factors,info)
if (info .eq. 0) then
write (*,*) 'Factorization succeeded'
else
write(*,*) 'INFO from factorization = ', info
endif
!Second, solve the system using the existing factors.
iopt = 2
call c_fortran_dgssv(iopt,Dim3DFull,TotalNonZeroElements_BCs,nrhs, &
Global_Matrix_T_Value_BC_CSC,Global_Matrix_T_Row_BC_CSC, &
Global_Matrix_T_Col_BC_CSC,Global_Temp,ldb,factors,info)
if (info .eq. 0) then
write (*,*) 'Solve succeeded'
else
write(*,*) 'INFO from triangular solve = ', info
endif
!Last, free the storage allocated inside SuperLU
iopt = 3
call c_fortran_dgssv(iopt,Dim3DFull,TotalNonZeroElements_BCs,nrhs, &
Global_Matrix_T_Value_BC_CSC,Global_Matrix_T_Row_BC_CSC, &
Global_Matrix_T_Col_BC_CSC,Global_Temp,ldb,factors,info)