Core Unit: un nouveau framework pour le développement parallélisé.

MalaMala Membre, Modérateur
06:12 modifié dans Vos applications #1
Certains d'entre vous (les vieux de la vieille) ont peut être mémoire d'un petit ovni baptisé SAM que je vous avais présenté ici même à  titre de preview en 2006. Après avoir été contraint de le délaisser pour un projet de plus grande envergure, j'ai repris son développement fin 2009. Les technologies d'Apple ayant pas mal évoluées depuis 2006, j'avais décidé de le réécrire entièrement. Une première pierre de l'édifice arrive aujourd'hui tranquillement à  maturité. C'est donc avec un grand plaisir que je vous présente "Core Unit" le nouveau noyau de SAM.

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 coe“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.

Alors avis aux amateurs...  :p
http://www.coreunit.eliotis.com

Réponses

  • MalaMala Membre, Modérateur
    octobre 2011 modifié #2
    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.
  • LeChatNoirLeChatNoir Membre, Modérateur
    06:12 modifié #3
    La classe !
    o:) o:) o:) o:)
  • Paisible.frPaisible.fr Membre
    06:12 modifié #4
    Alors là  RESPECT  o:) !
    Du grand art, avec la documentation Doxygen, etc... Bravo  :D
  • zoczoc Membre
    octobre 2011 modifié #5
    Il manque juste la licence d'utilisation  ;)  (Parce que royalty-free c'est bien, mais pas suffisant: A-t-on le droit de modifier le source, les modifications doivent-elles être publiées, etc...).

  • MalaMala Membre, Modérateur
    06:12 modifié #6
    Merci à  vous! 

    J'en suis encore à  me battre avec Doxygen pour intégrer le numéro de build subversion dans le nom de l'archive du framework. Pour le moment, je me suis résolu à  le mettre dans le pied de page avec la date de publication que je génère à  la volée avant le lancement de Doxygen.

    J'ai profité du week end pour ajouter 2 nouveaux exemples:
    - une recherche spotlight synchrone sans bloquer l'interface utilisateur.
    - une version modifiée de l'exemple d'Apple "IconCollection" appliquée aux fonds d'écran du système.
    D'autres plus poussés viendront par la suite.

    Il me reste à  finaliser les macros qui ne sont pas encore opérationnelles.  >:)

    Franck, tu as tout à  fait raison pour la licence. S'agissant d'un produit libre et non ouvert (pas Open Source) il faut que je m'en occupe. Si quelqu'un a mémoire d'une licence équivalente disponible sur la toile, je suis preneur.
  • devulderdevulder Membre
    06:12 modifié #7
    dans 1319455581:

    Merci à  vous! 

    J'en suis encore à  me battre avec Doxygen pour intégrer le numéro de build subversion dans le nom de l'archive du framework. Pour le moment, je me suis résolu à  le mettre dans le pied de page avec la date de publication que je génère à  la volée avant le lancement de Doxygen.

    J'ai profité du week end pour ajouter 2 nouveaux exemples:
    - une recherche spotlight synchrone sans bloquer l'interface utilisateur.
    - une version modifiée de l'exemple d'Apple "IconCollection" appliquée aux fonds d'écran du système.
    D'autres plus poussés viendront par la suite.

    Il me reste à  finaliser les macros qui ne sont pas encore opérationnelles.  >:)

    Franck, tu as tout à  fait raison pour la licence. S'agissant d'un produit libre et non ouvert (pas Open Source) il faut que je m'en occupe. Si quelqu'un a mémoire d'une licence équivalente disponible sur la toile, je suis preneur.


    Bonjour,

    Il manque juste dans les exemples, les exécutables cela permet de voir vite fait sans devoir tout recompiler.
  • MalaMala Membre, Modérateur
    06:12 modifié #8
    dans 1319456552:

    Il manque juste dans les exemples, les exécutables cela permet de voir vite fait sans devoir tout recompiler.

    Voilà  qui est fait.  :p

    J'en ai aussi profité pour mettre à  disposition la doc sous forme d'une archive zip et j'ai ajouté des templates pour Xcode 3 (bien sûr Apple a cassé la compatibilité des templates avec Xcode 4... J'ai plus qu'à  m'y coller).
Connectez-vous ou Inscrivez-vous pour répondre.