Für die schnellere Berechnung von Algorithmen (Raytracing), die parallelisiert werden können, bietet es sich an solche Berechnungen auf der Grafikkarte auszuführen. Die CUDA-Schnittstelle ermöglicht es auf High-Level diese Operationen parallel auszuführen. Die kostenlose Toolbox GPUmat, mit welcher Matlab dazu befähigt wird Matrizen auf den GPU-Speicher auszulagern, besitzt allerdings ein paar Einschränkungen.
Da wir derzeit noch auf die Parallel Computing Toolbox von Mathworks verzichten und mit GPUmat arbeiten, stösst man hin und wieder an die Grenzen eines kostenfreien Produkts. Wie auch schon andere Kollegen feststellen mussten, besitzt GPUmat nur eine rudimentäre Unterstützung für Lineare Algebra. So fehlen beispielsweise im Funktionspaket Möglichkeiten um ein lineares Gleichungssystem
[math]Ax=b[/math]
lösen zu können.
Lösen eines linearen Gleichungssystems in Matlab
Matlab verwendet zur Lösung eines linearen Gleichungssystems mit quadratischer Matrix A die LU-Faktorisierung mit partieller Pivotisierung und zur Lösung eines nicht-quadratischen Matrix A (z.B. bei Ausgleichsproblemen) eine QR-Zerlegung. Dazu bietet Matlab folgende Befehle:
[math]x = A \backslash b[/math]
[math]x = linsolve(A,b)[/math]
[math]x = mldivide(A,b)[/math]
Lösen eines linearen Gleichungssystems mit GPUmat
Leider stellt GPUmat in Version 0.28 keine derartigen Befehle zur Verfügung. Insgesamt ist der Lineare Algebra Support (z.B. INV, SVD, EIG, MLDIVIDE, QR, LU, etc.) nicht vorhanden, sodass das Lösen eines linearen Gleichungssystems o.ä. mit GPUmat nicht ohne weiteres auf die Grafikkarte ausgelagert werden kann.
Kostenpflichtige Alternativen sind die Matlab Parallel Computing Toolbox oder Jacket.