Moltiplicazione di matrici sparse: La libreria di righe sparse compressa a blocchi distribuita
L’efficiente moltiplicazione parallela di matrici sparse è la chiave per abilitare molti calcoli su larga scala. Questo articolo presenta la libreria DBCSR (Distributed Block Compressed Sparse Row) per la moltiplicazione scalabile di matrici sparse e il suo utilizzo nel programma CP2K per calcoli quantistici–chimici a scala lineare. La libreria combina diversi approcci per implementare la moltiplicazione di matrici sparse in un modo che funziona bene ed è dimostrabilmente scalabile. La comunicazione parallela ha limiti ben definiti. Il volume dei dati diminuisce con O(1/P) con l’aumento dei conteggi di processo P e ogni processo comunica con al massimo O (P) altri. La moltiplicazione di matrici sparse locali viene gestita in modo efficiente utilizzando una combinazione di tecniche: bloccando gli elementi in modo pertinente all’applicazione, una libreria di autotuning per piccole moltiplicazioni di matrici, moltiplicazione ricorsiva ignara della cache e multithreading. Inoltre, il filtraggio immediato non solo aumenta la scarsità, ma evita anche di eseguire calcoli che scendono al di sotto della soglia di filtraggio. Dimostriamo e analizziamo le prestazioni della libreria DBCSR e i suoi vari comportamenti di ridimensionamento.