Non è che la castra, ma è proprio l'architettura fatta a riempimento che ora da problemi.
SMX Kepler è formato da 192cc, suddivisi in:
32
32
32
32
32
32
6 blocchi da 32. Di questi 6 blocchi, solo 4 hanno la sicurezza di essere realmente schedulati.
Quindi per evitare questo, è stato inserito un compilatore che fa in modo di assegnare tutti i thread di calcolo allo stesso istante, senza lasciare blocchi in idle.
Se questo non viene correttamente programmato, i due blocchi non schedulati, rischiano di rimanere in idle, quindi il blocco 3 e 6 partono solo dopo che il blocco 2 e 4 finiscono.
Risultato, sprechi il 33% di risorse andando male ed una 780 da 2304cc è come se passasse a 1536cc.
Maxwell ha migliorato questo, creando 4 blocchi da 32cc tutti schedulati, e nessuna dipendenza.
Quando però si comincerà a programmare pesantemente per GCN o i 64 thread (l'SM di pascal è 2x32), Maxwell dev'essere programmato per sfruttare tutti i 4x32 blocchi, perchè se ne chiami solo 2 ad operazione, sono dolori.
La 460 era fatta come Kepler, 3 blocchi da 16 su 3 scheduler, la 480/580 invece no, per limitare perdite, era fatta in 2x16 su due scheduler.
Con Kepler la strada era, o 15 SMX da 128 o andare a riempimento, utilizzando un compilatore che assegnasse tutti i thread di calcolo e migliorare le prestazioni.:)