← Ultimi articoli
💻 computer science

BF16 Component-Product Emulation of FP32 and FP64 GEMM on Intel AMX

Questo articolo presenta un algoritmo orientato alla CPU che sfrutta i prodotti matriciali Intel AMX BF16 per emulare operazioni GEMM ad alta precisione FP32 e FP64, ottenendo un throughput competitivo e un'accuratezza regolabile decomponendo gli operandi in molteplici componenti a bassa precisione e accumulandoli in una precisione superiore.

Autori originali: Bing Cui, Yu Liu

Pubblicato 2026-09-07✓ Author reviewed
📖 4 min di lettura☕ Lettura da pausa caffè

Autori originali: Bing Cui, Yu Liu

Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo

I computer modern sono costruiti con una crescente divisione nella loro architettura interna. Da un lato, ci sono motori potenti progettati specificamente per l'intelligenza artificiale, che eccellono nell'eseguire miliardi di calcoli semplici molto rapidamente. Questi motori funzionano meglio con numeri che sono brevi e semplici, sacrificando un briciolo di dettaglio in favore di una velocità massiccia. Dall'altro lato, il mondo della scoperta scientifica — simulare modelli meteorologici, modellare come gli atomi si legano o prevedere il flusso dei fluidi — si affida ancora a numeri lunghi e precisi. Questi calcoli scientifici hanno bisogno di ogni singolo dettaglio per rimanere stabili e accurati, ma i componenti informatici standard che li gestiscono sono spesso più lenti e meno efficienti rispetto ai nuovi motori per l'IA. Ciò crea un dilemma: gli scienziati hanno bisogno della velocità della nuova tecnologia, ma non possono permettersi di perdere la precisione richiesta dal loro lavoro.

I ricercatori di Maginfra Co., Ltd. in Cina hanno esplorato un modo per colmare questo divario utilizzando un tipo specifico di chip per computer chiamato Intel AMX. Il loro obiettivo era vedere se i veloci motori per l'IA a bassa precisione potessero essere "ingannati" per eseguire la matematica lenta e ad alta precisione richiesta dalla scienza. Invece di chiedere al chip di eseguire direttamente la matematica difficile, hanno scomposto il problema in pezzi più piccoli e semplici. Immaginate di cercare di misurare una distanza molto lunga con un righello che ha solo tacche per i pollici interi. Potreste misurare i pollici interi, poi misurare la frazione rimanente, poi la minuscola striscia rimasta, e sommarle tutte per ottenere un totale preciso. I ricercatori hanno applicato questa stessa logia ai numeri. Hanno preso un singolo numero complesso e lo hanno diviso in diverse parti più semplici che il veloce motore per l'IA potesse gestire facilmente. Hanno poi eseguito molti calcoli rapidi su queste parti e hanno ricomposto attentamente i risultati per ricostruire la risposta finale, altamente accurata.

Il team ha testato questo approccio su due diversi livelli di precisione. Per prima cosa, hanno affrontato la matematica a singola precisione, che è lo standard per molte applicazioni scientifiche. Hanno scoperto che, dividendo ogni numero in tre parti ed eseguendo sei calcoli specifici, potevano ottenere risultati altrettanto accurati rispetto al miglior software esistente, ma significativamente più veloci. Sui chip per computer che hanno testato, questo metodo è stato tra 1,14 e 2,56 volte più veloce del modo standard di eseguire la matematica. L'aumento di velocità è stato più evidente con set di dati più grandi, dove l'overhead di divisione e riassemblaggio dei numeri diventava meno importante rispetto alla pura velocità dei calcoli.

Quando si sono spostati sulla matematica a doppia precisione, che è ancora più esatta e utilizzata per le simulazioni scientifiche più impegnative, la sfida è aumentata. Qui, i ricercatori hanno dovuto dividere ogni numero in sei parti. Poiché i calcoli dovevano essere riassemblati con estrema cura, il processo è diventato più complicato. Hanno testato diverse versioni di questo metodo, mantenendo da sei a ventuno dei piccoli pezzi di calcolo. Hanno scoperto un chiaro compromesso: mantenere più pezzi rendeva la risposta più accurata, ma rallentava anche il processo. Con soli sei pezzi, il metodo era abbastanza veloce da battere il software standard per problemi molto grandi, correndo fino a 1,7 volte più velocemente. Tuttavia, man mano che aggiungevano più pezzi per migliorare l'accuratezza, il lavoro extra richiesto per gestirli assorbiva il vantaggio di velocità. Alla fine, cercare di mantenere ventuno pezzi rendeva il metodo più lento dell'approccio standard, anche se era più accurato.

Lo studio ha anche evidenziato che questa tecnica non è una soluzione universale per ogni situazione. Funziona meglio quando i numeri che vengono calcolati rimangono entro un intervallo specifico, simile a come un righello con una lunghezza limitata non può misurare una distanza troppo vasta o troppo piccola senza aggiustamenti speciali. I ricercatori hanno osservato che il loro metodo non funziona per ogni possibile tipo di numero, in particolare per quelli estremamente grandi o estremamente piccoli, e non garantisce una corrispondenza perfetta, bit per bit, con il software esistente. Invece, offre un nuovo strumento per gli scienziati che necessitano di alta velocità e alta accuratezza, a condizione che i loro dati rientrino nei limiti del metodo. Dimostrando che l'hardware a bassa precisione può essere utilizzato per risolvere problemi ad alta precisione, il lavoro suggerisce un futuro in cui i motori specializzati costruiti per l'intelligenza artificiale possano anche accelerare il lavoro pesante della scoperta scientifica.

Sommerso dagli articoli nel tuo campo?

Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.

Prova Digest →