programmer des systèmes parallèles hétérogènes par exemple à la fois un CPU multi-coeur et un GPU.

OpenCL (Open Computing Language) est la combinaison d'une API et d'un langage de programmation dérivé du C, proposé comme un standard ouvert par le Khronos Group. OpenCL est conçu pour programmer des systèmes parallèles hétérogènes comprenant par exemple à la fois un CPU multi-coeur et un GPU. OpenCL propose donc un modèle de programmation se situant à l'intersection naissante entre le monde des CPU et des GPU, les premiers étant de plus en plus parallèles, les seconds étant de plus en plus programmables. OpenCL distingue le processeur hôte (processeur central faisant office de chef d'orchestre) des devices (CPU, GPU, ou autre) dont la mission est d'exécuter des noyaux de calcul intensifs. OpenCL distingue donc l'application (écrite en C) tournant sur le processeur hôte et qui va appeler l'API OpenCL, des kernels qui sont programmés en OpenCL-C et dont la vocation est d'être exécuté sur les devices. OpenCL permet d'exprimer du parallélisme de tâche et du parallélisme de donnée (SPMD - Single Program Multiple Data) de manière hiérarchique. Un graphe de tâche peut être créé dynamiquement via l'API OpenCL. Chaque tâche peut être soit une unique instance d'un kernel (appelée task), soit de multiples instances d'un même kernel (appelé NDRange). Les NDRanges peuvent être de 1, 2 ou 3 dimensions. Chaque instance de kernel appartenant à un NDRange est appelée work-item. Le NDrange peut lui même être structuré en work-groups, ce qui permet aux work-items à l'interieur des work-groups de partager des données et de se synchroniser via des barrières.By TAATJENE

Comments

Popular Posts