Nicolas Boulay me l'a souflé un peu après et je ne l'ai donc pas mis dans la news : l'intérêt d'AVX est de proposer un jeu d'instructions certes complexe mais vectoriel :
Dans des registres 256 bits on peut caser 4 flottants 64 bits, et réaliser des opération vectorielles dessus, du genre R = r1*r2 + r3*r4.
Il ya tout ce qu'il faut pour implémenter une bonne librairie vectorielle, matricielle à coup d'intrinsics.
Evidemment c'est quasiment pas parallelisable, et quand ça l'est, c'est le processeur qui va le détecter, suite aux incantations vaudous sur le code.
Conclusion : ça obligera à tâter de l'assembleur, car je vois mal le compilateur réussir à gérer ça tout seul, mis à part des cas très simple, avec des techniques comme celle de l'autovectorisation de GCC, et ça obligera surtout à penser son code de manière à aider le processeur à parraléliser tout seul, en mettant le moins possible de dépendances entre les opérations successives.
La routine quoi.
Je me demande si ça serait pas intelligent de reprendre le shading language, qui est très orienté vectoriel, et de lui faire générer de l'AVX. Ce serait très intelligent : un compilateur (avec une grosse grammaire) comme C arriverait plus facilement à mapper les calculs sur l'ensemble des opérations assembleurs proposées...
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker
# AVX = Vectoriel
Posté par Ontologia (site web personnel) . En réponse à la dépêche Les GPU promis à une mort prochaine ?. Évalué à 3.
Dans des registres 256 bits on peut caser 4 flottants 64 bits, et réaliser des opération vectorielles dessus, du genre R = r1*r2 + r3*r4.
Il ya tout ce qu'il faut pour implémenter une bonne librairie vectorielle, matricielle à coup d'intrinsics.
Evidemment c'est quasiment pas parallelisable, et quand ça l'est, c'est le processeur qui va le détecter, suite aux incantations vaudous sur le code.
Conclusion : ça obligera à tâter de l'assembleur, car je vois mal le compilateur réussir à gérer ça tout seul, mis à part des cas très simple, avec des techniques comme celle de l'autovectorisation de GCC, et ça obligera surtout à penser son code de manière à aider le processeur à parraléliser tout seul, en mettant le moins possible de dépendances entre les opérations successives.
La routine quoi.
Je me demande si ça serait pas intelligent de reprendre le shading language, qui est très orienté vectoriel, et de lui faire générer de l'AVX. Ce serait très intelligent : un compilateur (avec une grosse grammaire) comme C arriverait plus facilement à mapper les calculs sur l'ensemble des opérations assembleurs proposées...
« Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker