 Je voulais simplement vous dire à tous que vous n'êtes pas seuls. Je me présente, je m'appelle Yannick et qui suis-je ? Je suis quelqu'un de Québec. Je suis la délégation de Québec en ce moment à Montréal-Python. Nous sommes une très grande délégation de une personne, soit moi. J'ai fait le voyage simplement pour venir vous dire quelques mots. Je suis un étudiant à la maîtrise, en génie électrique dans le fond, donc je suis à l'université Laval, j'ai complètement oublié d'écrire ça. Je suis employé à Calcule Québec. Calcule Québec, qu'est-ce que c'est ? On va le voir un peu plus tard et j'enseigne le Python. En fait, je suis assistant de cours. Je donne justement une période de même matin, huit heures et demie. Il faut que je fasse le voyage pour revenir. Ça va être incroyable. Et j'ai appris beaucoup de langage au travers de mes années dans le fond à l'université. Et le Python est le dernier nez de cette liste-là. Il y a environ trois à quatre années de ça. Qu'est-ce que l'académie ? Qu'est-ce que l'académie au Québec ? Ça englobe deux choses, soit l'enseignement et la recherche. On va couvrir toutes les deux sections de l'académie. Commençons avec l'enseignement. L'enseignement, on a commencé à enseigner ça il y a trois ans. Donc, c'est un cours de première année qu'on offre à l'université Laval. C'est obligatoire pour génie électrique, génie informatique, le département d'informatique et génie logiciel. On enseigne le Python 3.3 et c'est merci beaucoup. Justement, j'ai quelque chose à dire là-dessus un peu plus tard. Et dans le fond, on est axé sur tous les modules scientifiques comme NumPy, SciPy, SimPy, etc. Donc, notre but, c'est de faire la science puis de montrer comment effectuer des algorithmes à l'intérieur du langage Python. Donc, on a réalisé des choses super intéressantes pour améliorer la pédagogie avec les étudiants. Donc, tout ce que je vais faire en ce moment à soir, c'est vous présenter toutes les choses cool que le département du Python à Québec, la ville de Québec a fait dans les dernières années. Notamment, on a fait un cours d'un système de correction automatisé. Donc, que je vais vous présenter un peu plus tard. Pourquoi est-ce qu'on enseigne le Python ? Le Python, c'est simple. C'est quelque chose de très proche du pseudo-code. C'est des avantages parce que, dans le fond, quand on veut enseigner un premier année, qu'est-ce qui se passe dans un ordinateur, on veut expliquer l'algorithmie et non pas qu'est-ce qu'un garbage collector va faire ou qu'est-ce qu'il faudrait faire pour allouer de la mémoire ou etc. Ou simplement, itéraux au travers d'une liste. Il fallut que je fasse ça récemment. C'est plus plus, je m'ennuie du piton. Et une autre chose super intéressante, c'est que c'est proche du pseudo-code parce que ça nous permet de pouvoir voir l'algorithmie en tant que chose, que ligne de code du Python contrairement à beaucoup d'autres langages qu'il faut actuellement savoir l'architecture informatique, les structures de données, en plus l'algorithmie pour pouvoir utiliser le langage. Python va nous permettre de cacher beaucoup de ces informations-là. Par exemple, les structures de données, les structures natives de Python sont super intéressantes pour l'enseigner. Cependant, il y a des problèmes quand, par exemple, on essaie de montrer aux étudiants les books, c'est par exemple O2N ou O2N plus N. Je vous donne un petit exemple ici. On voit en théorie que l'intersection en 2-7, c'est quelque chose de très efficace. C'est O2N plus N. Donc, si on a une liste de N élément, on a une liste de M élément. En fait, l'intersection, c'est beaucoup plus rapide que diterraux au travers des listes pour essayer de trouver la deuxième information. Donc, intuitivement, nos étudiants, ce qu'ils font, ils créent 2-7 avec les listes qu'ils reçoivent, font l'intersection et en plus, ils font une liste avec ça. Ils disent, hey, c'est algorithmiquement optimal. Oui, génial. Sauf que, quand on appelait 7, ça a créé un 7, ça a fait de l'allocation de mémoire, ça a inséré tout à l'intérieur de ce 7-là. Donc, finalement, c'est beaucoup plus compliqué. Dans le fond, le Python gère beaucoup, beaucoup d'algorithmes en-dessous de la couverte sans nous en parler. Donc, ça nous donne du fil à retordre pour expliquer à des pauvres petits étudiants de première année qu'est-ce qui se passe lorsqu'ils font leur ligne de code. Je vous en disais un peu plus tôt d'un système de correction automatisé. Dans le fond, on avait un problème, c'est qu'ils sont 200 en classe. J'essaye d'être en avant, puis j'essaye de tout individuellement leur dire qu'est-ce qui cloche à l'intérieur de leur code source. Des fois, c'est une purée incroyable. Parfois, c'est bien, mais la purée incroyable, c'est quand même dur à pouvoir passer au travers, surtout à l'intérieur des périodes qu'on a quand même juste 24 heures par jour. Et habituellement, j'ai aussi des projets de recherche à faire. Donc, j'aimerais passer mon temps le plus efficacement possible dans ces projets-là. Donc, on a créé un système de correction instantané. Dans le fond, les étudiants remettent leur travaux. Le système de correction lui donne automatiquement c'est quoi les problèmes avec son code, les problèmes, on le passe dans un pilote, dans le fond. Puis après ça, on passe dans une série de tests unitaires. Le étudiant a instantanément des informations sur qu'est-ce qui vient de faire de correcte, de pas correcte, qu'est-ce qu'il faut qu'il s'améliore. Il peut ensuite resoumettre afin de pouvoir apprendre de ses erreurs. Je pense que c'est un outil incroyable qu'on a développé avec Django et que je voulais juste vous présenter comme ça et qu'on utilise à l'intérieur du cours de Python en première année à l'université Laval. J'aurais vraiment aimé ça avoir ce genre de système-là quand moi j'étudiais à leur place. Mais bon, j'essaie de faire ce que j'ai eu dans mon temps. Donc, ce que je vous disais, c'est que c'est un cours de première année. Mais après ça, on laisse tomber le Python en tant que langage. On essaie de varguer un peu les langages. On montre le Django, on montre le C++ aussi. Cependant, bonne nouvelle pour vous. Le Python est réutilisé par tous les étudiants après le premier cours, la première année. Le monde aime assez le Python pour pouvoir le réutiliser dans beaucoup d'autres cours. Donc, il est utilisé dans des projets de robotique, dans des projets de simulation. Je sais qu'on a simulé, il n'y a pas trop longtemps, des processeurs, des architectures MIPS, par exemple. Donc, on utilise le Python pour effectuer ces simulateurs-là. Une chose qui risque de vous intéresser pour la moitié d'entre vous qui sont peut-être entrepreneurs ou dans une entreprise. La première cohorte qu'on a formée à l'aide du Python sort cette année. Ça sort en mai. Donc, si vous cherchez du monde qui a été formé en algorithmiques avec une base en Python, mes prochains, le monde de l'université Laval vont être formés. Donc, il va y avoir du monde pour vous, pour vos rangs. Je vous jaserai tout à l'heure des projets de robotique. Voici un exemple de robot qu'on leur fait faire en troisième année. C'est eux qui ont inventé le robot de toute pièce, dans le fond. Les quatre couleurs, c'est simplement pour essayer de traquer l'information à l'aide de OpenCV à l'intérieur de Python. Puis, comme on voit, il y a quatre moteurs qui sont gérés également à l'aide de la programmation. Ils utilisent PySerial afin de pouvoir communiquer avec des contrôleurs de moteurs. Ces genres de projets qu'on fait, qu'on enseigne à réaliser aux étudiants dans le fond. Maintenant, on quitte le domaine de l'enseignement et on s'en va un peu plus en recherche. Comme je vous ai dit, je suis un employé à Calcule Québec. Calcule Québec, c'est un des chapitres, le chapitre de Québec dans le fond de Compute Canada. Compute Canada, qu'est-ce que c'est? C'est des très gros ordinateurs. Ça gère toutes les supercalculateurs au Canada. Calcule Québec, gère ceux-là du Québec. Puis, qu'est-ce que c'est? Tous les supercalculateurs au Québec. Nous en avons une bonne quantité. Je sais qu'il y en a trois à McGill. Il y en a cinq à l'Université de Montréal, entre ce trois à Sherbrooke. Et je suis le seul à Québec qui a mon super ordinateur dans ma cour arrière. À quoi ça sert les supercalculateurs? Ça sert, par exemple, au domaine de la santé, biologie et génomique. Par exemple, séquencer de l'ADN. Ça prend à cause de l'exposition combinatoire de toutes les possibilités qu'on a. Consequences de l'ADN. Ça prend une quantité phénoménale de calcul. Donc, ça roule sur des supercalculateurs. La modélisation en physique aussi, c'est super utile pour nous. Et aussi, ça prend beaucoup de calcul et en ingénierie. En physique notamment aussi, je ne sais pas si vous connaissez le CERN. La plupart des calculs du CERN, une bonne partie des calculs du CERN ont été calculés ici au Québec afin de pouvoir trouver le boson de Higgs. Je ne sais pas s'il y a des geeks dans la salle. C'est grâce à nous qu'on a trouvé le boson de Higgs. Merci beaucoup. Donc, qu'est-ce qu'un supercalculateur? Je sais que certains d'entre vous savent déjà ce que c'est. C'est simplement beaucoup d'ordinateurs en réseau. Donc, quand on se log sur un super ordinateur, il y a simplement le login node. On se log tout le temps à SSH. On est pour la ligne de commande. C'est la seule chose de vrai dans la vie. Puis on se log sur le login node et ensuite on envoie les informations au reste des nœuds pour se faire calculer dans le fond. Fait que notre application, l'utilisateur, quand il se connecte, il voit simplement l'ordinateur d'entrée. Mais il y a accès à des milliers et des milliers de processeurs en arrière s'ils utilisent les APIs de programmés pour faire de la programmation parallèle. C'est différent du cloud computing. J'ai vu qu'il y avait des présentations sur le cloud computing un peu plus tôt. Le cloud computing, c'est super intéressant pour des problèmes de data mining ou des problèmes qui sont un peu plus embarrassingly parallèles qu'on appelle en anglais. C'est des problèmes qui ne sont pas liés à l'intérieur de ce l'algorithme. Par exemple, j'ai un algorithme puis il n'y a pas de calcul à l'intérieur de l'algorithme qui demande des résultats calculés juste un peu au-dessus ou juste un peu en dessous. Par exemple, si j'ai des données, je peux calculer cet algorithme-là une fois sur les données X, une fois sur les données Y, sans que ces deux informations ont le genre, sans que ces deux processeurs se jassent puis les deux sorties vont me donner des choses intéressantes. Le but des supercalculateurs, c'est de pouvoir avoir quelque chose de plus couplé, quelque chose de plus intégré, de plus unifié afin de pouvoir faire des calculs, par exemple, des inversions de matrices en utilisant des milliers de processeurs. Donc, c'est des choses qui seraient pas efficaces à l'intérieur d'un système comme EC2 ou n'importe quel autre système de cloud computing par ça demande beaucoup trop de communication. Ça demande un système beaucoup plus intégré que ce qui est disponible en ce moment dans le cloud computing. Donc, je vous donne un exemple. C'est notre petit bien de chez nous, Colos, qui est suivable sur Twitter. Donc, quelles sont les ordinateurs à l'intérieur des supercalculateurs? C'est des ordinateurs bien standards que vous pouvez presque vous trouver à l'intérieur de vos futureshop au coin de la rue. C'est simplement des systèmes intelligents. On a des activés la pure trading parce que ça va plus vite. 24 gigabyte de RAM, chacun et j'ai oublié de marquer. Mais on en a huit mille d'écart comme ça, donc environ un millier de blade, un millier d'ordinateur comme ça, en tosser un après l'autre avec un système de fibre optique à 40 gigabit et quelque chose d'intéressant qu'on ne voit pas souvent. Si je fais df, df-moi-h à l'intérieur de mon système, on voit un petit peu plus qu'un petabyte d'espace disk. Ça ne m'arrive pas souvent, fait que j'essaye d'en profiter quand je vois ça. Donc, on peut oublier mon directeur de thèse qui nous regarde la caméra en ce moment pour plus regarder le supercalculateur qui est en arrière-plan. On voit les cartes de fibre optique et toutes les ordinateurs sont en fond. Toutes les, exactement toutes les blades des ordinateurs sont en sont sont sont sont toutes à la verticale et nous regardent comme ça. Ce qui est intéressant, c'est le système de refroidissement à l'intérieur ici ou où a été prise la photo, c'est le système d'air chaud qui se promène de là. Puis à l'extérieur, c'est fait en cercle, à l'extérieur, c'est le système d'air froid, donc la froid, rendant les ordinateurs, va à l'intérieur puis un système de fan en bas qui tire l'air puis le repousse pour se faire refroidir et remonter vers l'extérieur. Donc. Et voilà. Maintenant, le lien avec le Python. Maintenant que vous expliquez, c'est quoi un supercalculateur? À quoi sert le Python en intérieur de cette grosse bébite? Donc, il y a deux types d'utilisation du Python en intérieur des supercalculateurs, soit les programmes des chercheurs, soit pour essayer de calculer, de trouver comment c'est quoi les possibilités à l'intérieur de l'ADM ou pour gagner à géopardie, c'est une autre possibilité qu'on a. Et puis, la seconde utilisation, c'est l'administration. On utilise, on utilise le Python pour faire des scripts et pour faire du web. Donc, à l'intérieur de la recherche, on utilise, on est un peu cloisonné du reste du monde, notamment par la version Python. J'aimerais à main levée savoir combien de personnes utilisent Python 3 dans la vie de tous les jours. Je sais que c'est pas facile, souvent, à cause des librairies qui sont pas encore compatibles, mais qui utilise Python 3 dans leur vie de tous les jours? Chapeau, mes amis. Python 2.7, quand même. OK, vous êtes quand même à jour, vous êtes quand même à jour. 2.6, oh, il y en a une couple dans le fond. Il y en a une couple dans le fond. 2.4, je suis atrocemment désolé. Le problème, c'est que j'ai levé ma main pour ceux qui m'ont pas vu, puis qu'ils ont essayé de voir en arrière. Le gros problème, c'est que les distributions qui sont axées pour la science, c'est des choses qui sont vraiment vieilles, genre CentOS. Ouais, exactement. Fait que là, il faut coder pour Python 2.4. Fait que c'est ça qui est installé habituellement sur les supercalculateurs. Donc ça, c'est une mentalité qui est un peu problématique. Ils sont très lents à aller vers les dernières versions. Ce qui est quand même drôle, parce que c'est de la recherche. En tout cas, moi, je vois un problème là. Et un autre problème, c'est le patrimoine et l'héritage dans le fond. On a des librairies les plus optimisées au monde qui sont qui ont été codées en fortran. C'est encore utilisé à la planche sur les supercalculateurs. C'est ce qui donne effectivement les résultats les plus rapidement. Mais on est pris avec ça. Donc le Python nous permet quand même de les utiliser grâce à aux interfaces, notamment CFFI, que je vous recommande vivement d'utiliser si vous coder quelque chose en C par-dessus du Python. Et on l'utilise notamment pour deux projets dont j'ai le T-shirt ici, DeepScoop, ce sont des projets que nous-mêmes on a réalisés à l'intérieur de l'Université Laval. Le premier, c'est pour faire des agorubes évolutionnaires. C'est super intéressant. Je vous conseille vivement d'aller voir qu'est-ce que c'est. Et le deuxième, c'est pour pouvoir faire la distribution de tâches parallèles sur des supercalculateurs et ou des cries. Donc c'est le genre de contexte dans lequel on âge. En recherche, on utilise Python pour faire la recherche d'information, comme par exemple, combien on a utilisé de coeurs à l'intérieur d'une journée ou des choses comme ça. Et on fait aussi l'analyse de la gestion des logs qui passent. Ça, presque à la grandeur du Québec en entier. Et on a développé un système web qui nous permet de jaser et aux administrateurs et aux utilisateurs. J'ai fait ça en Django. Je vois qu'il y a beaucoup de monde qui sont beaucoup plus axés pyramide. Donc, oui, non, moi, je suis un petit peu plus Django. Désolé. Donc, qu'est-ce qu'on a fait? C'est qu'on a une grosse base de données, une grosse base de données immense à laquelle on permet aux supercalculateurs de jaser entre eux avec un API REST. Et à l'aide de Django, on permet de donner ces informations à aux utilisateurs et aux administrateurs. Qu'est-ce que ça semble tout ça? Je vous donne juste un petit screenshot qui vous permet de voir l'état des supercalculateurs. Par exemple, là, j'ai simplement colosse d'efficier en ce moment, mais ça nous représente, par exemple, les jobs qui sont en train de rouler, les utilisations de chacun des chercheurs, etc. Donc, ça n'a pas été super compliqué à coder. Mais on a rencontré beaucoup de problèmes, les problèmes, notamment d'intégration avec une base de données existantes dans Django. C'est... Attends, je ne recommencerai pas ma job, là. Bien. Mais c'est ça, l'intégration avec une base de données existantes a été un peu compliquée et la mise à l'échelle, la mise à l'échelle, ce que je veux dire par ça, c'est que c'est une présentation en anglais et en français, pardonnez-moi et je ne voulais pas dire du scaling. J'ai des problèmes de scaling avec les performances et avec le big data. Je reçois des données, des logs de chacun des coeurs, des supercalculateurs au Québec à chaque seconde. Ça fait des centaines de millions d'entrées à gérer. C'est fou. C'est complètement fou. Puis, on passe par un API REST pour gérer ça. Oui! Fait que, dans le fond, ça, c'est les problèmes qu'on a rencontrés. Les solutions, on a utilisé du profiling, avec, soit Ransmic Run, Cprofile, pour essayer de profiler notre code. On a essayé d'utiliser des librairies optimisées, par exemple, pour sortir du JSON. On utilise MicroJSON, UJSON pour faire notre REST, qui est beaucoup plus rapide. On a essayé de paralyser nos systèmes web et on a essayé de traiter des données. Et tout ça, c'est des types de solutions qu'on est venus à développer nous-mêmes tout seul dans notre coin parce qu'on était à Québec et qu'il n'y avait pas encore de communauté. Donc, c'est vraiment triste qu'il n'y avait pas de communauté à Québec. Mon but, justement, de venir ce soir, c'était de vous jaser, c'était de savoir, de voir la communauté à Montréal. Dans le fond, ça fait quelques fois que je rencontre tout le monde de Montréal. Puis, je trouve ça super intéressant la dynamique que vous avez. Puis, j'aimerais ça créer quelque chose du genre à Québec ou simplement faire le lien, faire le pont avec ce qui se passe à Québec. On a des projets super intéressants à Québec. J'espère que je vous ai mis l'eau à la bouche avec mes présentations. Puis, en plus, on a une première cohorte d'étudiants qui va sortir bientôt. Donc, j'aimerais ça créer une relation durable avec le monde de Montréal, avec vous dans le fond. Puis, je vais essayer de ne pas poigner le trafic pour m'en venir chez moi.