Sparse matrixvermenigvuldiging: de gedistribueerde, met blok gecomprimeerde sparse row library
efficiënte parallelle vermenigvuldiging van sparse matrices is de sleutel tot vele grootschalige berekeningen. Dit artikel presenteert de dbcsr (Distributed Block Compressed Sparse Row) bibliotheek voor schaalbare sparse matrix–matrix vermenigvuldiging en het gebruik ervan in het CP2K programma voor lineaire schaal kwantum-chemische berekeningen. De bibliotheek combineert verschillende benaderingen om schaarse matrixvermenigvuldiging te implementeren op een manier die goed presteert en aantoonbaar schaalbaar is. Parallelle communicatie heeft duidelijk gedefinieerde grenzen. Datavolume neemt af met O(1/P) met toenemende proces tellingen P en elk proces communiceert met ten hoogste O (P) anderen. Lokale sparse matrix vermenigvuldiging wordt efficiënt behandeld met behulp van een combinatie van technieken: het blokkeren van elementen samen in een applicatie-relevante manier, een autotuning bibliotheek voor kleine matrix vermenigvuldiging, cache-oblivious recursieve vermenigvuldiging, en multithreading. Bovendien, on-the-fly filtering verhoogt niet alleen sparsity, maar voorkomt ook het uitvoeren van berekeningen die onder de filterdrempel vallen. We demonstreren en analyseren de prestaties van de dbcsr-bibliotheek en de verschillende schaalgedrag.