En calcul scientifique classique c'est clair que la double précision est reine et parfois on émule même des précisions arbitraires (arbitrairement hautes bien sûr).
En précision mixte (multiplication moins précise que l'addition), c'est assez courant et d'ailleurs l'instruction FMA est une réponse élégante (multiplication suivie d'une addition, le tout en double précision et en moins de temps que MUL+ADD).
C'est clairement pour les réseaux de neurones qu'ils ont sorti ce GPU. La demi précision est suffisante pour cette application. Ce n'est plus vraiment une niche vu qu'on en met un peu partout...
Après, il ne faut pas sous-estimer la créativité des experts du domaine (il faut que je pense à appeler un ancien collègue qui pourra certainement cogiter la-dessus, si ce n'est pas déjà fait...).
A l'origine ce sont des bidouilleurs qui ont détourné les GPU pour calculer. Maintenant, c'est quasi la norme !
https://devblogs.nvidia.com/parallelforall/programming-tensor-cores-cuda-9/Each Tensor Core provides a 4x4x4 matrix processing array which performs the operation D = A * B + C, where A, B, C and D are 4×4 matrices as Figure 1 shows. The matrix multiply inputs A and B are FP16 matrices, while the accumulation matrices C and D may be FP16 or FP32 matrices. ... Each Tensor Core performs 64 floating point FMA mixed-precision operations per clock.
J'adore le 64 opérations per clock !
En gros, c'est du FMA mixte en simple précision et vu le nombre d'unité, il faut de très grosses matrices en FP16... Des poids dans un gros réseau de neurones par exemple comme pour
la reconnaissance d'image (inception_v4 par exemple).
En lisant, on comprend que ça va permettre de faire des produits de matrice en simple précision encore plus vite! Par contre, c'est du FLOAT donc pour les projets de maths discrètes (Collatz, prime, etc...) c'est pas exploitable. Pour avoir une chance d'exploiter la carte, il faut du simple précision et du calcul à virgules flottantes.