2016-07-19 28 views
3

Für eine Analyse muss ich ein großes dünnes System in der Form Ax = b lösen. A hat die Dimension 3Mx3M und ist positiv definit.Multicore-Lösung von dünnen Matrizen in R

Für jetzt verwende ich das "Matrix" -Paket, das Unterstützung für dünn besetzte Matrizen und einen funktionierenden Solver bietet. Ich schaffe es, mein Problem in etwa 40 Sekunden zu lösen. Derzeit lachen mich jedoch 31 der 32 Kerne meines Servers, weil ich nur einen einzigen Kern für meine Berechnungen verwenden kann.

Ich habe versucht, eine foreach Routine, aber das ist sehr RAM/Overhead intensiv. Ich würde lieber etwas wie einen BLAS/LAPACK-Löser mit integrierter Multicore-Unterstützung verwenden. Microsoft R Open schien vielversprechend, unterstützt aber nur BLAS/LAPACK für dichte Matrizen. Ich habe ausgiebig gegoogelt, ohne Erfolg.

Ist ein zugänglicher Multicore-Solver zur Lösung von dünn besetzten Matrizen in R verfügbar?

Jede Hilfe wird sehr geschätzt.

+1

Nicht R, aber einen Blick auf der PETSc Bibliothek nehmen. Es beruht auf MPI für Parallelität und es gibt eine große Anzahl von [Lösern und Vorkonditionierern] (http://www.mcs.anl.gov/petsc/documentation/linearsolvertable.html), die für Sparce-positive-definitive Matrizen (aij/baij) verfügbar sind. . Oder Sie verwenden einen parallelen direkten Löser wie MUMPS. Ein Beispiel finden Sie [http://www.nersc.gov/users/software/programming-libraries/math-libraries/petsc/c-example-mumps/]. Aber es gibt eine Notwendigkeit, eine Schnittstelle zu schreiben, um die c-Funktion von R anzurufen. – francis

+0

Beachten Sie auch, dass in vielen Fällen lineare Algebra auf dünn besetzten Matrizen speichergebunden ist, nicht CPU-gebunden ... –

+0

Sie haben Recht, Dmitriy Selivanov. Meine Maschine hat jedoch 250 + GB Arbeitsspeicher, daher denke ich, Speicher ist nicht der Flaschenhals in meinen Berechnungen. Meine dünn besetzten Matrizen liegen jeweils in der Größenordnung von 800 MB. – WvWestering

Antwort

0

Wenn Sie bereit sind, Ihre R mit einer BLAS-Bibliothek neu kompilieren, können Sie einen Blick auf so etwas wie diese nehmen: Using Intel MKL with R

+0

BLAS arbeitet mit dichten Matrizen! Für die meisten POSIX-Systeme ist eine Neukompilierung in den meisten Fällen ebenfalls nicht erforderlich. –

+0

Das scheint tatsächlich der Weg zu sein! Ich werde versuchen, meine Ergebnisse hier auf Stackoverflow zu melden. – WvWestering

+0

Ich @WvWestering hast du irgendeine Lösung mit BLAS Bibliothek gefunden? –