+ Répondre à la discussion Actualité déjà publiée

Discussion: Du neuf sur Julia 0.7

  1. #1
    Responsable Qt


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherches
    Inscrit en
    août 2008
    Messages
    23 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherches
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 23 072
    Points : 135 536
    Points
    135 536

    Par défaut Du neuf sur Julia 0.7

    Du neuf sur Julia 0.7
    Après la réécriture du moteur d'optimisation, les fonctionnalités du langage seront prêtes pour la 1.0

    Julia, le langage de programmation orienté calcul scientifique moderne (aussi simple à utiliser que Python ou MATLAB, aussi performant que Fortran ou C++), n’est pas un grand habitué du respect des dates : l’arrêt des fonctionnalités pour la version 1.0 était prévu pour la mi-décembre… mais ce n’est toujours pas le cas à la mi-mars ! Comme depuis longtemps, cette version est annoncée pour “bientôt” : pendant ce temps, les développeurs peaufinent le langage et son environnement, pour qu’il soit aussi agréable que possible dès le premier jour de la 1.0. C’est aussi pour cela que la version 0.7 sortira plus tôt : elle contiendra toutes les nouveautés de la 1.0, avec quelques couches de compatiblité avec les précédentes versions.

    Un très gros point bloquant pour le moment est la réécriture complète de l’optimiseur de Julia. En effet, pour atteindre un très haut niveau de performance, l’implémentation du langage utilise un moteur de compilation très performant (LLVM, aussi derrière Clang ou Flang), couplé à une série de passes d’optimisation spécifiques à Julia. Les dernières versions de Julia ont profondément modifié certains aspects du système de type, notamment pour gérer les valeurs manquantes dans les tableaux de données : au lieu d’un type spécifique, elles sont maintenant représentées par une union (soit rien, soit une valeur d’un type donné). De plus, le protocole des itérateurs change complètement, notamment pour être plus simple à implémenter : il se réduit à une fontion iterate de l’état courant, qui renvoie soit rien (s’il n’y a plus d’élément suivant), soit un nouvel état et la valeur associée — soit le même genre d’union que pour les valeurs manquantes. Cependant, la passe d’optimisation précédente était incapable de générer du code décemment rapide pour ces cas particuliers : pour garder une bonne performance, la réécriture était nécessaire.

    Ce retard dû à l’optimiseur laisse du temps pour travailler sur d’autres points, notamment la gestion des tableaux. D’autres points restent toujours en suspens : moins importants (ils ne risquent pas de casser du code existant), ils pourront être intégrés par la suite, dans le cycle de vie de Julia 1.x. La vitesse de compilation en fait partie.

    La gestion des paquets est aussi un chantier pour la première version stable à long terme de Julia. Elle est actuellement prise en charge par Pkg2, un utilitaire développé du temps de Julia 0.1 et qui commence à montrer ses limites : par exemple, pour les dépendances, il n’est possible que d’indiquer des dépendances dures. Impossible de représenter une dépendance à l’un d’une série de paquets (on souhaite simplement qu’au moins un des paquets de cette liste soit installé) ou des fonctionnalités conditionnelles (activer certaines fonctionnalités d’un paquet quand un autre est installé). La principale barrière au déploiement de la nouvelle version du gestionnaire de paquets, la bien nommée Pkg3, est qu’elle n’est compatible qu’avec les préversions actuelles de Julia 0.7… et que peu de paquets sont compatibles. Il manque aussi l’expressivité des versions requises pour l’installation d’un paquet (au moins telle version jusque telle autre en excluant une troisième, par exemple). Énormément d’architecture est déjà en place, comme la conversion automatique des descriptions de paquets au nouveau format : le grand jour, il sera possible de proposer automatiquement à tous les projets enregistrés dans le gestionnaire de paquets une description au nouveau format.

    Sources : 1.0 progress/status, Pkg3 plan and status.
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions), HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Membre actif Avatar de onilink_
    Profil pro
    Inscrit en
    juillet 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : France

    Informations forums :
    Inscription : juillet 2010
    Messages : 85
    Points : 285
    Points
    285

    Par défaut

    J'aimerais bien voir les benchmarks avec C++, car ça m'étonne.
    Surtout que sur le site officiel y a pas C++, mais C, et avec une version du compilateur assez vielle: https://julialang.org/benchmarks/
    Des tutos de pixel art: https://twitter.com/OniMille

  3. #3
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    décembre 2011
    Messages
    1 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : décembre 2011
    Messages : 1 209
    Points : 3 123
    Points
    3 123
    Billets dans le blog
    12

    Par défaut

    Salut @onilink_,

    Le fait d'obtenir de meilleurs performances par rapport à du C ou C++ ne doit pas forcément surprendre, il suffit de mettre en avant les algorithmes où la techno que tu souhaites mettre en valeur s'en sort le mieux (et puis rien ne dit que Julia ne triche pas avec le garbage collector ). J'aurais bien aimé voir le code source développé pour chacun de ces tests, tu sais où on peut les trouver ?

    A+
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Mon profil Developpez | Mon profil Linkedin | Mon site : https://gokan-ekinci.appspot.com

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2017
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2017
    Messages : 257
    Points : 1 066
    Points
    1 066

    Par défaut

    Citation Envoyé par Gugelhupf Voir le message
    Salut @onilink_,

    Le fait d'obtenir de meilleurs performances par rapport à du C ou C++ ne doit pas forcément surprendre, il suffit de mettre en avant les algorithmes où la techno que tu souhaites mettre en valeur s'en sort le mieux (et puis rien ne dit que Julia ne triche pas avec le garbage collector ). J'aurais bien aimé voir le code source développé pour chacun de ces tests, tu sais où on peut les trouver ?

    A+
    https://github.com/JuliaLang/Microbenchmarks

    D'où ça vient que Julia est plus performant que C ou C++ ? Pour avoir pas mal utilisé Julia et un peu fréquenté sa communauté, j'ai plutôt observé et entendu que Julia était environ 30% plus lent (pour un effort d'optimisation raisonnable).

  5. #5
    Membre actif Avatar de onilink_
    Profil pro
    Inscrit en
    juillet 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 26
    Localisation : France

    Informations forums :
    Inscription : juillet 2010
    Messages : 85
    Points : 285
    Points
    285

    Par défaut

    Citation Envoyé par SimonDecoline Voir le message
    https://github.com/JuliaLang/Microbenchmarks

    D'où ça vient que Julia est plus performant que C ou C++ ? Pour avoir pas mal utilisé Julia et un peu fréquenté sa communauté, j'ai plutôt observé et entendu que Julia était environ 30% plus lent (pour un effort d'optimisation raisonnable).
    Dans la première ligne de la news on a "aussi simple à utiliser que Python ou MATLAB, aussi performant que Fortran ou C++" et dans les benchs officiels quelques tests sont sensés être plus rapides qu'en C.
    Merci pour le lien en tout cas, je ne vois pas de C++ et ça donne une meilleur idée sur les tests.

    @Gugelhupf
    J'ai un peu pensé a la même chose sur le coup, reste a faire les tests soit même
    Bon après je ne suis pas utilisateur de Julia, mais connaissant un peu les principe du langage ça me paraissais très étonnant.
    On peut pas avoir le beurre et l'argent du beurre, même s'il existe un juste milieu intéressant.
    Des tutos de pixel art: https://twitter.com/OniMille

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    janvier 2012
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : janvier 2012
    Messages : 308
    Points : 824
    Points
    824

    Par défaut

    De toute façon Julia a été pensé comme successeur de langages comme R ou MATLAB desquels elle reprends certains principes, et qu'elle n'a aucun mal à surclasser au niveau niveau perfs (avec facteur 100 facile).

    Après que certains devs C/C++ s'intéressent à Julia je le comprends aussi, mais je ne suis pas sur que le choix entre les deux technologies se fasse sur les 30% de différence.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2017
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2017
    Messages : 257
    Points : 1 066
    Points
    1 066

    Par défaut

    Citation Envoyé par onilink_ Voir le message
    Dans la première ligne de la news on a "aussi simple à utiliser que Python ou MATLAB, aussi performant que Fortran ou C++"
    Oui, c'était bien le sens de ma question car ce que j'ai vu de la communauté Julia n'est pas aussi catégorique : les gens parlent plutôt de "30% plus lent que C++" ou de "performances approchant C++".

    Citation Envoyé par onilink_ Voir le message
    et dans les benchs officiels quelques tests sont sensés être plus rapides qu'en C.
    Il y a effectivement 2 tests plus rapides et aussi 3 tests beaucoup plus lents, et ce ne sont que des micro-benchmarks.

    Citation Envoyé par onilink_ Voir le message
    Bon après je ne suis pas utilisateur de Julia, mais connaissant un peu les principe du langage ça me paraissais très étonnant.
    On peut pas avoir le beurre et l'argent du beurre, même s'il existe un juste milieu intéressant.
    Quels sont ces "principes" qui invalident ce que prétend la communauté Julia (et que j'ai moi-même observé sur plusieurs projets) ? Parce que l'argument du beurre, c'est moyennement convainquant.

Discussions similaires

  1. Du neuf sur les interfaces avec Java 8
    Par Mickael Baron dans le forum Langage
    Réponses: 15
    Dernier message: 23/02/2014, 12h14
  2. Réponses: 5
    Dernier message: 24/11/2011, 09h44
  3. Réponses: 0
    Dernier message: 03/08/2011, 23h53
  4. Outlook Express sur Neuf
    Par faressam dans le forum Outlook Express / Windows Mail
    Réponses: 6
    Dernier message: 07/11/2006, 23h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo