Skip to content

Réunion du 2021-07-06

Notes préparatoires

Remarques

Ce que j’ai fait

  • Benchmarks Python/Cython/autres langages (pas encore publié, code ici: https://github.com/abilian/python-benchmarks)
    • Read a few papers (ex: “Cross-Language Compiler Benchmarking: Are We Fast Yet?” by Stefan Marr ou “On Evaluating the Renaissance Benchmarking Suite: Variety, Performance, and Complexity” by many authors)
    • Played a bit with Webassembly (trying to run some of the bechmark programs compiler to WASM using
  • Benchmarked and examined existing web servers (based on Cython or Python + C extensions) and existing C librairies that can be used for the Web server. Cf. also techempower benchmarks.
  • Bibliographie / examen de bases de code existantes (https://github.com/sfermigier/awesome-cython -> repris sur: https://www.cython.plus/publications/CYP-Website.Page.Statistics)
  • Looked at QUIC final specs and played with existing implementations (client and server)

Note du call

  • Il reste 6 mois pour le premier rapport (fin janvier 2022)

Qui a fait quoi:

  • Xavier: en contact avec Julien de l’Inria.
  • Julien: code des algos en Cython+.
    • Code dispo ici: https://gitlab.inria.fr/jjerphan/cython_plus_experiments
    • Feedback vers Xavier.
    • KD Tree: facile a paralléliser.
      • Cython permet d’exploiter le caractère “embarrassingly parallel” des algos.
      • Scalabilité linéaire au début (jusqu’à 8 CPU) mais il y a des bottlenecks (au niveau scheduler, runtime… qui ont été identifiés et qui sont en cours de résolution)
      • Identification de design patterns (acteurs généraux qui peuvent jouer le rôle de barrière pour du code synchrone)
  • JPS: il faut convaincre Stefan Behnel que coder en Cython+ c’est mieux qu’en C++.
    • Gwenael a fait la première versionde Cython+ (POC) et Stefane Behnel n’a pas voulu de ses contribs. On peut le payer pour reviewer des contribs.
    • Gael: Stefan n’est pas très sensible à l’argument de la simplicité.
  • JPS: on a aussi quelqu’un qui a fait tourner du Cython dans un intird.
    • C’est intéressant car pour faire du cloud, le gens utilisent de plus en plus Go que Python. La principale raison, c’est le temps de lancement de l’interpréteur Python.
  • Stefane:
    • Benchmarks Python/Cython/autres langages (pas encore publié, code ici: https://github.com/abilian/python-benchmarks)
      • Read a few papers (ex: “Cross-Language Compiler Benchmarking: Are We Fast Yet?” by Stefan Marr ou “On Evaluating the Renaissance Benchmarking Suite: Variety, Performance, and Complexity” by many authors)
    • Benchmarked and examined existing web servers (based on Cython or Python + C extensions) and existing C librairies that can be used for the Web server. Cf. also techempower benchmarks.
    • Bibliographie / examen de bases de code existantes (https://github.com/sfermigier/awesome-cython -> repris sur: https://www.cython.plus/publications/CYP-Website.Page.Statistics)
    • CI: move from Travis to something else (Github Actions as upstream)
      • Ca serait utile de pouvoir commiter sur le gitlab de Nexedi.
  • JPS: ok pour faire un site bilingue, pour faire des release PyPI et pour l’acces commiter.
  • Gael: faire des blog posts courts.
  • GPD:
    • Deux développeurs à l’IMT (Luc et Arturo) qui sont prêts à expérimenter. Ils travaillent sur l’IA à Telecom Paris. Ils doivent faire des benchs par rapport à leur code existant. Ils utilisent déjà Python et pas Cython.
    • Déploiement Cython+ dans Theia mais pas conforme au plan de sécurité de Teralab. Au final ça se passe dans des VM.
    • L’un a des problèmes de compilation. L’autre n’a pas utilisé l’environnement.
    • On les reverra à la rentrée.
  • Sven: prochaine réunion pour préparer le rapport (décembre 2021)

Additional notes (du gars de l’Inria)

  • L’équipe de Cython n’a pas une vision stratégique pour le futur du projet et manque de mainteneurs pour les revues et les intégrations de nouvelles fonctionnalités.
  • Pour préciser ma remarque sur les KDTree:
    • Les KDTrees dans scikit-learn sont déjà implémentés d’une manière efficace en Cython.
    • Cython+ permet de réaliser la construction de manière totalement parallèle. Actuellement, il y a des ralentissements du runtime, dû à des locks internes et le système de types doit être adapté en fonction.
  • De mon côté, j’inspecte la base de code de Cython et de Cython+ pour comprendre l’implémentation et pouvoir y contribuer s’il faut.

Notes de réunions détaillées entre Inria et Nexedi: https://notes.inria.fr/p6Z8ZcoIQ0GXTB7XCyf3UQ#

Back to top