Core Unit: nouveau framework de développement parallélisé

Mala

Membre junior
9 Mai 2006
65
7


Dans le cadre de la réécriture d'un ancien projet, je vous propose de découvrir un nouveau framework Objective-C.

Pourquoi?
La parallélisation des traitements est aujourd'hui une nécessité incontournable pour continuer à gagner en puissance de calcul. Multi-coeur, multiprocesseur, GPGPU sont autant de termes devenus courants en développement logiciel. Et, sans aller jusque là, nos interfaces graphiques toujours plus sexy nécessitent de plus en plus de traitements asynchrones pour que l'utilisateur ait toujours la sensation de maîtriser son logiciel et non de le subir. Bref, aujourd'hui l'utilisateur est au cœur de tout bon produit et la réactivité de ce dernier est considéré comme un dû.

Comment?
Avec Léopard puis Snow Léopard, et aujourd'hui Lion, Apple n'a cesse d'ouvrir les portes de la programmation parallèle avec la mise à disposition de technologies telles que: les queues d'opérations, les blocks, Grand Central ou bien encore OpenCL. Dans cet esprit, Core Unit propose une approche complémentaire mettant l'accent sur un élément à mon sens trop peu pris en compte: le développeur.

Quoi?
Core Unit est un framework Mac gratuit qui introduit un paradigme assez simple et relativement complet: des boîtes de traitement (CUUnitProcess) possèdent des propriétés, des entrées et des sorties (CUOutlet). Les boîtes de traitement sont autonomes (multithread) et se mettent en action dès que les données suffisantes sont disponibles en entrée. Un système de tuyaux (CUPipeline) permet d'acheminer les informations entre entrées et sorties.

Avis aux amateurs! Vos retours sont les bienvenus pour cette version Alpha.


Quelques détails techniques:
- API objective-C de haut niveau facile d'accès.
- Mise à profit de Grand Central à partir de Snow Léopard tout en restant compatible avec son prédécesseur Léopard.
- Compatible avec les technologies préexistantes sur Mac.
- Sécurisation des transmissions de données (une fois configurées, les entrées/sorties et les tuyaux s'assurent eux même que les types d'objets circulant sont cohérents).
- Parallélisation par sérialisation en connectant des unités de traitement entre elles via des tuyaux de communication.
- Parallélisation simple ou massive (génération automatique de clones permettant à une unité de traitement de se multiplier d'elle même lorsqu'un flot de données est disponible en entrée).
- Les tuyaux de communication peuvent être branchés aux connections de manière multiples (plusieurs tuyaux sur une même entrée ou une même sortie) permettant ainsi de mettre en place des mécanismes complexes et parfaitement sécurisés.
- Notification automatique des données traitées et envoyées vers les sorties via un simple mécanisme target/action. Cette fonctionnalité s'avère très pratique pour récupérer au niveau du contrôleur de l'application les informations traitées.
- Gestion de macros avec export d'entrées/sorties et lecture/écriture sur disque.
- Gestion de plugins.