
Utilisé en programmation vectorielle
Des ingénieurs d’Intel et d’Oracle à l’origine d’une API de prise en charge des algorithmes qui se prêtent au paradigme SIMD. Le texte est consigné au sein de la proposition d’amélioration 338 – du langage Java – publiée sur les fils dédiés de l’OpenJDK.
Avec SIMD – Single Instruction Multiple Data – on nage en plein dans l’univers de la programmation vectorielle. Il s’agit de donner aux développeurs Java la possibilité de manipuler plusieurs données en même temps en s’appuyant sur une unique instruction. L’introduction de cette API ouvrirait encore plus le langage à des problématiques d’actualité comme l’intelligence artificielle où l’on fait un usage extensif des structures de données matricielles. En effet, là où un processeur scalaire effectue N opérations pour remplir les cases d’un vecteur, il en faut une seule à un de ses homologues vectoriels pour atteindre le même objectif.
« L’API vectorielle offre un mécanisme d’écriture d’algorithmes vectoriels complexes en s’appuyant sur le support déjà offert par la machine virtuelle HotSpot, mais avec un modèle utilisateur qui rend les opérations de vectorisation plus prédictibles et plus robustes », écrivent les ingénieurs . L’API est donc destinée à donner aux développeurs les moyens d’exprimer une large gamme de calculs vectoriels de façon claire et concise. Illustration avec la portion de code suivante pour l’addition de deux vecteurs.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | static final FloatVector.FloatSpecies<Shapes.S256Bit> SPECIES = FloatVector.species(Shapes.S_256_BIT); void vectorComputation(float[] a, float[] b, float[] c) { int i = 0; for (; i < (a.length & ~(SPECIES.length() - 1)); i += SPECIES.length()) { // FloatVector<Shapes.S256Bit> va, vb, vc; var va = SPECIES.fromArray(a, i); var vb = SPECIES.fromArray(b, i); var vc = va.mul(va). add(vb.mul(vb)). neg(); vc.intoArray(c, i); } for (; i < a.length; i++) { c[i] = (a[i] * a[i] + b[i] * b[i]) * -1.0f; } } |
À ce stade, la proposition ne cite pas une version particulière de Java qui serait le siège de l'API. Toutefois, le projet serait destiné à l'édition standard de Java.
Source : JEP 338
Et vous ?


Voir aussi :



Vous avez lu gratuitement 822 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.