Matrix-matris multiplikation är en grundläggande operation i linjär algebra och en viktig byggsten för ett brett spektrum av algoritmer inom olika vetenskapliga områden. Teori och genomförande för den täta, fyrkantiga matris fall är väl utvecklade. Om matriser är sparsamma, med tillämpningsspecifika gleshetsmönster, är det optimala genomförandet fortfarande en öppen fråga. Här utforskar vi hur kommunikation minskar 2.5D-algoritmer och ensidig MPI-kommunikation i samband med linjär skalning av elektronisk strukturteori. I synnerhet utökar vi DBCSR sparse-matrisbiblioteket, som är den grundläggande byggstenen för linjär skalning av elektronisk strukturteori och lågskalning korrelerade metoder i CP2K. Biblioteket är speciellt utformat för att effektivt utföra block-sparse matris-matris multiplikation av matriser med en relativt stor sysselsättning. Här jämför vi prestandan av den ursprungliga implementeringen baserat på Cannons algoritm och MPI point-to-point kommunikation, med en implementering baserad på MPI ensidig kommunikation (RMA), i både en 2D och en 2.5D metod. 2.5D-metoden handlar om minne och hjälpinsatser för minskad kommunikation, vilket kan leda till en upptrappning om kommunikationen är dominerande. 2.5D-algoritmen är något lättare att implementera med ensidig kommunikation. En detaljerad beskrivning av genomförandet ges, även för icke idealiska processor topologier, eftersom detta är viktigt för faktiska tillämpningar. Med tanke på betydelsen av det exakta gleshetsmönstret, och även de faktiska matrisdata, som bestämmer den effektiva ifyllningen vid multiplikation, utförs testerna inom CP2K-paketet med tillämpningsriktmärken. Resultaten visar en betydande ökning av prestandan för den RMA-baserade 2,5D-algoritmen, upp till 1,80x, vilket ses öka med antalet processer som är involverade i parallelliseringen.
Nyligen har vi implementerat en 2.5D algoritm som kan förbättra prestandan för ett stort antal processorer REF.
Increasing the Efficiency of Sparse Matrix-Matrix Multiplication with a 2.5D Algorithm and One-Sided MPI
{'venue': "PASC '17", 'journal': None, 'mag_field_of_study': ['Computer Science']}