Suivant la prise en charge facultative de”__bf16″étant ajouté au psABI x86-64 en tant que type spécial pour représenter le format Brain Floating Point 16 bits pour les applications d’apprentissage en profondeur/d’apprentissage automatique, les compilateurs GCC et LLVM ont maintenant décroché leur support de type __bf16.
Les compilateurs ont ajouté la prise en charge de __bf16 conformément à la spécification x86-64 psABI . La motivation pour ce nouveau type spécial est résumée comme :
Actuellement __bfloat16 est un typedef de short, ce qui crée un problème où le compilateur ne déclenche aucune alarme s’il est utilisé pour additionner, soustraire, multiplier ou diviser, mais le résultat du calcul n’a en fait aucun sens. Pour résoudre ce problème, un vrai type scalaire __Bfloat16 doit être introduit. Il est principalement utilisé pour les intrinsèques, non disponible pour les opérateurs standard C. __Bfloat16 sera également utilisé pour les mouvements tels que le passage de paramètres, le chargement et le stockage, l’initialisation vectorielle, le mélange vectoriel, etc. Cela crée un besoin pour un psABI correspondant.
Du côté matériel, Intel Xeon Scalable Cooper Lake et Sapphire Rapids sont les processeurs qui ont jusqu’à présent pris en charge les instructions natives AVX-512 BFloat16 (BF16) pour renforcer leur potentiel de performance d’apprentissage automatique.
La semaine dernière, LLVM a décroché sa prise en charge de type __bf16 pour les cibles x86 ainsi que l’adaptation de plusieurs commits de suivi son code BFloat16 existant. Maintenant aujourd’hui dans GCC Git il y a aussi le support pour le __bf16 taper.
Cette prise en charge du type __bf16 se retrouvera à son tour dans les compilateurs stables GCC 13 et LLVM 16, qui verront tous deux leurs versions officielles dans les premiers mois de l’année prochaine.