Målet med detta dokument är att presentera ett effektivt genomförande av en explicit matris inversion av allmänna fyrkantiga matriser på multicore dator arkitektur. Inversionsproceduren delas upp i fyra steg: 1) beräkning av LU-faktoriseringen, 2) invertering av den övre triangulära U-faktorn, 3) lösning av ett linjärt system, vars lösning ger inversitet av den ursprungliga matrisen och 4) tillämpa bakåtkolonn svängning på den inverterade matrisen. Med hjälp av en kakeldatalayout, som representerar matrisen i systemminnet med ett optimerat cachaware-format, sönderdelas beräkningen av de fyra stegen i beräkningsuppgifter. En riktad acyklisk graf genereras på flugan som representerar programmets dataflöde. Dess noder representerar uppgifter och kanter databeroenden mellan dem. Tidigare implementationer av matrisinversioner, som finns i toppmoderna numeriska bibliotek, lider av onödiga synkroniseringspunkter, som inte existerar i vårt genomförande för att fullt ut utnyttja parallellismen i den underliggande hårdvaran. Vår algoritmiska strategi gör det möjligt att ta bort dessa flaskhalsar och utföra uppgifterna med lös synkronisering. Ett runtime miljösystem som kallas QURK är nödvändigt för att dynamiskt schemalägga våra numeriska kärnor på de tillgängliga processenheterna. De rapporterade resultaten från vår LU-baserade matris inversion implementation betydligt överträffar toppmoderna numeriska bibliotek som LAPACK (5×), MKL (5×) och Scalapakk (2,5×) på en modern AMD-plattform med fyra uttag och totalt 48 kärnor för en matris av storlek 24000. En effektförbrukningsanalys visar
Dongarra m.fl. REF visar en optimerad implementation av matris inversion på en enda multicore nod, med fokus på minimering av synkronisering mellan de olika processkärnorna.
High performance matrix inversion based on LU factorization for multicore architectures
{'venue': "MTAGS '11", 'journal': None, 'mag_field_of_study': ['Computer Science']}