non c'è davvero un algoritmo formale per questo; in generale, questi tipi di operazioni di algebra lineare in cui l'intero problema non è memorizzato simultaneamente nella memoria sono indicati come operazioni "fuori dal core".
Per risolverlo, non è necessario un algoritmo particolarmente elaborato, solo la libreria CUBLAS e una matita e carta. Ad esempio, è possibile scomporre il prodotto questa matrice:
che vi dà quattro operazioni indipendenti moltiplicazione sub-matrice. Questi possono essere calcolati usando quattro chiamate a gemm CUBLAS usando un codice host molto semplice. È possibile estendere l'idea a tutte le sottomatrici necessarie per far corrispondere la dimensione del problema e la capacità della GPU. Lo stesso principio può essere utilizzato anche per implementare problemi di moltiplicazione della matrice su più GPU (vedere this question per un esempio). In alternativa, è possibile trovare un'implementazione funzionante di questa idea precisa nella base di codici sviluppata da Harvard SciGPU-GEMM e nell'implementazione di linpack HPL-CUDA (dichiarazione di non responsabilità: sono affiliato con quest'ultima base di codice).
Che dire semplicemente dividere le matrici come '[A0; A1] * [B0 B1] = [A0 * B0 A0 * B1; A1 * B0 A1 * B1] '? Quello potrebbe essere un buon inizio. – kangshiyin