Для анализа мне нужно решить большую разрешенную систему в форме Ax = b. A имеет размер 3Mx3M и является положительным.Многоуровневое решение разреженных матриц в R
На данный момент я использую пакет «Матрица», который обеспечивает поддержку разреженных матриц и рабочего решателя. Мне удается решить мою проблему примерно через 40 секунд. Однако в настоящее время 31 из 32 ядер моего сервера смеется надо мной, потому что я могу использовать только одно ядро для своих вычислений.
Я пробовал делать подпрограмму foreach, но это очень оперативная память/накладные расходы. Я бы предпочел использовать что-то вроде решения BLAS/LAPACK со встроенной поддержкой многоядерности. Microsoft R Open выглядел многообещающим, но он поддерживает только BLAS/LAPACK для плотных матриц. Я много раз пробовал Googling безрезультатно.
Доступный многоядерный решатель, доступный для решения разреженных матриц в R?
Любая помощь очень полезна.
не R, но взгляните на библиотеку PETSc. Он полагается на MPI для параллелизма и существует большое количество [решателей и предварительных условий] (http://www.mcs.anl.gov/petsc/documentation/linearsolvertable.html), доступных для разреженных положительно определенных матриц (aij/baij) , Или вы можете использовать параллельный прямой решатель, такой как MUMPS. См. [Там] (http://www.nersc.gov/users/software/programming-libraries/math-libraries/petsc/c-example-mumps/) для примера. Но есть необходимость написать интерфейс для вызова функции c из R. – francis
Также обратите внимание, что во многих случаях линейная алгебра на разреженных матрицах связана с памятью, а не с привязкой к ЦП ... –
Вы правы в целом, Дмитрий Селиванов. Тем не менее, моя машина имеет 250 + GB RAM, поэтому я думаю, что память не является узким местом в моих расчетах. Мои разреженные матрицы составляют порядка 800 МБ каждый. – WvWestering