Oui, c'est bien ce que je dis, la migration est lente. Si je me souviens bien, un CPU dans la norme DO est considéré comme valide sans plus de preuves que cela s'il est monocoeur et ne réorganise pas l'ordre des instructions… Ce qui est de plus en plus rare aujourd'hui.
Il n'y a rien de tel dans la norme. Elle est justement très peu technique et parle surtout de processus de fabrication. Le cpu typique est le powerPC 601 qui fait un peu d'out of order, il me semble.
Ce cas de figure n'est pas vraiment documenté dans les standards aéro, et ils ont globalement 20 ans de retard sur ce qui est considéré comme standard. Ce qui est un soucis pour introduire bien sûr des calculs plus puissants pour le contrôle de l'appareil.
Projet assez génial on dirait :) Pour moi votre difficulté serait de faire valider tout le runtime qui est vendu avec ce genre de machin. Cela peut être extrêmement complexe. Le pire est le compilateur. Comment prouver que ce qui est compiler est correct, si vous n'avez pas la description de l'assembleur qui va avec ?
Pour les compilo C, on est censé prouver que le compilo génère le bon code objet. Cela a dû se faire par relecture et traçabilité entre code ASM et code C, mais maintenant, cela doit pouvoir se faire avec des exemples de code C à compiler, puis ensuite, on dit que tout code sera issue de ces blocs de base. Mais avec les trucs proprio NVIDIA, je ne vois pas comment faire ça. Vous avez regardez les "array de cpu" comme ceux de Kalray ?
Je n'en suis pas sûr, quand je m'y étais un peu intéressé il semblait impossible de pouvoir (mathématiquement) faire le langage parfait qui puisse exprimer n'importe quel programme de manière assez simple et en garantir la preuve de son bon fonctionnement.
Mais non, je parle de formaliser la DO178, elle-même, pour inclure dans un langage toutes les étapes décrites dans la norme. Le compilateur ne ferait que vérifier la cohérence de l'ensemble des informations (type traçabilité spec<->code<->test<->couverture de test, vérification de la couverture, etc…).
Cela revient à faire un langage qui impose une spec, le teste, la traçabilité et des revues.
Pour info, j'ai fais uniquement du DAL A (code qui vole, générateur de donné, outils de validation). Les démonstrations formelles ne sont pas accepté, en DO178b, et commence à l'être en DO178c. Le problème principale est que l'outil de validation lui-même doit être écris en DAL A pour être accepté.
SCADE est souvent utilisé dans les fadec, mais il n'y a aucune "preuve". Le langage est formel dans le sens ou il ne comporte pas d’ambigüité. Et le compilo est certifié.
D'ailleurs pour les DAL >= C, il devient difficile d'employer des CPU multi-cœurs ou avec un GPU moderne tellement que c'est contraignant vis à vis des normes.
Cela commence tout doucement. La première version de vxworks multicpu, tournait avec 2 instances d'OS, comme si il y avait 2 ordinateurs. C'est très compliqué de calculer le temps d’exécution avec ce genre de machine (ex: il y a une perte de perf de 20% sur les 2 cpu à cause de l'usage du bus mémoire). Si tu prends des marges de fou, avoir 2 cpu n'a plus trop d’intérêt.
Mais la mode IMA, c'est de tout "virtualiser" plus ou moins statiquement. Leur rêve est d'avoir des racks standards et de mettre les applications sur les ordinateurs fonctionnelles.
Concernant les GPU, je n'ai pas encore vu de code certifié. En graphique, il utilise de l'openGL SC, genre d'opengl 1.0, je crois que la dernières version a simplement pris l'api opengl ES vu comme plus propre. Il n'y a pas de shader la-dedans (il faudrait qualifier le compilateur…).
A part ça, je suis persuadé qu'il doit être possible de pouvoir créer un langage qui respecte toutes les contraintes de la DO178b, de le bootstraper et ensuite de pouvoir écrire plus facilement des applications qualifié. Mais cela va au-delà du code pure, car il faut gérer la documentation (les revues de code humaine, les descriptions api, le rapport d'architecture), les versions, les tests (et leur couverture), la traçabilitée.
Globalement la qualité se résume souvent à un cahier de tests, avec des tests unitaires ou fuzzing sans oublier la revue de code et l'intégration continue. Quand tu as ça, déjà, tu es content.
Tu voudrais quoi de plus ? C'est déjà pas mal. Dans l'aéronautique, ils n'ont pas de fuzzer, mais ont des revues de testes.
Typiquement en aéronautique cela sera exigé / recommandé pour les DAL A ou B, mais pas au delà.
Tu fais références à quoi ?
D'autant que si ton programme a un lien fort avec ton matériel (cas du noyau ou d'un logiciel embarqué), il faut aussi formaliser le matériel et cette liaison. Est-ce que des processeurs ou GPU modernes bénéficient d'un tel travail ? J'en doute.
Il te répond avec un langage qui fait cela pour du code sur GPU, et tu réponds que ça ne te parle pas ? C'est quoi le problème ? Qu'ils utilisent la lettre \lambda pour définir des fonctions ? Qu'ils écrivent reduce et non fold ?
Attention ne de pas tout mélanger. Le journal est a propos de la qualité des langages, de leur "ergonomie". Un des principes de l'ergonomie est le principe de "moindre surprise". Trouver un langage utilisant des caractères qui ne sont même pas présent sur un clavier, c'est "surprenant".
A force d'explication, personnellement, je comprends le lien entre lambda/map/fold/reduce, mais je pensais plus général, à l'acceptation du langage dans un cadre bien plus large.
Je ne suis pas sûr que la concision soit le principal moyen pour arriver à la "clarté".
Je conseil très fortement la même chose pour du code C. Utiliser une moyenne n'a pas beaucoup de sens. J'ai remarqué que il faut 3 exécutions de la boucle pour atteindre un palier bas, pour remplir la mémoire cache. Et évidement, un code ne se comporte pas pareil avec des données en cache ou non. Donc, optimiser un code en dehors
de son cas d'usage réel peux être un mauvais plan.
N'utilisez plus un seul chiffre, mais des courbes !
C'est très courant, surtout dans les boîtes qui n'ont en fait pas de problème technique difficile à résoudre et n'ont donc pas vraiment besoin d'une branche R&D qui fait du vrai boulot.
La R&D, c'est surtout du 'D' et pas beaucoup de recherche.
(Il y a aussi des boîtes avec de la vraie R&D. Quand on discute avec les gens de la R&D d'EDF par exemple, on sent qu'ils sont très câlés sur leurs sujets.)
Et se sont souvent des docteurs, et des boites de la taille d'EDF, il n'y a pas 50.
Je ne crois pas avoir vu de boites faisant de la recherche sans docteur dans le domaine.
Halide est un tout nouveau langage, c'est compliqué de demander à un gros projet comme Cimg de tout recoder son C++ dans un nouveau truc, sachant que l’auto-vectorisation fonctionne, et openMP aussi.
Déjà, il y a des gens dont c'est le métier, c'est appelé la R&D, Recherche et Développement. Les ingénieurs R&D sont (en théorie) là pour faire le transfert entre la recherche et l'industrie.
J'en suis un. Mais non, c'est pas simple du tout. Il n'y a pas de contact avec la recherche, ni le même vocabulaire (d'où ma proposition de stage de fin d'année en + du stage en entreprise) .
Il faut être prêt à entrer dans une boucle d'itération sur le moyen/long terme, avec des choses qui marchent partiellement au milieu.
En face, tu as des devs qui font une release avec 1000 commits "corrects" avec un niveau de qualité assez élevé toutes les 6 semaines sur un code de 20 Millions de lignes. Tu imagines la quantité de travail que cela représente en intégration.
Je pense que si c'est difficile de convaincre Linus, cela doit être plus facile de le faire pour les responsables de sous système qui travaillent pour Google, Red Hat, Oracle, Sony ou Intel, voir pour un fondeur comme TI, ST, Qualcomm, ou Infineon.
Mozilla est dans dans une pente descendante, elle perd des utilisateurs et à rater le mobile. Elle recherche de l'aide autour d'elle. Linux a l'inverse est présent absolument partout, sauf dans le desktop Windows et le monde Apple.
Non mais attendre qu'une société (créée à la base par des chercheurs mais développée comme un effort industriel) donne des rapports de bugs tout cuits à analyser, faire quelques changements et puis râler contre les faux positifs, ce n'est pas ce que j'appelle un précédent.
Et pourtant, cela a été déclaré comme une perte de temps par certain dev.
des classes entières de bugs possibles du code du noyau (use-after-free, accès à de la mémoire non initialisée, usage incorrect des verrous…). Tu écris comme si l'utilité de ce résultat final restait à démontrer, ce qui me semble complètement fou
Pour ton exemple, valgrind supporte (en dynamique) la détection des 2 premiers type de bug, et Sparse la dernière. Ce qui reste à démontrer est que l'usage de ces techniques demandent moins d'énergie pour corriger les bugs que les techniques actuelles (phase de mise au point inclus)
Encore une fois, le principe de la recherche n'est pas qu'on développe des programmes C pour dominer le monde, et qu'on va se faire des outils d'analyse statique pour nos propres besoin. C'est de comprendre les problèmes difficiles à résoudre qui affectent tout le monde, et d'essayer de les étudier dans un cadre simplifié, qui permet de se concentrer sur les problèmes de fond.
Tous les outils BSD proviennent bien de l'université Berkeley à l'origine ? Les outils GNU dont GCC ont été codé part RMS qui bossait pour le MIT. Idem pour Spice, le simulateur de circuit analogique. Donald Knuth de tex (latex) bossait pour Stanford. Apache provient de patch de NCSA httpd de l'Université de l'Illinois, idem pour Mosaic, le 1er navigateur internet. BIND (dns) a été conçu a Berkeley.
Tous ces logiciels sont repris par des entités plus ou moins commerciales, mais on été directement utile sous leur 1er forme.
Encore une fois, ce n'est pas le métier des chercheurs que de développer une interface facile d'accès à leur travail.
Vous avez pourtant des chercheurs en ergonomie.
Si quelqu'un veut prendre ça et en faire une bibliothèque grand public,
Qui pourrait faire ça ? C'est ça qui me pose le plus de problème. Qui est assez doué pour comprendre le "langage de la recherche" et en même temps en faire un produit industriel.
C'est un peu facile de ta part : tu commences par dire qu'il n'y a pas de recherche sur des langages efficaces (que le milieu de recherche n'a pas les priorités qui t'intéressent), et maintenant je te montres qu'il y en a et ta réponse c'est que c'est trop de la recherche !
Non, pas trop de la recherche, mais trop frustrant de ne pas pouvoir facilement s'en servir simplement parce que le formalisme retenu est celui des maths et non celui de l'informatique. Un tel DSL serait énorme pour un projet comme The Gimp ou CIMG, mais je ne suis pas sûr qu'ils aient la compétence pour le mettre en œuvre.
Tu voudrais un truc tout cuit, mieux que l'existant, déjà prêt pour être utilisé par tout le monde, et puis un café aussi ?
Et sans sucre s'il te plait.
Il y a une incompréhension de fond sur la façon dont les universitaires travaillent, quel est leur but.
Oui et non. Je comprend ce que tu veux dire. Mais en même temps, une des mission de la recherche est de transmettre ce savoir acquis. Si la différence de savoir augmente entre les ingénieurs et les chercheurs, c'est bien qu'il manque un rouage de transmission. (Peut-être qu'il faudrait dans les écoles d'ingénieur, en plus des stage en entreprise, des stages en labo de recherche.)
Je trouve très frustrant d'avoir autant de mal à lire les papiers de recherche en informatique, je ne me considère pas pourtant comme un mauvais ingénieur. Si les ingénieurs moyens sont incapables de comprendre vos publications, comment la transmission pourrait se faire ?
Et ne me parle pas de je ne sais quel grade doctoral : j'ai le même grade universitaire qu'un ingénieur, à savoir un bac+5.
Je suis ingénieur, et je n'avais pas entendu parler de Lambda avant de faire un dea d'info. C'est peut être un choix de mon école, mais je n'ai pas cette impression-là.
Autant le code python me parle (je ne connais pas du tout ce langage), autant le DSL ne me parle pas.
déployer de l'analyse statique sérieuse sur les drivers et le code du kernel ne donne pas, à long terme, un avantage clair sur la qualité logicielle.
Cela dépend ce que tu appelles "long terme", car tu peux passer un temps infini sur les faux positifs.
Je ne vois pas pourquoi ce serait incompatible avec "l'Open Source" de travailler avec des universitaire
Je n'ai pas dis ça. J'ai dis qu'il fallait démontrer la supériorité d'une solution avant que celle-ci soit mis en œuvre.
C'est idiot, ce n'est pas réaliste pour des universitaires de développer un produit fini (ce n'est pas leur rôle et leur métier) sans savoir s'il y a une volonté pour l'utiliser derrière.
C'est vrai pour n'importe quel développement. Et c'est exactement pour cette raisons que la plus part des outils libres sont directement utile à leurs auteurs, il est très rare d'avoir de bon outils libre, uniquement utile à d'autres.
Dans le cas du noyau, cela serait bosser dessus, dans le but de faire un outil utile pour vous, comme exemple de passage à l'échelle.
C'est bête de ne pas vouloir entendre qu'il faut de vrais efforts des deux côtés.
Il faut voir le gain de leur coté, qui n'est pas évident à moyen terme. Il faudrait peut être organiser une conférence sur les ponts entre recherche et l'open source, pour que les gens se rencontrent, pour montrer les téchno de recherche, montrer les interactions qui marchent.
Concernant Astrée, j'imagine que c'est le genre d'outil qui peut généré un paquet de faux positif. Par exemple, si il détecte trop "simplement" la division. Sparse ne génère pas de faux positif si je me rappelle bien. Si il ne fonctionne bien qu'avec un code généré par SCADE, il y a une gros soucis (sachant que SCADE génère un C restreint ayant déjà beaucoup de bonnes propriétés).
Coverity propose une analyse de code open source. ( https://www.synopsys.com/software-integrity/resources/analyst-reports/open-source-software-scan-report.html ) Cela a été à la mode pendant un moment, puis les devs en ont eu marre des faux positifs dont la corrections pouvaient entrainée des problèmes subtiles (genre générateur de nombre aléatoire de Debian). Je ne connais pas la différence avec Astrée, mais Sparse a été développé ensuite.
Encore une fois, pour ça il faut une culture volontaire du côté des développeurs, et elle manque pour le noyau Linux (alors qu'elle est présente pour Windows, en partie parce que Microsoft n'a pas laissé le choix à ses développeurs).
Le milieu Open Source ne fonctionne pas comme ça. Celui qui apporte une nouvelle techno doit démontrer sa supériorité pour convaincre. Dire "venez avec moi, cela va être génial", cela fait 20 ans, que les développeurs Kernel l'entendent tous les jours. Et au dernière nouvelles les drivers Windows ne fonctionnent pas mieux que les drivers Linux.
En gros, c'est à la communauté de la recherche de prouver que leur approche est meilleur, si vous considérez que les dev sont bêtes parce qu'ils ne vous écoutent pas, c'est mal barré.
Par exemple le code pour décrire une multiplication matrice/vecteur (GEMV en BLAS) dans ce langage est
L'idée est sympa. J'imagine que les usagers de ce genre de DSL sont docteur en mathématique pour le calcul linéaire. Je ne vois pas qui d'autres pourraient s'en servir vu le formalisme mathématique retenu.
Mes tests remontent à loin, mais typiquement dd était bien plus rapide que cp, je crois que j'avais surtout vu cela avec un raid 0, pour saturer la bande passante, il fallait des gros buffers.
comme le fait le vénérable cp, pourquoi fast-copy serait-il plus rapide ?
Pour avoir déjà fait le teste, j'imagine que c'est à cause de la taille de buffers. Lire puis écrire des morceaux de 16 Mo est beaucoup plus rapide qu'avec des morceaux de 8 Ko, surtout avec un HD.
Si tu veux des références plus précises, peux-tu en dire plus sur ce que tu cherches ? (Quel genre de code ?)
Un langage de haut niveau qui va vite.
En général, les langages "rapides" laissent tout le boulot au codeur (asm, c, c++, fortran). C++ avec les templates proposent un moyen de mettre la complexité en library avec le prix d'une grosse difficulté et des messages d'erreur abscons (et donc des bugs). Ce genre de langage trop bas niveau fournis un code rapide sur une machine, mais qui peut être plus lent sur un autre (intel vs amd ou vs ARM), multicore ou pas, SIMD ou pas.
Les compilateurs C/C++ vont très loin dans les optimisations mais sont bridés par le langage lui-même : gestion mémoire basique et explicite (il faut une grande rigueur pour gérer des pools de mémoires et éviter la fragmentation), layout mémoire fixée dans les structures (optimisation par structures de tableaux au lieu de tableaux de structures impossible), code IEE754 immodifiable (sans changer le résultat final), pointeur trop générique qui nécessite un gros travail "d'analyse de vie" pour éviter l'aliasing. Le SIMD est de mieux en mieux géré, mais le multicore reste complexe sauf avec openMP. Par contre utiliser directement les GPU restent encore très expérimental : il suffit de voir la tronche du code opencl avec des string à envoyer au driver de la carte graphique !
Rust permet une bien meilleur gestion mémoire, mais compile moins bien que gcc. "tensor flow" semble pouvoir décrire du code rapide pour plusieurs architectures très différentes, mais cela n'est pas un langage.
On peut aussi parler des optimisations par propagation de constantes qui se limitent aux littéraux basiques, mais pas au 'string' (utile pour les regexp ou même un code SQL embarqué), et je ne parle pas de container constant (AST, lecture de fichier externe, genre configuration en XML, image embarquées ou même un DSL quelconque).
[^] # Re: l'assignation ne va jamais venir
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Seconde mise en demeure pour l'association LinuxFr. Évalué à 5.
J'ai l'impression que les juges donnent rarement plus de 700 à 1000€, on est très loin des frais réels. Je ne comprends pas pourquoi d'ailleurs.
"La première sécurité est la liberté"
[^] # Re: l'assignation ne va jamais venir
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Seconde mise en demeure pour l'association LinuxFr. Évalué à 5.
~ 1500€ pour une première instance. Si cela dure avec appel, expertise et autre, cela peut monter à 5/10 k€.
"La première sécurité est la liberté"
[^] # Re: Dommages
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Seconde mise en demeure pour l'association LinuxFr. Évalué à 4.
Ce n'est pas une contrefaçon d'une œuvre qui n'est pas orignal publié avant son propre billet (si on en croit un autre commentaire)
"La première sécurité est la liberté"
[^] # Re: on vit une époque formidable
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Comment bloquer 280M de dollars en éther . Évalué à -8.
C'est le début d'etherum. Les avions n'ont pas commencé à voler avec peu de carburant pour transporter 150 personnes à 800 hm/h à 20 000 km.
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 3.
Il n'y a rien de tel dans la norme. Elle est justement très peu technique et parle surtout de processus de fabrication. Le cpu typique est le powerPC 601 qui fait un peu d'out of order, il me semble.
Projet assez génial on dirait :) Pour moi votre difficulté serait de faire valider tout le runtime qui est vendu avec ce genre de machin. Cela peut être extrêmement complexe. Le pire est le compilateur. Comment prouver que ce qui est compiler est correct, si vous n'avez pas la description de l'assembleur qui va avec ?
Pour les compilo C, on est censé prouver que le compilo génère le bon code objet. Cela a dû se faire par relecture et traçabilité entre code ASM et code C, mais maintenant, cela doit pouvoir se faire avec des exemples de code C à compiler, puis ensuite, on dit que tout code sera issue de ces blocs de base. Mais avec les trucs proprio NVIDIA, je ne vois pas comment faire ça. Vous avez regardez les "array de cpu" comme ceux de Kalray ?
Mais non, je parle de formaliser la DO178, elle-même, pour inclure dans un langage toutes les étapes décrites dans la norme. Le compilateur ne ferait que vérifier la cohérence de l'ensemble des informations (type traçabilité spec<->code<->test<->couverture de test, vérification de la couverture, etc…).
Cela revient à faire un langage qui impose une spec, le teste, la traçabilité et des revues.
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 3.
Pour info, j'ai fais uniquement du DAL A (code qui vole, générateur de donné, outils de validation). Les démonstrations formelles ne sont pas accepté, en DO178b, et commence à l'être en DO178c. Le problème principale est que l'outil de validation lui-même doit être écris en DAL A pour être accepté.
SCADE est souvent utilisé dans les fadec, mais il n'y a aucune "preuve". Le langage est formel dans le sens ou il ne comporte pas d’ambigüité. Et le compilo est certifié.
Cela commence tout doucement. La première version de vxworks multicpu, tournait avec 2 instances d'OS, comme si il y avait 2 ordinateurs. C'est très compliqué de calculer le temps d’exécution avec ce genre de machine (ex: il y a une perte de perf de 20% sur les 2 cpu à cause de l'usage du bus mémoire). Si tu prends des marges de fou, avoir 2 cpu n'a plus trop d’intérêt.
Mais la mode IMA, c'est de tout "virtualiser" plus ou moins statiquement. Leur rêve est d'avoir des racks standards et de mettre les applications sur les ordinateurs fonctionnelles.
Concernant les GPU, je n'ai pas encore vu de code certifié. En graphique, il utilise de l'openGL SC, genre d'opengl 1.0, je crois que la dernières version a simplement pris l'api opengl ES vu comme plus propre. Il n'y a pas de shader la-dedans (il faudrait qualifier le compilateur…).
A part ça, je suis persuadé qu'il doit être possible de pouvoir créer un langage qui respecte toutes les contraintes de la DO178b, de le bootstraper et ensuite de pouvoir écrire plus facilement des applications qualifié. Mais cela va au-delà du code pure, car il faut gérer la documentation (les revues de code humaine, les descriptions api, le rapport d'architecture), les versions, les tests (et leur couverture), la traçabilitée.
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 3.
Tu voudrais quoi de plus ? C'est déjà pas mal. Dans l'aéronautique, ils n'ont pas de fuzzer, mais ont des revues de testes.
Tu fais références à quoi ?
Il n'y a pas d'étude formelle, mais il y a une norme à respecter https://fr.wikipedia.org/wiki/DO-254
"La première sécurité est la liberté"
[^] # Re: Trop génial ! Une base de données légale.
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Atelier Barcamp I. A. & Droit le 7 novembre 2017 à Paris. Évalué à 3.
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 4.
Attention ne de pas tout mélanger. Le journal est a propos de la qualité des langages, de leur "ergonomie". Un des principes de l'ergonomie est le principe de "moindre surprise". Trouver un langage utilisant des caractères qui ne sont même pas présent sur un clavier, c'est "surprenant".
A force d'explication, personnellement, je comprends le lien entre lambda/map/fold/reduce, mais je pensais plus général, à l'acceptation du langage dans un cadre bien plus large.
Je ne suis pas sûr que la concision soit le principal moyen pour arriver à la "clarté".
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 3.
Non, elle ne s'en moque pas. Elle n'est simplement pas persuadé du tout que les chercheurs peuvent l'aider sur la question.
"La première sécurité est la liberté"
[^] # Re: microbenchmark
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Optimisation, microbenchmark et compilation Just In Time : quand 1 + 1 ne font pas 2. Évalué à 5.
Sur un microbenchmark de memcpy, il y avait un facteur x10 entre cold/hot start.
Sur un code de calcul, de mémoire, il y avait une augmentation de 30% des perfs au 3ième tour.
"La première sécurité est la liberté"
# microbenchmark
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Optimisation, microbenchmark et compilation Just In Time : quand 1 + 1 ne font pas 2. Évalué à 6. Dernière modification le 03 novembre 2017 à 16:49.
Je conseil très fortement la même chose pour du code C. Utiliser une moyenne n'a pas beaucoup de sens. J'ai remarqué que il faut 3 exécutions de la boucle pour atteindre un palier bas, pour remplir la mémoire cache. Et évidement, un code ne se comporte pas pareil avec des données en cache ou non. Donc, optimiser un code en dehors
de son cas d'usage réel peux être un mauvais plan.
N'utilisez plus un seul chiffre, mais des courbes !
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 2.
La R&D, c'est surtout du 'D' et pas beaucoup de recherche.
Et se sont souvent des docteurs, et des boites de la taille d'EDF, il n'y a pas 50.
Je ne crois pas avoir vu de boites faisant de la recherche sans docteur dans le domaine.
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 3.
Bon, on dirait que c'est une lib C++, cela simplifie beaucoup de chose pour s'intégrer.
https://github.com/halide/Halide/wiki/Static-vs.-JIT-compilation
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 3.
Halide est un tout nouveau langage, c'est compliqué de demander à un gros projet comme Cimg de tout recoder son C++ dans un nouveau truc, sachant que l’auto-vectorisation fonctionne, et openMP aussi.
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 3.
J'en suis un. Mais non, c'est pas simple du tout. Il n'y a pas de contact avec la recherche, ni le même vocabulaire (d'où ma proposition de stage de fin d'année en + du stage en entreprise) .
En face, tu as des devs qui font une release avec 1000 commits "corrects" avec un niveau de qualité assez élevé toutes les 6 semaines sur un code de 20 Millions de lignes. Tu imagines la quantité de travail que cela représente en intégration.
Je pense que si c'est difficile de convaincre Linus, cela doit être plus facile de le faire pour les responsables de sous système qui travaillent pour Google, Red Hat, Oracle, Sony ou Intel, voir pour un fondeur comme TI, ST, Qualcomm, ou Infineon.
Mozilla est dans dans une pente descendante, elle perd des utilisateurs et à rater le mobile. Elle recherche de l'aide autour d'elle. Linux a l'inverse est présent absolument partout, sauf dans le desktop Windows et le monde Apple.
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 3. Dernière modification le 02 novembre 2017 à 15:36.
Aurais-tu la page ou l'on peut avoir ce compilateur DSL, je n'arrive pas à le trouver ?
c'est ça ? http://www.lift-project.org/
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 3.
Et pourtant, cela a été déclaré comme une perte de temps par certain dev.
Pour ton exemple, valgrind supporte (en dynamique) la détection des 2 premiers type de bug, et Sparse la dernière. Ce qui reste à démontrer est que l'usage de ces techniques demandent moins d'énergie pour corriger les bugs que les techniques actuelles (phase de mise au point inclus)
Tous les outils BSD proviennent bien de l'université Berkeley à l'origine ? Les outils GNU dont GCC ont été codé part RMS qui bossait pour le MIT. Idem pour Spice, le simulateur de circuit analogique. Donald Knuth de tex (latex) bossait pour Stanford. Apache provient de patch de NCSA httpd de l'Université de l'Illinois, idem pour Mosaic, le 1er navigateur internet. BIND (dns) a été conçu a Berkeley.
Tous ces logiciels sont repris par des entités plus ou moins commerciales, mais on été directement utile sous leur 1er forme.
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 5.
Vous avez pourtant des chercheurs en ergonomie.
Qui pourrait faire ça ? C'est ça qui me pose le plus de problème. Qui est assez doué pour comprendre le "langage de la recherche" et en même temps en faire un produit industriel.
Non, pas trop de la recherche, mais trop frustrant de ne pas pouvoir facilement s'en servir simplement parce que le formalisme retenu est celui des maths et non celui de l'informatique. Un tel DSL serait énorme pour un projet comme The Gimp ou CIMG, mais je ne suis pas sûr qu'ils aient la compétence pour le mettre en œuvre.
Et sans sucre s'il te plait.
Oui et non. Je comprend ce que tu veux dire. Mais en même temps, une des mission de la recherche est de transmettre ce savoir acquis. Si la différence de savoir augmente entre les ingénieurs et les chercheurs, c'est bien qu'il manque un rouage de transmission. (Peut-être qu'il faudrait dans les écoles d'ingénieur, en plus des stage en entreprise, des stages en labo de recherche.)
Je trouve très frustrant d'avoir autant de mal à lire les papiers de recherche en informatique, je ne me considère pas pourtant comme un mauvais ingénieur. Si les ingénieurs moyens sont incapables de comprendre vos publications, comment la transmission pourrait se faire ?
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 2.
Je suis ingénieur, et je n'avais pas entendu parler de Lambda avant de faire un dea d'info. C'est peut être un choix de mon école, mais je n'ai pas cette impression-là.
Autant le code python me parle (je ne connais pas du tout ce langage), autant le DSL ne me parle pas.
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 3.
Oui, mais il y a déjà de gros précédent. cf https://linuxfr.org/news/985-bugs-dans-le-noyau-linux par exemple.
Cela dépend ce que tu appelles "long terme", car tu peux passer un temps infini sur les faux positifs.
Je n'ai pas dis ça. J'ai dis qu'il fallait démontrer la supériorité d'une solution avant que celle-ci soit mis en œuvre.
C'est vrai pour n'importe quel développement. Et c'est exactement pour cette raisons que la plus part des outils libres sont directement utile à leurs auteurs, il est très rare d'avoir de bon outils libre, uniquement utile à d'autres.
Dans le cas du noyau, cela serait bosser dessus, dans le but de faire un outil utile pour vous, comme exemple de passage à l'échelle.
Il faut voir le gain de leur coté, qui n'est pas évident à moyen terme. Il faudrait peut être organiser une conférence sur les ponts entre recherche et l'open source, pour que les gens se rencontrent, pour montrer les téchno de recherche, montrer les interactions qui marchent.
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 5.
Concernant Astrée, j'imagine que c'est le genre d'outil qui peut généré un paquet de faux positif. Par exemple, si il détecte trop "simplement" la division. Sparse ne génère pas de faux positif si je me rappelle bien. Si il ne fonctionne bien qu'avec un code généré par SCADE, il y a une gros soucis (sachant que SCADE génère un C restreint ayant déjà beaucoup de bonnes propriétés).
Coverity propose une analyse de code open source. ( https://www.synopsys.com/software-integrity/resources/analyst-reports/open-source-software-scan-report.html ) Cela a été à la mode pendant un moment, puis les devs en ont eu marre des faux positifs dont la corrections pouvaient entrainée des problèmes subtiles (genre générateur de nombre aléatoire de Debian). Je ne connais pas la différence avec Astrée, mais Sparse a été développé ensuite.
Le milieu Open Source ne fonctionne pas comme ça. Celui qui apporte une nouvelle techno doit démontrer sa supériorité pour convaincre. Dire "venez avec moi, cela va être génial", cela fait 20 ans, que les développeurs Kernel l'entendent tous les jours. Et au dernière nouvelles les drivers Windows ne fonctionnent pas mieux que les drivers Linux.
En gros, c'est à la communauté de la recherche de prouver que leur approche est meilleur, si vous considérez que les dev sont bêtes parce qu'ils ne vous écoutent pas, c'est mal barré.
L'idée est sympa. J'imagine que les usagers de ce genre de DSL sont docteur en mathématique pour le calcul linéaire. Je ne vois pas qui d'autres pourraient s'en servir vu le formalisme mathématique retenu.
"La première sécurité est la liberté"
[^] # Re: pas compris
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Sortie de gfast-copy et de fast-copy sur www.open-source-projects.net. Évalué à 3.
Mes tests remontent à loin, mais typiquement dd était bien plus rapide que cp, je crois que j'avais surtout vu cela avec un raid 0, pour saturer la bande passante, il fallait des gros buffers.
"La première sécurité est la liberté"
[^] # Re: pas compris
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Sortie de gfast-copy et de fast-copy sur www.open-source-projects.net. Évalué à 3.
Pour avoir déjà fait le teste, j'imagine que c'est à cause de la taille de buffers. Lire puis écrire des morceaux de 16 Mo est beaucoup plus rapide qu'avec des morceaux de 8 Ko, surtout avec un HD.
"La première sécurité est la liberté"
[^] # Re: Le cerveau n'est pas logique
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 4.
Un langage de haut niveau qui va vite.
En général, les langages "rapides" laissent tout le boulot au codeur (asm, c, c++, fortran). C++ avec les templates proposent un moyen de mettre la complexité en library avec le prix d'une grosse difficulté et des messages d'erreur abscons (et donc des bugs). Ce genre de langage trop bas niveau fournis un code rapide sur une machine, mais qui peut être plus lent sur un autre (intel vs amd ou vs ARM), multicore ou pas, SIMD ou pas.
Les compilateurs C/C++ vont très loin dans les optimisations mais sont bridés par le langage lui-même : gestion mémoire basique et explicite (il faut une grande rigueur pour gérer des pools de mémoires et éviter la fragmentation), layout mémoire fixée dans les structures (optimisation par structures de tableaux au lieu de tableaux de structures impossible), code IEE754 immodifiable (sans changer le résultat final), pointeur trop générique qui nécessite un gros travail "d'analyse de vie" pour éviter l'aliasing. Le SIMD est de mieux en mieux géré, mais le multicore reste complexe sauf avec openMP. Par contre utiliser directement les GPU restent encore très expérimental : il suffit de voir la tronche du code opencl avec des string à envoyer au driver de la carte graphique !
Rust permet une bien meilleur gestion mémoire, mais compile moins bien que gcc. "tensor flow" semble pouvoir décrire du code rapide pour plusieurs architectures très différentes, mais cela n'est pas un langage.
On peut aussi parler des optimisations par propagation de constantes qui se limitent aux littéraux basiques, mais pas au 'string' (utile pour les regexp ou même un code SQL embarqué), et je ne parle pas de container constant (AST, lecture de fichier externe, genre configuration en XML, image embarquées ou même un DSL quelconque).
"La première sécurité est la liberté"