2016-07-19 2 views
3

Для анализа мне нужно решить большую разрешенную систему в форме Ax = b. A имеет размер 3Mx3M и является положительным.Многоуровневое решение разреженных матриц в R

На данный момент я использую пакет «Матрица», который обеспечивает поддержку разреженных матриц и рабочего решателя. Мне удается решить мою проблему примерно через 40 секунд. Однако в настоящее время 31 из 32 ядер моего сервера смеется надо мной, потому что я могу использовать только одно ядро ​​для своих вычислений.

Я пробовал делать подпрограмму foreach, но это очень оперативная память/накладные расходы. Я бы предпочел использовать что-то вроде решения BLAS/LAPACK со встроенной поддержкой многоядерности. Microsoft R Open выглядел многообещающим, но он поддерживает только BLAS/LAPACK для плотных матриц. Я много раз пробовал Googling безрезультатно.

Доступный многоядерный решатель, доступный для решения разреженных матриц в R?

Любая помощь очень полезна.

+1

не 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

+0

Также обратите внимание, что во многих случаях линейная алгебра на разреженных матрицах связана с памятью, а не с привязкой к ЦП ... –

+0

Вы правы в целом, Дмитрий Селиванов. Тем не менее, моя машина имеет 250 + GB RAM, поэтому я думаю, что память не является узким местом в моих расчетах. Мои разреженные матрицы составляют порядка 800 МБ каждый. – WvWestering

ответ

0

Если вы готовы перекомпилировать R с библиотекой BLAS, вы можете посмотреть на что-то вроде этого: Using Intel MKL with R

+0

BLAS работает с плотными матрицами! Для большинства POSIX систем перекомпиляция также не требуется в большинстве случаев. –

+0

Это действительно похоже на путь! Я попытаюсь сообщить о своих выводах здесь, в Stackoverflow. – WvWestering

+0

I @WvWestering у вас есть решение с библиотекой BLAS? –

Смежные вопросы