Dans le flot d'annonces qu'Intel a réalisées ces derniers jours, on compte notamment OneAPI. Il s'agit d'une nouvelle solution d'Intel pour faciliter la programmation sur différents processeurs : CPU (principal), GPU (graphique), FPGA (processeur reprogrammable) ou encore accélérateur pour l'apprentissage automatique. L'idée est d'avoir un seul code qui utilise OneAPI et de le faire fonctionner sur tout accélérateur.

OneAPI est donc une couche d'abstraction du matériel. Son objectif principal est de faciliter la programmation de matériel très divers, sans devoir entrer dans les détails de chacun : un CPU est très versatile et a peu de cœurs très rapides ; un GPU a énormément de cœurs assez lents ; un FPGA se programme à un niveau très proche de la machine, avec des portes logiques plutôt que des instructions ; un accélérateur pour l'apprentissage ne peut effectuer que quelques opérations bien spécifiques, mais très rapidement.


L'idée même de OneAPI fait rapidement penser à l'initiative HSA (heterogeneous system architecture) d'AMD, bien que centrée sur les CPU et GPU. OpenMP est une norme bien établie (une extension des langages C, C++ et Fortran) dans le monde des superordinateurs et ses dernières versions permettent de décharger l'exécution de portions de code sur un accélérateur — principalement un processeur graphique, mais aussi un FPGA, par exemple, selon les possibilités du compilateur utilisé. Un peu plus récent, OpenCL est un langage dérivé du C utilisé d'abord pour la programmation de GPU, mais aussi maintenant de FPGA (notamment avec des solutions Intel). Ce ne sont pas les seules solutions dans le domaine : on peut encore citer OpenACC, OpenHMPP, C++ AMP, par exemple.

Selon les informations actuellement disponibles, Intel pourrait rendre le code derrière OneAPI disponible sous licence libre courant 2019. Pour le moment, aucun code n'est disponible. Le côté abstrait de l'API devrait permettre des optimisations en fonction du matériel sous-jacent, mais Intel se focalise d'abord sur l'"intelligence artificielle" (sic), c'est-à-dire l'apprentissage profond.

Source : Intel Developing "oneAPI" For Optimized Code Across CPUs, GPUs, FPGAs & More.