Après notre sympathique tour chez Codeplay, la visite des stands d’exposition de l’Intel VisiON a continué de direction d’Oracle, et plus précisément de l’intégration des instructions vectorielles dans l’implémentation OpenJDK de la firme. Pour rappel, il s’agit de NEON/SVE chez Arm, et SSE/AVX sur les bousins x86, et servent à effectuer plusieurs opérations du même type en parallèle (typiquement 4 additions, 8 multiplications, etc), sans pour autant avoir à se trimballer du multithread plutôt complexe à programmer.

 

intel vision 2022

 

Usuellement, la vectorisation d’un programme passe soit par une étape d’autovectorisation dans le compilateur — fonctionnelle, certes, mais encore limitée dans l’étendue des motifs vectorisables supportés —, soit par des intrinsèques très proche du code assembleur : pas du plus pratique. En Java, il faut passer par l’API dédiée, qui est par la suite compilée en bytecode, lui-même transcrit à la volée en langage machine à l’exécution. Ainsi, c’est à la JVM — machine virtuelle Java — qu’incombe la tâche de générer effectivement des instructions vectorielles, en supposant que le code source ait été correctement traduit.

 Une petite série de démo pour montrer que oui, ça va plus vite ! [cliquer pour agrandir]

 

Hé bien, à partir d’OpenJDK 18, la chose est correctement intégrée, supportant l’AVX2 (mais pas l’AVX 512). Pour nous prouver l’intérêt de la chose, les gus avaient préparé quelques démonstrations couvrant Blackschole — un benchmark issu du monde de la finance —, du traitement d’image ou encore le calcul d’une fractale. Sans surprise, l’accélération est conséquente, d’autant plus sur ce type d’applications régulières dont le code ne risque pas souvent d’être retraduit à la volée. Sympathique, non ?


Un poil avant ?

Zen 4 pourrait être un tueur si on en croit les nouvelles rumeurs !

Un peu plus tard ...

Gamotron • J'ai attrapé un coup de soleil

Les 3 ragots
Les ragots sont actuellement
ouverts à tous, c'est open bar !