Chiosa
IT
Systems & Infrastructure

PipeLink collega parti di kernel GPU compilate separatamente

PipeLink: Contract-Guided Linking of GPU Kernel Components · arXiv:2610.37200

3 min
Aggiornato
PipeLink overview. Separately compiled components carry contracts at their interfaces (left). PipeLink checks the contracts, relocates the components and generates the code between them, so the same…
PipeLink overview. Separately compiled components carry contracts at their interfaces (left). PipeLink checks the contracts, relocates the components and generates the code between them, so the same compiled attention core lands at different shared-memory offsets in two kernels…Figure 1 · PipeLink: Contract-Guided Linking of GPU Kernel Components · Jize Guo and Xupeng Miao · CC BY 4.0

In parole semplici

Un kernel GPU fuso può essere costruito con parti scritte da team o librerie diverse, ma queste parti possono chiedere le stesse risorse sul chip. PipeLink permette a ogni parte di dichiarare di cosa ha bisogno e cosa garantisce, poi controlla e collega le parti durante il collegamento.

In 51 configurazioni misurate su tre modelli di GPU NVIDIA, i kernel collegati sono rimasti entro lo 0,2% rispetto ai controlli compilati come un’unica unità a partire dalle stesse parti. Il risultato riguarda questi test, non ogni kernel o GPU.

La ricerca

Quando parti di kernel GPU scritte separatamente condividono risorse sul chip, le assegnazioni fissate in anticipo possono entrare in conflitto. I team potrebbero doverle coordinare a mano o mantenere le parti in kernel distinti. Un linker può combinare parti compilate indipendentemente coordinando le risorse che condividono?

PipeLink collega parti di kernel GPU compilate separatamente verificandone i contratti, assegnando insieme le risorse e generando i collegamenti tra le parti.

PipeLink collega parti di kernel GPU compilate separatamente verificando ciò che ciascuna richiede e garantisce, assegnando insieme le risorse sul chip e generando i collegamenti.

I ricercatori hanno confrontato i kernel collegati con controlli compilati come un’unica unità usando gli stessi sorgenti e lo stesso codice di collegamento.

In 51 configurazioni misurate su tre modelli di GPU NVIDIA, la quantità di lavoro completata dai kernel collegati è rimasta entro lo 0,2% rispetto ai controlli. Questo sostiene l’interpretazione secondo cui, in questi test, il collegamento non ha aggiunto un costo significativo alle composizioni.

PipeLink verifica che i contratti dichiarati dai componenti siano compatibili, ma non controlla che il loro codice li rispetti.

I trasferimenti generati spostano dati solo all’interno di un singolo blocco di thread; i componenti continuano a occuparsi di calcoli, conversioni di precisione e comunicazione tra blocchi o GPU.

Cosa mostrano le prove

  • Il problema della composizione

    PipeLink è un linker guidato da contratti che combina componenti compilati separatamente in un unico kernel GPU fuso. I componenti possono essere scritti usando librerie diverse, ma possono condividere memoria sul chip, barriere, warp, registri e piani di elaborazione dei tile.

    Poiché spesso fissano in anticipo le proprie posizioni in queste risorse, combinarli può richiedere coordinamento manuale o kernel separati.

  • I contratti coordinano i componenti

    I contratti registrano ciò che ogni componente richiede e garantisce, comprese le esigenze di risorse condivise e i fatti geometrici. PipeLink verifica queste dichiarazioni, assegna insieme le posizioni delle risorse e genera collegamenti come i trasferimenti di tensori.

    Le istruzioni dei componenti restano opache al linker e il backend del produttore incorpora le decisioni prese al collegamento come costanti.

  • I dati modificati rivelano una lacuna

    Un test con fatti geometrici modificati mostra cosa può sfuggire al collegamento dei simboli. I ricercatori hanno cambiato una costante in un componente proprietario di un kernel MoE composto da quattro parti, reimpacchettato solo quel componente e collegato la nuova versione agli oggetti invariati degli altri.

    Il collegamento dei simboli ha accettato tutti e cinque i casi, ma tre kernel si sono bloccati e due hanno lasciato parte dell’output non scritto. PipeLink ha ricollegato correttamente tutti e cinque propagando ogni fatto modificato ai componenti che lo usavano.

  • Il collegamento resta vicino ai controlli

    I ricercatori hanno confrontato i kernel collegati con controlli compilati come un’unica unità usando gli stessi sorgenti dei componenti e lo stesso codice generato, disposizione delle risorse, modalità a virgola mobile e input.

    In 51 configurazioni misurate su GPU H200, B300 e RTX 5090, la quantità di lavoro completata dai kernel collegati è rimasta entro lo 0,2% rispetto ai controlli. Gli autori interpretano questo risultato come un’indicazione che i casi di studio misurino ciò che rende possibile la composizione, senza un costo dovuto al collegamento.

  • I risultati dipendono dal carico di lavoro

    Gli esempi mostrano che la composizione può rendere possibili kernel che uniscono librerie e componenti proprietari diversi, ma le prestazioni dipendono dal carico di lavoro. Sostituire un componente di attention ha accelerato la decodifica di Llama-1B con un contesto di 4096 token, ma l’ha rallentata con 16 token.

    Un kernel di addestramento MoE composto da quattro parti è rimasto vicino alla quantità di lavoro completata dal passo monolitico; in una configurazione B300, un’operazione fusa per Qwen3-32B ha superato il confronto con cuBLAS più un’attivazione compilata.

Dettagli

Paper successivoIl gateway di PayPal riunisce sotto regole comuni l’accesso all’AI di più fornitori