CSW-2019-I-40 – Support LLVM OpenMP sur processeur pluri-coeurs MPPA

Entreprise :

Kalray (Euronext Growth Paris —FR0010722819 —ALKAL) est le pionnier des processeurs pour les nouveaux systèmes intelligents. Véritable rupture technologique, les processeurs « intelligents » ont la capacité d’analyser à la volée, et de manière intelligente, une très grande quantité d’informations, de prendre des décisions et d’interagir en temps réel avec le monde extérieur. Ces processeurs intelligents seront largement déployés dans des secteurs en forte croissance tels que les réseaux de nouvelle génération (data centers intelligents) et les véhicules autonomes, ainsi que les équipements de santé, les drones et les robots. L’offre Kalray comprend aussi bien des processeurs que des solutions complètes (cartes électroniques et logiciels). Créé en 2008 en tant que spin-off du CEA (Commissariat à l’énergie atomique et aux énergies alternatives), Kalray sert des clients tels que des fabricants de serveurs, des intégrateurs de systèmes intelligents et des fabricants de produits grand public incluant les constructeurs automobiles.

Contexte / Description du Projet :

Kalray a développé un support runtime du langage OpenCL-C  pour son processeur many-cores MPPA.

Celui-ci permet le déploiement sur cible MPPA de noyaux de calculs écrits en OpenCL-C, autorisant ainsi un gain significatif en performance applicative. Ce runtime est optimisé pour permettre aux noyaux de calculs d’atteindre les performances crêtes du processor et de sa hiérarchie mémoire.

Dans un mode d’exécution spécifique, un noyau de calcul peut faire usage de directives OpenMP afin de permettre la parallélisation automatique de la charge de calcul. Ce support requiert un travail au niveau du compilateur, de son activation au flot de compilation, ainsi que le support de certaines primitives via une librairie dédiée (écrite en C).

Aujourd’hui, le support OpenMP est basé sur le compilateur GCC utilisant la libgomp. L’objectif du projet est de basculer ce support sur le compilateur LLVM, qui implémente un OpenMP très efficace et bénéficiant des dernières mises à jour du standard.

Le travail sera réalisé sur cible réelle (dernière génération du processeur MPPA), constitué de  80 cœurs, gravé en 16nm et dédié de façon non exhaustive à de l’IA, traitement d’image, traitement du signal, traitement de paquets réseau, etc…

Étapes/Objectifs :

Vous intégrerez l’équipe « CoreSW Low level », responsable du développement du runtime OpenCL. Votre mission sera de mettre en œuvre le support OpenMP dans notre flot de compilation LLVM (activation, écriture du support runtime, test, validation dans un contexte OpenCL).

Dans un deuxième temps, vous travaillerez à son optimisation et à l’évaluation des performances obtenues (benchmarking).

Compétences requises :

L’architecture du MPPA est très spécifique : cœurs VLIW, hiérarchie mémoire complexe, grand nombre de cœurs organisés en clusters, jeu d’instruction propriétaire. Vous devrez être en mesure de comprendre, analyser et débugger les noyaux de calculs à bas niveau (assembleur, transferts de données asynchrones, cohérence mémoire, synchronisations, etc..) Le debug se fera sur cible réelle via un GDB connecté par JTAG.

Par ailleurs, il vous faudra comprendre le flot de compilation LLVM et les phases liées à la génération de code spécifique OpenMP.

Enfin, le code sera écrit en C.

Compétences acquises à l’issue de la mission :

A l’issue de la mission, vous aurez acquis des compétentes rares dans la programmation bas niveau d’un processeur many-cores au jeu d’instruction propriétaire et à l’architecture spécifique. Vous maitriserez les techniques de debug bas niveau via GDB+Jtag, la programmation C bas niveau, Assembleur VLIW, etc…

Vous aurez également des compétence liées flot de compilation LLVM, à la génération de code, langage intermédiaire, etc..

Durée souhaitée :  6 mois

Localisation : Montbonnot Saint-Martin (proche de Grenoble)

Date de démarrage souhaitée : courant 2020

Compensation : stage rémunéré

 

Your Name (required)

Your Email (required)

Job reference number (required)

Your CV (required - 1MB max.)

Your cover letter (required - 1MB max.)

captcha

     By completing and sending this form, you consent to your data being collected by authorized Kalray personnel to process your request. For more information, please consult our privacy policy on personal data protection.

Read about Kalray’s privacy policy and personal data protection here.