
Un patch LLVM pour gfx1310 (RDNA 5) suggère un Dual Issue bien plus flexible, avec la prise en charge de V_FMA_F32 dans les deux voies d’exécution. Résultat possible : certaines charges FP32 qui plafonnaient à 50 % du pic théorique sur les générations précédentes pourraient enfin exploiter pleinement le débit des futures Radeon.
RDNA 5 : Dual Issue élargi dans gfx1310
Un changement récent dans LLVM ajoute des entrées GFX13GenD et GFX13GenD3 pour gfx13 (gfx1310), associé à RDNA 5. L’objectif visible : étendre le périmètre du Dual Issue, cette capacité à émettre deux opérations mathématiques simultanément dans certaines conditions.
Sur les générations précédentes, le Dual Issue restait bridé : liste d’opcodes limitée, obligation du mode Wave32 et contraintes de registres bloquantes. Surtout, V_FMA_F32 n’entrait pas dans le chemin optimisé, ce qui expliquait des scores FP32 divisés par deux sur des outils comme vkpeak dans des cas précis.

Le bloc VOPD de RDNA 5 intègre désormais des instructions supplémentaires : V_{MAX,MIN}_I32_e32, V_SUB_U32_e32, V_LSHRREV_B32_e32, V_ASHRREV_I32_e32. Le patch LLVM va dans le même sens avec des tests spécifiques gfx13, signe d’une implémentation concrète plutôt que d’un simple gabarit.
Impact technique et pratique
Pour les développeurs et les benchs FP32, l’ouverture du Dual Issue à plus d’instructions peut maintenir ce mode actif sur davantage de charges. On pourrait ainsi se rapprocher du débit FP32 annoncé sans relever la valeur de pic nominale, mais en améliorant la soutenabilité du flot d’instructions.
Reste l’essentiel : le gain dépendra des compilations et des patterns réels. Les ajouts GFX13GenD/D3 et les tests dédiés indiquent toutefois une mise à niveau ciblée de l’ordonnancement Dual Issue sur RDNA 5.
Si AMD parvient à stabiliser l’émission double sur V_FMA_F32 et le lot d’instructions VOPD élargi, les écarts entre pics théoriques et performances mesurées sur certaines micro-benchs FP32 devraient se réduire, avec un effet levier surtout visible dans les kernels sensibles à la latence d’émission et à la pression registre.
Source: Coelacanth’s Dream via Github