Parallel Linear Algebra for Scalable Multi-core Architectures
# Parallel Linear Algebra for Scalable Multi-core Architectures

Parallel Linear Algebra for Scalable Multi-core Architectures (PLASMA) ist eine Programmbibliothek, die Schnittstellen für die Programmiersprachen C und Fortran bereitstellt. PLASMA kann lineare Gleichungen lösen, Probleme der kleinsten Quadrate und damit assoziierte Probleme wie die Faktorisierung einer Matrix berechnen.

Die Softwarebibliothek ist speziell für Shared-Memory-Systeme, insbesondere für homogene Multicore- und Multi-Socket-Systeme ausgelegt. PLASMA bietet vollständige Kompatibilität zur Softwarebibliothek Basic Linear Algebra Subprograms (BLAS) Level 3 sowie Matrixroutinen für die Initialisierung oder zur Bildung der Inverse. Das Ziel von PLASMA ist es, LAPACK zu ersetzen, im Gegensatz zu LAPACK unterstützt es jedoch im Moment (Juli 2012) noch nicht das Lösen von Singulär- oder Eigenwertproblemen sowie Routinen für Bandmatrizen.

## Eckdaten

PLASMA wurde vom Innovative Computing Laboratory (ICL) geschrieben. ICL stellt Software zur Lösung von Standardproblemen im Scientific Computing zur Verfügung. ICL ist ein Teil des Electrical Engineering and Computer Science Department im College of Engineering an der Universität von Tennessee.

Die Lizenzierung ist eine Abänderung von BSD und sehr freizügig. Das heißt, die Weitervergabe des Quellcodes oder der Binärdateien ist unter Nennung des Copyrights erlaubt.

Der Quellcode der Version 1.0.0 wurde am 1. Januar 2009 zum Download zur Verfügung gestellt. Zum ersten Mal wurde das Projekt PLASMA 2006 in einer Publikation vorgestellt.

## Motivation gegenüber LAPACK

LAPACK und ScaLAPACK sind der Standard für Hochdurchsatz-Berechnungen in der linearen Algebra. Sie wurden für Shared-Memory- und Distributed-Memory-Architekturen entwickelt, jedoch wird die Aufgabe des Parallelisierens an Basic Linear Algebra Subprograms (BLAS) delegiert. Die Stärken von BLAS liegen in der Wiederverwendung der Daten, um höhere Speicherlevel bestmöglich auszunutzen. Level-3-BLAS-Aufrufe erzielen einen Surface-to-Volume-Effekt, das heißt, es wird darauf geachtet, dass die Kommunikation sehr effizient gehalten wird. Block-Algorithmen sind sehr stark in Level-3-BLAS-Aufrufen vertreten und bieten eine hohe Leistung auf Speicherhierarchiesystemen. LAPACK-Routinen verlassen sich jedoch sehr oft auf Level-2-BLAS-Aufrufe, die sehr schlecht auf Shared-Memory-Systemen skalieren.

