Sparse Matrix multiplication: The distributed block-compressed sparse row library
Die effiziente parallele Multiplikation von Sparse-Matrizen ist der Schlüssel für viele große Berechnungen. In diesem Artikel wird die DBCSR–Bibliothek (Distributed Block Compressed Sparse Row) für skalierbare Sparse-Matrix-Matrix-Multiplikation und ihre Verwendung im CP2K-Programm für linear skalierende quantenchemische Berechnungen vorgestellt. Die Bibliothek kombiniert mehrere Ansätze, um Sparse Matrix Multiplication auf eine Weise zu implementieren, die gut funktioniert und nachweislich skalierbar ist. Parallele Kommunikation hat klar definierte Grenzen. Das Datenvolumen nimmt mit O (1 / P) mit zunehmender Prozessanzahl P ab und jeder Prozess kommuniziert mit höchstens O (P) anderen. Die lokale spärliche Matrixmultiplikation wird mithilfe einer Kombination von Techniken effizient gehandhabt: Blockieren von Elementen auf anwendungsrelevante Weise, eine Autotuning-Bibliothek für kleine Matrixmultiplikationen, cache-vergessliche rekursive Multiplikation und Multithreading. Darüber hinaus erhöht die On-the-Fly-Filterung nicht nur die Sparsity, sondern vermeidet auch die Durchführung von Berechnungen, die unter den Filterschwellenwert fallen. Wir demonstrieren und analysieren die Leistung der DBCSR-Bibliothek und ihre verschiedenen Skalierungsverhalten.