FR 3055438 A1 20180302 FR 1757193 A 20170728 1 COMPILATION POUR TRAITEMENT PARALLELE BASE SUR GPU DE DISPOSITIF DE NOEUD ARRIERE-PLAN [0001] Il est de plus en plus courant d'utiliser des grilles constituées d'un grand nombre de dispositifs de noeud pour réaliser des analyses d'ensembles volumineux de données (appelés communément de « big data ») d'une manière distribuée qui consiste à réaliser des tâches de routines d'analyse au moins partiellement en parallèle dans plusieurs dispositifs de noeud sélectionnés. [0002] Dans l'utilisation de ces grilles, il existe souvent des objectifs concurrents dans l'affectation des tâches des routines d'analyse aux dispositifs de noeud, notamment l'objectif d'exploiter les ressources de traitement de chaque dispositif de noeud le plus pleinement et avec le moins d'interruption possible, et l'objectif d'utiliser plus efficacement les ressources de traitement et de stockage de chaque dispositif de noeud, ainsi que les ressources de bande passante réseau de la grille. A la complexité de la réalisation de ces objectifs concurrents s'ajoute la pratique courante qui consiste à partager les ressources de la grille en faisant en sorte que les tâches de plusieurs routines d'analyse soient effectuées en même temps par les dispositifs de noeud de la grille. L'approche classique pour affecter les tâches consiste simplement à affecter la tâche suivante à effectuer au dispositif de noeud suivant ayant les ressources de traitement disponibles. Malheureusement, cette approche classique correspond à une décision de permettre des manques d'efficacité considérables dans l'utilisation des ressources de stockage et de bande passante réseau. RESUME [0003] Le présent résumé n'a pas vocation à identifier uniquement les caractéristiques essentielles ou clés du sujet décrit, ni à être utilisé de manière isolée pour déterminer la portée de ce dernier. Pour comprendre le sujet, il faut se reporter aux parties appropriées du fascicule complet de ce brevet, à l'un ou à la totalité des dessins, et à chacune des revendications. 3055438 2 [0004] Un appareil peut inclure un processeur et une mémoire pour stocker des instruction qui, lorsqu'elles sont exécutées par le processeur, amènent le processeur, pour chaque dispositif de noeud d'une pluralité de dispositifs de noeud, à déterminer une affectation de réalisation d'une première tâche avec un premier ensemble de 5 données, où : le premier ensemble de données se divise en une pluralité de partitions ; un premier dispositif de noeud de la pluralité de dispositifs de noeud est affecté à la réalisation de la première tâche avec une première partition de la pluralité de partitions du premier ensemble de données ; et un deuxième dispositif de noeud de la pluralité de dispositifs de noeud est affecté à la réalisation de la première tâche 10 avec une deuxième partition de la pluralité de partitions du premier ensemble de données. Le processeur peut être amené à transmettre une indication de l'affectation de la réalisation de la première tâche avec la première partition au premier dispositif de noeud pour amener à la réalisation de la première tâche avec la première partition par le premier dispositif de noeud et pour amener au stockage d'au moins une partie 15 de la première partition dans une mémoire volatile du premier dispositif de noeud ; transmettre une indication de l'affectation de la réalisation de la première tâche avec la deuxième partition au deuxième dispositif de noeud pour amener à la réalisation de la première tâche avec la deuxième partition par le deuxième dispositif de noeud et pour amener au stockage d'au moins une partie de la deuxième partition dans une 20 mémoire volatile du deuxième dispositif de noeud ; recevoir une indication de la part du premier dispositif de noeud, de l'achèvement de la réalisation de la première tâche avec la première partition par le premier dispositif de noeud de sorte que le premier dispositif de noeud est disponible pour être affecté à la réalisation d'une autre tâche ; retarder l'affectation de la réalisation d'une deuxième tâche sur la deuxième partition 25 au premier dispositif de noeud après réception de l'indication de l'achèvement de la réalisation de la première tâche avec la première partition par le premier dispositif de noeud pendant un laps de temps prédéterminé, en dépit du fait que la deuxième tâche est prête à être réalisée sur la deuxième partition, et en dépit de la disponibilité du premier noeud résultant de l'achèvement de la réalisation de la première tâche avec la 30 première partition ; et déterminer si une indication de l'achèvement de la réalisation de la première tâche avec la deuxième partition par le deuxième dispositif de noeud de sorte que le deuxième dispositif de noeud est disponible pour être affecté à la 3055438 3 réalisation d'une autre tâche a été reçue du deuxième dispositif de noeud dans les limites du laps de temps prédéterminé. En réponse à la réception de l'indication de l'achèvement de la première tâche avec la deuxième partition par le deuxième dispositif de noeud dans les limites du laps de temps prédéterminé, le processeur peut 5 être amené à affecter la réalisation de la deuxième tâche sur la deuxième partition au deuxième dispositif de noeud pour permettre des accès à au moins une partie de la deuxième partition dans la mémoire volatile du deuxième dispositif de noeud ; et transmettre une indication de l'affectation de la réalisation de la deuxième tâche sur la deuxième partition au deuxième dispositif de noeud pour éviter l'extraction de la 10 deuxième partition par le premier dispositif de noeud. En réponse à une absence de réception de l'indication d'achèvement de la première tâche avec la deuxième partition par le deuxième dispositif de noeud dans les limites du laps de temps prédéterminé, le processeur peut être amené à affecter la réalisation de la deuxième tâche sur la deuxième partition au premier dispositif de noeud ; et transmettre une 15 indication de l'affectation de la réalisation de la deuxième tâche sur la deuxième partition au premier dispositif de noeud pour amener à l'extraction de la deuxième partition par le premier dispositif de noeud. [0005] Le processeur peut être amené à effectuer des opérations comprenant l'obtention du laps de temps prédéterminé à partir d'au moins une mesure d'un laps 20 de temps entre la transmission d'une affectation pour réaliser la première tâche à un dispositif de noeud de la pluralité de dispositifs de noeud et la réception d'une indication de l'achèvement de la réalisation de la première tâche de la part du dispositif de noeud. [0006] Le processeur peut être amené à effectuer des opérations comprenant : 25 déterminer une quantité de dispositifs de noeud de la pluralité de dispositifs de noeud qui sont disponibles pour réaliser la première tâche ; et obtenir une division du premier ensemble de données en la pluralité de partitions du premier ensemble de données basée sur la quantité de dispositifs de noeud et une métadonnée descriptive d'une manière dont le premier ensemble de données est organisé. Le premier 30 ensemble de données peut être stocké dans un ou plusieurs dispositifs de stockage ; le processeur peut être amené à effectuer des opérations comprenant extraire la métadonnée des un ou plusieurs dispositifs de stockage ; la transmission de 3055438 4 l'indication de l'affectation de la réalisation de la première tâche avec la première partition au premier dispositif de noeud peut amener le premier dispositif de noeud à extraire la première partition des un ou plusieurs dispositifs de stockage ; et la transmission de l'indication de l'affectation de la réalisation de la première tâche 5 avec la deuxième partition au deuxième dispositif de noeud peut amener le deuxième dispositif de noeud à extraire la deuxième partition des un ou plusieurs dispositifs de stockage. [0007] L'appareil peut comprendre au moins un composant de mémoire volatile couplé au processeur, et le processeur peut être amené à effectuer des opérations 10 comprenant affecter la réalisation par le processeur de la première tâche avec une troisième partition de la pluralité de partitions du premier ensemble de données ; stocker au moins une partie de la troisième partition dans l'au moins un composant de mémoire volatile ; et réaliser la première tâche avec la troisième partition. [0008] Le processeur peut être amené à effectuer des opérations comprenant, 15 pour chaque dispositif de noeud d'un sous-ensemble de la pluralité de dispositifs de noeud, l'obtention d'une affectation pour extraire et stocker une de la pluralité de partitions du premier ensemble de données d'un ou plusieurs dispositifs de stockage pour permettre l'utilisation de chaque dispositif de noeud du sous-ensemble comme dispositif de noeud de secours pour répondre à une défaillance d'un des dispositifs de 20 noeud de la pluralité de dispositifs de noeud, où : un troisième dispositif de noeud de la pluralité de dispositifs de noeud est affecté à la réalisation de la première tâche avec une troisième partition de la pluralité de partitions du premier ensemble de données ; et le troisième noeud est affecté à l'extraction et au stockage de la deuxième partition à partir des un ou plusieurs dispositifs de stockage pour permettre l'utilisation du 25 troisième dispositif de noeud comme dispositif de noeud de secours pour répondre à une défaillance du deuxième dispositif de noeud. Le processeur peut être amené à recevoir une indication, pendant le laps de temps prédéterminé, du troisième dispositif de noeud d'achèvement de la réalisation de la première tâche avec la troisième partition par le troisième dispositif de noeud de sorte que le troisième 30 dispositif de noeud est disponible pour être affecté à la réalisation d'une autre tâche. En réponse à la réception de l'indication de l'achèvement de la première tâche avec la troisième partition par le troisième dispositif de noeud pendant le laps de temps 3055438 5 prédéterminé, et en réponse à une absence de réception de l'indication d'achèvement de la première tâche avec la deuxième partition par le deuxième dispositif de noeud dans les limites du laps de temps prédéterminé, le processeur peut être amené à affecter la réalisation de la deuxième tâche sur la deuxième partition au troisième 5 dispositif de noeud ; et transmettre une indication de l'affectation de la réalisation de la deuxième tâche sur la deuxième partition au troisième dispositif de noeud. [0009] Les réalisations de la première tâche avec les première et deuxième partitions peuvent comprendre l'utilisation des première et deuxième partitions comme entrées pour les réalisations de la première tâche pour générer des partitions 10 correspondantes d'un deuxième ensemble de données ; et la réalisation de la deuxième tâche sur la deuxième partition peut comprendre l'utilisation de la deuxième partition comme entrée pour une réalisation de la deuxième tâche pour générer une partition correspondante d'un troisième ensemble de données. La transmission de l'indication de l'affectation de la réalisation de la première tâche 15 avec la première partition au premier dispositif de noeud peut amener le premier dispositif de noeud à : extraire la première partition d'un ou plusieurs dispositifs de stockage ; utiliser au moins une partie de la première partition stockée dans la mémoire volatile du premier dispositif de noeud comme entrée pour la réalisation de la première tâche par le premier dispositif de noeud ; et transmettre l'indication 20 d'achèvement de la réalisation de la première tâche avec la première partition pendant qu'au moins une partie de la première partition reste stockée dans la mémoire volatile du premier dispositif de noeud. La transmission de l'indication de l'affectation de la réalisation de la première tâche avec la deuxième partition au deuxième dispositif de noeud peut amener le deuxième dispositif de noeud à : extraire 25 la deuxième partition des un ou plusieurs dispositifs de stockage ; utiliser au moins une partie de la deuxième partition stockée dans la mémoire volatile du deuxième dispositif de noeud comme entrée pour la réalisation de la première tâche par le deuxième dispositif de noeud ; et transmettre l'indication d'achèvement de la réalisation de la première tâche avec la deuxième partition pendant qu'au moins une 30 partie de la deuxième partition reste stockée dans la mémoire volatile du deuxième dispositif de noeud. La transmission de l'indication de l'affectation de la réalisation de la deuxième tâche sur la deuxième partition au deuxième dispositif de noeud peut 3055438 6 amener le deuxième dispositif de noeud à utiliser au moins une partie de la deuxième partition encore stockée dans la mémoire volatile du deuxième dispositif de noeud comme entrée pour la réalisation de la deuxième tâche par le deuxième dispositif de noeud pour limiter les accès à la deuxième partition stockée dans de la mémoire non 5 volatile du deuxième dispositif de noeud. [0010] Les réalisations de la première tâche avec les première et deuxième partitions peuvent comprendre des réalisations de la première tâche pour générer les première et deuxième partitions comme sorties de la première tâche en utilisant des partitions correspondantes d'un deuxième ensemble de données comme entrées ; et la 10 réalisation de la deuxième tâche sur la deuxième partition peut comprendre l'utilisation de la deuxième partition comme entrée pour une réalisation de la deuxième tâche pour générer une partition correspondante d'un troisième ensemble de données. La transmission de l'indication de l'affectation de la réalisation de la première tâche avec la première partition au premier dispositif de noeud peut amener 15 le premier dispositif de noeud à : générer la première partition comme sortie de la réalisation de la première tâche par le premier dispositif de noeud ; et transmettre l'indication d'achèvement de la réalisation de la première tâche avec la première partition pendant qu'au moins une partie de la première partition reste stockée dans la mémoire volatile du premier dispositif de noeud. La transmission de l'indication de 20 l'affectation de la réalisation de la première tâche avec la deuxième partition au deuxième dispositif de noeud peut amener le deuxième dispositif de noeud à : générer la deuxième partition comme sortie de la réalisation de la première tâche par le deuxième dispositif de noeud ; et transmettre l'indication d'achèvement de la réalisation de la première tâche avec la deuxième partition pendant qu'au moins une 25 partie de la deuxième partition reste stockée dans la mémoire volatile du deuxième dispositif de noeud. La transmission de l'indication de l'affectation de la réalisation de la deuxième tâche sur la deuxième partition au deuxième dispositif de noeud peut amener le deuxième dispositif de noeud à utiliser au moins une partie de la deuxième partition encore stockée dans la mémoire volatile du deuxième dispositif de noeud 30 comme entrée pour la réalisation de la deuxième tâche par le deuxième dispositif de noeud pour limiter les accès à la deuxième partition stockée dans de la mémoire non volatile du deuxième dispositif de noeud. 3055438 7 [0011] Un produit-programme informatique incorporé de manière tangible dans un support de stockage lisible par machine et non transitoire, le produit-programme informatique comprenant des instructions utilisables pour amener un processeur à effectuer des opérations comprenant pour chaque dispositif de noeud d'une pluralité 5 de dispositifs de noeud, l'obtention d'une affectation de réalisation d'une première tâche avec un premier ensemble de données, où : le premier ensemble de données se divise en une pluralité de partitions ; un premier dispositif de noeud de la pluralité de dispositifs de noeud est affecté à la réalisation de la première tâche avec une première partition de la pluralité de partitions du premier ensemble de données ; et un 10 deuxième dispositif de noeud de la pluralité de dispositifs de noeud est affecté à la réalisation de la première tâche avec une deuxième partition de la pluralité de partitions du premier ensemble de données. Le processeur peut être amené à effectuer des opérations comprenant : transmettre une indication de l'affectation de la réalisation de la première tâche avec la première partition au premier dispositif de 15 noeud pour amener à la réalisation de la première tâche avec la première partition par le premier dispositif de noeud et pour amener au stockage d'au moins une partie de la première partition dans de la mémoire volatile du premier dispositif de noeud ; transmettre une indication de l'affectation de la réalisation de la première tâche avec la deuxième partition au deuxième dispositif de noeud pour amener à la réalisation de 20 la première tâche avec la deuxième partition par le deuxième dispositif de noeud et pour amener au stockage d'au moins une partie de la deuxième partition dans de la mémoire volatile du deuxième dispositif de noeud ; recevoir une indication de la part du premier dispositif de noeud de l'achèvement de la réalisation de la première tâche avec la première partition par le premier dispositif de noeud de sorte que le premier 25 dispositif de noeud est disponible pour être affecté à la réalisation d'une autre tâche ; retarder l'affectation de la réalisation d'une deuxième tâche sur la deuxième partition au premier dispositif de noeud après réception de l'indication de l'achèvement de la réalisation de la première tâche avec la première partition par le premier dispositif de noeud pendant un laps de temps prédéterminé, en dépit du fait que la deuxième tâche 30 est prête à être réalisée sur la deuxième partition, et en dépit de la disponibilité du premier noeud résultant de l'achèvement de la réalisation de la première tâche avec la première partition ; et déterminer si une indication de l'achèvement de la réalisation 3055438 8 de la première tâche avec la deuxième partition par le deuxième dispositif de noeud de sorte que le deuxième dispositif de noeud est disponible pour être affecté à la réalisation d'une autre tâche a été reçue du deuxième dispositif de noeud dans les limites du laps de temps prédéterminé. En réponse à la réception de l'indication de 5 l'achèvement de la première tâche avec la deuxième partition par le deuxième dispositif de noeud dans les limites du laps de temps prédéterminé, le processeur peut être amené à affecter la réalisation de la deuxième tâche sur la deuxième partition au deuxième dispositif de noeud pour permettre des accès à au moins une partie de la deuxième partition dans la mémoire volatile du deuxième dispositif de noeud; et 10 transmettre une indication de l'affectation de la réalisation de la deuxième tâche sur la deuxième partition au deuxième dispositif de noeud pour éviter l'extraction de la deuxième partition par le premier dispositif de noeud. En réponse à une absence de réception de l'indication d'achèvement de la première tâche avec la deuxième partition par le deuxième dispositif de noeud dans les limites du laps de temps 15 prédéterminé, le processeur peut être amené à affecter la réalisation de la deuxième tâche sur la deuxième partition au premier dispositif de noeud ; et transmettre une indication de l'affectation de la réalisation de la deuxième tâche sur la deuxième partition au premier dispositif de noeud pour amener à l'extraction de la deuxième partition par le premier dispositif de noeud. 20 [0012] Le processeur peut être amené à effectuer des opérations comprenant l'obtention du laps de temps prédéterminé à partir d'au moins une mesure d'un laps de temps entre la transmission d'une affectation pour réaliser la première tâche à un dispositif de noeud de la pluralité de dispositifs de noeud et la réception d'une indication de l'achèvement de la réalisation de la première tâche de la part du 25 dispositif de noeud. [0013] Le processeur est amené à effectuer des opérations comprenant : déterminer une quantité de dispositifs de noeud de la pluralité de dispositifs de noeud qui sont disponibles pour réaliser la première tâche ; et obtenir une division du premier ensemble de données en la pluralité de partitions du premier ensemble de 30 données basée sur la quantité de dispositifs de noeud et une métadonnée descriptive d'une manière dont le premier ensemble de données est organisé. Le premier ensemble de données peut être stocké dans un ou plusieurs dispositifs de stockage ; 3055438 9 le processeur peut être amené à effectuer des opérations comprenant extraire la métadonnée des un ou plusieurs dispositifs de stockage ; la transmission de l'indication de l'affectation de la réalisation de la première tâche avec la première partition au premier dispositif de noeud peut amener le premier dispositif de noeud à 5 extraire la première partition des un ou plusieurs dispositifs de stockage ; et la transmission de l'indication de l'affectation de la réalisation de la première tâche avec la deuxième partition au deuxième dispositif de noeud peut amener le deuxième dispositif de noeud à extraire la deuxième partition des un ou plusieurs dispositifs de stockage. 10 [0014] Le processeur est amené à effectuer des opérations comprenant affecter la réalisation par le processeur de la première tâche avec une troisième partition de la pluralité de partitions du premier ensemble de données ; stocker au moins une partie de la troisième partition dans au moins un composant de mémoire volatile couplé au processeur ; et réaliser la première tâche avec la troisième partition. 15 [0015] Le processeur peut être amené à effectuer des opérations comprenant, pour chaque dispositif de noeud d'un sous-ensemble de la pluralité de dispositifs de noeud, l'obtention d'une affectation pour extraire et stocker une de la pluralité de partitions du premier ensemble de données d'un ou plusieurs dispositifs de stockage pour permettre l'utilisation de chaque dispositif de noeud du sous-ensemble comme 20 dispositif de noeud de secours pour répondre à une défaillance d'un des dispositifs de noeud de la pluralité de dispositifs de noeud, où : un troisième dispositif de noeud de la pluralité de dispositifs de noeud est affecté à la réalisation de la première tâche avec une troisième partition de la pluralité de partitions du premier ensemble de données ; et le troisième noeud est affecté à l'extraction et au stockage de la deuxième partition 25 des un ou plusieurs dispositifs de stockage pour permettre l'utilisation du troisième dispositif de noeud comme dispositif de noeud de secours pour répondre à une défaillance du deuxième dispositif de noeud. Le processeur peut être amené à recevoir une indication, pendant le laps de temps prédéterminé, de la part du troisième dispositif de noeud d'achèvement de la réalisation de la première tâche avec 30 la troisième partition par le troisième dispositif de noeud de sorte que le troisième dispositif de noeud est disponible pour être affecté à la réalisation d'une autre tâche. Le processeur peut être amené, en réponse à la réception de l'indication de 3055438 10 l'achèvement de la première tâche avec la troisième partition par le troisième dispositif de noeud pendant le laps de temps prédéterminé, et en réponse à une absence de réception de l'indication d'achèvement de la première tâche avec la deuxième partition par le deuxième dispositif de noeud dans les limites du laps de 5 temps prédéterminé, à : affecter la réalisation de la deuxième tâche sur la deuxième partition au troisième dispositif de noeud ; et transmettre une indication de l'affectation de la réalisation de la deuxième tâche sur la deuxième partition au troisième dispositif de noeud. [0016] Les réalisations de la première tâche avec les première et deuxième 10 partitions peuvent comprendre l'utilisation des première et deuxième partitions comme entrées pour les réalisations de la première tâche pour générer des partitions correspondantes d'un deuxième ensemble de données ; et la réalisation de la deuxième tâche sur la deuxième partition peut comprendre l'utilisation de la deuxième partition comme entrée pour une réalisation de la deuxième tâche pour 15 générer une partition correspondante d'un troisième ensemble de données. La transmission de l'indication de l'affectation de la réalisation de la première tâche avec la première partition au premier dispositif de noeud peut amener le premier dispositif de noeud à : extraire la première partition d'un ou plusieurs dispositifs de stockage ; utiliser au moins une partie de la première partition stockée dans la 20 mémoire volatile du premier dispositif de noeud comme entrée pour la réalisation de la première tâche par le premier dispositif de noeud ; et transmettre l'indication d'achèvement de la réalisation de la première tâche avec la première partition pendant qu'au moins une partie de la première partition reste stockée dans la mémoire volatile du premier dispositif de noeud. La transmission de l'indication de 25 l'affectation de la réalisation de la première tâche avec la deuxième partition au deuxième dispositif de noeud peut amener le deuxième dispositif de noeud à : extraire la deuxième partition des un ou plusieurs dispositifs de stockage ; utiliser au moins une partie de la deuxième partition stockée dans la mémoire volatile du deuxième dispositif de noeud comme entrée pour la réalisation de la première tâche par le 30 deuxième dispositif de noeud ; et transmettre l'indication d'achèvement de la réalisation de la première tâche avec la deuxième partition pendant qu'au moins une partie de la deuxième partition reste stockée dans la mémoire volatile du deuxième 3055438 11 dispositif de noeud. La transmission de l'indication de l'affectation de la réalisation de la deuxième tâche sur la deuxième partition au deuxième dispositif de noeud peut amener le deuxième dispositif de noeud à utiliser au moins une partie de la deuxième partition encore stockée dans la mémoire volatile du deuxième dispositif de noeud 5 comme entrée pour la réalisation de la deuxième tâche par le deuxième dispositif de noeud pour limiter les accès à la deuxième partition stockée dans une mémoire non volatile du deuxième dispositif de noeud. [0017] Les réalisations de la première tâche avec les première et deuxième partitions peuvent comprendre des réalisations de la première tâche pour générer les 10 première et deuxième partitions comme sorties de la première tâche en utilisant des partitions correspondantes d'un deuxième ensemble de données comme entrées ; et la réalisation de la deuxième tâche sur la deuxième partition peut comprendre l'utilisation de la deuxième partition comme entrée pour une réalisation de la deuxième tâche pour générer une partition correspondante d'un troisième ensemble 15 de données. La transmission de l'indication de l'affectation de la réalisation de la première tâche avec la première partition au premier dispositif de noeud peut amener le premier dispositif de noeud à : générer la première partition comme sortie de la réalisation de la première tâche par le premier dispositif de noeud ; et transmettre l'indication d'achèvement de la réalisation de la première tâche avec la première 20 partition pendant qu'au moins une partie de la première partition reste stockée dans la mémoire volatile du premier dispositif de noeud. La transmission de l'indication de l'affectation de la réalisation de la première tâche avec la deuxième partition au deuxième dispositif de noeud peut amener le deuxième dispositif de noeud à : générer la deuxième partition comme sortie de la réalisation de la première tâche par le 25 deuxième dispositif de noeud ; et transmettre l'indication d'achèvement de la réalisation de la première tâche avec la deuxième partition pendant qu'au moins une partie de la deuxième partition reste stockée dans la mémoire volatile du deuxième dispositif de noeud. La transmission de l'indication de l'affectation de la réalisation de la deuxième tâche sur la deuxième partition au deuxième dispositif de noeud peut 30 amener le deuxième dispositif de noeud à utiliser au moins une partie de la deuxième partition encore stockée dans la mémoire volatile du deuxième dispositif de noeud comme entrée pour la réalisation de la deuxième tâche par le deuxième dispositif de 3055438 12 noeud pour limiter les accès à la deuxième partition stockée dans une mémoire non volatile du deuxième dispositif de noeud. [0018] Un procédé mis en oeuvre par ordinateur peut comprendre, pour chaque dispositif de noeud d'une pluralité de dispositifs de noeud, l'obtention au niveau d'un 5 dispositif de coordination d'une affectation de réalisation d'une première tâche avec un premier ensemble de données, dans laquelle le premier ensemble de données se divise en une pluralité de partitions, et l'obtention peut comprendre : l'obtention d'une première affectation d'un premier dispositif de noeud de la pluralité de dispositifs de noeud pour réaliser la première tâche avec une première partition de la 10 pluralité de partitions du premier ensemble de données ; et l'obtention d'une deuxième affectation d'un deuxième dispositif de noeud de la pluralité de dispositifs de noeud pour réaliser la première tâche avec une deuxième partition de la pluralité de partitions du premier ensemble de données. Le procédé peut comprendre la transmission d'une indication de l'affectation de la réalisation de la première tâche 15 avec la première partition au premier dispositif de noeud pour amener à la réalisation de la première tâche avec la première partition par le premier dispositif de noeud et pour amener au stockage d'au moins une partie de la première partition dans une mémoire volatile du premier dispositif de noeud ; la transmission d'une indication de l'affectation de la réalisation de la première tâche avec la deuxième partition au 20 deuxième dispositif de noeud pour amener à la réalisation de la première tâche avec la deuxième partition par le deuxième dispositif de noeud et pour amener au stockage d'au moins une partie de la deuxième partition dans une mémoire volatile du deuxième dispositif de noeud ; la réception, au niveau du dispositif de coordination, d'une indication de la part du premier dispositif de noeud d'achèvement de la 25 réalisation de la première tâche avec la première partition par le premier dispositif de noeud de sorte que le premier dispositif de noeud est disponible pour être affecté à la réalisation d'une autre tâche ; le retardement de l'affectation de la réalisation d'une deuxième tâche sur la deuxième partition au premier dispositif de noeud après réception de l'indication de l'achèvement de la réalisation de la première tâche avec 30 la première partition par le premier dispositif de noeud pendant un laps de temps prédéterminé, en dépit du fait que la deuxième tâche est prête à être réalisée sur la deuxième partition, et en dépit de la disponibilité du premier noeud résultant de 3055438 13 l'achèvement de la réalisation de la première tâche avec la première partition ; et la détermination, au niveau du dispositif de coordination, de si une indication de l'achèvement de la réalisation de la première tâche avec la deuxième partition par le deuxième dispositif de noeud de sorte que le deuxième dispositif de noeud est 5 disponible pour être affecté à la réalisation d'une autre tâche a été reçue du deuxième dispositif de noeud dans les limites du laps de temps prédéterminé Le procédé peut comprendre, en réponse à la réception de l'indication de l'achèvement de la première tâche avec la deuxième partition par le deuxième dispositif de noeud dans les limites du laps de temps prédéterminé : l'affectation de la réalisation de la deuxième tâche 10 sur la deuxième partition au deuxième dispositif de noeud pour permettre des accès à au moins une partie de la deuxième partition dans la mémoire volatile du deuxième dispositif de noeud; et la transmission d'une indication de l'affectation de la réalisation de la deuxième tâche sur la deuxième partition au deuxième dispositif de noeud pour éviter l'extraction de la deuxième partition par le premier dispositif de 15 noeud. [0019] Le procédé peut comprendre l'obtention, au niveau du dispositif de coordination, du laps de temps prédéterminé à partir d'au moins une mesure d'un laps de temps entre la transmission d'une affectation pour réaliser la première tâche à un dispositif de noeud de la pluralité de dispositifs de noeud et la réception d'une 20 indication d'achèvement de la réalisation de la première tâche de la part du dispositif de noeud. [0020] Le procédé peut comprendre la détermination, au niveau du dispositif de coordination, d'une quantité de dispositifs de noeud de la pluralité de dispositifs de noeud qui sont disponibles pour réaliser la première tâche ; et l'obtention, au niveau 25 du dispositif de coordination, d'une division du premier ensemble de données en la pluralité de partitions du premier ensemble de données basée sur la quantité de dispositifs de noeud et une métadonnée descriptive d'une manière dont le premier ensemble de données est organisé. Le premier ensemble de données est stocké dans un ou plusieurs dispositifs de stockage ; le procédé peut comprendre l'extraction, par 30 le dispositif de coordination, de la métadonnée des un ou plusieurs dispositifs de stockage ; la transmission de l'indication de l'affectation de la réalisation de la première tâche avec la première partition au premier dispositif de noeud peut amener 3055438 14 le premier dispositif de noeud à extraire la première partition des un ou plusieurs dispositifs de stockage ; et la transmission de l'indication de l'affectation de la réalisation de la première tâche avec la deuxième partition au deuxième dispositif de noeud peut amener le deuxième dispositif de noeud à extraire la deuxième partition 5 des un ou plusieurs dispositifs de stockage. [0021] Le procédé peut comprendre l'affectation, au dispositif de coordination, de la réalisation de la première tâche avec une troisième partition de la pluralité de partitions du premier ensemble de données ; le stockage d'au moins une partie de la troisième partition dans au moins un composant de mémoire volatile du dispositif de 10 coordination ; et la réalisation, au niveau du dispositif de coordination, de la première tâche avec la troisième partition. Le procédé peut comprendre, en réponse à une absence de réception de l'indication d'achèvement de la première tâche avec la deuxième partition par le deuxième dispositif de noeud dans les limites du laps de temps prédéterminé : l'affectation de la réalisation de la deuxième tâche sur la 15 deuxième partition au premier dispositif de noeud ; et la transmission d'une indication de l'affectation de la réalisation de la deuxième tâche sur la deuxième partition au premier dispositif de noeud pour amener à l'extraction de la deuxième partition par le premier dispositif de noeud. [0022] Les réalisations de la première tâche avec les première et deuxième 20 partitions peuvent comprendre l'utilisation des première et deuxième partitions comme entrées pour les réalisations de la première tâche pour générer des partitions correspondantes d'un deuxième ensemble de données ; et la réalisation de la deuxième tâche sur la deuxième partition peut comprendre l'utilisation de la deuxième partition comme entrée pour une réalisation de la deuxième tâche pour 25 générer une partition correspondante d'un troisième ensemble de données. La transmission de l'indication de l'affectation de la réalisation de la première tâche avec la première partition au premier dispositif de noeud peut amener le premier dispositif de noeud à : extraire la première partition d'un ou plusieurs dispositifs de stockage ; utiliser au moins une partie de la première partition stockée dans la 30 mémoire volatile du premier dispositif de noeud comme entrée pour la réalisation de la première tâche par le premier dispositif de noeud ; et transmettre l'indication d'achèvement de la réalisation de la première tâche avec la première partition 3055438 15 pendant qu'au moins une partie de la première partition reste stockée dans la mémoire volatile du premier dispositif de noeud. La transmission de l'indication de l'affectation de la réalisation de la première tâche avec la deuxième partition au deuxième dispositif de noeud peut amener le deuxième dispositif de noeud à : extraire 5 la deuxième partition des un ou plusieurs dispositifs de stockage ; utiliser au moins une partie de la deuxième partition stockée dans la mémoire volatile du deuxième dispositif de noeud comme entrée pour la réalisation de la première tâche par le deuxième dispositif de noeud ; et transmettre l'indication d'achèvement de la réalisation de la première tâche avec la deuxième partition pendant qu'au moins une 10 partie de la deuxième partition reste stockée dans la mémoire volatile du deuxième dispositif de noeud. La transmission de l'indication de l'affectation de la réalisation de la deuxième tâche sur la deuxième partition au deuxième dispositif de noeud peut amener le deuxième dispositif de noeud à utiliser au moins une partie de la deuxième partition encore stockée dans la mémoire volatile du deuxième dispositif de noeud 15 comme entrée pour la réalisation de la deuxième tâche par le deuxième dispositif de noeud pour limiter les accès à la deuxième partition stockée dans une mémoire non volatile du deuxième dispositif de noeud. [0023] Les réalisations de la première tâche avec les première et deuxième partitions peuvent comprendre des réalisations de la première tâche pour générer les 20 première et deuxième partitions comme sorties de la première tâche en utilisant des partitions correspondantes d'un deuxième ensemble de données comme entrées ; et la réalisation de la deuxième tâche sur la deuxième partition comprend l'utilisation de la deuxième partition comme entrée pour une réalisation de la deuxième tâche pour générer une partition correspondante d'un troisième ensemble de données. La 25 transmission de l'indication de l'affectation de la réalisation de la première tâche avec la première partition au premier dispositif de noeud peut amener le premier dispositif de noeud à : générer la première partition comme sortie de la réalisation de la première tâche par le premier dispositif de noeud ; et transmettre l'indication d'achèvement de la réalisation de la première tâche avec la première partition 30 pendant qu'au moins une partie de la première partition reste stockée dans la mémoire volatile du premier dispositif de noeud. La transmission de l'indication de l'affectation de la réalisation de la première tâche avec la deuxième partition au 3055438 16 deuxième dispositif de noeud peut amener le deuxième dispositif de noeud à : générer la deuxième partition comme sortie de la réalisation de la première tâche par le deuxième dispositif de noeud ; et transmettre l'indication d'achèvement de la réalisation de la première tâche avec la deuxième partition pendant qu'au moins une 5 partie de la deuxième partition reste stockée dans la mémoire volatile du deuxième dispositif de noeud. La transmission de l'indication de l'affectation de la réalisation de la deuxième tâche sur la deuxième partition au deuxième dispositif de noeud peut amener le deuxième dispositif de noeud à utiliser au moins une partie de la deuxième partition encore stockée dans la mémoire volatile du deuxième dispositif de noeud 10 comme entrée pour la réalisation de la deuxième tâche par le deuxième dispositif de noeud pour limiter les accès à la deuxième partition stockée dans une mémoire non volatile du deuxième dispositif de noeud. [0024] Un appareil peut inclure un processeur et une mémoire pour stocker des instructions qui, lorsqu'elles sont exécutées par le processeur, amènent le processeur 15 à effectuer des opérations comprenant : analyser un état actuel des ressources d'au moins un dispositif de noeud d'une pluralité de dispositifs de noeud pour déterminer une disponibilité d'au moins un processeur graphique (GPU) de l'au moins un dispositif de noeud pour être affecté à la réalisation d'une première tâche d'une routine d'analyse, où : le fonctionnement de la pluralité de dispositifs de noeud est 20 coordonné pour réaliser des tâches de routines d'analyse au moins partiellement en parallèle ; la routine d'analyse est générée pour exécution par au moins une unité centrale de traitement (CPU) de l'au moins un noeud ; et les ressources de l'au moins un dispositif de noeud sont choisies dans un groupe constitué de l'au moins une CPU, l'au moins un GPU, et de l'espace mémoire dans un moins une mémoire de l'au 25 moins un dispositif de noeud. En réponse à une détermination que l'au moins un GPU est disponible pour être affecté à la réalisation de la première tâche de la routine d'analyse, le processeur peut effectuer des opérations comprenant : analyser une première routine de tâche de la routine d'analyse pour déterminer si la première routine de tâche peut être compilée pour générer une routine de tâche de GPU pour 30 exécution par l'au moins un GPU afin d'amener l'au moins un GPU à réaliser des instances multiples de la première tâche de la routine d'analyse au moins partiellement en parallèle sans dépendance entre les entrées et les sorties des 3055438 17 instances multiples de la première tâche, où : la première routine de tâche est générée pour exécution par l'au moins une CPU pour réaliser la première tâche de la routine d'analyse ; et la détermination de si la première routine de tâche peut être compilée pour générer la routine de tâche de GPU comprend une détermination de si la 5 première routine de tâche inclut une instruction qui empêche la compilation pour générer la routine de tâche de GPU et une détermination de si les entrées et les sorties de la première routine de tâche sont définies pour ne pas nécessiter la dépendance. En réponse à une détermination que la première routine de tâche peut être compilée pour générer la routine de tâche de GPU, le processeur peut effectuer 10 des opérations comprenant : affecter une partition d'ensemble de données d'une pluralité de partitions d'ensemble de données d'un ensemble de données à l'au moins un dispositif de noeud pour permettre un accès à la partition d'ensemble de données par l'au moins un GPU ; employer une règle de conversion pour convertir au moins une instruction de la première routine de tâche en au moins une instruction 15 correspondante de la routine de tâche de GPU ; compiler l'au moins une instruction correspondante de la routine de tâche de GPU pour exécution par l'au moins un GPU ; et affecter une réalisation de la première tâche de la routine d'analyse avec la partition d'ensemble de données à l'au moins un dispositif de noeud pour permettre une réalisation des instances multiples de la première tâche avec la partition 20 d'ensemble de données par l'au moins un GPU. [0025] Pour déterminer si la première routine de tâche inclut une instruction qui empêche la compilation pour générer la routine de tâche de GPU, le processeur peut être amené à : déterminer si l'instruction de la première routine de tâche est incluse dans un ensemble d'instructions qui ne peuvent pas être converties en au moins une 25 instruction pouvant être exécutée par l'au moins un GPU ; et en réponse à une détermination que l'instruction de la première routine de tâche n'est pas incluse dans l'ensemble d'instructions, déterminer si l'instruction de la première routine de tâche est utilisée dans la première routine de tâche d'une manière qui empêche sa conversion en au moins une instruction pouvant être exécutée par l'au moins un 30 GPU. Pour convertir l'au moins une instruction de la première routine de tâche en l'au moins une instruction correspondante de la routine de tâche de GPU, le processeur peut être amené à convertir l'au moins une instruction de la première 3055438 18 routine de tâche d'un premier langage de programmation en l'au moins une instruction correspondante dans un deuxième langage de programmation conformément à la règle de conversion. L'au moins une mémoire de l'au moins un dispositif de noeud peut comprendre une première mémoire volatile couplée de 5 manière communicative à l'au moins une CPU, et une deuxième mémoire volatile couplée de manière communicative à l'au moins un GPU ; affecter la partition d'ensemble de données à l'au moins un dispositif de noeud pour permettre un accès à la partition d'ensemble de données par l'au moins un GPU peut comprendre amener la partition d'ensemble de données à être stockée dans la deuxième mémoire 10 volatile ; et en réponse à une détermination que l'au moins un GPU n'est pas disponible pour être affecté à la réalisation de la première tâche de la routine d'analyse, le processeur peut être amené à effectuer des opérations comprenant : se retenir d'analyser la première routine de tâche pour déterminer si la première routine de tâche peut être compilée pour générer la routine de tâche de GPU ; affecter la 15 partition d'ensemble de données à l'au moins un dispositif de noeud pour amener la mémoire de la partition d'ensemble de données dans la première mémoire volatile à permettre un accès à la partition d'ensemble de données par l'au moins une CPU ; compiler la première routine de tâche pour exécution par l'au moins une CPU ; et affecter la réalisation de la première tâche de la routine d'analyse avec la partition 20 d'ensemble de données à l'au moins un dispositif de noeud pour permettre la réalisation de la première tâche avec la partition d'ensemble de données par l'au moins une CPU. [0026] L'appareil peut comprendre un dispositif de coordination qui coordonne le fonctionnement de la pluralité de dispositifs de noeud ; le processeur peut être 25 amené à recevoir de façon récurrente des mises à jour de l'état actuel de la part de chaque dispositif de noeud de la pluralité de dispositifs de noeud ; et pour analyser l'état actuel afin de déterminer la disponibilité de l'au moins un GPU de l'au moins un dispositif de noeud, le processeur peut être amené à identifier un dispositif de noeud de la pluralité de dispositifs de noeud qui intègre un GPU indiqué par l'état 30 actuel comme disponible. Pour affecter la partition d'ensemble de données de l'ensemble de données à l'au moins un dispositif de noeud, le processeur peut être amené à effectuer des opérations comprenant : analyser une métadonnée indicative 3055438 19 de caractéristiques structurelles de l'ensemble de données pour identifier une restriction dans la manière dont l'ensemble de données peut être divisé en la pluralité de partitions d'ensemble de données, la restriction étant choisie dans un groupe constitué d'une indication d'une plus petite unité atomique de données dans 5 l'ensemble de données, et d'une spécification d'un schéma de partitionnement ; et obtenir une division de l'ensemble de données en la pluralité de partitions d'ensemble de données basée au moins partiellement sur la restriction. Le processeur peut être amené à effectuer des opérations comprenant : extraire la métadonnée d'au moins un dispositif de stockage dans lequel l'ensemble de données est stocké ; et 10 transmettre une indication de l'affectation de la partition d'ensemble de données à l'au moins un dispositif de noeud ou à l'au moins un dispositif de stockage pour amener à une transmission de la partition d'ensemble de données de l'au moins un dispositif de stockage à l'au moins un dispositif de noeud. [0027] L'appareil peut comprendre un dispositif de noeud de l'au moins un 15 dispositif de noeud ; le dispositif de noeud peut comprendre un GPU de l'au moins un GPU ; le processeur peut inclure une CPU de l'au moins une CPU ; et pour analyser l'état actuel afin de déterminer la disponibilité de l'au moins un GPU de l'au moins un dispositif de noeud, la CPU peut être amenée à déterminer si le GPU du dispositif de noeud est indiqué par l'état actuel comme disponible. Le processeur est amené à 20 effectuer des opérations comprenant analyser une deuxième routine de tâche de la routine d'analyse pour déterminer si la deuxième routine de tâche peut être compilée pour générer une autre routine de tâche de GPU pour exécution par l'au moins un GPU afin d'amener l'au moins un GPU à réaliser des instances multiples de la deuxième tâche de la routine d'analyse au moins partiellement en parallèle sans 25 dépendance entre les entrées et les sorties des instances multiples de la deuxième tâche, la deuxième routine de tâche étant générée pour exécution par l'au moins une CPU afin de réaliser une deuxième tâche de la routine d'analyse. En réponse à une détermination que la deuxième routine de tâche ne peut pas être compilée pour générer l'autre routine de tâche de GPU, le processeur peut effectuer des opérations 30 comprenant : compiler la deuxième routine de tâche pour exécution par l'au moins une CPU ; et affecter une réalisation de la deuxième tâche de la routine d'analyse avec la partition d'ensemble de données à l'au moins un dispositif de noeud pour 3055438 20 permettre une réalisation de la deuxième tâche avec la partition d'ensemble de données par l'au moins une CPU. [0028] La règle de conversion peut être choisie dans un groupe constitué des éléments suivants : une spécification d'un ensemble d'instructions qui empêchent 5 chacune la compilation de la première routine de tâche pour générer la routine de tâche de GPU si elle est présente dans la première routine de tâche ; une spécification d'un ensemble d'instructions dont aucune n'empêcherait la compilation de la première routine de tâche pour générer la routine de tâche de GPU si elle était présente dans la première routine de tâche ; une spécification d'une manière 10 d'utiliser une instruction qui empêche la compilation de la première routine de tâche pour générer la routine de tâche de GPU si la manière d'utiliser l'instruction apparaît dans la première routine de tâche, la présence de l'instruction dans la première routine de tâche n'empêchant pas, sinon, la compilation de la première routine de tâche pour générer la routine de tâche de GPU ; une spécification d'une procédure 15 pour convertir des instructions de la première routine de tâche qui doivent être exécutées dans une boucle par l'au moins une CPU en des instructions correspondantes de la routine de tâche de GPU qui doivent être exécutées en parallèle par l'au moins un GPU dans une boucle correspondante ayant moins d'itérations que la boucle ; une spécification d'une procédure pour convertir des 20 instructions de la première routine de tâche qui doivent être exécutées dans une boucle par l'au moins une CPU en des instruction correspondantes de la routine de tâche de GPU qui doivent être exécutées en parallèle par l'au moins un GPU et pas dans une boucle ; et une spécification d'une procédure pour convertir des instructions de la première routine de tâche qui définissent une structure de données comprenant 25 des entrées destinées à être consultées séquentiellement pendant l'exécution de la première routine de tâche par l'au moins une CPU en des instruction correspondantes de la routine de tâche de GPU qui définissent une structure de données correspondante comprenant des entrées destinées à être consultées en parallèle pendant l'exécution de la routine de tâche de GPU par l'au moins un GPU. 30 [0029] Un produit-programme informatique incorporé de manière tangible dans un support de stockage lisible par machine et non transitoire, le produit-programme informatique comprenant des instructions utilisables pour amener un processeur à 3055438 21 effectuer des opérations comprenant : analyser un état actuel des ressources d'au moins un dispositif de noeud d'une pluralité de dispositifs de noeud pour déterminer une disponibilité d'au moins un processeur graphique (GPU) de l'au moins un dispositif de noeud pour être affecté à la réalisation d'une première tâche d'une 5 routine d'analyse, où : le fonctionnement de la pluralité de dispositifs de noeud est coordonné pour réaliser des tâches de la routine d'analyse au moins partiellement en parallèle ; la routine d'analyse est générée pour exécution par au moins une unité centrale de traitement (CPU) de l'au moins un noeud ; et les ressources de l'au moins un dispositif de noeud sont choisies dans un groupe constitué de l'au moins une CPU, 10 l'au moins un GPU, et de l'espace mémoire dans un moins une mémoire de l'au moins un dispositif de noeud. En réponse à une détermination que l'au moins un GPU est disponible pour être affecté à la réalisation de la première tâche de la routine d'analyse, le processeur peut être amené à effectuer des opérations comprenant : analyser une première routine de tâche de la routine d'analyse pour déterminer si la 15 première routine de tâche peut être compilée pour générer une routine de tâche de GPU pour exécution par l'au moins un GPU afin d'amener l'au moins un GPU à réaliser des instances multiples de la première tâche de la routine d'analyse au moins partiellement en parallèle sans dépendance entre les entrées et les sorties des instances multiples de la première tâche, où : la première routine de tâche est générée 20 pour exécution par l'au moins une CPU pour réaliser la première tâche de la routine d'analyse ; et la détermination de si la première routine de tâche peut être compilée pour générer la routine de tâche de GPU comprend une détermination de si la première routine de tâche inclut une instruction qui empêche la compilation pour générer la routine de tâche de GPU et une détermination de si les entrées et les 25 sorties de la première routine de tâche sont définies pour ne pas nécessiter la dépendance. En réponse à une détermination que la première routine de tâche peut être compilée pour générer la routine de tâche de GPU, le processeur peut être amené à effectuer des opérations comprenant : affecter une partition d'ensemble de données d'une pluralité de partitions d'ensemble de données d'un ensemble de données à l'au 30 moins un dispositif de noeud pour permettre un accès à la partition d'ensemble de données par l'au moins un GPU ; employer une règle de conversion pour convertir au moins une instruction de la première routine de tâche en au moins une instruction 3055438 22 correspondante de la routine de tâche de GPU ; compiler l'au moins une instruction correspondante de la routine de tâche de GPU pour exécution par l'au moins un GPU ; et affecter une réalisation de la première tâche de la routine d'analyse avec la partition d'ensemble de données à l'au moins un dispositif de noeud pour permettre 5 une réalisation des instances multiples de la première tâche avec la partition d'ensemble de données par l'au moins un GPU. [0030] Pour déterminer si la première routine de tâche inclut une instruction qui empêche la compilation pour générer la routine de tâche de GPU, le processeur peut être amené à : déterminer si l'instruction de la première routine de tâche est incluse 10 dans un ensemble d'instructions qui ne peuvent pas être converties en au moins une instruction pouvant être exécutée par l'au moins un GPU ; et en réponse à une détermination que l'instruction de la première routine de tâche n'est pas incluse dans l'ensemble d'instructions, déterminer si l'instruction de la première routine de tâche est utilisée dans la première routine de tâche d'une manière qui empêche sa 15 conversion en au moins une instruction pouvant être exécutée par l'au moins un GPU. Pour convertir l'au moins une instruction de la première routine de tâche en l'au moins une instruction correspondante de la routine de tâche de GPU, le processeur peut être amené à convertir l'au moins une instruction de la première routine de tâche d'un premier langage de programmation en l'au moins une 20 instruction correspondante dans un deuxième langage de programmation conformément à la règle de conversion. L' au moins une mémoire de l'au moins un dispositif de noeud comprend une première mémoire volatile couplée de manière communicative à l'au moins une CPU, et une deuxième mémoire volatile couplée de manière communicative à l'au moins un GPU ; l'affectation de la partition 25 d'ensemble de données à l'au moins un dispositif de noeud pour permettre un accès à la partition d'ensemble de données par l'au moins un GPU peut comprendre le fait d'amener la partition d'ensemble de données à être stockée dans la deuxième mémoire volatile ; et en réponse à une détermination que l'au moins un GPU n'est pas disponible pour être affecté à la réalisation de la première tâche de la routine 30 d'analyse, le processeur est amené à effectuer des opérations comprenant : se retenir d'analyser la première routine de tâche pour déterminer si la première routine de tâche peut être compilée pour générer la routine de tâche de GPU ; affecter la 3055438 23 partition d'ensemble de données à l'au moins un dispositif de noeud pour amener la mémoire de la partition d'ensemble de données dans la première mémoire volatile à permettre un accès à la partition d'ensemble de données par l'au moins une CPU ; compiler la première routine de tâche pour exécution par l'au moins une CPU ; et 5 affecter la réalisation de la première tâche de la routine d'analyse avec la partition d'ensemble de données à l'au moins un dispositif de noeud pour permettre la réalisation de la première tâche avec la partition d'ensemble de données par l'au moins une CPU. [0031] Le processeur peut être un composant d'un dispositif de coordination qui 10 coordonne le fonctionnement de la pluralité de dispositifs de noeud ; le processeur peut être amené à recevoir de façon récurrente des mises à jour de l'état actuel de la part de chaque dispositif de noeud de la pluralité de dispositifs de noeud ; et pour analyser l'état actuel afin de déterminer la disponibilité de l'au moins un GPU de l'au moins un dispositif de noeud, le processeur peut être amené à identifier un 15 dispositif de noeud de la pluralité de dispositifs de noeud qui intègre un GPU indiqué dans l'état actuel comme disponible. Pour affecter la partition d'ensemble de données de l'ensemble de données à l'au moins un dispositif de noeud, le processeur est amené à effectuer des opérations comprenant : analyser une métadonnée indicative de caractéristiques structurelles de l'ensemble de données pour identifier 20 une restriction dans la manière dont l'ensemble de données peut être divisé en la pluralité de partitions d'ensemble de données, la restriction étant choisie dans un groupe constitué d'une indication d'une plus petite unité atomique de données dans l'ensemble de données, et d'une spécification d'un schéma de partitionnement ; et obtenir une division de l'ensemble de données en la pluralité de partitions 25 d'ensemble de données basée au moins partiellement sur la restriction. Le processeur peut être amené à effectuer des opérations comprenant : extraire la métadonnée d'au moins un dispositif de stockage dans lequel l'ensemble de données est stocké ; et transmettre une indication de l'affectation de la partition d'ensemble de données à l'au moins un dispositif de noeud ou à l'au moins un dispositif de stockage pour 30 amener à une transmission de la partition d'ensemble de données de l'au moins un dispositif de stockage à l'au moins un dispositif de noeud. 3055438 24 [0032] Le processeur peut inclure une CPU de l'au moins une CPU ; la CPU peut être un composant d'un dispositif de noeud de l'au moins un dispositif de noeud ; le dispositif de noeud peut comprendre un GPU de l'au moins un GPU ; et pour analyser l'état actuel afin de déterminer la disponibilité de l'au moins un GPU de 5 l'au moins un dispositif de noeud, la CPU peut être amenée à déterminer si le GPU du dispositif de noeud est indiqué par l'état actuel comme disponible. Le processeur peut être amené à effectuer des opérations comprenant : analyser une deuxième routine de tâche de la routine d'analyse pour déterminer si la deuxième routine de tâche peut être compilée pour générer une autre routine de tâche de GPU pour exécution par 10 l'au moins un GPU afin d'amener l'au moins un GPU à réaliser des instances multiples de la deuxième tâche de la routine d'analyse au moins partiellement en parallèle sans dépendance entre les entrées et les sorties des instances multiples de la deuxième tâche, la deuxième routine de tâche étant générée pour exécution par l'au moins une CPU afin de réaliser une deuxième tâche de la routine d'analyse. En 15 réponse à une détermination que la deuxième routine de tâche ne peut pas être compilée pour générer l'autre routine de tâche de GPU, le processeur peut être amené à : compiler la deuxième routine de tâche pour exécution par l'au moins une CPU ; et affecter une réalisation de la deuxième tâche de la routine d'analyse avec la partition d'ensemble de données à l'au moins un dispositif de noeud pour permettre 20 une réalisation de la deuxième tâche avec la partition d'ensemble de données par l'au moins une CPU. L' au moins un GPU peut prendre en charge l'exécution de l'au moins une instruction correspondante de la routine de tâche de GPU en parallèle sur au moins un millier de fils d'exécution. [0033] Un procédé mis en oeuvre par ordinateur peut comprendre : l'analyse 25 d'un état actuel des ressources d'au moins un dispositif de noeud d'une pluralité de dispositifs de noeud pour déterminer une disponibilité d'au moins un processeur graphique (GPU) de l'au moins un dispositif de noeud pour être affecté à la réalisation d'une première tâche d'une routine d'analyse, dans laquelle : le fonctionnement de la pluralité de dispositifs de noeud est coordonné pour réaliser des 30 tâches de routines d'analyse au moins partiellement en parallèle ; la routine d'analyse est générée pour exécution par au moins une unité centrale de traitement (CPU) de l'au moins un noeud ; et les ressources de l'au moins un dispositif de noeud sont 3055438 25 choisies dans un groupe constitué de l'au moins une CPU, l'au moins un GPU, et de l'espace mémoire dans un moins une mémoire de l'au moins un dispositif de noeud. Le procédé peut comprendre, en réponse à une détermination que l'au moins un GPU est disponible pour être affecté à la réalisation de la première tâche de la routine 5 d'analyse : analyser une première routine de tâche de la routine d'analyse pour déterminer si la première routine de tâche peut être compilée pour générer une routine de tâche de GPU pour exécution par l'au moins un GPU afin d'amener l'au moins un GPU à réaliser des instances multiples de la première tâche de la routine d'analyse au moins partiellement en parallèle sans dépendance entre les entrées et les 10 sorties des instances multiples de la première tâche, où : la première routine de tâche est générée pour exécution par l'au moins une CPU pour réaliser la première tâche de la routine d'analyse ; et la détermination de si la première routine de tâche peut être compilée pour générer la routine de tâche de GPU comprend une détermination de si la première routine de tâche inclut une instruction qui empêche la compilation pour 15 générer la routine de tâche de GPU et une détermination de si les entrées et les sorties de la première routine de tâche sont définies pour ne pas nécessiter la dépendance. Le procédé peut comprendre, en réponse à une détermination que la première routine de tâche peut être compilée pour générer la routine de tâche de GPU : affecter une partition d'ensemble de données d'une pluralité de partitions 20 d'ensemble de données d'un ensemble de données à l'au moins un dispositif de noeud pour permettre un accès à la partition d'ensemble de données par l'au moins un GPU ; employer une règle de conversion pour convertir au moins une instruction de la première routine de tâche en au moins une instruction correspondante de la routine de tâche de GPU ; compiler l'au moins une instruction correspondante de la routine 25 de tâche de GPU pour exécution par l'au moins un GPU ; et affecter une réalisation de la première tâche de la routine d'analyse avec la partition d'ensemble de données à l'au moins un dispositif de noeud pour permettre une réalisation des instances multiples de la première tâche avec la partition d'ensemble de données par l'au moins un GPU. 30 [0034] Déterminer si la première routine de tâche inclut une instruction qui empêche la compilation pour générer la routine de tâche de GPU peut comprendre : déterminer si l'instruction de la première routine de tâche est incluse dans un 3055438 26 ensemble d'instructions qui ne peuvent pas être converties en au moins une instruction pouvant être exécutée par l'au moins un GPU ; et en réponse à une détermination que l'instruction de la première routine de tâche n'est pas incluse dans l'ensemble d'instructions, déterminer si l'instruction de la première routine de tâche 5 est utilisée dans la première routine de tâche d'une manière qui empêche sa conversion en au moins une instruction pouvant être exécutée par l'au moins un GPU. Convertir l'au moins une instruction de la première routine de tâche en l'au moins une instruction correspondante de la routine de tâche de GPU peut comprendre le fait de convertir l'au moins une instruction de la première routine de 10 tâche d'un premier langage de programmation en l'au moins une instruction correspondante dans un deuxième langage de programmation conformément à la règle de conversion. [0035] L'au moins une mémoire de l'au moins un dispositif de noeud peut comprendre une première mémoire volatile couplée de manière communicative à 15 l'au moins une CPU, et une deuxième mémoire volatile couplée de manière communicative à l'au moins un GPU ; l'affectation de la partition d'ensemble de données à l'au moins un dispositif de noeud pour permettre un accès à la partition d'ensemble de données par l'au moins un GPU peut comprendre le fait d'amener la partition d'ensemble de données à être stockée dans la deuxième mémoire volatile ; 20 et en réponse à une détermination que l'au moins un GPU n'est pas disponible pour être affecté à la réalisation de la première tâche de la routine d'analyse, le procédé peut comprendre : se retenir d'analyser la première routine de tâche pour déterminer si la première routine de tâche peut être compilée pour générer la routine de tâche de GPU ; affecter la partition d'ensemble de données à l'au moins un dispositif de noeud 25 pour amener la mémoire de la partition d'ensemble de données dans la première mémoire volatile à permettre un accès à la partition d'ensemble de données par l'au moins une CPU ; compiler la première routine de tâche pour exécution par l'au moins une CPU ; et affecter la réalisation de la première tâche de la routine d'analyse avec la partition d'ensemble de données à l'au moins un dispositif de noeud pour 30 permettre la réalisation de la première tâche avec la partition d'ensemble de données par l'au moins une CPU. 3055438 27 [0036] Un dispositif de coordination peut coordonner le fonctionnement de la pluralité de dispositifs de noeud ; le dispositif de coordination peut recevoir de façon récurrente des mises à jour de l'état actuel de la part de chaque dispositif de noeud de la pluralité de dispositifs de noeud ; et l'analyse de l'état actuel pour déterminer la 5 disponibilité de l'au moins un GPU de l'au moins un dispositif de noeud peut comprendre l'identification, au niveau du dispositif de coordination, d'un dispositif de noeud de la pluralité de dispositifs de noeud qui intègre un GPU indiqué dans l'état actuel comme disponible. Affecter la partition d'ensemble de données de l'ensemble de données à l'au moins un dispositif de noeud peut comprendre : analyser, au niveau 10 du dispositif de coordination, une métadonnée indicative de caractéristiques structurelles de l'ensemble de données pour identifier une restriction dans la manière dont l'ensemble de données peut être divisé en la pluralité de partitions d'ensemble de données, la restriction étant choisie dans un groupe constitué d'une indication d'une plus petite unité atomique de données dans l'ensemble de données, et d'une 15 spécification d'un schéma de partitionnement ; et obtenir une division de l'ensemble de données en la pluralité de partitions d'ensemble de données basée au moins partiellement sur la restriction. Le procédé peut comprendre : extraire la métadonnée d'au moins un dispositif de stockage dans lequel l'ensemble de données est stocké ; et transmettre une indication de l'affectation de la partition d'ensemble de données à 20 l'au moins un dispositif de noeud ou à l'au moins un dispositif de stockage pour amener à une transmission de la partition d'ensemble de données de l'au moins un dispositif de stockage à l'au moins un dispositif de noeud. [0037] L'analyse de l'état actuel pour déterminer la disponibilité de l'au moins un GPU de l'au moins un dispositif de noeud peut comprendre une analyse, par une 25 CPU d'un dispositif de noeud, d'un état actuel du dispositif de noeud pour savoir si un GPU du dispositif de noeud est actuellement disponible, dans laquelle : l'au moins une CPU peut comprendre la CPU ; l'au moins un dispositif de noeud peut comprendre le dispositif de noeud ; et l'au moins un GPU peut comprendre le GPU. [0038] Le procédé selon la revendication 21 peut comprendre : l'analyse d'une 30 deuxième routine de tâche de la routine d'analyse pour déterminer si la deuxième routine de tâche peut être compilée pour générer une autre routine de tâche de GPU pour exécution par l'au moins un GPU afin d'amener l'au moins un GPU à réaliser 3055438 28 des instances multiples de la deuxième tâche de la routine d'analyse au moins partiellement en parallèle sans dépendance entre les entrées et les sorties des instances multiples de la deuxième tâche, la deuxième routine de tâche étant générée pour exécution par l'au moins une CPU afin de réaliser une deuxième tâche de la 5 routine d'analyse. Le procédé peut comprendre, en réponse à une détermination que la deuxième routine de tâche ne peut pas être compilée pour générer l'autre routine de tâche de GPU : la compilation de la deuxième routine de tâche pour exécution par l'au moins une CPU ; et l'affectation d'une réalisation de la deuxième tâche de la routine d'analyse avec la partition d'ensemble de données à l'au moins un dispositif 10 de noeud pour permettre une réalisation de la deuxième tâche avec les partitions d'ensemble de données par l'au moins une CPU. Le procédé peut comprendre une analyse la routine d'analyse pour déterminer un ordre de tâches de la routine d'analyse, dans lequel l'ordre de tâches comprend un ordre relatif des première et deuxième tâches. 15 [0039] Les explications qui précèdent, ainsi que d'autres caractéristiques et modes de réalisation, ressortiront plus clairement à la lecture du fascicule, des revendications et des dessins d'accompagnement ci-après. BREVE DESCRIPTION DES DESSINS [0040] La présente invention est décrite conjointement avec les figures 20 annexées : [0041] La figure 1 représente un schéma fonctionnel qui fournit une illustration des composants matériels d'un système informatique, selon certains modes de réalisation de la présente technologie. [0042] La figure 2 représente un réseau type comprenant un ensemble de 25 dispositifs type communiquant les uns avec les autres par un système d'échange et via un réseau, selon certains modes de réalisation de la présente technologie. [0043] La figure 3 fournit une représentation d'un modèle conceptuel d'un système de protocole de communications, selon certains modes de réalisation de la présente technologie. 30 [0044] La figure 4 représente un système informatique de type grille de communications comprenant une variété de noeuds de commande et de travail, selon certains modes de réalisation de la présente technologie. 3055438 29 [0045] La figure 5 représente un organigramme montrant un processus type pour régler une grille de communications ou un projet de travail dans une grille de communications après une défaillance d'un noeud, selon certains modes de réalisation de la présente technologie. 5 [0046] La figure 6 représente une partie d'un système informatique de type grille de communications comprenant un noeud de commande et un noeud de travail, selon certains modes de réalisation de la présente technologie. [0047] La figure 7 représente un organigramme montrant un processus type pour exécuter une analyse de données ou un projet de traitement, selon certains modes de 10 réalisation de la présente technologie. [0048] La figure 8 représente un schéma fonctionnel comprenant des composants d'un moteur de traitement de flux d'évènements (ESPE), selon des modes de réalisation de la présente technologie. [0049] La figure 9 représente un organigramme montrant un processus type 15 comprenant des opérations réalisées par un moteur de traitement de flux d'évènements, selon certains modes de réalisation de la présente technologie. [0050] La figure 10 représente un système ESP s'interfaçant entre un dispositif de publication et plusieurs dispositifs d'abonnement à des évènements, selon des modes de réalisation de la présente technologie. 20 [0051] Les figures 11A et 11B représentent chacune un mode de réalisation type d'un système de traitement distribué. [0052] La figure 12 représente un mode de réalisation type de l'échange de pages. [0053] Les figures 13A et 13B représentent chacune un mode de réalisation type 25 de l'affectation de la réalisation de tâches d'une routine d'analyse à des dispositifs de noeud d'un système de traitement distribué. [0054] Les figures 14A, 14B et 14C, ensemble, représentent un mode de réalisation type de l'affectation de partitions d'ensemble de données et de tâches. [0055] Les figures 15A et 15B, ensemble, représentent un exemple de réalisation 30 d'une tâche affectée par un mode de réalisation type d'un dispositif de noeud. [0056] La figure 16 représente un autre mode de réalisation type de l'affectation de partitions d'ensemble de données et de tâches. 3055438 30 [0057] Les figures 17A, 17B et 17C, ensemble, représentent un mode de réalisation type du retard dans l'affectation d'une partition d'ensemble de données et d'une tâche. [0058] Les figures 18A, 18B et 18C, ensemble, représentent un autre mode de 5 réalisation type du retard dans l'affectation d'une partition d'ensemble de données et d'une tâche. [0059] La figure 19 représente encore un mode de réalisation type de l'analyse de routines de tâche et de l'affectation de tâches par un dispositif de coordination. [0060] La figure 20 représente encore un mode de réalisation type de l'analyse 10 et de la compilation d'une routine de tâche par un dispositif de noeud. [0061] La figure 21 représente encore un mode de réalisation type des affectations initiales et ultérieures de tâches par un dispositif de coordination. [0062] La figure 22 représente encore un mode de réalisation type de l'obtention d'un laps de temps de retard pour use dans une affectation ultérieure d'une tâche. 15 [0063] [0063] La figure 23 représente encore un mode de réalisation type de l'affectation retardée d'une tâche par un dispositif de coordination. DESCRIPTION DETAILLEE [0064] Divers modes de réalisation décrits dans le présent document concernent de façon générale des techniques permettant d'améliorer l'utilisation efficace de 20 ressources de traitement, de stockage et de bande passante réseau au sein d'une grille de dispositifs de noeud pour permettre d'achever des routines d'analyse individuelles en un temps plus court. Divers modes de réalisation concernent également, de façon générale, des techniques permettant d'améliorer la facilité d'utilisation d'un support de fils d'exécutions multiples (multi-threading) fourni par au moins une partie des 25 processeurs d'une grille. Chaque dispositif de noeud d'une grille de dispositifs de noeud peut comprendre à la fois une mémoire volatile fournissant un accès plus rapide aux données et aux routines, et une mémoire non volatile fournissant une capacité de stockage supérieure, mais avec un accès plus lent que la mémoire volatile. En outre, chaque noeud de la grille peut comprendre un ou plusieurs unités 30 centrales de traitement (CPU), ou peut comprendre une combinaison d'une ou plusieurs CPU et d'un ou plusieurs processeurs graphiques (GPU), chacun desquels pouvant être plus apte à réaliser différents types de tâches d'une routine d'analyse. 3055438 31 Les affectations initiales de partitions d'ensemble de données et d'une ou plusieurs tâches d'une routine d'analyse à des dispositifs de noeud peut s'appuyer sur la disponibilité de ressources dans les dispositifs de noeud et/ou sur une analyse automatisée des routines de tâches dans la routine d'analyse pour identifier des 5 routines de tâche qui peuvent être converties et compilées pour exécution par des GPU plutôt que par des CPU. Une telle analyse peut être réalisée soit conjointement avec l'obtention des affectations initiales, soit dans le cadre de la compilation de chacune des routines de tâche pour exécution par des CPU et/ou par des GPU. Ensuite, pendant l'exécution de routines de tâche de la routine d'analyse, lorsqu'un 10 dispositif de noeud devient disponible de sorte qu'il peut se voir affecter une tâche suivante à réaliser avec une partition d'ensemble de données particulière, une telle affectation à ce dispositif de noeud peut être retardée d'un laps de temps prédéterminé pour offrir à un autre dispositif de noeud encore en train de réaliser une tâche précédente avec la partition d'ensemble de données particulière en question 15 l'occasion de devenir disponible et se voir affecter la réalisation de cette tâche suivante avec la partition d'ensemble de données particulière en question. Un tel retard d'affectation peut permettre de profiter du stockage à durée limitée de la partition d'ensemble de données particulière dans une mémoire volatile de l'autre dispositif de noeud afin de permettre à la tâche suivante d'être réalisée avec la 20 partition d'ensemble de données particulière plus rapidement. Un tel retard d'affectation peut également éviter de subir un retard potentiellement plus important associé à la transmission de la partition d'ensemble de données particulière audit dispositif de noeud. [0065] Un dispositif de coordination d'une grille de dispositifs de noeud peut 25 recevoir de façon récurrente des données de noeud de chacun des noeuds de la grille de dispositifs de noeuds fournissant des indications mises à jour de façon récurrente du degré de disponibilité de diverses ressources de traitement, de stockage et/ou d'accès réseau de chacun. Le dispositif de coordination peut également recevoir une routine d'analyse qui comprend des instructions exécutables pour plusieurs routines 30 de tâche pour plusieurs tâches devant être réalisées avec au moins un ensemble de données, et précise un ordre dans lequel les tâches doivent être réalisées. Le dispositif de coordination peut en outre recevoir des métadonnées indicatives de 3055438 32 diverses caractéristiques structurelles de l'au moins un ensemble de données. A partir des données de noeud, des métadonnées et/ou de la routine d'analyse, le dispositif de coordination peut obtenir des affectations initiales de partitions d'ensemble de données de l'au moins un ensemble de données à des dispositifs de noeud 5 sélectionnés et des affectations initiales d'une ou plusieurs tâches devant être réalisées par les dispositifs de noeud sélectionnés. Le dispositif de coordination peut ensuite transmettre des indications des affectations initiales aux dispositifs de noeud sélectionnés. Dans le cadre de ces affectations initiales, plusieurs partitions d'ensemble de données de l'au moins un ensemble de données peuvent être 10 distribuées parmi les dispositifs de noeud sélectionnés pour permettre aux dispositifs de noeud sélectionnés de réaliser les mêmes tâches au moins partiellement en parallèle avec leurs partitions d'ensemble de données correspondantes. Le dispositif de coordination peut en outre transmettre, à un seul dispositif de stockage ou à une grille de dispositifs de stockage qui stocke l'ensemble de données, des indications de 15 la distribution de partitions d'ensemble de données à effectuer aux dispositifs de noeud sélectionnés dans le cadre des affectations initiales pour permettre aux réalisations de la ou des tâches initiales de commencer. Dans certains modes de réalisation, chacun des dispositifs de noeud sélectionnés peut extraire une ou plusieurs des partitions d'ensemble de données de l'un ou plusieurs des dispositifs de 20 stockage. Dans d'autres modes de réalisation, une ou plusieurs des partitions d'ensemble de données peuvent être transmises à chacun des dispositifs de noeud sélectionnés par les un ou plusieurs des dispositifs de stockage. [0066] En ce qui concerne les ressources de traitement à propos desquelles le dispositif de coordination peut recevoir de façon récurrente des données de noeud, 25 chacun des dispositifs de noeud peut intégrer un ou plusieurs GPU en plus ou au lieu d'intégrer une ou plusieurs CPU. Les une ou plusieurs CPU peuvent employer une architecture de traitement interne jugée adaptée au traitement en série de routines de tâche qui incluent diverses opérations d'entrée/sortie et/ou opérations de branchement qui conditionnent l'exécution de différents ensembles d'instructions par 30 les résultats de diverses déterminations. Les une ou plusieurs CPU peuvent chacune inclure un ou plusieurs coeurs de traitement qui peuvent chacun prendre en charge un degré relativement limité d'exécution parallèle d'instructions sur une quantité 3055438 33 relativement limitée de fils d'exécution. Au contraire, les un ou plusieurs GPU peuvent employer une architecture de traitement interne jugée adaptée au traitement parallèle de routines de tâche qui incluent une variété relativement limitée de calculs et/ou d'opérations au niveau du bit. Dans certains modes de réalisation, les un ou 5 plusieurs GPU peuvent être à même de prendre en charge le traitement parallèle d'une quantité relativement importante d'instances d'une tâche sur une quantité relativement importante de fils d'exécution lorsqu'il n'y a pas de dépendances parmi les instances de la tâche (ce qu'on appelle parfois « parallélisme embarrassant »). En effet, pour une variété relativement limitée de tâches, un seul GPU dans un seul 10 dispositif de noeud peut être à même de faire le même travail que les CPU d'un grand nombre de dispositifs de noeud séparés, mais plus rapidement et plus économiquement. Ainsi, il peut être avantageux qu'il y ait au moins un sous-ensemble des dispositifs de noeud qui intègrent un ou plusieurs GPU qui peuvent réaliser une telle variété limitée de tâches avec une telle augmentation de la vitesse, 15 et il peut être avantageux de pouvoir identifier automatiquement des tâches dans des routines d'analyse qui sont d'une telle variété limitée. [0067] Dans des modes de réalisation d'une grille de dispositifs de noeuds dans lesquels une partie, mais pas la totalité, des dispositifs de noeud intègrent ces GPU, déterminer si une routine d'analyse comprend des routines de tâche pour une ou 20 plusieurs tâches qui sont susceptibles d'être exécutées plus rapidement par des GPU en tant que tâches à parallélisme embarrassant que par des CPU peut amener le dispositif de coordination à décider d'accorder la priorité à l'affectation de dispositifs de noeud intégrant des GPU ou de dispositifs de noeud n'intégrant pas de GPU pour réaliser les tâches de la routine d'analyse. Le dispositif de coordination peut analyser 25 les routines de tâche d'une routine d'analyse pour identifier les tâches qui sont mises en oeuvre avec des instructions et qui travaillent avec des données de manière à éviter les dépendances qui rendent ces tâches susceptibles d'être compilées pour exécution en tant que tâches à parallélisme embarrassant sur un grand nombre de fils par un ou plusieurs GPU. Si aucune routine de tâche telle n'est trouvée par cette analyse, alors 30 la totalité de la routine d'analyse peut être compilée pour exécution exclusivement par des CPU. En outre, la priorité peut être accordée à l'affectation des tâches de la routine d'analyse destinées à être réalisées par des dispositifs de noeud qui 3055438 34 n'intègrent pas de GPU et/ou qui intègrent une ou plusieurs CPU, ainsi qu'un ou plusieurs GPU. Une telle priorité peut être accordée de manière à laisser le plus grand nombre possible des noeuds qui intègrent un ou plusieurs GPU disponibles pour se voir affecter des tâches d'une autre routine d'analyse dans lesquelles les 5 instructions et/ou l'interaction avec des données dans une ou plusieurs routines de tâche sont susceptibles d'être compilées pour exécution en tant que tâches à parallélisme embarrassant par des GPU. [0068] Cependant, il convient de noter que, même si les résultats de l'analyse des routines de tâche d'une routine d'analyse peuvent exercer une certaine influence 10 sur le choix des dispositifs de noeud auxquels affecter des tâches, dans certains modes de réalisation, des indications de quelles ressources de traitement sont disponibles parmi les dispositifs de noeud qui sont disponibles peuvent exercer une certaine influence sur le fait que les routines de tâche soient analysées et/ou compilées pour exécution par des GPU. Plus spécifiquement, dans des modes de 15 réalisation dans lesquels aucun des dispositifs de noeud qui intègrent des GPU n'est actuellement disponible pour se voir affecter une quelconque tâche (par exemple, tous les dispositifs de noeud qui intègrent des GPU sont affectés à la réalisation de tâches d'une autre routine d'analyse entièrement indépendante), le dispositif de coordination peut se retenir d'effectuer une quelconque analyse des routines de tâche 20 pour déterminer si l'une quelconque des routines de tâche est susceptible d'être compilée pour exécution par un GPU, puisqu'aucun GPU n'est actuellement disponible pour le faire. [0069] Lorsqu'une analyse des instructions dans des routines de tâche est effectuée, cette analyse peut comporter des comparaisons des instructions de chaque 25 routine de tâche à une liste d'instructions qui sont connues chacune pour au moins ne pas empêcher leurs tâches correspondantes d'être réalisées en tant que tâches à parallélisme embarrassant par un GPU, et/ou à une liste d'instructions qui sont connues chacune pour rendre une tâche impossible à réaliser en tant que tâche à parallélisme embarrassant par un GPU. De plus, lorsqu'il s'avère qu'une routine de 30 tâche ne contient pas d'instructions qui rendent sa tâche correspondante impossible à réaliser en tant que tâche à parallélisme embarrassant par un GPU, la manière dont sont utilisées les instructions de la routine de tâche en question peut être analysée 3055438 pour déterminer si la manière dont sont utilisées n'importe lesquelles des instructions rend la tâche correspondante impossible à réaliser en tant que tâche à parallélisme embarrassant par un GPU. À titre d'exemple, si de telles instructions sont utilisées pour réaliser des opérations sur des données d'une manière qui crée des dépendances 5 parmi les instances d'une routine de tâche de sorte que ces instances ne peuvent pas être vraiment réalisées en parallèle, alors la tâche de la routine de tâche peut n'être pas susceptible d'être réalisée en tant que tâche à parallélisme embarrassant. S'il s'avère que les instructions d'une routine de tâche et la manière dont ces instructions sont utilisées n'empêchent pas la tâche correspondante d'être réalisée en tant que 10 tâche à parallélisme embarrassant par un GPU, alors la compilation des instructions de la routine de tâche pour cette exécution par un ou plusieurs GPU peut être la marche à suivre par défaut. Lorsque la grille de dispositifs de noeuds comprend des dispositifs de noeud qui intègrent différents GPU qui ne partagent pas un ensemble d'instructions, la compilation de la routine de tâche pour cette exécution par un ou 15 plusieurs GPU peut comporter plusieurs compilations de la routine de tâche pour prendre en charge chacun des différents GPU. [0070] Dans certains modes de réalisation, la compilation d'une routine de tâche pour réaliser une tâche déterminée comme étant susceptible d'être réalisée en tant que tâche à parallélisme embarrassant par un GPU peut comporter une conversion 20 d'instructions de la routine de tâche qui n'ont pas été générées pour amener à cette réalisation à parallélisme embarrassant de la tâche par un GPU en instructions qui sont générées pour amener à une telle réalisation de la tâche. Un compilateur permettant de réaliser cette conversion peut employer un ensemble de règles de compilation qui sont associées chacune avec une ou plusieurs instructions 25 particulières qui peuvent figurer parmi les instructions de la routine de tâche, et qui amènent les une ou plusieurs instructions particulières à être converties en une ou plusieurs autres instructions qui effectuent une exécution à parallélisme embarrassant par un GPU. Parmi ces règles de compilation, il peut y avoir des règles qui amènent chacune à la conversion d'un type particulier de boucle d'instructions en un autre 30 type de boucle se prêtant mieux à une exécution à parallélisme embarrassant par un GPU (par exemple une boucle avec une quantité réduite d'itérations), et/ou qui amènent au remplacement d'un type particulier de boucle d'instructions par une ou 3055438 36 plusieurs autres instructions pour exécution par un GPU d'une manière à parallélisme embarrassant qui n'implique pas l'utilisation d'une boucle. Il peut y avoir également un ensemble de règles de compilation qui sont associées chacune à un type particulier de structure de données qui peut être instancié ou autrement employé par 5 les instructions de la routine de tâche, et qui amènent la structure de données à être convertie en une autre structure de données plus susceptible d'être utilisée dans une exécution à parallélisme embarrassant par un GPU. [0071] Grâce à l'utilisation de ces conversions d'instructions d'une ou plusieurs routines de tâche, les collaborateurs qui écrivent les instructions des routines de tâche 10 d'une routine d'analyse peuvent bénéficier de l'occasion de tirer parti des fonctionnalités de traitement à parallélisme embarrassant des un ou plusieurs GPU intégrés dans au moins certains des dispositifs de noeud sans avoir besoin d'écrire les instructions des routines de tâche spécifiquement pour une exécution à parallélisme embarrassant par des GPU. En d'autres termes, on évite ainsi à ces collaborateurs de 15 devoir acquérir les compétences nécessaires pour structurer et écrire les instructions qui mettent en oeuvre les tâches d'une routine d'analyse d'une manière qui soit conçue pour une exécution à parallélisme embarrassant par des GPU. De plus, lorsque la grille de dispositifs de noeuds comprend des dispositifs de noeud qui intègrent différents GPU qui ne partagent pas un ensemble d'instructions, on évite en 20 outre à ces collaborateurs de devoir structurer et écrire différentes versions des instructions des routines de tâche pour résoudre les différentes singularités d'une exécution à parallélisme embarrassant par chacun des différents GPU. [0072] En ce qui concerne les ressources de stockage à propos desquelles le dispositif de coordination peut recevoir de façon récurrente des données de noeud, 25 chacun des dispositifs de noeud peut intégrer des capacités de stockage mises en oeuvre sous forme de combinaison d'une mémoire volatile et d'une mémoire non volatile. La mémoire volatile peut être mise en oeuvre avec un ou plusieurs composants de mémoire qui emploient une technologie de stockage qui permet un accès relativement rapide aux données et/ou routines, mais qui ne permet pas de 30 conserver des données et/ou des routines stockées dedans sans alimentation continue en courant électrique. Ces technologies comprennent, de façon non exhaustive, n'importe lequel de divers types de mémoire vive (RAM). La mémoire non volatile 3055438 37 peut être mise en oeuvre avec un ou plusieurs composants de mémoire qui emploient une technologie de stockage qui permet de conserver des données et/ou des routines stockées dans ceux-ci que l'alimentation en courant électrique se poursuive ou non, mais qui n'est pas en mesure de fournir un accès aussi rapide que celui fourni par 5 diverses technologies de mémoire volatile sur lesquelles la mémoire volatile peut s'appuyer. Ces technologies de mémoire non volatile comprennent, de façon non exhaustive, l'utilisation de l'un quelconque d'une variété de supports de stockage ferromagnétiques et/ou optiques. [0073] Grâce à l'accès plus rapide que procure la mémoire volatile par rapport à 10 la mémoire non volatile, des instructions exécutées par les une ou plusieurs CPU et/ou les un ou plusieurs GPU intégrés dans chaque dispositif de noeud peuvent être stockées dans une mémoire volatile où elles peuvent être lues, écrites et/ou modifiées plus rapidement. Toutefois, en raison des coûts souvent inférieurs et/ou des densités de stockage souvent supérieures des composants de mémoire non volatile par rapport 15 aux composants de mémoire volatile, la mémoire non volatile peut être mise en oeuvre de manière à avoir une capacité de stockage supérieure à celle de la mémoire volatile dans chacun des dispositifs de noeud. Bien qu'il puisse y avoir des ensembles de données qui sont d'une taille suffisamment réduite et/ou qui sont distribués entre une quantité suffisamment importante de dispositifs de noeud pour faire que chaque 20 partition d'ensemble de données de l'ensemble de données qui est distribué à un dispositif de noeud soit suffisamment petite pour pouvoir être entièrement stockée dans une mémoire volatile, il est envisagé que les partitions d'ensemble de données de la majorité des ensembles de données soient susceptibles chacune d'être trop grande pour le faire. 25 [0074] De ce fait, dans chaque dispositif de noeud, les pages de routines étant exécutées et/ou de données étant consultées par les une ou plusieurs CPU et/ou les un ou plusieurs GPU peuvent être échangées d'une mémoire non volatile vers une mémoire volatile. Comme il peut être bien connu de l'homme du métier, l'un quelconque d'une variété d'algorithmes peut être employé pour sélectionner des 30 pages de routines et/ou de données à échanger vers une mémoire volatile, et/ou pour sélectionner des pages à retenir dans une mémoire volatile pendant que d'autres sont rééchangée vers une mémoire non volatile y compris, entre autres, l'un quelconque 3055438 38 d'une variété d'algorithmes à base de demande et/ou prédictifs. Dans un ou plusieurs modes de réalisation, un ou plusieurs des dispositifs de noeud peuvent exécuter un système d'exploitation (OS) qui comprend un composant de pagination qui effectue cet échange de pages de routines et/ou de données de taille uniforme. En fonction de 5 divers facteurs, tels que les types d'opérations réalisés, la fréquence des accès effectués à diverses pages de routines et/ou de données, et/ou le nombre de routines exécutées en parallèle, une page d'une routine et/ou de données peut être retenue dans une mémoire volatile pendant un laps de temps plus ou moins long avant d'être rééchangée vers une mémoire non volatile pour libérer de l' espace dans une mémoire 10 volatile pour une autre page d'une routine et/ou de données. Ainsi, le stockage de pages de routines et/ou de données dans une mémoire volatile dans chacun des dispositifs de noeud peut être limité dans le temps. [0075] Dans des dispositifs de noeud intégrant à la fois une ou plusieurs CPU et un ou plusieurs GPU, il peut y avoir une mémoire volatile pour les une ou plusieurs 15 CPU et une autre mémoire volatile pour les un ou plusieurs GPU. Toutefois, il peut y avoir une seule mémoire non volatile, et des pages de routines et/ou de données peuvent être échangées entre l'unique mémoire non volatile et chacune des deux mémoires volatiles. Dans certains modes de réalisation, le fonctionnement des un ou plusieurs GPU peut être au moins partiellement commandé par les une ou plusieurs 20 CPU de sorte que les un ou plusieurs GPU peuvent ne pas être utilisables de manière totalement autonome par rapport aux une ou plusieurs CPU. Dans ces modes de réalisation, la mémoire volatile associée aux un ou plusieurs GPU peut également être accessible aux une ou plusieurs CPU, et une routine de gestion de page de stockage exécutée par les une ou plusieurs CPU pour réaliser un échange de pages de 25 routines et/ou de données pour les une ou plusieurs CPU peut également effectuer cet échange de pages de routines et/ou de données pour les un ou plusieurs GPU. Comme il peut être bien connu de l'homme du métier, cet échange par les une ou plusieurs CPU pour le compte des un ou plusieurs GPU peut résulter de la nécessité pour une ou plusieurs routines pilotes d'être exécutées par les une ou plusieurs CPU 30 pour permettre un accès à la mémoire non volatile et/ou pour exploiter un système de fichiers employé pour stocker des données et/ou des routines en tant que fichiers avec la mémoire non volatile Ainsi, quelle que soit la manière exacte dont chacun 3055438 39 des dispositifs de noeud sélectionnés est pourvu d'une partition d'ensemble de données, cette partition d'ensemble de données reçue peut être initialement stockée entièrement dans la mémoire non volatile de chaque dispositif de noeud. Après cette réception et ce stockage, des pages de la partition d'ensemble de données reçues 5 peuvent ensuite être échangées dans la mémoire volatile des une ou plusieurs CPU et/ou des un ou plusieurs GPU si nécessaire pour prendre en charge la réalisation d'une ou plusieurs tâches d'une routine d'analyse avec la partition d'ensemble de données. [0076] En ce qui concerne les ressources d'accès réseau à propos desquelles le 10 dispositif de coordination peut recevoir de façon récurrente des données de noeud, chacun des dispositifs de noeud peut intégrer une interface réseau vers un réseau employé par la grille de dispositifs de noeuds afin de coupler de manière communicative les dispositifs de noeud les uns aux autres, au dispositif de coordination et/ou à un ou plusieurs dispositifs de stockage (par exemple une grille 15 de dispositifs de stockage). Les routines de tâche exécutées par la ou les CPU et/ou le ou les GPU pour réaliser des tâches de routines d'analyse peuvent être distribuées par le dispositif de coordination à des dispositifs de noeud via le réseau. En outre, les partitions d'ensemble de données avec lesquelles les tâches sont réalisées peuvent être transmises des un ou plusieurs dispositifs de stockage à des dispositifs de noeud 20 via le réseau, et des partitions d'ensemble de données obtenues dans un noeud peuvent être transmises en retour aux un ou plusieurs dispositifs de stockage. Comme il peut être bien connu de l'homme du métier, dans certains modes de réalisation, les un ou plusieurs GPU d'un dispositif de noeud peuvent ne pas pouvoir utiliser directement l'interface réseau du dispositif de noeud pour effectuer des échanges de 25 routines et/ou de données qui sont associées à une réalisation d'une tâche par les un ou plusieurs GPU. Au lieu de cela, de manière similaire à l'échange de pages associé aux un ou plusieurs GPU entre une mémoire volatile et une mémoire non volatile, les une ou plusieurs CPU du dispositif de noeud peuvent ainsi utiliser l'interface réseau pour le compte des un ou plusieurs GPU. Là encore, une telle action pour le compte 30 des un ou plusieurs GPU par les une ou plusieurs CPU peut être nécessaire pour qu'une ou plusieurs routines pilotes soient exécutées par les une ou plusieurs CPU pour permettre un accès à l'interface réseau. 3055438 [0077] Tout comme l'obtention d'un accès à des routines et/ou des données stockées dans une mémoire non volatile d'un dispositif de noeud peut être nettement plus lente que l'obtention d'un accès à des routines et/ou des données stockées dans une mémoire volatile, l'obtention d'un accès à des routines et/ou des données 5 stockées dans un autre dispositif au travers d'un réseau peut être encore beaucoup plus lente. De plus, dans certains modes de réalisation, l'obtention d'un accès à des routines et/ou des données stockées soit dans la mémoire non volatile soit dans un autre dispositif au travers du réseau peut être encore plus lente pour les un ou plusieurs GPU à cause de leur dépendance des une ou plusieurs CPU du dispositif de 10 noeud pour agir afin de permettre cet accès pour le compte des un ou plusieurs GPU. Ainsi, il peut être jugé souhaitable, à chaque fois que c'est possible, d'augmenter au maximum le nombre d'accès effectués à des routines et/ou des données pendant qu'elles sont encore stockées dans une mémoire volatile associée à la ou les CPU et/ou au(x) GPU(s) qui effectuent ces accès, et de limiter les accès effectués à des 15 routines et/ou des données pendant qu'elles sont encore stockées dans une mémoire non volatile et/ou dans d'autres dispositifs de sorte que l'accès doit se faire via le réseau. Cela peut impliquer de permettre que certains dispositifs de noeud de la grille de dispositifs de noeuds deviennent inactifs pendant des laps de temps divers pour attendre la disponibilité de dispositifs de noeud particuliers pour une utilisation dans 20 la réalisation de tâches particulières avec des partitions d'ensemble de données particulières, plutôt que d'affecter immédiatement des tâches à chaque noeud qui devient disponible pour une utilisation dans la réalisation d'une tâche sans considérer quels dispositifs de noeud ont déjà des partitions d'ensemble de données particulières dans leurs mémoires. En d'autres termes, l'affectation d'une tâche suivante peut être 25 retardée d'un certain laps de temps pour permettre qu'un dispositif de noeud particulier dans lequel une partition d'ensemble de données particulière est stockée devienne à nouveau disponible pour se voir affecter une tâche suivante qui implique l'utilisation de la partition d'ensemble de données particulière, plutôt que d'affecter immédiatement la tâche suivante à un autre dispositif de noeud auquel la partition 30 d'ensemble de données particulière devrait être transmise. De plus, lorsqu'il y a plusieurs tâches à réaliser avec une partition particulière qui peuvent être réalisées à l'aide d'un GPU, retarder l'affectation de la suivante de ces tâches multiples pour 3055438 41 offrir l'occasion d'affecter cette tâche suivante de ces tâches à un dispositif de noeud qui intègre un GPU et qui contient déjà la partition d'ensemble de données particulière permet d'éviter une situation où le fait d'affecter immédiatement la tâche suivante au prochain dispositif de noeud disponible peut entraîner l'affectation à un 5 dispositif de noeud qui n'intègre pas de GPU, entraînant ainsi une réalisation plus lente de la suivante de ces tâches. [0078] Ainsi, par exemple, lorsqu'un premier dispositif de noeud qui était engagé dans la réalisation d'une première tâche d'une analyse avec une première partition d'ensemble de données d'un ensemble de données achève sa réalisation de la 10 première tâche avec la première partition d'ensemble de données, et ce faisant devient disponible de sorte qu'il peut être affecté à la réalisation d'une deuxième tâche de l'analyse avec une deuxième partition d'ensemble de données de l'ensemble de données, le dispositif de coordination peut ne pas affecter le premier dispositif de noeud pour réaliser ainsi la deuxième tâche avec la deuxième partition d'ensemble de 15 données pendant un laps de temps prédéterminé Le laps de temps prédéterminé peut être choisi de manière à offrir l'occasion à un deuxième dispositif de noeud, qui est toujours engagé dans la réalisation de la première tâche avec la deuxième partition d'ensemble de données, d'achever sa réalisation de la première tâche avec la deuxième partition d'ensemble de données de sorte que le deuxième dispositif de 20 noeud puisse être affecté à la réalisation de la deuxième tâche avec la deuxième partition d'ensemble de données. Cependant, si le deuxième dispositif de noeud ne devient pas disponible pour être affecté à la réalisation de la deuxième tâche avec la deuxième partition d'ensemble de données, alors un autre dispositif de noeud dans lequel la deuxième partition d'ensemble de données n'est pas déjà stockée peut être 25 affecté à cette réalisation (par exemple le premier dispositif de noeud). Alternativement, dans d'autres modes de réalisation, s'il y a encore un autre dispositif de noeud dans lequel la deuxième partition d'ensemble de données était également stockée en préparation de l'utilisation de cet autre dispositif de noeud comme secours en réponse à une défaillance par un dispositif de noeud réalisant une 30 tâche avec le deuxième partie d'ensemble de données, et si le deuxième dispositif de noeud ne devient pas disponible pour être affecté à la réalisation de la deuxième tâche avec la deuxième partition d'ensemble de données, et si un tel autre dispositif de 3055438 42 noeud est actuellement disponible pour être ainsi affecté, alors cet autre dispositif de noeud peut être ainsi affecté. [0079] De cette manière, on peut profiter du fait que la deuxième partition d'ensemble de données est déjà stockée dans les mémoires volatile et/ou non volatile 5 du deuxième dispositif de noeud de sorte que la deuxième partition d'ensemble de données n'a pas besoin d'être échangée entre des dispositifs pour permettre la réalisation de la deuxième tâche avec la deuxième partition d'ensemble de données par un autre dispositif de noeud. En d' autres termes, si la réalisation de la deuxième tâche avec la deuxième partition d'ensemble de données avait été affectée au premier 10 dispositif de noeud, il aurait fallu que la deuxième partition d'ensemble de données soit transmise au premier dispositif de noeud soit par le deuxième dispositif de noeud soit par les un ou plusieurs dispositifs de stockage. Outre la consommation de bande passante disponible du réseau et de l'interface réseau d'au moins le premier dispositif de noeud, la réalisation par le premier dispositif de noeud de la deuxième tâche avec 15 la deuxième partition d'ensemble de données serait nécessairement retardée jusqu'à ce qu'au moins une partie suffisante de la deuxième partition d'ensemble de données soit reçue par le premier dispositif de noeud pour permettre à cette réalisation de commencer. [0080] Comme autre exemple encore, chacun d'un premier dispositif de noeud 20 qui était engagé dans la réalisation d'une première tâche d'une routine d'analyse pour générer une première partition d'ensemble de données d'un ensemble de données, et un deuxième dispositif de noeud qui était engagé dans la réalisation de la première tâche pour générer une deuxième partition d'ensemble de données de l'ensemble de données peuvent tous deux achever leur réalisation de la première 25 tâche. Cependant, pendant que le premier dispositif de noeud peut être disponible pour être affecté une autre tâche, le deuxième dispositif de noeud (résultant du partage de dispositifs de noeud parmi plusieurs analyses indépendantes) peut être engagé dans la réalisation d'une tâche d'une routine d'analyse indépendante de sorte que le deuxième dispositif de noeud peut n'être pas encore disponible pour être 30 affecté à la réalisation d'une deuxième tâche de la routine d'analyse avec la deuxième partition d'ensemble de données que le deuxième dispositif de noeud, lui-même, a généré. Là encore, le dispositif de coordination peut ne pas affecter le 3055438 43 premier dispositif de noeud pour réaliser la deuxième tâche avec la deuxième partition d'ensemble de données pendant un laps de temps prédéterminé. Le laps de temps prédéterminé peut être choisi de manière à offrir l'occasion au deuxième dispositif de noeud d'achever sa réalisation de la tâche de la routine d'analyse 5 indépendante de sorte que le deuxième dispositif de noeud devienne disponible pour être affecté à la réalisation de la deuxième tâche avec la deuxième partition d'ensemble de données. Là encore, de cette manière, on peut profiter du fait que la deuxième partition d'ensemble de données est déjà stockée dans les mémoires volatile et/ou non volatile du deuxième dispositif de noeud de sorte que la deuxième 10 partition d'ensemble de données n'a pas besoin d'être échangée entre des dispositifs pour permettre la réalisation de la deuxième tâche avec la deuxième partition d'ensemble de données par un autre dispositif de noeud. [0081] En ce qui concerne plus généralement les notations et la nomenclature utilisées dans le présent document, des parties de la description détaillée qui suit 15 peuvent être présentées en termes de procédures de programme exécutées par un processeur d'une machine ou de plusieurs machines en réseau. Ces descriptions et représentations procédurales sont utilisées par l'homme du métier pour communiquer de la façon la plus efficace possible la substance de son travail à d'autres hommes du métier. Une procédure est ici, et généralement, conçue pour être une séquence 20 cohérente d'opérations conduisant à un résultat souhaité. Ces opérations sont celles qui nécessitent des manipulations physiques de quantités physiques. Généralement, bien que cela ne soit pas obligatoire, ces quantités prennent la forme de communications électriques, magnétiques ou optiques pouvant être stockées, transférées, combinées, comparées, et autrement manipulées. Il s'avère parfois 25 pratique, principalement pour des raisons d'usage courant, de donner à ce qui est communiqué les noms de bits, valeurs, éléments, symboles, caractères, termes, nombres, ou similaire. On notera, cependant, que tous ces termes et les termes similaires doivent être associés aux quantités physiques appropriées et ne sont que des étiquettes pratiques appliquées à ces quantités. 30 [0082] En outre, ces manipulations sont souvent désignées par des termes tels qu'ajouter ou comparer, qui sont communément associés à des opérations mentales réalisées par un opérateur humain. Or, aucune capacité de ce genre d'un opérateur 3055438 44 humain n'est nécessaire, ni souhaitable dans la plupart des cas, dans l'une quelconque des opérations décrites dans le présent document qui font partie d'un ou plusieurs modes de réalisation. Au contraire, ces opérations sont des opérations réalisées par des machines. Les machines utiles pour réaliser les opérations de divers 5 modes de réalisation comprennent des machines activées ou configurées sélectivement par une routine stockée à l'intérieur qui est écrite conformément aux enseignements du présent document, et/ou comprennent des appareils construits spécialement pour l'objectif souhaité. Divers modes de réalisation concernent également des appareils ou des systèmes permettant de réaliser ces opérations. Ces 10 appareils peuvent être peut être construits spécialement pour l'objectif souhaité ou peuvent comprendre un ordinateur à usage général. La structure requise pour une variété de ces machines ressortira de la description fournie. [0083] Il est maintenant fait référence aux dessins, sur l'ensemble desquels les mêmes repères numériques sont utilisés pour désigner les mêmes éléments. Dans la 15 description qui suit, pour les besoins de l'explication, de nombreux détails spécifiques sont fournis afin de permettre une parfaite compréhension de cette dernière. Il peut être évident, cependant, que les nouveaux modes de réalisation peuvent être pratiqués sans ces détails spécifiques. Dans d'autres exemples, des structures et des dispositifs bien connus sont représentés sous forme de schéma 20 fonctionnel afin d'en faciliter la description. L'intention est de couvrir la totalité des modifications, des équivalents, et des alternatives dans la portée des revendications. [0084] Les systèmes représentés sur certaines des figures peuvent être prévus dans diverses configurations. Dans certains modes de réalisation, les systèmes peuvent être configurés en tant que système distribué où un ou plusieurs composants 25 du système sont répartis sur un ou plusieurs réseaux dans un système informatique en nuage (cloud) et/ou système informatique en brouillard (fog). [0085] La figure 1 est un schéma fonctionnel qui fournit une illustration des composants matériels d'un réseau de transmission de données 100, selon des modes de réalisation de la présente technologie. Le réseau de transmission de données 100 30 est un système informatique spécialisé qui peut être utilisé pour traiter de grosses quantités de données où un grand nombre de cycles de traitement informatique sont nécessaires. 3055438 [0086] Le réseau de transmission de données 100 peut également inclure un environnement informatique 114. L'environnement informatique 114 peut être un ordinateur spécialisé ou une autre machine qui traite les données reçues dans le réseau de transmission de données 100. Le réseau de transmission de données 100 5 comprend également un ou plusieurs périphériques réseau 102. Les périphériques réseau 102 peuvent comprendre des périphériques clients qui tentent de communiquer avec l'environnement informatique 114. Par exemple, les périphériques réseau 102 peuvent envoyer des données à l'environnement informatique 114 pour qu'elles soient traitées, peut envoyer des signaux à 10 l'environnement informatique 114 pour commander différents aspects de l'environnement informatique ou des données qu'il traite, entre autres raisons. Les périphériques réseau 102 peuvent interagir avec l'environnement informatique 114 par plusieurs biais et notamment, par exemple, par un ou plusieurs réseaux 108. Comme on le voit sur la figure 1, l'environnement informatique 114 peut 15 comprendre un ou plusieurs autres systèmes. Par exemple, l'environnement informatique 114 peut comprendre un système de base de données 118 et/ou une grille de communications 120. [0087] Dans d'autres modes de réalisation, les périphériques réseau peuvent fournir une importante quantité de données, en une seule fois ou en diffusion 20 continue dans un laps de temps (par exemple en utilisant le traitement de flux d'évènements (ESP), décrit plus loin à propos des figures 8-10), à l'environnement informatique 114 via des réseaux 108. Par exemple, les périphériques réseau 102 peuvent comprendre des ordinateurs réseau, des capteurs, des bases de données, ou d'autres dispositifs qui peuvent transmettre ou autrement fournir des données à 25 l'environnement informatique 114. Par exemple, les périphériques réseau peuvent comprendre des périphériques réseau locaux, tels que routeurs, concentrateurs, commutateurs, ou autres dispositifs informatiques en réseau. Ces dispositifs peuvent fournir une variété de données stockées ou générées, comme des données réseau ou des données propres aux périphériques réseau mêmes. Les périphériques réseau 30 peuvent également inclure des capteurs qui surveillent leur environnement ou d'autres dispositifs permettant de collecter des données concernant cet environnement ou ces dispositifs, et ces périphériques réseau peuvent fournir les PPT f7lf-J.1 P121_/n17 7R_CPP('_Trand PR 3055438 46 données qu'ils collectent au fil du temps. Les périphériques réseau peuvent également inclure des dispositifs dans l'Internet des objets, comme les dispositifs d'un réseau domotique. Certains de ces dispositifs peuvent être des dispositifs dits « edge » (de périphérie), qui peuvent comporter des circuits d'informatique « edge » 5 (informatique de périphérie ou intermédiaire). Des données peuvent être transmises par des périphériques réseau directement à l'environnement informatique 114 ou à des mémoires de données connectées au réseau, telles que les mémoires de données connectées au réseau 110 pour stockage afin que les données puissent être extraites ultérieurement par l'environnement informatique 114 ou d'autres parties du réseau 10 de transmission de données 100. [0088] Le réseau de transmission de données 100 peut également inclure une ou plusieurs mémoires de données connectées au réseau 110. Les mémoires de données connectées au réseau 110 sont utilisées pour stocker des données destinées à être traitées par l'environnement informatique 114 ainsi que d'éventuelles données 15 intermédiaires ou finales générées par le système informatique dans une mémoire non volatile. Cependant, dans certains modes de réalisation, la configuration de l'environnement informatique 114 permet de réaliser ses opérations de manière à pouvoir stocker les résultats des données intermédiaires et finales exclusivement en mémoire volatile (par exemple une RAM), sans devoir obligatoirement stocker les 20 résultats des données intermédiaires et finales dans des mémoires de type non volatil (par exemple sur un disque). Cela peut être utile dans certaines situations, notamment lorsque l'environnement informatique 114 reçoit des requêtes ad hoc d'un utilisateur et lorsque les réponses, qui sont générées par traitement d'importantes quantités de données, doivent être générées à la volée. Dans cette situation non limitative, 25 l'environnement informatique 114 peut être configuré pour conserver les informations traitées en mémoire de sorte que les réponses puissent être générées pour l'utilisateur à différents niveaux de détail ainsi que pour permettre à un utilisateur d'émettre des requêtes de manière interactive par rapport à ces informations. 30 [0089] Les mémoires de données connectées au réseau peuvent stocker une variété de différents types de données organisées en une variété de manières différentes et à partir d'une variété de sources différentes. Par exemple, une mémoire 3055438 47 de données connectée au réseau peut comprendre une mémoire autre qu'une mémoire primaire située dans un environnement informatique 114 à laquelle peuvent directement accéder des processeurs situés dans ce dernier. Une mémoire de données connectée au réseau peut comprendre une mémoire secondaire, tertiaire ou auxiliaire, 5 telle que des disques durs de grande taille, des serveurs, une mémoire virtuelle, entre autres types. Des dispositifs de stockage peuvent comprendre des dispositifs de stockage portables ou non portables, des dispositifs de stockage optiques, et divers autres supports capables de stocker ou de contenir des données. Un support de stockage lisible par machine ou support de stockage lisible par ordinateur peut 10 comprendre un support non transitoire dans lequel des données peuvent être stockées et qui n'inclut pas d'ondes porteuses et/ou de signaux électroniques transitoires. Les exemples d'un support non transitoire peuvent comprendre, par exemple, un disque ou une bande magnétique, des supports de stockage optique tels qu'un disque compact ou un disque numérique polyvalent, une mémoire flash, une mémoire ou 15 des périphériques mémoire. Un produit-programme informatique peut comprendre du code et/ou des instructions exécutables par machine qui peuvent représenter une procédure, une fonction, un sous-programme, un programme, une routine, une sous-routine, un module, un progiciel, une classe, ou toute combinaison d'instructions, de structures de données, ou de déclarations de programmes. Un segment de code peut 20 être couplé à un autre segment de code ou à un circuit matériel par passage et/ou réception d'informations, de données, d'arguments, de paramètres, ou de contenus de mémoires. Des informations, arguments, paramètres, données, etc. peuvent être passés, transférés, ou transmis par tout moyen adapté comprenant le partage de mémoire, le passage de messages, le passage de jetons, les transmissions réseau, 25 entre autres. En outre, les mémoires de données peuvent contenir une variété de différents types de données. Par exemple, des mémoires de données connectées au réseau 110 peuvent contenir des données non structurées (par exemple brutes), telles que des données de fabrication (par exemple une base de données contenant des enregistrements identifiant des produits fabriqués avec des données de paramètres 30 pour chaque produit, comme la couleur ou le modèle) ou des bases de données de ventes de produits (par exemple une base de données contenant des enregistrements de données individuelles identifiant les détails de chacune des ventes de produits). 3055438 48 [0090] Les données non structurées peuvent être présentées à l'environnement informatique 114 sous différentes formes telles qu'un fichier à plat ou un conglomérat d'enregistrements des données, et peuvent avoir des valeurs de données et des horodatages d'accompagnement. L'environnement informatique 114 peut être 5 utilisé pour analyser les données non structurées de diverses manières pour déterminer la meilleure manière de structurer (par exemple hiérarchiquement) ces données, de sorte que les données structurées soient adaptées à un type d'analyse complémentaire qu'un utilisateur souhaite réaliser sur les données. Par exemple, après avoir été traitées, les données non structurées horodatées peuvent être 10 regroupées par temps (par exemple en unités de laps de temps quotidiens) pour générer des données de séries temporelles et/ou structurées hiérarchiquement en fonction d'une ou plusieurs dimensions (par exemple des paramètres, des attributs et/ou des variables). Par exemple, les données peuvent être stockées dans une structure de données hiérarchique, telle qu'une base de données ROLAP ou MOLAP, 15 ou peuvent être stockées sous une autre forme tabulaire, par exemple sous une forme de hiérarchie à plat. [0091] Le réseau de transmission de données 100 peut également inclure une ou plusieurs batteries de serveurs 106. L'environnement informatique 114 peut diriger certaines communications ou données vers les une ou plusieurs batteries de serveurs 20 106 ou vers un ou plusieurs serveurs dans les batteries de serveurs. Les batteries de serveurs 106 peuvent être configurées pour fournir des informations d'une manière prédéterminée. Par exemple, les batteries de serveurs 106 peuvent accéder à des données à transmettre en réponse à une communication. Les batteries de serveurs 106 peuvent être logées séparément de chaque autre périphérique du réseau de 25 transmission de données 100, tels que l'environnement informatique 114, et/ou peuvent faire partie d'un dispositif ou d'un système. [0092] Les batteries de serveurs 106 peuvent héberger une variété de différents types de traitement de données faisant partie du réseau de transmission de données 100. Les batteries de serveurs 106 peuvent recevoir une variété de données 30 différentes des périphériques réseau, de l'environnement informatique 114, du réseau en nuage 116, ou d'autres sources. Les données peuvent avoir été obtenues ou collectées d'un ou plusieurs capteurs, comme entrées provenant d'une base de 3055438 49 données de commande, ou peuvent avoir été reçues en tant qu'entrées d'un système ou dispositif externe. Les batteries de serveurs 106 peuvent aider au traitement des données en transformant des données brutes en données traitées sur la base d'une ou plusieurs règles mises en oeuvre par les batteries de serveurs. Par exemple, des 5 données de capteurs peuvent être analysées pour déterminer les modifications d'un environnement au fil du temps ou en temps réel. [0093] Le réseau de transmission de données 100 peut également inclure un ou plusieurs réseaux en nuage 116. Un réseau en nuage 116 peut comprendre un système à infrastructure en nuage qui fournit des services en nuage. Dans certains 10 modes de réalisation, les services fournis par le réseau en nuage 116 peuvent comprendre de nombreux services qui sont mis à disposition des utilisateurs du système à infrastructure en nuage à la demande. Le réseau en nuage 116 est représenté sur la figure 1 comme étant relié à l'environnement informatique 114 (et donc comme ayant l'environnement informatique 114 comme client ou comme 15 utilisateur), mais le réseau en nuage 116 peut être relié à, ou utilisé par, l'un quelconque des dispositifs de la figure 1. Les services fournis par le réseau en nuage peuvent évoluer dynamiquement pour répondre aux besoins de ses utilisateurs. Le réseau en nuage 116 peut comprendre un ou plusieurs ordinateurs, serveurs, et/ou systèmes. Dans certains modes de réalisation, les ordinateurs, serveurs, et/ou 20 systèmes qui constituent le réseau en nuage 116 sont différents des propres ordinateurs, serveurs, et/ou systèmes situés dans les locaux de l'utilisateur. Par exemple, le réseau en nuage 116 peut héberger une application, et un utilisateur peut, via un réseau de communication tel que l'Internet, à la demander, commander et utiliser l'application. 25 [0094] Bien que chaque dispositif, serveur et système de la figure 1 soit représenté en tant que dispositif unique, il faut bien voir qu'on peut également utiliser plusieurs dispositifs. Par exemple, on peut utiliser un ensemble de périphériques réseau pour transmettre diverses communications émanant d'un seul utilisateur, ou le serveur distant 140 peut comprendre un empilement de serveurs. 30 Comme autre exemple, les données peuvent être traitées dans le cadre de l'environnement informatique 114. 3055438 [0095] Chaque communication dans le réseau de transmission de données 100 (par exemple entre des périphériques clients, entre des serveurs 106 et un environnement informatique 114 ou entre un serveur et un périphérique) peut avoir lieu sur un ou plusieurs réseaux 108. Les réseaux 108 peuvent comprendre un ou 5 plusieurs d'une variété de différents types de réseaux, comprenant un réseau sans fil, un réseau filaire, ou une combinaison d'un réseau filaire et d'un réseau sans fil. Les exemples de réseaux adaptés comprennent l'Internet, un réseau local privé, un réseau local (LAN), un réseau étendu (WAN), ou un réseau local sans fil (WLAN). Un réseau sans fil peut comprendre une interface sans fil ou une combinaison 10 d'interfaces sans fil. A titre d'exemple, un réseau des un ou plusieurs réseaux 108 peut comprendre un canal de communication à courte portée, tel qu'un canal Bluetooth ou un canal Bluetooth basse consommation. Un réseau filaire peut comprendre une interface filaire. Les réseaux filaires et/ou sans fil peuvent être mis en oeuvre au moyen de routeurs, de points d'accès, de ponts, de passerelles, ou 15 similaires, pour relier les dispositifs du réseau 114, comme il sera expliqué plus loin à propos de la figure 2. Les un ou plusieurs réseaux 108 peuvent être intégrés entièrement dans, ou peuvent inclure, un intranet, un extranet, ou une combinaison de ceux-ci. Dans un mode de réalisation, des communications entre deux systèmes et/ou dispositifs ou plusieurs peuvent être établies par un protocole de 20 communications sécurisé, tel que la couche de sockets sécurisée (SSL) ou la sécurité de la couche de transport (TLS). En outre, des détails de données et/ou de transactions peuvent être chiffrés. [0096] Certains aspects peuvent utiliser l'Internet des objets (IoT), lorsque des objets (par exemple des machines, des dispositifs, des téléphones ou des capteurs) 25 peuvent être reliés à des réseaux et les données émanant de ces objets peuvent être collectées et traitées dans les objets et/ou à l'extérieur des objets. Par exemple, l'IoT peut inclure des capteurs dans nombre de dispositifs différents, et des analyses à forte valeur ajoutée peuvent être appliquées pour identifier des relations cachées et entraîner des rendements accrus. Cela peut s'appliquer aux analyses de big data 30 comme aux analyses en temps réel (par exemple ESP). Cela sera décrit plus loin à propos de la figure 2. 3055438 51 [0097] Comme on l'aura noté, l'environnement informatique 114 peut comprendre une grille de communications 120 et un système de base de données de réseau de transmission118. La grille de communications 120 peut être un système informatique à base de grille permettant de traiter d'importantes quantités de 5 données. Le système de base de données de réseau de transmission 118 peut être destiné à la gestion, au stockage et à l'extraction d'importantes quantités de données qui sont distribuées à, et stockées dans, les une ou plusieurs mémoires de données connectées au réseau 110 ou d'autres mémoires de données qui résident à différent endroits du système de base de données de réseau de transmission 118. Les noeuds de 10 calcul du système informatique à base de grille 120 et du système de base de données de réseau de transmission 118 peuvent partager le même matériel de processeur, tel que les processeurs qui sont situés dans l'environnement informatique 114. [0098] La figure 2 représente un réseau type comprenant un ensemble de dispositifs type communiquant les uns avec les autres par un système d'échange et 15 via un réseau, selon des modes de réalisation de la présente technologie. Comme on l'aura noté, chaque communication au sein du réseau de transmission de données 100 peut se faire sur un ou plusieurs réseaux. Le système 200 comprend un périphérique réseau 204 configuré pour communiquer avec divers types de périphériques clients, par exemple des périphériques clients 230, sur divers types de canaux de 20 communication. [0099] Comme on le voit sur la figure 2, le périphérique réseau 204 peut transmettre une communication sur un réseau (par exemple un réseau cellulaire via une station de base 210). La communication peut être dirigée vers un autre périphérique réseau, tel que les périphériques réseau 205-209, via la station de base 25 210. La communication peut également être dirigée vers l'environnement informatique 214 via la station de base 210. Par exemple, le périphérique réseau 204 peut collecter des données soit de son environnement immédiat, soit d'autres périphériques réseau (tels que les périphériques réseau 205-209) et transmettre ces données à l'environnement informatique 214. 30 [00100] Bien que les périphériques réseau 204-209 soient représentés sur la figure 2 sous la forme respectivement d'un téléphone mobile, d'un ordinateur portable, d'une tablette informatique, d'un capteur de température, d'un capteur de 3055438 52 mouvement, et d'un capteur audio, les périphériques réseau peuvent être, ou inclure, des capteurs qui sont sensibles à la détection de certains aspects de leur environnement. Par exemple, les périphériques réseau peuvent comprendre des capteurs tels que des capteurs d'eau, des capteurs de puissance, des capteurs de 5 courant électrique, des capteurs chimiques, des capteurs optiques, des capteurs de pression, des capteurs de position géographique ou de position (par exemple GPS), des capteurs de vitesse, des capteurs d'accélération, des capteurs de débit, entre autres. Les exemples de caractéristiques qui peuvent être détectées comprennent la force, le couple, la charge, la contrainte, la position, la température, la pression d'air, 10 le débit de fluide, les propriétés chimiques, la résistance, les champs électromagnétiques, le rayonnement, l'irradiance, la proximité, l'acoustique, l'humidité, la distance, la vitesse, les vibrations, l'accélération, le potentiel électrique, et le courant électrique, entre autres. Les capteurs peuvent être fixés sur divers composants utilisés dans le cadre d'une variété de différents types de systèmes 15 (par exemple une opération de forage pétrolier). Les périphériques réseau peuvent détecter et enregistrer des données liées à l'environnement qu'ils surveillent, et transmettre ces données à l'environnement informatique 214. [00101] Comme on l'aura noté, un type de système qui peut comprendre divers capteurs qui collectent des données destinées à être traitées et/ou transmises à un 20 environnement informatique selon certains modes de réalisation comprend un système de forage pétrolier. Par exemple, les un ou plusieurs capteurs de l'opération de forage peuvent comprendre des capteurs de surface qui mesurent une charge au crochet, un débit de fluide, une température et une densité en entrée et en sortie du puits, une pression de la colonne montante, un couple de surface, une vitesse de 25 rotation d'une tige de forage, une vitesse de pénétration, une énergie spécifique mécanique, etc. et capteurs de fond de trou qui mesurent une vitesse de rotation d'un trépan, des densités de fluide, un couple de fond de trou, des vibrations de fond de trou (axiales, tangentielles, latérales), un poids appliqué au niveau d'un trépan, une pression annulaire, une pression différentielle, un azimut, une inclinaison, une 30 sévérité de la courbure (dog leg), une profondeur mesurée, une profondeur verticale, une température de fond de trou, etc. En plus des données brutes collectées directement par les capteurs, d'autres données peuvent comprendre des paramètres 3055438 53 développés par les capteurs ou affectés au système par un dispositif client ou un autre dispositif de commande. Par exemple, un ou plusieurs paramètres de commande d'opération de forage peuvent commander des réglages tels qu'un rapport entre la vitesse d'un moteur à boue et un débit, un diamètre de trépan, un sommet de 5 formation prévu, des données sismiques, des données météorologiques, etc. D' autres données peuvent être générées grâce à des modèles physiques tels qu'un modèle terrestre, un modèle météorologique, un modèle sismique, un modèle d'ensemble de fond de trou, un modèle de plan de puits, un modèle de frottement annulaire, etc. Outre les réglages de capteurs et de commande, des sorties prévues, par exemple, de 10 la vitesse de pénétration, de l'énergie spécifique mécanique, de la charge au crochet, du débit de fluide d'entrée, du débit de fluide de sortie, de la pression de pompage, du couple de surface, de la vitesse de rotation de la tige de forage, de la pression annulaire, de la pression de frottement annulaire, de la température annulaire, de la densité de circulation équivalente, etc. peuvent également être stockées dans 15 l'entrepôt de données. [00102] Dans un autre exemple, un autre type de système qui peut comprendre divers capteurs qui collectent des données destinées à être traitées et/ou transmises à un environnement informatique selon certains modes de réalisation comprend un réseau domotique ou réseau automatisé similaire dans un environnement différent, tel 20 qu'un espace de bureau, une école, un espace public, une infrastructure sportive, ou divers autres endroits. Les périphériques réseau de ce réseau automatisé peuvent comprendre des périphériques réseau qui permettent à un utilisateur de consulter, de commander et/ou de configurer divers appareils électroménagers situés au domicile de l'utilisateur (par exemple un téléviseur, une radio, un luminaire, un ventilateur, un 25 humidificateur, une sonde, un micro-ondes, un fer à repasser et/ou similaire), ou à l'extérieur du domicile de l'utilisateur (par exemple des capteurs de mouvement extérieurs, un éclairage extérieur, des systèmes d'ouverture de porte de garage, des systèmes d'arrosage, ou similaires). Par exemple, le périphérique réseau 102 peut comprendre un commutateur domotique qui peut être couplé à un appareil 30 électroménager. Dans un autre mode de réalisation, un périphérique réseau peut permettre à un utilisateur de consulter, de commander et/ou de configurer des dispositifs, tels que des dispositifs de bureautique (par exemple une photocopieuse, 3055438 54 une imprimante ou un fax), des dispositifs de type audio et/ou vidéo (par exemple un récepteur, un haut-parleur, un projecteur, un lecteur de DVD, ou un téléviseur), des dispositifs de lecture multimédia (par exemple un lecteur CD ou similaire), des dispositifs informatiques (par exemple un ordinateur domestique, un ordinateur 5 portable, une tablette, un assistant numérique personnel (PDA), un dispositif informatique, ou un dispositif porté), des dispositifs d'éclairage (par exemple une lampe ou un éclairage encastré), des dispositifs associés à un système de sécurité, des dispositifs associés à un système d'alarme, des dispositifs qui peuvent être utilisés dans une voiture (par exemple des dispositifs radio, des dispositifs de navigation), 10 et/ou similaires. Les données peuvent être collectées à partir de ces divers capteurs sous forme brute, ou les données peuvent être traitées par les capteurs pour créer des paramètres ou d'autres données soit développés par les capteurs à partir des données brutes, soit affectés au système par un dispositif client ou autre dispositif de commande. 15 [00103] Dans un autre exemple, un autre type de système qui peut comprendre divers capteurs qui collectent des données destinées à être traitées et/ou transmises à un environnement informatique selon certains modes de réalisation comprend un réseau électrique. Une variété de périphériques réseau différents peuvent être inclus dans un réseau électrique, tels que divers dispositifs d'une ou plusieurs centrales 20 électriques, exploitations énergétiques (par exemple un parc éolien, un parc solaire, entre autres), installations de stockage d'énergie, usines, domiciles et entreprises de consommateurs, entre autres. Un ou plusieurs de ces dispositifs peuvent comprendre un ou plusieurs capteurs qui détectent un gain ou une perte d'énergie, une entrée ou sortie ou perte électrique, et une variété d'autres rendements. Ces capteurs peuvent 25 collecter des données pour informer des utilisateurs de la façon dont le réseau électrique, et chacun des dispositifs du réseau, peuvent être en train de fonctionner et de la façon dont on peut les rendre plus efficace. [00104] Des capteurs de périphérique réseau peuvent également effectuer un traitement sur les données qu'ils collectent avant de transmettre les données à 30 l'environnement informatique 114, ou avant de décider de transmettre les données à l'environnement informatique 114. Par exemple, des périphériques réseau peuvent déterminer si des données collectées respectent certaines règles, par exemple en 'DUT ArIL A 1 W17,1 "1,11 '1 no no Crlr, en 3055438 comparant les données ou les valeurs calculées à partir des données et en comparant ces données à un ou plusieurs seuils. Le périphérique réseau peut utiliser ces données et/ou comparaisons pour déterminer si les données doivent être transmises à l'environnement informatique 214 pour utilisation ou traitement complémentaire. 5 [00105] L'environnement informatique 214 peut comprendre des machines 220 et 240. Bien que l'environnement informatique 214 soit représenté sur la figure 2 comme comportant deux machines, 220 et 240, l'environnement informatique 214 peut ne comporter qu'une machine ou peut comporter plus de deux machines. Les machines qui constituent l'environnement informatique 214 peuvent comprendre des 10 ordinateurs spécialisés, des serveurs, ou d'autres machines qui sont configurées pour traiter individuellement et/ou collectivement d'importantes quantités de données. L'environnement informatique 214 peut également inclure des dispositifs de stockage qui incluent une ou plusieurs bases de données de données structurées, telles que des données organisées selon un ou plusieurs hiérarchies, ou des données 15 non structurées. Les bases de données peuvent communiquer avec les dispositifs de traitement au sein de l'environnement informatique 214 pour leur distribuer des données. Etant donné que les périphériques réseau peuvent transmettre des données à l'environnement informatique 214, ces données peuvent être reçues par l'environnement informatique 214 et stockées ensuite dans ces dispositifs de 20 stockage. Les données utilisées par l'environnement informatique 214 peuvent également être stockées dans des mémoires de données 235, qui peuvent également faire partie de l'environnement informatique 214 ou être reliées à celui-ci. [00106] L'environnement informatique 214 peut communiquer avec divers dispositifs via un ou plusieurs routeurs 225 ou d'autres composants de liaison inter- 25 réseau ou intra-réseau. Par exemple, l'environnement informatique 214 peut communiquer avec des dispositifs 230 via un ou plusieurs routeurs 225. L'environnement informatique 214 peut collecter, analyser et/ou stocker des données provenant de, ou concernant, des communications, des opérations de périphériques clients, des règles client, et/ou des actions associées à l'utilisateur stockées dans une 30 ou plusieurs mémoires de données 235. Ces données peuvent influer sur le routage des communications vers les dispositifs de l'environnement informatique 214, sur la 3055438 56 façon dont les données sont stockées ou traitées dans environnement informatique 214, entre autres actions. [00107] De façon notoire, divers autres dispositifs peuvent en outre être utilisés pour influer sur le routage des communications et/ou sur le traitement entre les 5 dispositifs situés au sein de l'environnement informatique 214 et avec des dispositifs situés à l'extérieur de l'environnement informatique 214. Par exemple, comme on le voit sur la figure 2, l'environnement informatique 214 peut comprendre un serveur web 240. Ainsi, l'environnement informatique 214 peut extraire des données d'intérêt, telles que des informations client (par exemple des informations produit, 10 des règles client, etc.), des détails techniques sur les produits, des actualités, des conditions météorologiques actuelles ou prévues, et autres. [00108] Outre le fait que l'environnement informatique 214 collecte des données (reçues par exemple de périphériques réseau, tels que des capteurs, et des périphériques clients ou d'autres sources) pour être traitées dans le cadre d'un projet 15 d'analyse big data, il peut également recevoir des données en temps réel dans le cadre d'un environnement d'analyse en diffusion continue. Comme on l'aura noté, les données peuvent être collectées à l'aide de diverses sources telles que transmises via différents types de réseaux ou localement. Ces données peuvent être reçues en diffusion continue et en temps réel. Par exemple, des périphériques réseau peuvent 20 recevoir des données périodiquement en provenance de capteurs de périphérique réseau pendant que les capteurs détectent, surveillent et guettent en permanence les modifications de leurs environnements. Les dispositifs de l'environnement informatique 214 peuvent également effectuer une analyse préalable des données qu'ils reçoivent pour déterminer si les données reçues doivent être traitées dans le 25 cadre d'un projet en cours. Les données reçues et collectées par l'environnement informatique 214, quelle que soit la source ou la méthode ou l'heure de la réception, peuvent être traitées pendant un laps de temps pour un client pour déterminer des données de résultat sur la base des besoins et des règles du client. [00109] La figure 3 fournit une représentation d'un modèle conceptuel d'un 30 système de protocole de communications, selon des modes de réalisation de la présente technologie. Plus spécifiquement, la figure 3 identifie le fonctionnement d'un environnement informatique dans un modèle d'interaction de systèmes ouverts 3055438 57 qui correspond à divers composants de liaison. Le modèle 300 montre, par exemple, comment un environnement informatique, tel que l'environnement informatique 314 (ou l'environnement informatique 214 de la figure 2) peut communiquer avec d' autres dispositifs de son réseau, et commander la façon dont les communications 5 entre l'environnement informatique et d'autres dispositifs sont exécutées et dans quelles conditions. [00110] Le modèle peut inclure des couches 302-314. Les couches sont disposées en pile. Chaque couche de la pile dessert la couche située un niveau plus haut qu'elle (sauf pour la couche applicative, qui est la couche la plus haute), et est desservie par 10 la couche située un niveau plus bas qu'elle (sauf pour la couche physique, qui est la couche la plus basse). La couche physique est la couche la plus basse car elle reçoit et transmet des morceaux de données bruts, et c'est la couche la plus éloignée de l'utilisateur dans un système de communications. En revanche, la couche applicative est la couche la plus haute car elle interagit directement avec une application 15 logicielle. [00111] Comme on l'aura noté, le modèle comprend une couche physique 302. La couche physique 302 représente une communication physique, et peut définir des paramètres de cette communication physique. Par exemple, cette communication physique peut prendre la forme de signaux électriques, optiques, ou 20 électromagnétique. La couche physique 302 définit également des protocoles qui peuvent commander les communications au sein d'un réseau de transmission de données. [00112] La couche de liaison 304 définit les liens et les mécanismes utilisés pour transmettre (c'est-à-dire déplacer) des données à travers un réseau. La couche de 25 liaison gère les communications de noeud à noeud, telles que dans un environnement informatique de type grille. La couche de liaison 304 peut détecter et corriger des erreurs (par exemple des erreurs de transmission dans la couche physique 302). La couche de liaison 304 peut également inclure une couche de commande d'accès au support (MAC) et une couche de commande de liaison logique (LLC). 30 [00113] La couche réseau 306 définit le protocole de routage au sein d'un réseau. Autrement dit, la couche réseau coordonne le transfert de données entre des noeuds d'un même réseau (par exemple un environnement informatique de type grille). La 3055438 58 couche réseau 306 peut également définir les processus utilisés pour structurer l'adressage local au sein du réseau. [00114] La couche de transport 308 peut gérer la transmission de données et la qualité de la transmission et/ou de la réception de ces données. La couche de 5 transport 308 peut fournir un protocole pour transférer des données, tel que, par exemple, un protocole de commande de transmission (TCP). La couche de transport 308 peut assembler et désassembler des trames de données pour transmission. La couche de transport peut également détecter des erreurs de transmission survenues dans les couches situées en dessous d'elle. 10 [00115] La couche de session 310 peut établir, maintenir, et gérer les liaisons de communication entre les dispositifs d'un réseau. Autrement dit, la couche de session commande les dialogues ou la nature des communications entre périphériques réseau sur le réseau. La couche de session peut également établir des procédures de points de contrôle, d'ajournement, de fin, et de redémarrage. 15 [00116] La couche de présentation 312 peut fournir une traduction pour des communications entre les couches applicative et réseau. Autrement dit, cette couche peut chiffrer, déchiffrer et/ou formater les données en fonction des types de données et/ou des codages connus pour être acceptés par une couche applicative ou réseau. [00117] La couche applicative 314 interagit directement avec les applications 20 logicielles et les utilisateurs finaux, et gères les communications entre ces derniers. La couche applicative 314 peut identifier des destinations, des états ou une disponibilité de ressources locales et/ou un contenu ou un formatage de communication utilisant les applications. [00118] Les composants de liaison intra-réseau 322 et 324 sont représentés 25 comme fonctionnant à des niveaux inférieurs, tels que la couche physique 302 et la couche de liaison 304, respectivement. Par exemple, un concentrateur peut fonctionner dans la couche physique, a commutateur peut fonctionner dans la couche physique, et un routeur peut fonctionner dans la couche réseau. Les composants de liaison inter-réseau 326 et 328 sont représentés comme fonctionnant à des niveaux 30 supérieurs, tels que les couches 306-314. Par exemple, des routeurs peuvent fonctionner dans la couche réseau et des périphériques réseau peuvent fonctionner dans les couches de transport, de session, de présentation, et applicative. 3055438 59 [00119] Comme on l'aura noté, un environnement informatique 314 peut interagir avec et/ou fonctionner, dans divers modes de réalisation, sur une, plusieurs, la totalité ou l'une quelconque des diverses couches. Par exemple, l'environnement informatique 314 peut interagir avec un concentrateur (par exemple via la couche de 5 liaison) de manière à régler ceux des dispositifs avec lesquels le concentrateur communique. La couche physique peut être desservie par la couche de liaison, de sorte qu'elle peut mettre en oeuvre ces données à partir de la couche de liaison. Par exemple, l'environnement informatique 314 peut commander les dispositifs dont il va recevoir des données. Par exemple, si l'environnement informatique 314 sait 10 qu'un certain périphérique réseau est éteint, cassé, ou est devenu autrement indisponible ou non fiable, l'environnement informatique 314 peut ordonner au concentrateur d'empêcher de quelconques données d'être transmises à l'environnement informatique 314 depuis le périphérique réseau en question. Un tel processus peut être bénéfique pour éviter de recevoir des données qui sont inexactes 15 ou qui ont été influencées par un environnement non contrôlé. Comme autre exemple, l'environnement informatique 314 peut communiquer avec un pont, un commutateur, un routeur ou une passerelle et influer sur le choix, par le composant, d'un dispositif du système (par exemple le système 200) comme destination. Dans certains modes de réalisation, l'environnement informatique 314 peut interagir avec 20 diverses couches en échangeant des communications avec un équipement fonctionnant sur telle ou telle couche en routant ou en modifiant des communications existantes. Dans un autre mode de réalisation, tel que dans un environnement informatique de type grille, un noeud peut déterminer la façon dont les données au sein de l'environnement doivent être routées (par exemple quel noeud doit recevoir 25 certaines données) en fonction de certains paramètres ou certaines informations fournis par d'autres couches au sein du modèle. [00120] Comme on l'aura noté, l'environnement informatique 314 peut faire partie d'un environnement de communications de type grille, dont les communications peuvent être mises en oeuvre comme indiqué sur le protocole de la 30 figure 3. Par exemple, pour revenir à la figure 2, une ou plusieurs des machines 220 et 240 peuvent faire partie d'un environnement informatique de type grille. Un environnement informatique en grille peut être employé dans un système distribué 3055438 avec des charges de travail non interactives lorsque les données résident en mémoire sur les machines, ou les noeuds de calcul. Dans un tel environnement, un code analytique, et non un système de gestion de base de données, commande le traitement effectué par les noeuds. Les données sont co-localisées en étant pré- 5 distribuées sur les noeuds de la grille, et le code analytique de chaque noeud charge les données locales en mémoire. Chaque noeud peut être affecté à une tâche particulière telle qu'une partie d'un projet de traitement, ou pour organiser ou commander d'autres noeuds dans la grille. [00121] La figure 4 représente un système informatique de type grille de 10 communications 400 comprenant une variété de noeuds de commande et de travail, selon des modes de réalisation de la présente technologie. Le système informatique de type grille de communications 400 comprend trois noeuds de commande et un ou plusieurs noeuds de travail. Le système informatique de type grille de communications 400 comprend des noeuds de commande 402, 404, et 406. Les 15 noeuds de commande sont reliés de manière communicative via des trajets de communication 451, 453, et 455. Par conséquent, les noeuds de commande peuvent se transmettre des informations (liées par exemple à la grille de communications ou à des notifications), les uns aux autres ou recevoir des informations les uns des autres. Bien que le système informatique de type grille de communications 400 soit 20 représenté sur la figure 4 comme comprenant trois noeuds de commande, la grille de communications peut comprendre plus de trois noeuds de commande, ou moins. [00122] Le système informatique de type grille de communications (ou plus simplement « grille de communications ») 400 comprend également un ou plusieurs noeuds de travail. Sur la figure 4 sont représentés six noeuds de travail 410-420. Bien 25 que la figure 4 montre six noeuds de travail, une grille de communications selon des modes de réalisation de la présente technologie peut comprendre plus de six noeuds de travail, ou moins. Le nombre de noeuds de travail inclus dans une grille de communications peut dépendre de la taille du projet ou de l'ensemble de données traité par la grille de communications, de la capacité de chaque noeud de travail, du 30 temps octroyé à la grille de communications pour finir le projet, entre autres. Chaque noeud de travail dans la grille de communications 400 peut être relié (de manière filaire ou sans fil, et directement ou indirectement) aux noeuds de commande 402- 3055438 61 406. Par conséquent, chaque noeud de travail peut recevoir des informations des noeuds de commande (par exemple une instruction pour réaliser un travail sur un projet) et peut transmettre des informations aux noeuds de commande (par exemple un résultat d'un travail réalisé sur un projet). En outre, les noeuds de travail peuvent 5 communiquer les uns avec les autres (directement ou indirectement). Par exemple, les noeuds de travail peuvent se transmettre des données les uns entre les autres en liaison avec un travail réalisé ou une tâche individuelle dans un travail réalisé par le noeud de travail en question. Cependant, dans certains modes de réalisation, des noeuds de travail peuvent, par exemple, ne pas être reliés (de manière communicative 10 ou autrement) à certains autres noeuds de travail. Dans un mode de réalisation, des noeuds de travail peuvent être à même de communiquer uniquement avec le noeud de commande qui les commande, et peuvent ne pas être à même de communiquer avec d'autres noeuds de travail de la grille de communications, qu'il s'agisse d'autres noeuds de travail commandés par le noeud de commande qui commande le noeud de 15 travail, ou de noeuds de travail qui sont commandés par d'autres noeuds de commande de la grille de communications. [00123] Un noeud de commande peut être relié à un dispositif externe avec lequel le noeud de commande peut communiquer (par exemple un utilisateur d'une grille, tel qu'un serveur ou un ordinateur, peut être relié à un contrôleur de la grille). Par 20 exemple, un serveur ou un ordinateur peut être relié à des noeuds de commande et peut transmettre un projet ou un travail au noeud. Le projet peut comprendre un ensemble de données. L'ensemble de données peut être d'une taille quelconque. Une fois que le noeud de commande a reçu ce projet comprenant un gros ensemble de données, le noeud de commande peut distribuer l'ensemble de données ou les projets 25 liés à l'ensemble de données à réaliser par les noeuds de travail. En variante, pour un projet comprenant un gros ensemble de données, l'ensemble de données peut être reçu ou stocké par une machine autre qu'un noeud de commande (par exemple un noeud de données Hadoop employant un système de fichiers distribués Hadoop, ou HDFS). 30 [00124] Des noeuds de commande peuvent avoir connaissance de l'état des noeuds de la grille (c'est-à-dire des informations d'état de la grille), accepter des demandes de travail émanant de clients, répartir le travail sur des noeuds de travail, coordonner 3055438 62 les noeuds de travail, entre autres responsabilités. Des noeuds de travail peuvent accepter des demandes de travail émanant d'un noeud de commande et fournir au noeud de commande des résultats du travail effectué par le noeud de travail. Une grille peut démarrer à partir d'un seul noeud (par exemple une machine, un ordinateur, un 5 serveur, etc.). Ce premier noeud peut être affecté ou peut démarrer en tant que noeud de commande primaire qui va commander tous les noeuds supplémentaires qui pénètrent dans la grille. [00125] Lorsqu'un projet est soumis pour exécution (par exemple par un client ou un contrôleur de la grille) il peut être affecté à un ensemble de noeuds. Après que les 10 noeuds ont été affectés à un projet, une structure de données (c'est-à-dire un communicateur) peut être créée. Le communicateur peut être utilisé par le projet pour des informations destinées à être partagées entre le code de projet s'exécutant sur chaque noeud. Une poignée de communication peut être créée sur chaque noeud. Une poignée, par exemple, est une référence au communicateur qui est valable dans un 15 seul processus sur un seul noeud, et la poignée peut être utilisée lors d'une demande de communications entre des noeuds. [00126] Un noeud de commande, tel que le noeud de commande 402, peut être désigné comme noeud de commande primaire. Un serveur, un ordinateur ou autre dispositif externe peut être relié au noeud de commande primaire. Une fois que le 20 noeud de commande a reçu un projet, le noeud de commande primaire peut distribuer des parties du projet à ses noeuds de travail pour exécution. Par exemple, lorsqu'un projet est lancé sur la grille de communications 400, un noeud de commande primaire 402 commande le travail à réaliser pour le projet afin de terminer le projet comme demandé ou ordonné. Le noeud de commande primaire peut distribuer du travail aux 25 noeuds de travail en fonction de divers facteurs, tels que savoir quels sous-ensembles ou quelles parties de projets peuvent être terminés de la manière la plus efficace et dans un laps de temps correct. Par exemple, un noeud de travail peut effectuer une analyse sur une partie des données qui est déjà locale au noeud de travail (par exemple stockée sur celui-ci). Le noeud de commande primaire coordonne et traite 30 également les résultats du travail réalisé par chaque noeud de travail après que chaque noeud de travail a exécuté et terminé son travail. Par exemple, le noeud de commande primaire peut recevoir un résultat d'un ou plusieurs noeuds de travail, et le noeud de 3055438 63 commande peut organiser (par exemple collecter et assembler) les résultats reçus et les compiler pour produire un résultat complet du projet reçu de l'utilisateur final. [00127] Tous les noeuds de commande restants, tels que les noeuds de commande 404 et 406, peuvent être affectés comme noeuds de commande de secours pour le 5 projet. Dans un mode de réalisation, les noeuds de commande de secours ne peuvent commander aucune partie du projet. En revanche, les noeuds de commande de secours peuvent servir de secours pour le noeud de commande primaire et prendre sa place comme noeud de commande primaire si le noeud de commande primaire est défaillant. Si une grille de communications n'inclut qu'un seul noeud de commande, 10 et que le noeud de commande connaît une défaillance (par exemple le noeud de commande s'arrête ou se casse) alors la grille de communications dans son ensemble peut connaître une défaillance et tout projet ou travail exécuté sur la grille de communications peut échouer et peut ne pas se terminer. Le projet peut être exécuté à nouveau, mais cette défaillance peut entraîner un retard (un retard sévère dans 15 certains cas, par exemple toute une nuit de retard) dans l'achèvement du projet. Par conséquent, une grille à plusieurs noeuds de commande, comprenant un noeud de commande de secours, peut être bénéfique. [00128] Pour ajouter un autre noeud ou une autre machine à la grille, le noeud de commande primaire peut ouvrir une paire de sockets (connecteurs logiciels) 20 d'écoute, par exemple. Un socket peut être utilisé pour accepter des demandes de travail émanant de clients, et le second socket peut être utilisé pour accepter des liaisons d'autres noeuds de la grille). Le noeud de commande primaire peut recevoir une liste d'autres noeuds (par exemple d'autres machines, ordinateurs, serveurs) qui vont participer à la grille, et du rôle que chaque noeud va remplir dans la grille. Au 25 démarrage du noeud de commande primaire (par exemple le premier noeud de la grille), le noeud de commande primaire peut utiliser un protocole de réseau pour démarrer le processus serveur sur chaque autre noeud de la grille. Des paramètres de ligne de commande, par exemple, peuvent communiquer à chaque noeud une ou plusieurs informations, telles que : le rôle qu'aura le noeud dans la grille, le nom 30 d'hôte du noeud de commande primaire, le numéro de port sur lequel le noeud de commande primaire accepte des liaisons de noeuds homologues, entre autres. Les informations peuvent également être fournies dans un fichier de configuration, 3055438 64 transmis par un tunnel sécurisé de type Secure Shell, extraites d'un serveur configuration, entre autres. Les autres machines de la grille peuvent ne pas connaître initialement la configuration de la grille, mais ces informations peuvent également être envoyées à chaque autre noeud par le noeud de commande primaire. Des mises à 5 jour des informations de grille peuvent également être envoyées ultérieurement à ces noeuds. [00129] Pour tout noeud de commande autre que le noeud de commande primaire ajouté à la grille, le noeud de commande peut ouvrir trois sockets. Le premier socket peut accepter des demandes de travail émanant de clients, le deuxième socket peut 10 accepter des liaisons d'autres membres de la grille, et le troisième socket peut être relié (par exemple de façon permanente) au noeud de commande primaire. Lorsqu'un noeud de commande (par exemple un noeud de commande primaire) reçoit une liaison d'un autre noeud de commande, il commence par voir si le si le noeud homologue figurer dans la liste des noeuds configurés de la grille. S'il ne figure pas dans la liste, 15 le noeud de commande peut supprimer la liaison. S'il est sur la liste, il peut alors tenter d'authentifier la liaison. Si l'authentification réussit, le noeud authentificateur peut transmettre des informations à ses homologues, telles que le numéro de port sur lequel un noeud est à l'écoute de liaisons, le nom d'hôte du noeud, des informations sur la façon d'authentifier le noeud, entre autres informations. Lorsqu'un noeud, tel 20 que le nouveau noeud de commande, reçoit des informations à propos d'un autre noeud actif, il va vérifier s'il a déjà une liaison avec cet autre noeud. S'il n'a pas de liaison avec ce noeud, il peut alors établir une avec liaison le noeud de commande en question. [00130] Tout noeud de travail ajouté à la grille peut établir une liaison au noeud de 25 commande primaire et à d'éventuels autres noeuds de commande de la grille. Après avoir établi la liaison, il peut s'authentifier auprès de la grille (par exemple auprès d'éventuels noeuds de commande, comprenant à la fois des noeuds primaires ou de secours, ou d'un serveur ou d'un utilisateur commandant la grille). Une fois l'authentification réussie, le noeud de travail peut accepter des informations de 30 configuration provenant du noeud de commande. [00131] Lorsqu'un noeud rejoint une grille de communications (par exemple lorsque le noeud est activé sur un noeud existant de la grille ou relié à celui-ci ou les 3055438 deux), le noeud se voit affecter (par exemple par un système d'exploitation de la grille) un identifiant unique universel (UUID). Cet identifiant unique peut aider d'autres noeuds et entités externes (dispositifs, utilisateurs, etc.) à identifier le noeud et à le distinguer des autres noeuds. Lorsqu'un noeud est relié à la grille, le noeud peut 5 partager son identifiant unique avec les autres noeuds de la grille. Comme chaque noeud peut partager son identifiant unique, chaque noeud peut connaître l'identifiant unique de tous les autres noeuds de la grille. Des identifiants uniques peuvent également designer une hiérarchie de chacun des noeuds (par exemple des noeuds de commande de secours) de la grille. Par exemple, les identifiants uniques de chacun 10 des noeuds de commande de secours peuvent être stockés dans une liste de noeuds de commande de secours pour indiquer un ordre dans lequel les noeuds de commande de secours vont prendre le relais d'un noeud de commande primaire défaillant pour devenir un nouveau noeud de commande primaire. Cependant, une hiérarchie de noeuds peut également être déterminée en utilisant des méthodes autres que 15 l'utilisation des identifiants uniques des noeuds. Par exemple, la hiérarchie peut être prédéterminée, ou peut être affectée sur la base d'autres facteurs prédéterminés. [00132] La grille peut ajouter de nouvelles machines à tout moment (lancées par exemple à partir de n'importe quel noeud de commande). Pour ajouter un nouveau noeud à la grille, le noeud de commande peut commencer par ajouter le nouveau 20 noeud à sa table de noeuds de grille. Le noeud de commande peut également notifier ensuite tous les autres noeuds de commande de l'existence du nouveau noeud. Les noeuds recevant la notification peuvent reconnaître qu'ils ont mis à jour leurs informations de configuration. [00133] Le noeud de commande primaire 402 peut, par exemple, transmettre une 25 ou plusieurs communications aux noeuds de commande de secours 404 et 406 (et, par exemple, à d'autres noeuds de commande ou de travail dans la grille de communications). Ces communications peuvent être envoyées périodiquement, à intervalles fixes, entre des stades fixes connus de l'exécution du projet, entre autres protocoles. Les communications transmises par le noeud de commande primaire 402 30 peuvent être de types variés et peuvent comprendre divers types d'informations. Par exemple, le noeud de commande primaire 402 peut transmettre des clichés (par exemple des informations d'état) de la grille de communications de sorte que le 7,17,7, (\Olt"- A 1 1-771,1 1 Ti, ---1 reg 3055438 66 noeud de commande de secours 404 ait toujours un cliché récent de la grille de communications. Le cliché ou l'état de la grille peut comprendre, par exemple, la structure de la grille (comprenant, par exemple, les noeuds de travail de la grille, les identifiants uniques des noeuds, ou leurs relations avec le noeud de commande 5 primaire) et l'état d'un projet (comprenant, par exemple, l'état de la partie du projet de chaque noeud de travail). Le cliché peut également inclure une analyse ou des résultats reçus des noeuds de travail de la grille de communications. Les noeuds de commande de secours peuvent recevoir et stocker les données de secours reçues du noeud de commande primaire Les noeuds de commande de secours peuvent 10 transmettre une demande d'un tel cliché (ou d'autres informations) émanant du noeud de commande primaire, ou le noeud de commande primaire peut envoyer ces informations périodiquement aux noeuds de commande de secours. [00134] Comme on l'aura noté, les données de secours peuvent permettre au noeud de commande de secours de prendre le relais comme noeud de commande 15 primaire en cas de défaillance du noeud de commande primaire, sans obliger la grille à redémarrer le projet depuis le début. Si le noeud de commande primaire est défaillant, le noeud de commande de secours qui va prendre le relais comme noeud de commande primaire peut extraire la version la plus récente du cliché reçu du noeud de commande primaire et utiliser le cliché pour poursuivre le projet à partir du stade 20 du projet indiqué par les données de secours. Cela peut éviter un échec du projet dans son ensemble. [00135] Un noeud de commande de secours peut utiliser divers procédés pour déterminer que le noeud de commande primaire est défaillant. Dans un exemple d'un tel procédé, le noeud de commande primaire peut transmettre (par exemple 25 périodiquement) une communication au noeud de commande de secours, qui indique que le noeud de commande primaire fonctionne et n'a pas connu de défaillance, telle qu'une communication de type battement de coeur. Le noeud de commande de secours peut déterminer que le noeud de commande primaire a connu une défaillance si le noeud de commande de secours n'a pas reçu de communication de type 30 battement de coeur pendant un certain laps de temps prédéterminé. En variante, un noeud de commande de secours peut également recevoir une communication émanant du noeud de commande primaire lui-même (avant sa défaillance) ou d'un noeud de 3055438 67 travail que le noeud de commande primaire a connu une défaillance, par exemple du fait que le noeud de commande primaire n'a pas communiqué avec le noeud de travail. [00136] Différent procédés peuvent être effectués pour déterminer quels noeud de 5 commande de secours d'un ensemble de noeuds de commande de secours (par exemple les noeuds de commande de secours 404 et 406) vont prendre le relais du noeud de commande primaire défaillant 402 et devenir le nouveau noeud de commande primaire. Par exemple, le nouveau noeud de commande primaire peut être choisi en fonction d'un classement ou d'une « hiérarchie » de noeuds de commande 10 de secours basés sur leurs identifiants uniques. Dans un autre mode de réalisation, un noeud de commande de secours peut être affecté pour être le nouveau noeud de commande primaire par un autre dispositif de la grille de communications ou à partir d'un dispositif externe (par exemple une infrastructure système ou un utilisateur final, tel qu'un serveur ou un ordinateur, commandant la grille de communications). 15 Dans un mode de réalisation encore différent, le noeud de commande de secours qui prend le relais comme nouveau noeud de commande primaire peut être désigné en fonction de la bande passante ou d'autres statistiques relatives à la grille de communications. [00137] Un noeud de travail de la grille de communications peut également 20 connaître une défaillance. En cas de défaillance d'un noeud de travail, un travail en train d'être réalisé par le noeud de travail défaillant peut être redistribué entre les noeuds de travail opérationnels. Dans un autre mode de réalisation, le noeud de commande primaire peut transmettre une communication à chacun des noeuds de travail utilisables toujours dans la grille de communications, que chacun des noeuds 25 de travail doit également être délibérément défaillant. Une fois que chacun des noeuds de travail est défaillant, chacun peut extraire le point de contrôle le plus récemment sauvegardé de son état et redémarrer le projet à partir du point de contrôle en question pour limiter la perte de progression sur le projet en cours d' exécution. 30 [00138] La figure 5 représente un organigramme montrant un processus type pour régler une grille de communications ou un projet de travail dans une grille de communications après une défaillance d'un noeud, selon des modes de réalisation de 3055438 68 la présente technologie. Le processus peut comprendre, par exemple, la réception d'informations d'état de grille comprenant un état de projet d'une partie d'un projet exécuté par un noeud de la grille de communications, comme expliqué à l'opération 502. Par exemple, un noeud de commande (par exemple un noeud de commande de 5 secours relié à un noeud de commande primaire et à un noeud de travail d'une grille de communications) peut recevoir des informations d'état de grille, lorsque les informations d'état de grille comprennent un état de projet du noeud de commande primaire ou un état de projet du noeud de travail. L'état de projet du noeud de commande primaire et l'état de projet du noeud de travail peut comprendre un état 10 d'une ou plusieurs parties d'un projet exécuté par les noeuds primaire et de travail de la grille de communications. Le processus peut également inclure le stockage des informations d'état de grille, comme expliqué à l'opération 504. Par exemple, un noeud de commande (par exemple un noeud de commande de secours) peut stocker les informations d'état de grille reçues localement dans le noeud de commande. En 15 variante, les informations d'état de grille peuvent être envoyées à un autre dispositif pour stockage lorsque le noeud de commande peut avoir accès aux informations. [00139] Le processus peut également inclure la réception d'une communication de défaillance correspondant à un noeud de la grille de communications à l'opération 506. Par exemple, un noeud peut recevoir une communication de défaillance 20 comprenant une indication que le noeud de commande primaire a connu une défaillance, invitant un noeud de commande de secours à prendre le relais du noeud de commande primaire. Dans un autre mode de réalisation, un noeud peut recevoir une communication de défaillance qu'un noeud de travail a connu une défaillance, invitant un noeud de commande à réaffecter le travail en train d'être réalisé par le 25 noeud de travail. Le processus peut également inclure la réaffectation d'un noeud ou d'une partie du projet en train d'être exécuté par le noeud défaillant, comme expliqué à l'opération 508. Par exemple, un noeud de commande peut désigner le noeud de commande de secours comme nouveau noeud de commande primaire sur la base de la communication de défaillance lors de la réception de la communication de 30 défaillance. Si le noeud défaillant est un noeud de travail, un noeud de commande peut identifier un état de projet du noeud de travail défaillant en utilisant le cliché de la grille de communications, lorsque l'état de projet du noeud de travail défaillant 3055438 69 comprend un état d'une partie du projet en train d'être exécuté par le noeud de travail défaillant au moment de la défaillance. [00140] Le processus peut également inclure la réception d'informations d'état de grille mises à jour sur la base de la réaffectation, comme expliqué à l'opération 510, 5 et transmettre un ensemble d'instructions basé sur les informations d'état de grille mises à jour à un ou plusieurs noeuds de la grille de communications, comme expliqué à l'opération 512. Les informations d'état de grille mises à jour peuvent comprendre an état de projet mis à jour du noeud de commande primaire ou un état de projet mis à jour du noeud de travail. Les informations mises à jour peuvent être 10 transmises aux autres noeuds de la grille pour mettre à jour leurs informations périmées stockées. [00141] La figure 6 représente une partie d'un système informatique de type grille de communications 600 comprenant un noeud de commande et un noeud de travail, selon des modes de réalisation de la présente technologie. Le système informatique 15 de type grille de communications 600 comprend un noeud de commande (le noeud de commande 602) et un noeud de travail (le noeud de travail 610) à des fins d'illustration, mais il peut comprendre plusieurs noeuds de travail et/ou de commande Le noeud de commande 602 est relié de manière communicative au noeud de travail 610 via un trajet de communication 650. Par conséquent, le noeud de 20 commande 602 peut transmettre des informations (liées par exemple à la grille de communications ou aux notifications), au noeud de travail 610 et recevoir des informations de ce dernier via le trajet 650. [00142] Comme sur la figure 4, le système informatique de type grille de communications (ou simplement « grille de communications ») 600 comprend des 25 noeuds de traitement de données (le noeud de commande 602 et le noeud de travail 610). Les noeuds 602 et 610 comprennent des processeurs de données multi-coeurs. Chaque noeud 602 et 610 comprend un composant logiciel compatible avec une grille (GESC) 620 qui s'exécute sur le processeur de données associé à ce noeud et s'interface avec une mémoire tampon 622 également associée à ce noeud. Chaque 30 noeud 602 et 610 comprend un logiciel de gestion de base de données (SGBD) 628 qui s'exécute sur un serveur de base de données (non représenté) au niveau du noeud 3055438 de commande 602 et sur un serveur de base de données (non représenté) au niveau du noeud de travail 610. [00143] Chaque noeud comprend également une mémoire de données 624. Les mémoires de données 624, comme les mémoires de données connectées au réseau 5 110 de la figure 1 et les mémoires de données 235 de la figure 2, sont utilisées pour stocker des données destinées à être traitées par les noeuds de l'environnement informatique. Les mémoires de données 624 peuvent également stocker toutes les données intermédiaires ou finales générées par le système informatique après avoir été traitées, par exemple dans une mémoire non volatile. Cependant, dans certains 10 modes de réalisation, la configuration de l'environnement informatique de type grille permet de réaliser ses opérations de telle sorte que les résultats des données intermédiaires et finales puissent être stockés exclusivement dans une mémoire volatile (par exemple une RAM), sans qu'il soit nécessaire de stocker les résultats des données intermédiaires et finales dans des mémoires de type non volatil. Le 15 stockage de ces données dans une mémoire volatile peut être utile dans certaines situations, notamment lorsque la grille reçoit des requêtes (par exemple ad hoc) d'un client et lorsque les réponses, qui sont générées par traitement d'importantes quantités de données, doivent être générées rapidement ou à la volée. Dans une telle situation, la grille peut être configurée pour conserver les données en mémoire de 20 sorte que les réponses puissent générées à différents niveaux de détail et de sorte qu'un client puisse émettre des requêtes de manière interactive par rapport à ces informations. [00144] Chaque noeud comprend également une fonction définie par l'utilisateur (UDF) 626. L'UDF fournit un mécanisme permettant au SGBD 628 de transférer des 25 données à, ou de recevoir des données de, la base de données stockée dans les mémoires de données 624 qui sont gérées par le SGBD. Par exemple, l'UDF 626 peut être invoquée par le SGBD pour fournir des données au GESC pour traitement. L'UDF 626 peut établir une liaison par socket (non représentée) avec le GESC pour transférer les données. En variante, l'UDF 626 peut transférer des données au GESC 30 en enregistrant les données dans une mémoire partagée à laquelle peuvent accéder l'UDF et le GESC. 3055438 71 [00145] Le GESC 620 des noeuds 602 et 620 peut être relié via un réseau, tel que le réseau 108 représenté sur la figure 1. Par conséquent, les noeuds 602 et 620 peuvent communiquer l'un avec l'autre via le réseau en utilisant un protocole communication prédéterminé tel que, par exemple, l'interface de passage de 5 messages (MPI). Chaque GESC 620 peut s'engager dans une communication de point à point avec le GESC d'un autre noeud ou dans une communication collective avec plusieurs GESC via le réseau. Le GESC 620 de chaque noeud peut contenir des instructions logicielles identiques (ou quasi identiques). Chaque noeud peut être capable de fonctionner comme noeud de commande ou comme noeud de travail. Le 10 GESC du noeud de commande 602 peut communiquer, sur un trajet de communication 652, avec un dispositif client 630. Plus spécifiquement, le noeud de commande 602 peut communiquer avec une application client 632 hébergée par le périphérique client 630 pour recevoir des requêtes et répondre à ces requêtes après traitement d'importantes quantités de données. 15 [00146] Le SGBD 628 peut commander la création, la maintenance et l'utilisation d'une base de données ou d'une structure de données (non représentée) dans un noeud 602 ou 610. La base de données peut organiser les données stockées dans des mémoires de données 624. Le SGBD 628 du noeud de commande 602 peut accepter des demandes de données et transférer les données correspondant à la demande. 20 Grâce à ce processus, des collections de données peuvent être réparties entre plusieurs emplacements physiques. Dans cet exemple, chaque noeud 602 et 610 stocke une partie de l'ensemble des données gérées par le système de gestion dans la mémoire de données 624 qui lui est associée. [00147] En outre, le SGBD peut être responsable de la protection contre la perte 25 de données en utilisant des techniques de duplication. La duplication consiste à fournir une copie de secours des données stockées sur un noeud sur un ou plusieurs autres noeuds. Par conséquent, en cas de défaillance d'un noeud, les données provenant du noeud défaillant peuvent être récupérées d'une copie dupliquée résidant dans un autre noeud. Cependant, comme expliqué dans le présent document à propos 30 de la figure 4, les données ou les informations d'état de chaque noeud de la grille de communications peuvent également être partagées avec chaque noeud de la grille. 3055438 72 [00148] La figure 7 représente un organigramme montrant un procédé type pour exécuter un projet dans un système informatique de type grille, selon des modes de réalisation de la présente technologie. Comme expliqué à propos de la figure 6, le GESC au niveau du noeud de commande peut transmettre des données avec un 5 périphérique client (par exemple le périphérique client 630) pour recevoir des requêtes pour exécuter un projet et pour répondre à ces requêtes après traitement d'importantes quantités de données. La requête peut être transmise au noeud de commande, la requête pouvant comprendre une demande d'exécution d'un projet, comme expliqué à l'opération 702. La requête peut contenir des instructions sur le 10 type d'analyse de données devant être réalisée dans le projet et indiquant s'il faut exécuter le projet au moyen de l'environnement informatique à base de grille, comme on le voit dans l'opération 704. [00149] Pour lancer le projet, le noeud de commande peut déterminer si la requête demande l'utilisation de l'environnement informatique à base de grille pour exécuter 15 le projet. Si la détermination est non, alors le noeud de commande lance l'exécution du projet dans un environnement solo (par exemple au niveau du noeud de commande), comme expliqué à l'opération 710. Si la détermination est oui, le noeud de commande peut lancer l'exécution du projet dans l'environnement informatique à base de grille, comme expliqué à l'opération 706. Dans une telle situation, la 20 demande peut comprendre une configuration demandée de la grille. Par exemple, la demande peut comprendre un nombre de noeuds de commande et un nombre de noeuds de travail à utiliser dans la grille pour exécuter le projet. Une fois le projet terminé, le noeud de commande peut transmettre les résultats de l'analyse fournis par la grille, comme expliqué à l'opération 708. Que le projet soit exécuté dans un 25 environnement solo ou dans un environnement à base de grille, le noeud de commande fournit les résultats du projet. [00150] Comme noté à propos de la figure 2, les environnements informatiques décrits dans le présent document peut collecter des données (par exemple reçues de périphériques réseau, tels que des capteurs, comme les périphériques réseau 204-209 30 de la figure 2, et de périphériques clients ou d'autres sources) pour être traitées dans le cadre d'un projet d'analyse de données, et des données peuvent être reçues en temps réel dans le cadre d'un environnement d'analyse en diffusion continue (par 3055438 73 exemple ESP). Les données peuvent être collectées en utilisant une variété de sources telles que communiquées via différent types de réseaux ou localement, par exemple en diffusion continue en temps réel. Par exemple, des périphériques réseau peuvent recevoir des données périodiquement en provenance de capteurs de 5 périphérique réseau pendant que les capteurs détectent, surveillent et guettent en permanence les modifications de leurs environnements. Plus spécifiquement, un nombre croissant d'applications distribuées développent ou produisent des données à flux continu provenant de sources distribuées en appliquant des requêtes aux données avant de distribuer les données à des destinataires répartis géographiquement. Un 10 moteur de traitement de flux d'évènements (ESPE) peut appliquer en continu les requêtes aux données au fur et à mesure de leur réception et déterminer quelles entités doivent recevoir les données. Des dispositifs clients ou autres peuvent également s'abonner à l'ESPE ou d'autres dispositifs traitant les données de l'ESP afin de pouvoir recevoir les données après traitement, par exemple en fonction des 15 entités déterminées par le moteur de traitement. Par exemple, les périphériques clients 230 de la figure 2 peuvent s'abonner à l'ESPE dans l'environnement informatique 214. Dans un autre exemple, des dispositifs d'abonnement à des évènements 874a-c, décrits plus loin à propos de la figure 10, peuvent également s'abonner à l'ESPE. L'ESPE peut déterminer ou définir la façon dont des données 20 d'entrée ou des flux d'évènements provenant de périphériques réseau ou d'autres éditeurs (par exemple les périphériques réseau 204-209 de la figure 2) sont transformés en données de sortie pertinentes destinées à être consommées par des abonnés, tels que par exemple les périphériques clients 230 de la figure 2. [00151] La figure 8 représente un schéma fonctionnel comprenant des 25 composants d'un moteur de traitement de flux d'évènements (ESPE), selon des modes de réalisation de la présente technologie. L'ESPE 800 peut comprendre un ou plusieurs projets 802. Un projet peut être décrit comme un conteneur de deuxième niveau d'un modèle de moteur géré par l'ESPE 800 où une taille de groupement de fils d'exécution pour le projet peut être définie par un utilisateur. Chaque projet des 30 un ou plusieurs projets 802 peut comprendre une ou plusieurs requêtes continues 804 qui contiennent des flux de données, qui sont des transformations de flux d'évènements entrants en données. Les une ou plusieurs requêtes continues 804 3055438 74 peuvent comprendre une ou plusieurs fenêtres sources 806 et une ou plusieurs fenêtres obtenues 808. [00152] L'ESPE peut recevoir des données en diffusion continue dans un laps de temps lié à certains évènements, tels que des évènements ou d'autres données 5 détectés par un ou plusieurs périphériques réseau. L'ESPE peut effectuer des opérations associées au traitement de données créées par les un ou plusieurs dispositifs. Par exemple, l'ESPE peut recevoir des données des un ou plusieurs périphériques réseau 204-209 représentés sur la figure 2. Comme on l'aura noté, les périphériques réseau peuvent comprendre des capteurs qui détectent différents 10 aspects de leur environnement, et peuvent collecter des données au fil du temps sur la base de ces observations détectées. Par exemple, l'ESPE peut être mis en oeuvre dans une ou plusieurs de machines 220 et 240 représentées sur la figure 2. L'ESPE peut être mis en oeuvre dans une de ces machines par une application ESP. Une application ESP peut intégrer un ESPE avec son propre groupement ou ses propres 15 groupements de fils d'exécution dans son espace applicatif où le principal fil d'exécution d'application peut faire un travail spécifique d'une application et l'ESPE traite des flux d'évènements au moins en créant une instance d'un modèle et en les transformant en objets de traitement. Le conteneur moteur est le conteneur de niveau supérieur d'un modèle qui gère les ressources des un ou plusieurs projets 802. Dans 20 un mode de réalisation représentatif, par exemple, il peut n'y avoir qu'un l'ESPE 800 pour chaque instance l'application ESP, et l'ESPE 800 peut un nom de moteur unique. De plus, les un ou plusieurs projets 802 peuvent avoir chacun un nom de projet unique, et chaque requête peut avoir un nom de requête continue unique et commencer avec une fenêtre source dénommée de façon unique des une ou plusieurs 25 fenêtres sources 806. L'ESPE 800 peut être persistant ou non. [00153] La modélisation de requête continue consiste à définir des graphes orientés de fenêtres pour la manipulation et la transformation de flux d'évènements. Une fenêtre dans le contexte de la manipulation et la transformation de flux d'évènements est un noeud de traitement dans un modèle de traitement de flux 30 d'évènements. Une fenêtre d'une requête continue peut effectuer des regroupements, des calculs, de l'appariement de formes, et d'autres opérations sur les données qui circulent à travers la fenêtre. Une requête continue peut être décrite comme un 3055438 graphe orienté de fenêtres sources, relationnelles, d'appariement de formes, et procédurales. Les une ou plusieurs fenêtres sources 806 et les une ou plusieurs fenêtres obtenues 808 représentent des requêtes s'exécutant en continu qui génèrent des mises à jour d'un ensemble de résultats de requêtes au fur et à mesure que de 5 nouveaux blocs évènements circulent en flux à travers l'ESPE 800. Un graphe orienté, par exemple, est un ensemble de noeuds reliés par des bords, les bords ayant une direction qui leur est associée. [00154] Un objet évènement peut être décrit comme un paquet de données accessible sous forme de collection de champs, avec au moins un des champs défini 10 comme clé ou identifiant unique (ID). L'objet évènement peut être créé à l'aide d'une variété de formats notamment binaire, alphanumérique, XML, etc. Chaque objet évènement peut comprendre un ou plusieurs champs désignés comme identifiant primaire (ID) pour l'évènement afin que l'ESPE 800 puisse prendre en charge des codes d'opération (opcodes) pour les évènements comprenant l'insertion, 15 la mise à jour, l'insertion-mise à jour (upsert), et la suppression. Les opcodes d'insertion-mise à jour mettent à jour l'évènement si le champ clé existe déjà ; sinon, l'évènement est inséré. Pour illustration, un objet évènement peut être une représentation binaire condensée d'un ensemble de valeurs de champ et inclure à la fois des métadonnées et des données de champ associées à un évènement. La 20 métadonnée peut comprendre un opcode indiquant si l'évènement représente une insertion, une mise à jour, une insertion-mise à jour ou une suppression, un ensemble d'indicateurs indiquant si l'évènement est une mise à jour normale, une mise à jour partielle, ou un évènement généré après rétention par une politique de gestion de rétention, et un ensemble d'horodatages par microseconde qui peuvent être utilisés 25 pour des mesures de latence. [00155] Un objet bloc évènement peut être décrit comme un groupement ou un ensemble d'objets évènements. Un flux d'évènements peut être décrit comme un flux d'objets blocs évènements. Une requête continue des une ou plusieurs requêtes continues 804 transforme un flux d'évènements source constitué d'objets blocs 30 évènements en diffusion continue publiés dans l'ESPE 800 en un ou plusieurs flux d'évènements de sortie en utilisant les une ou plusieurs fenêtres sources 806 et les 3055438 76 une ou plusieurs fenêtres obtenues 808. Une requête continue peut également être considérée comme une modélisation de flux de données. [00156] Les une ou plusieurs fenêtres sources 806 sont au sommet du graphe orienté et ne sont alimentées par aucune fenêtre. Les flux d'évènements sont publiés 5 dans les une ou plusieurs fenêtres sources 806, et de là, les flux d'évènements peuvent être dirigés vers l'ensemble suivant de fenêtres reliées défini par le graphe orienté. Les une ou plusieurs fenêtres obtenues 808 sont toutes des fenêtres instanciées qui ne sont pas des fenêtres sources et dans lesquelles d'autres fenêtres diffusent des évènements en continu. Les une ou plusieurs fenêtres obtenues 808 10 peuvent effectuer des calculs ou des transformations sur les flux d'évènements entrants. Les une ou plusieurs fenêtres obtenues 808 transforment les flux d'évènements selon le type de fenêtre (c'est-à-dire d'opérateurs tels que jonction, filtrage, calcul, regroupement, copie, appariement de formes, procédural, union, etc.) et les paramètres de fenêtre. Au fur et à mesure que les flux d'évènements sont 15 publiés dans l'ESPE 800, ils sont interrogés en continu, et les ensembles résultants de fenêtres obtenues dans ces requêtes sont mis à jour en continu. [00157] La figure 9 représente un organigramme montrant un processus type comprenant des opérations réalisées par un moteur de traitement de flux d'évènements, selon certains modes de réalisation de la présente technologie. 20 Comme on l'aura noté, l'ESPE 800 (ou une application ESP associée) définit la façon dont les flux d'évènements d'entrée sont transformés en flux d'évènements de sortie pertinents. Plus spécifiquement, l'application ESP peut définir la façon dont les flux d'évènements d'entrée provenant d'éditeurs (par exemple des périphériques réseau fournissant des données détectées) sont transformés en flux d'évènements de 25 sortie pertinents consommés par des abonnés (par exemple un projet d'analyse de données exécuté par une machine ou un ensemble de machines). [00158] Dans l'application, un utilisateur peut interagir avec un ou plusieurs fenêtres d'interface utilisateur présentées à l'utilisateur dans un dispositif d'affichage sous contrôle de l'ESPE de manière indépendante ou par le biais d'une application de 30 navigation dans un ordre pouvant être choisi par l'utilisateur. Par exemple, un utilisateur peut exécuter une application ESP, qui entraîne la présentation d'une première fenêtre d'interface utilisateur, laquelle peut comprendre une pluralité de 3055438 77 menus et de sélecteurs tels que menus déroulants, boutons, zones de texte, hyperliens etc. associés à l'application ESP comme l'aura compris l'homme du métier. Comme le sait en outre l'homme du métier, diverses opérations peuvent être réalisées en parallèle, par exemple, en utilisant une pluralité de fils d'exécution. 5 [00159] Au niveau d'une opération 900, une application ESP peut définir et démarrer un ESPE, instanciant ce faisant un ESPE au niveau d'un dispositif, tel qu'une machine 220 et/ou 240. Dans une opération 902, le conteneur moteur est créé. Pour illustration, l'ESPE 800 peut être instancié à l'aide d'un appel de fonction qui spécifie que le conteneur moteur est gestionnaire du modèle. 10 [00160] Dans une opération 904, les une ou plusieurs requêtes continues 804 sont instanciées par l'ESPE 800 comme modèle. Les une ou plusieurs requêtes continues 804 peuvent être instanciées avec un groupement ou des groupements de fils d'exécution dédiés qui génèrent des mises à jour au fur et à mesure que de nouveaux évènements circulent en flux à travers l'ESPE 800. Pour illustration, les une ou 15 plusieurs requêtes continues 804 peuvent être créées pour modéliser une logique de traitement d'activité dans l'ESPE 800, pour prévoir des évènements dans l'ESPE 800, pour modéliser un système physique dans l'ESPE 800, pour prévoir l'état du système physique dans l'ESPE 800, etc. Par exemple, comme on l'aura noté, l'ESPE 800 peut être utilisé pour prendre en charge la surveillance et la gestion de données 20 de capteurs (par exemple, la détection peut comprendre la force, le couple, la charge, la contrainte, la position, la température, la pression d'air, le débit de fluide, les propriétés chimiques, la résistance, les champs électromagnétiques, le rayonnement, l'irradiance, la proximité, l'acoustique, l'humidité, la distance, la vitesse, les vibrations, l'accéleration, le potentiel électrique, ou le courant électrique, etc.). 25 [00161] L'ESPE 800 peut analyser et traiter des évènements en mouvement ou « flux d'évènements. » Au lieu de stocker des données et d'exécuter des requêtes sur les données stockées, l'ESPE 800 peut stocker des requêtes et faire circuler les données en flux à travers celles-ci pour permettre une analyse continue de données au fur et à mesure de leur réception. Les une ou plusieurs fenêtres sources 806 et les 30 une ou plusieurs fenêtres obtenues 808 peuvent être créées sur la base d'algorithmes relationnels, d'appariement de formes, et procéduraux qui transforment les flux d'évènements d'entrée en flux d'évènements de sortie pour modéliser, simuler, noter, 3055438 78 tester, prévoir, etc. sur la base du modèle de requête continue défini et de son application aux données diffusées en continu. [00162] Dans une opération 906, une fonctionnalité publication/abonnement (pub./abonn.) est initialisée pour l'ESPE 800. Dans un mode de réalisation 5 représentatif, une fonctionnalité pub./abonn. est initialisée pour chaque projet des un ou plusieurs projets 802. Pour initialiser et activer la fonctionnalité pub./abonn. pour l'ESPE 800, un numéro de port peut être fourni. Les clients pub./abonn. peuvent utiliser un nom d'hôte d'un dispositif ESP exécutant l'ESPE et le numéro de port pour établir des liaisons pub./abonn. avec l'ESPE 800. 10 [00163] La figure 10 représente un système ESP 850 s'interfaçant entre un dispositif de publication 872 et des dispositifs d'abonnement à des évènements 874a-c, selon des modes de réalisation de la présente technologie. Le système ESP 850 peut comprendre un dispositif ou sous-système ESP 851, un dispositif de publication d'évènement 872, un dispositif d'abonnement à un évènement A 874a, un dispositif 15 d'abonnement à un évènement B 874b, et un dispositif d'abonnement à un évènement C 874c. Les flux d'évènements d'entrée sont transmis au dispositif ESP 851 par un dispositif de publication 872. Dans d'autres modes de réalisation, les flux d'évènements d'entrée peuvent être créés par une pluralité de dispositifs de publication. La pluralité de dispositifs de publication peuvent en outre publier des 20 flux d'évènements vers d'autres dispositifs ESP. Les une ou plusieurs requêtes continues instanciées par l'ESPE 800 peuvent analyser et traiter les flux d'évènements d'entrée pour former des flux d'évènements de sortie transmis au dispositif d'abonnement à un évènement A 874a, au dispositif d'abonnement à un évènement B 874b, et au dispositif d'abonnement à un évènement C 874c. Le 25 système ESP 850 peut comprendre un nombre plus élevé ou moins élevé de dispositifs d'abonnement à des évènements. [00164] La publication-abonnement est un paradigme d'interaction orienté message qui s'appuie sur l'adressage indirect. Les destinataires de données traitées indiquent leur intérêt pour la réception d'informations provenant de l'ESPE 800 en 30 s'abonnant à des classes d'évènements spécifiques, pendant que des sources d'information publient des évènements dans l'ESPE 800 sans s'adresser directement aux parties réceptrices. l'ESPE 800 coordonne les interactions et traite les données. 3055438 79 Dans certains cas, la source des données reçoit une confirmation que les informations publiées ont été reçues par un destinataire de données. [00165] Un API de publication/abonnement peut être décrit comme une bibliothèque qui permet à un éditeur d'évènements, tels que le dispositif de 5 publication 872, de publier des flux d'évènements dans l'ESPE 800 ou à un abonné à un évènement, tel que le dispositif d'abonnement à un évènement A 874a, le dispositif d'abonnement à un évènement B 874b, et le dispositif d'abonnement à un évènement C 874c, de s'abonner à des flux d'évènements émanant de l'ESPE 800. Pour illustration, un ou plusieurs API de publication/abonnement peuvent être 10 définis. En utilisant l'API de publication/abonnement, une application de publication d'évènements peut publier des flux d'évènements dans une fenêtre source de projet d'un processeur de flux d'évènements en cours d'exécution de l'ESPE 800, et l'application d'abonnement à un évènement peut s'abonner à une fenêtre source de projet d'un processeur de flux d'évènements de l'ESPE 800. 15 [00166] L'API de publication/abonnement fournit une connectivité multi- plateforme et une compatibilité avec le « boutisme » (endianness) entre une application ESP et d'autres applications en réseau, telles que les applications de publication d'évènements instanciées dans le dispositif de publication 872, et les applications d'abonnement à des évènements instanciées dans un ou plusieurs du 20 dispositif d'abonnement à un évènement A 874a, du dispositif d'abonnement à un évènement B 874b, et du dispositif d'abonnement à un évènement C 874c. [00167] Pour revenir à la figure 9, l'opération 906 initialise la fonctionnalité de publication/abonnement de l'ESPE 800. Dans une opération 908, les un ou plusieurs projets 802 sont démarrés. Les un ou plusieurs projets démarrés peuvent s'exécuter 25 en arrière-plan sur un dispositif ESP. Dans une opération 910, un objet bloc évènement est reçu d'un ou plusieurs dispositifs informatiques du dispositif de publication d' évènement 872. [00168] Le sous-système ESP 800 peut comprendre un client de publication 852, l'ESPE 800, un client abonné A 854, un client abonné B 856, et un client abonné C 30 858. Le client de publication 852 peut être démarré par une application de publication d'évènements s'exécutant au niveau du dispositif de publication 872 en utilisant l'API de publication/abonnement. Le client abonné A 854 peut être démarré 3055438 par une application d'abonnement à un évènement A, s'exécutant au niveau du dispositif d'abonnement à un évènement A 874a en utilisant l'API de publication/abonnement. Le client abonné B 856 peut être démarré par une application d'abonnement à un évènement B s'exécutant au niveau du dispositif 5 d'abonnement à un évènement B 874b en utilisant l'API de publication/abonnement. Le client abonné C 858 peut être démarré par une application d'abonnement à un évènement C s'exécutant au niveau du dispositif d'abonnement à un évènement C 874c en utilisant l'API de publication/abonnement. [00169] Un objet bloc évènement contenant un ou plusieurs objets évènements est 10 injecté dans une fenêtre source des une ou plusieurs fenêtres sources 806 par une instance d'une application de publication d'évènements sur le dispositif de publication d'évènement 872. L'objet bloc évènement peut être généré, par exemple, par l'application de publication d'évènements et peut être reçu par le client de publication 852. Un ID unique peut être maintenu pendant que l'objet bloc 15 évènement est passé entre les une ou plusieurs fenêtres sources 806 et/ou les une ou plusieurs fenêtres obtenues 808 de l'ESPE 800, et au client abonné A 854, au client abonné B 806, et au client abonné C 808 ainsi qu'au dispositif d'abonnement à un évènement A 874a, au dispositif d'abonnement à un évènement B 874b, et au dispositif d'abonnement à un évènement C 874c. Le client de publication 852 peut en 20 outre générer et inclure un ID unique de transaction intégrée dans l'objet bloc évènement pendant que l'objet bloc évènement est traité par une requête continue, ainsi que l'ID unique ID que le dispositif de publication 872 a affecté à l'objet bloc évènement. [00170] Dans une opération 912, l'objet bloc évènement est traité au travers des 25 une ou plusieurs requêtes continues 804. Dans une opération 914, l'objet bloc évènement traité est transmis à un ou plusieurs dispositifs informatiques des dispositifs d'abonnement à des évènements 874a-c. Par exemple, le client abonné A 804, le client abonné B 806, et le client abonné C 808 peuvent envoyer l'objet bloc évènement reçu au dispositif d'abonnement à un évènement A 874a, au dispositif 30 d'abonnement à un évènement B 874b, et au dispositif d'abonnement à un évènement C 874c, respectivement. 3055438 81 [00171] L'ESPE 800 maintient l'aspect conteneur de bloc évènement des blocs évènements reçus à partir du moment où le bloc évènement est publié dans une fenêtre source et trace son chemin au travers du graphe orienté défini par les une ou plusieurs requêtes continues 804 avec les diverses traductions d'évènement avant 5 d'être transmis à des abonnés. Les abonnés peuvent corréler un groupe d'évènements auxquels ils sont abonnés avec un groupe d'évènements publiés en comparant l'ID unique de l'objet bloc évènement qu'un éditeur, tel que le dispositif de publication 872, a rattaché à l'objet bloc évènement avec l'ID de bloc évènement reçu par l' abonné. 10 [00172] Dans une opération 916, une détermination est effectuée concernant l'arrêt ou non du traitement. Si le traitement n'est pas arrêté, le traitement se poursuit dans l'opération 910 pour continuer de recevoir les un ou plusieurs flux d'évènements contenant des objets blocs évènements provenant, par exemple, d'un ou plusieurs périphériques réseau. Si le traitement est arrêté, traitement se poursuit 15 dans une opération 918. Dans l'opération 918, les projets démarrés sont arrêtés. Dans l'opération 920, l'ESPE est mis à l'arrêt complet. [00173] Comme on l'aura noté, dans certains modes de réalisation, les big data sont traitées pour un projet d'analyse après que les données ont été reçues et stockées. Dans d'autres modes de réalisation, des applications distribuées traitent des 20 données circulant en flux continu en temps réel à partir de sources distribuées en appliquant des requêtes aux données avant de distribuer les données à des destinataires répartis géographiquement. Comme on l'aura noté, un moteur de traitement de flux d'évènements (ESPE) peut appliquer les requêtes en continu aux données au fur et à mesure de leur réception et déterminer quelles entités reçoivent 25 les données traitées. Cela permet que d'importantes quantités de données soient reçues et/ou collectées dans une variété d'environnements pour être traitées et distribuées en temps réel. Par exemple, comme indiqué à propos de la figure 2, les données peuvent être collectées à partir de périphériques réseau qui peuvent comprendre des dispositifs dans l'Internet des objets, tels que des dispositifs d'un 30 réseau domotique. Ces données peuvent toutefois être collectées à partir d'une variété de ressources différentes dans une variété d'environnements différents. Dans 3055438 82 une situation de ce genre, les modes de réalisation de la présente technologie permettent un traitement en temps réel de ces données. [00174] Des aspects la présente invention apportent des solutions techniques à des problèmes techniques, tels que les problèmes de calcul qui surviennent lorsqu'un 5 dispositif ESP connaît une défaillance qui entraîne une interruption de service totale et une perte potentiellement importante de données. La perte de données peut être catastrophique lorsque les données diffusées en continu sont en appui d'opérations critiques pour une mission, telles que celles sur lesquelles s'appuie une opération continue de fabrication ou de forage. Un mode de réalisation d'un système ESP 10 permet d'obtenir un basculement rapide et transparent de l'ESPE s'exécutant dans la pluralité de dispositifs ESP sans interruption de service ni perte de données, améliorant ainsi de manière significative la fiabilité d'un système d'exploitation qui s'appuie sur le traitement en temps réel des flux de données. Les systèmes de publication d'évènements, les systèmes d'abonnement à des évènements, et chaque 15 ESPE ne s'exécutant pas dans un dispositif ESP défaillant ne sont ni au courant de l'existence du dispositif ESP défaillant, ni affectés par sa défaillance. Le système ESP peut comprendre des milliers de systèmes de publication d'évènements et de systèmes d'abonnement à des évènements. Le système ESP maintient la logique de basculement et la connaissance de ce dernier dans les limites d'un connecteur réseau 20 de messagerie de sortie et d'un périphérique réseau de messagerie de sortie. [00175] Dans un mode de réalisation type, il est prévu un système destiné à prendre en charge un basculement lors d'un traitement de flux d'évènements (ESP) de blocs évènements. Le système comprend, de façon non exhaustive, un périphérique réseau de messagerie de sortie et un dispositif informatique. Le 25 dispositif informatique comprend, de façon non exhaustive, un processeur et un support lisible par ordinateur couplé fonctionnellement au processeur. Le processeur est configuré pour exécuter un moteur ESP (ESPE). Le support lisible par ordinateur comporte des instructions stockées sur celui-ci qui, lorsqu'elles sont exécutées par le processeur, amènent le dispositif informatique à prendre en charge le basculement. 30 Un objet bloc évènement est reçu de l'ESPE, qui comprend un identifiant unique. Un premier état du dispositif informatique comme actif ou en veille est déterminé. Lorsque le premier état est actif, un second état du dispositif informatique comme 3055438 83 nouvellement actif ou non nouvellement actif est déterminé. L'état nouvellement actif est déterminé lorsque le dispositif informatique est commuté d'un état de veille vers un état actif. Lorsque le second état est nouvellement actif, un dernier identifiant d'objet bloc évènement publié qui identifie de façon unique un dernier objet bloc 5 évènement publié est déterminé. Un objet bloc évènement suivant est choisi à partir d'un support non transitoire lisible par ordinateur auquel peut accéder le dispositif informatique. L'objet bloc évènement suivant possède un identifiant d'objet bloc évènement qui est supérieur à l'identifiant du dernier objet bloc évènement publié déterminé L'objet bloc évènement suivant choisi est publié sur un périphérique 10 réseau de messagerie de sortie. Lorsque le second état du dispositif informatique n'est pas nouvellement actif, l'objet bloc évènement reçu est publié sur le périphérique réseau de messagerie de sortie. Lorsque le premier état du dispositif informatique est la veille, l'objet bloc évènement reçu est stocké sur le support non transitoire lisible par ordinateur. 15 [00176] La figure 11A représente un schéma fonctionnel d'un mode de réalisation type d'un système de traitement distribué 1000 intégrant un ou plusieurs dispositifs de stockage 1100 qui peuvent former une grille de dispositifs de stockage 1001, un dispositif de coordination 1300, plusieurs dispositifs de noeud 1500 qui peuvent former une grille de dispositifs de noeuds 1005, et/ou un dispositif de visualisation 20 1800. La figure 11B représente un schéma fonctionnel d'un autre mode de réalisation type du système de traitement distribué 1000 dans lequel un autre mode de réalisation des dispositifs de noeud 1500 intègre des caractéristiques et/ou effectue des fonctions des un ou plusieurs dispositifs de stockage 1100. Dans ces deux modes de réalisation du système de traitement distribué 1000, et Comme cela sera expliqué 25 de manière plus détaillée, les dispositifs de noeud 1500 peuvent fonctionner ensemble en tant que grille 1005 sous le contrôle du dispositif de coordination 1300, chacun des multiples dispositifs de noeud 1500 effectuant la même tâche au moins partiellement en parallèle avec une partition différente parmi les multiples partitions d'ensemble de données 1131 d'un ensemble de données 1130 qui sont réparties entre 30 les multiples dispositifs de noeud 1500. [00177] Comme cela est représenté, ces dispositifs 1100, 1300, 1500 et 1800 peuvent échanger des communications entre eux, liées à l'affectation et à la 3055438 84 réalisation de tâches d'une routine d'analyse 1210 avec un ou plusieurs ensembles de données 1130. Ces communications peuvent comprendre l'échange d'états de noeud 1535, de partitions d'ensemble de données 1131 et/ou de métadonnées 1135 d'un ensemble de données 1130, la routine d'analyse 1210 et/ou les routines de tâche 5 1211 de celui-ci, des routines de tâche de CPU 1571, des routines de tâche de GPU 1671 et/ou des données de résultats 1830. Cependant, un ou plusieurs des dispositifs 1100, 1300, 1500 et/ou 1800 peuvent également échanger, via le réseau 1999, d'autres données entièrement indépendantes d'une quelconque affectation ou réalisation de tâches d'une quelconque routine d'analyse. Dans divers modes de 10 réalisation, le réseau 1999 peut être un seul réseau qui peut s'étendre dans un seul bâtiment ou dans une autre zone relativement limitée, une combinaison de réseaux reliés qui peuvent s'étendre sur une distance considérable, et/ou peuvent comprendre l'Internet. Ainsi, le réseau 1999 peut s'appuyer sur l'une quelconque d'une variété (ou combinaison) de technologies de communications par lesquelles des 15 communications peuvent être effectuées, y compris, entre autres, des technologies filaires employant des câbles électriquement et/ou optiquement conducteurs, et des technologies sans fil employant l'infrarouge, les radiofréquences (RF) ou d'autres formes de transmission sans fil. [00178] Si l'on se reporte à la figure 11A, dans divers modes de réalisation, 20 chacun des un ou plusieurs dispositifs de stockage 1100 peut intégrer un ou plusieurs d'un processeur 1150, d'une mémoire 1160 et d'une interface réseau 1190 pour coupler chacun des un ou plusieurs dispositifs de stockage 1100 au réseau 1999. La mémoire 1160 peut stocker une routine de commande 1140, une ou plusieurs routines d'analyse 1210 qui peuvent intégrer chacune une ou plusieurs routines de 25 tâche 1211, un ou plusieurs ensembles de données 1330 qui peuvent chacun intégrer des métadonnées 1135, et/ou une ou plusieurs partitions d'ensemble de données 1131 des un ou plusieurs ensembles de données 1130. La routine de commande 1140 peut intégrer une séquence d'instructions opérant sur le processeur 1150 de chacun des un ou plusieurs dispositifs de stockage 1100 pour mettre en oeuvre une logique 30 permettant de réaliser diverses fonctions. Le processeur 1150 de chacun des dispositifs de stockage 1100 peut utiliser l'interface réseau 1190 pour échanger la routine d'analyse 1210 et/ou une ou plusieurs des routines de tâche 1211 de celle-ci 3055438 avec le dispositif de coordination 1300. En variante ou en outre, le processeur 1150 de chacun des dispositifs de stockage peut utiliser l'interface réseau 1190 pour coordonner les échanges d'une ou plusieurs partitions d'ensemble de données 1131 avec un ou plusieurs des dispositifs de noeud 1500 via le réseau 1999 avec le 5 dispositif de coordination 1300, ainsi que pour effectuer ces échanges. Dans des modes de réalisation dans lesquels plusieurs des dispositifs de stockage 1100 fonctionnent ensemble en tant que grille de dispositifs de stockage 1001, la séquence d'instructions de la routine de commande 1140 peut agir sur le processeur 1150 de chacun de ces dispositifs de stockage 1100 pour réaliser diverses fonctions au moins 10 partiellement en parallèle avec les processeurs 1150 d'autres dispositifs de stockage 1100. [00179] Dans certains modes de réalisation, les processeurs 1150 des dispositifs de stockage 1100 peuvent coopérer pour réaliser une fonction de collecte dans laquelle chacun des processeurs 1150 utilise une interface correspondante des 15 interfaces réseau 1190 pour recevoir des données d'un ou plusieurs des ensembles de données 1130 via le réseau 1999, et peut assembler les données pour former les un ou plusieurs ensembles de données 1130 dans un laps de temps. Dans ces modes de réalisation, des données d'un ensemble de données 1130 peuvent être reçues via le réseau 1999 et/ou d'autres manières d'un ou plusieurs autres dispositifs (non 20 représentés). À titre d'exemple, une multitude de dispositifs capteurs situés à distance (par exemple des capteurs géologiques dispersés dans une région géologique particulière, ou des capteurs de détection de particules disposés dans diverses parties d'un accélérateur de particules) peuvent générer de nombreuses données qui sont ensuite fournies via le réseau 1999 aux dispositifs de stockage 1100 lorsque ces 25 nombreuses données sont ensuite assemblées pour former un ensemble de données 1130. Dans d'autres modes de réalisation, les dispositifs de stockage 1100 peuvent recevoir un ou plusieurs des ensembles de données 1130 d'une multitude d'autres dispositifs (non représentés), tels qu'une grille d'autres dispositifs de noeud. À titre d'exemple, ces autres dispositifs peuvent effectuer une ou plusieurs opérations de 30 traitement qui génèrent un ensemble de données 1130 (par exemple employer une analyse bayésienne pour obtenir une prévision du comportement de personnes dans un simulation d'évacuation d'un bâtiment en feu, ou pour obtenir une prévision du 3055438 86 comportement de composants structurels d'un pont en réponse à divers flux de vent), et peuvent ensuite transmettre un ensemble de données 1130 en tant que sortie à la grille de dispositifs de stockage 1001. [00180] Chacun des un ou plusieurs ensembles de données 1130 peut comprendre 5 l'un quelconque d'une large variété de types de données associés à l'un quelconque d'une grande variété de sujets. À titre d'exemple, chacun des ensembles de données 1130 peut comprendre des données d'observation scientifique concernant des évènements géologiques et/ou météorologique, ou provenant de capteurs employés dans des expériences de laboratoire dans des domaines tels que la chimie ou la 10 physique. Comme autre exemple encore, l'ensemble de données peut comprendre des indications d'activités réalisées par un échantillon aléatoire d'individus d'une population de personnes dans tel ou tel pays ou telle ou telle municipalité, ou d'une population d'une espèce menacée étudiée à l'état sauvage. Comme cela est représenté, chacun des ensembles de données 1130 peut intégrer des métadonnées 15 1135 qui fournissent des indications de caractéristiques structurelles y compris, entre autres, des aspects de la manière dont les données sont organisées et/ou sont rendues accessibles au sein de chaque ensemble de données 1130. [00181] Les tâches que les routines de tâche 1211 de la routine d'analyse 1210 peuvent amener un ou plusieurs processeurs à réaliser peuvent comprendre l'une 20 quelconque d'une variété de tâches d'analyse de données, de tâches de transformation de données et/ou de tâches de normalisation de données. Les tâches d'analyse de données peuvent comprendre, de façon non exhaustive, des recherches et/ou des analyses statistiques qui comportent l'obtention d'approximations, de caractérisations numériques, de modèles, d'évaluation d'hypothèses, et/ou de 25 prévisions (par exemple une prévision par analyse bayésienne d'une foule tentant de fuir un bâtiment en feu, ou du comportement de composants d'un pont en réponse à des forces de vent). Les tâches de transformation de données peuvent comprendre, de façon non exhaustive, des tris, des opérations mathématiques à base de lignes et/ou de colonnes, des filtrages à base de lignes et/ou de colonnes utilisant une ou plusieurs 30 données d'une ligne ou d'une colonne, et/ou du réordonnancement de données dans un objet donnée. Les tâches de normalisation de données peuvent comprendre, de façon non exhaustive, la normalisation d'heures de la journée, de dates, de valeurs 3055438 87 monétaires (par exemple la normalisation en une seule unité de monnaie), l'espacement de caractères, l'utilisation de caractères délimiteurs (par exemple la normalisation de l'utilisation de points et de virgules dans des valeurs numériques), l'utilisation de codes de formatage, l'utilisation d'un codage « gros-boutiste » (big- 5 endian) ou « petit-boutiste » (little-endian), l'utilisation ou la non-utilisation de bits signés, les quantités de bits utilisés pour représenter des entiers et/ou des valeurs de virgule flottante (octets, mots, doubles mots ou quadruples mots), etc. [00182] Dans divers modes de réalisation, le dispositif de coordination 1300 peut intégrer un ou plusieurs d'un processeur 1350, d'une mémoire 1360, d'un dispositif 10 d'entrée 1320, d'un dispositif d'affichage 1380, et d'une interface réseau 1390 pour coupler le dispositif de coordination 1300 au réseau 1999. La mémoire 1360 peut stocker une routine de commande 1340, les métadonnées 1135 d'un ensemble de données 1130, la routine d'analyse 1210, des états de noeud 1535, des données d'affectation 1330, des données de retard de tâche 1335, une routine de compilation 15 1440, des règles de compilation 1434, les routines de tâche de CPU 1571, les routines de tâche de GPU 1671, et/ou les données de résultats 1830. La routine de commande 1340 et la routine de compilation 1440 (si elles sont présentes dans la mémoire 1360) peuvent intégrer chacune une séquence d'instructions opérant sur le processeur 1350 pour mettre en oeuvre une logique permettant de réaliser diverses 20 fonctions. [00183] Dans divers modes de réalisation, chacun des dispositifs de noeud 1500 peut intégrer un ou plusieurs d'une CPU 1550, d'une mémoire 1560 et d'une interface réseau 1590 pour coupler chacun des dispositifs de noeud 1500 au réseau 1999. La mémoire 1560 peut stocker une routine de commande 1540, une ou 25 plusieurs partitions d'ensemble de données 1131, une instance de l'état de noeud 1535, la routine de compilation 1440, les règles de compilation 1434, une ou plusieurs des routines de tâche 1211, et/ou une ou plusieurs des routines de tâche de CPU 1571. La routine de commande 1540 et la routine de compilation 1440 (si elles sont présentes dans la mémoire 1560) peuvent intégrer une séquence d'instructions 30 opérant sur la CPU 1550 de chacun des dispositifs de noeud 1500 pour mettre en oeuvre une logique permettant de réaliser diverses fonctions. Dans des modes de réalisation dans lesquels plusieurs des dispositifs de noeud 1500 sont utilisés 3055438 88 ensemble en tant que grille de dispositifs de noeuds 1005, la séquence d'instructions de la routine de commande 1540 peut opérer sur la CPU 1550 de chacun de ces dispositifs de noeud 1500 pour réaliser diverses fonctions au moins partiellement en parallèle avec les CPU 1550 d'autres dispositifs de noeud 1500. 5 [00184] Au moins un sous-ensemble des dispositifs de noeud 1500 peut intégrer en outre un contrôleur graphique 1600 qui peut intégrer un ou plusieurs d'un GPU 1650 et d'une mémoire 1660. La mémoire 1660 peut stocker une routine de commande 1640, une ou plusieurs partitions d'ensemble de données 1131, et/ou une ou plusieurs des routines de tâche de GPU 1671. La routine de commande 1640 peut 10 intégrer une séquence d'instructions opérant sur le GPU 1650 de chacun des dispositifs de noeud 1600 qui intègre le contrôleur graphique 1600 pour mettre en oeuvre une logique permettant de réaliser diverses fonctions. Dans des modes de réalisation dans lesquels plusieurs des dispositifs de noeud 1600 sont utilisés ensemble en tant que grille de dispositifs de noeuds 1005, la séquence d'instructions 15 de la routine de commande 1640 peut opérer sur le GPU 1650 du contrôleur graphique 1600 de chacun de ces dispositifs de noeud 1500 pour réaliser diverses fonctions au moins partiellement en parallèle avec les GPU 1650 du contrôleur graphique 1600 d'autres dispositifs de noeud 1500. [00185] Comme on le voit sur la figure 12, la mémoire 1560 peut se diviser en 20 une mémoire volatile 1561 et une mémoire non volatile 1563, et la mémoire 1660 peut comprendre une mémoire volatile 1661, mais peut de pas inclure de mémoire non volatile. Les mémoires volatiles 1561 et 1661 peuvent être mises en oeuvre chacune avec un ou plusieurs composants de mémoire volatile 1562 et 1662, respectivement. Les composants de mémoire volatile 1562 et 1662 peuvent employer 25 chacun l'une quelconque d'une variété de technologies de stockage qui permettent un accès relativement rapide aux données et/ou aux routines stockées dans ceux-ci (par exemple la partition d'ensemble de données type 1131 représentée), mais qui ne permettent pas de conserver les données et/ou routines stockées dans ceux-ci sans une alimentation continue en courant électrique. Ces technologies comprennent, de 30 façon non exhaustive, l'un quelconque de divers types de mémoire vive (RAM). La mémoire non volatile 1563 peut être mise en oeuvre avec un ou plusieurs composants de mémoire non volatile 1564. Les un ou plusieurs composants de mémoire non 3055438 89 volatile 1564 peuvent employer chacun une technologie de stockage qui permet de conserver les données et/ou routines stockées dans ceux-ci indépendamment de la poursuite de l'alimentation en courant électrique, mais qui n'est pas en mesure de fournir un accès aux données et/ou aux routines qui soit aussi rapide que celui fourni 5 par diverses technologies de mémoire volatile sur lesquelles les mémoires volatiles 1561 et/ou 1661 peuvent s' appuyer. Ces technologies comprennent, de façon non exhaustive, l'une quelconque d'une variété de technologies qui emploient des supports de stockage ferromagnétiques et/ou optiques. [00186] En raison des différences dans leurs technologies respectives, la mémoire 10 non volatile 1563 peut avoir une capacité de stockage nettement supérieure à celle des mémoires volatiles 1561 ou 1661. Ainsi, des pages de données et/ou des routines stockées dans la mémoire non volatile peuvent être échangées en entrée ou en sortie de chacune des mémoires volatiles 1561 et 1661 comme mécanisme pour permettre à la CPU 1550 et au GPU 1650 d'utiliser l'accès plus rapide des mémoires volatiles 15 1561 et 1661, respectivement, tout en surmontant les capacités de stockage plus limitées de chacune. Plus spécifiquement, et comme on le voit également sur l'illustration, la CPU 1550 peut être amenée par l'exécution d'un composant de page 1541 de la routine de commande 1540 à effectuer cet échange de pages en soutien à la fois de son propre fonctionnement et du fonctionnement du GPU 1650. La 20 nécessité d'employer la CPU 1550 pour réaliser un échange de pages pour le compte du GPU 1650 peut résulter de l'utilisation d'une ou plusieurs routines pilotes (non représentées) exécutées par la CPU 1550 pour permettre à la CPU 1550 d'accéder aux un ou plusieurs composants de mémoire non volatile 1564. [00187] Pour revenir à la figure 11A, dans divers modes de réalisation, le 25 dispositif de visualisation 1800 intègre un ou plusieurs d'un processeur 1850, d'une mémoire 1860, d'un dispositif d'entrée 1820, d'un dispositif d'affichage 1880, et d'une interface réseau 1890 pour coupler le dispositif de visualisation 1800 au réseau 1999. La mémoire 1860 peut stocker une ou plusieurs d'une routine de commande 1840, de la routine d'analyse 1210, et des données de résultats 1830. La routine de 30 commande 1840 peut intégrer une séquence d'instructions opérant sur le processeur 1850 pour mettre en oeuvre une logique permettant de réaliser diverses fonctions. Le processeur 1850 peut être amené par son exécution de la routine de commande 1840 3055438 à utiliser l'interface réseau 1890 pour recevoir les données de résultats 1830 d'un des dispositifs de noeud 1500 ou du dispositif de coordination 1300 via le réseau 1999 après achèvement de l'exécution de la routine d'analyse 1210. Dans certains modes de réalisation, le processeur 1850 peut également être amené à générer une 5 visualisation basée sur les données de résultats 1830 pour présenter une représentation des résultats de la réalisation, par plusieurs des dispositifs de noeud 1500, des tâches des routines de tâche 1211 de la routine d'analyse 1210 sur le dispositif d' affichage 1880. [00188] En variante ou en outre, le processeur 1850 peut être amené par son 10 exécution de la routine de commande 1840 à utiliser le dispositif d'affichage 1880 et/ou le dispositif d'entrée 1820 pour fournir une interface utilisateur par laquelle un opérateur du dispositif de visualisation 1800 peut fournir une entrée à celui-ci. Cette entrée peut comprendre une commande pour l'exécution de la routine d'analyse 1210 à travers plusieurs des dispositifs de noeud 1500 de la grille de dispositifs de noeuds 15 1005 pour réaliser une analyse avec au moins l'un des ensembles de données 1130 stockés par les un ou plusieurs dispositifs de stockage 1100. En réponse à réception de la commande d'entrée, le processeur 1850 peut être amené à utiliser l'interface réseau 1890 pour transmettre la commande et/ou la routine d'analyse 1210 au dispositif de coordination 1300 via le réseau 1999. 20 [00189] Si l'on se reporte à la figure 11B, l'autre mode de réalisation type du système de traitement distribué 1000 représenté sur celle-ci diffère du mode de réalisation type de la figure 11A du fait qu'il ne comprend pas les un ou plusieurs dispositifs de stockage 1100. Au lieu de cela, les dispositifs de noeud 1500 de l'autre mode de réalisation type de la figure 11B peuvent assurer directement la fonction de 25 stockage des un ou plusieurs ensembles de données 1130, supprimant ainsi la nécessité des un ou plusieurs dispositifs de stockage 1100 du mode de réalisation type du système de traitement distribué 1000 de la figure 11A. [00190] En ce qui concerne les deux modes de réalisation des figures 11A et 11B, il convient de noter que dans certains modes de réalisation, les fonctions réalisées par 30 le dispositif de coordination 1300 peuvent être réalisées par l'un des dispositifs de noeud 1500 au lieu d'être réalisées par le dispositif de coordination 1300 (par exemple les modes de réalisation qui n'incluent pas le dispositif de coordination 3055438 91 1300). Dans ces modes de réalisation, ledit un des dispositifs de noeud 1500 peut de plus recevoir les métadonnées 1135 de l'un des ensembles de données 1130 d'un des dispositifs de stockage 1100 (ou de l'un des autres dispositifs de noeud 1500 dans des modes de réalisation dans lesquels les dispositifs de noeud 1500 assurent la fonction 5 de stockage des un ou plusieurs dispositifs de stockage 1100). En outre, ledit un des dispositifs de noeud 1500 peut également recevoir les états de noeud 1535 d'autres dispositifs de noeud 1500. En outre, ledit un des dispositifs de noeud 1300 peut également transmettre les routines de tâche 1211, les routines de tâche de CPU 1571 et/ou les routines de tâche de GPU 1671 à d'autres dispositifs de noeud 1500. 10 [00191] La figure 13A représente un mode de réalisation type de l'affectation de tâches et de la compilation de routines de tâche qui peut être réalisé par le dispositif de coordination 1300 dans l'un ou l'autre des modes de réalisation types du système de traitement distribué 1000 de l'une ou l'autre des figures 11A ou 11B. La figure 13B représente un autre mode de réalisation type de l'affectation de tâches qui peut 15 être réalisée par le dispositif de coordination, tandis que la compilation de routines de tâche peut être réalisée par les dispositifs de noeud 1500 qui sont choisis pour être affectés à la réalisation des tâches dans l'un ou l'autre des modes de réalisation types du système de traitement distribué 1000 de l'une quelconque des figures 11A ou 11B. 20 [00192] Si l'on se reporte à la figure 13A, pour exécuter la routine de commande 1340, le processeur 1350 du dispositif de coordination 1300 peut être amené à recevoir des métadonnées 1135 indicatives de caractéristiques structurelles de l'un des ensembles de données 1130, et/ou de la routine d'analyse 1210 des un ou plusieurs dispositifs de stockage 1100 et/ou du dispositif de visualisation 1700. Le 25 processeur 1350 peut également être amené à recevoir, des dispositifs de noeud 1500, les états de noeud 1535 indicatifs de ressources de traitement, de stockage et/ou d'accès réseau intégrées dans chacun des dispositifs de noeud 1500, et dans quelle mesure chacune de ces ressources est actuellement disponible. Le processeur 1350 peut employer les métadonnées 1135, la routine d'analyse 1210 et/ou les états de 30 noeud 1535 pour obtenir des affectations initiales d'au moins une tâche initiale de la routine d'analyse 1210 à des dispositifs de noeud donnés 1500, ainsi qu'une 3055438 92 distribution initiale des partitions d'ensemble de données 1131 aux dispositifs de noeud donnés 1500. [00193] Pour exécuter la routine de compilation 1440, le processeur 1350 peut être amené à analyser les instructions exécutables de chacune des routines de tâche 5 1211 de la routine d'analyse 1210 pour identifier celles des routines de tâche 1211 qui peuvent être compilées pour une exécution à parallélisme embarrassant par les GPU 1650 qui peuvent être intégrés dans au moins un sous-ensemble des dispositifs de noeud 1500. Celles des routines de tâche 1211 qui peuvent être ainsi compilées pour les GPU 1650 peuvent être compilées par le processeur 1350 en des routines de 10 tâche de GPU correspondantes 1671 qui peuvent être exécutées par les GPU 1650. Cependant, celles des routines de tâche 1211 qui ne peuvent pas être ainsi compilées pour les GPU 1650 peuvent être compilées par le processeur 1350 en des routines de tâche de CPU correspondantes 1571 qui peuvent être exécutées par les CPU 1550 des dispositifs de noeud 1500. Le processeur 1350 peut ensuite être amené à distribuer les 15 une ou plusieurs routines de tâche de CPU 1571 et/ou les une ou plusieurs routines de tâche de GPU 1671 pour l'au moins une tâche initiale aux dispositifs de noeud donnés 1500 dans le cadre de l'affectation de l'au moins une tâche initiale. [00194] Pour exécuter la routine de commande 1540, la CPU 1550 de chacun des dispositifs de noeud donnés 1500 peut recevoir et stocker les une ou plusieurs 20 routines de tâche de CPU 1571 et/ou les une ou plusieurs routines de tâche de GPU 1671 pour l'au moins une tâche initiale, ainsi qu'au moins une des partitions d'ensemble de données 1131 initialement distribuées. Lorsqu'une routine de tâche de CPU 1571 est reçue, la CPU 1550 peut être amenée à exécuter la routine de tâche de CPU 1571 pour réaliser une tâche avec l'au moins une partition d'ensemble de 25 données reçue 1131. Lorsqu'une routine de tâche de GPU 1671 est reçue, la CPU 1550 peut être amenée à relayer la routine de tâche de GPU 1671 au GPU 1650 dans le contrôleur graphique 1600 du dispositif de noeud 1500, en même temps que l'au moins une partition d'ensemble de données reçue 1131, le GPU 1650 pouvant être amené par la routine de commande 1640 à exécuter la routine de tâche de GPU 1671 30 pour réaliser une tâche avec l'au moins une partition d'ensemble de données reçue 1131. 3055438 93 [00195] Indépendamment du fait que la CPU 1550 ou un GPU 1650 de chaque dispositif de noeud 1500 exécute une tâche avec une partition correspondante d'ensemble de données 1131, la CPU 1550 et/ou le GPU 1650 peuvent être amenés à mettre à jour de façon récurrente un état de noeud correspondant 1535 avec des 5 indications de la tâche ou des tâches actuellement réalisées et/ou de la mesure dans laquelle diverses ressources sont actuellement disponibles de ce fait. La CPU 1550 de chaque dispositif de noeud 1500 peut être amenée par la poursuite de l'exécution de la routine de commande 1540 à transmettre de façon récurrente l'état de noeud correspondant 1535 au dispositif de coordination 1300. 10 [00196] Pour continuer d'exécuter la routine de commande 1340, le processeur 1350 du dispositif de coordination 1300 peut employer les indications des états de noeud reçus de façon récurrente 1535 de tâches actuellement réalisées et/ou des degrés actuels de disponibilité de diverses ressources dans chaque dispositif de noeud 1500 pour déterminer le temps nécessaire pour achever diverses tâches. Le 15 processeur 1350 peut stocker des indications de ces temps nécessaires pour chaque tâche dans le cadre des données de retard de tâche 1535. Au fur et à mesure qu'un ou plusieurs des dispositifs de noeud 1500 achèvent des tâches affectées antérieurement, le processeur 1350 peut être amené à employer ces indications stockées de temps pour déterminer un laps de temps prédéterminé duquel retarder l'affectation d'une ou 20 plusieurs tâches suivantes à un ou plusieurs des dispositifs de noeud 1500. [00197] Ces retards dans l' affectation de tâches suivantes peuvent permettre d'affecter ces tâches suivantes à certains des dispositifs de noeud 1500 d'une manière qui profite de partitions d'ensemble de données particulières 1131 déjà stockées dans les mémoires 1560 et/ou 1660 d'un ou plusieurs des dispositifs de noeud 1500. En 25 outre, cela permet de profiter du stockage à durée limitée de partitions d'ensemble de données 1131 dans les mémoires volatiles 1561 et/ou 1661, et peut limiter les échanges de partitions d'ensemble de données 1131 au travers du réseau 1999 qui peuvent consommer des temps supérieurs aux durées des retards d'affectations de tâches suivantes. En outre encore, dans des modes de réalisation dans lesquels des 30 partitions d'ensemble de données particulières 1131 étaient initialement affectées à des dispositifs de noeud qui intègrent un ou plusieurs GPU 1650 où à la fois les tâches affectées antérieurement et les tâches suivantes doivent être réalisées en 3055438 94 utilisant les un ou plusieurs GPU 1650, ces retards dans l'affectation de tâches suivantes peut limiter les instances dans lesquelles les tâches suivantes sont amenées à être traitées dans d'autres dispositifs de noeud qui n'intègrent pas de GPU 1650 de sorte qu'une ou plusieurs CPU 1550 sont amenées à réaliser les tâches suivantes. 5 [00198] Si l'on se reporte à la figure 13B, l'affectation de tâches à certains des dispositifs de noeud 1500 est sensiblement similaire au mode de réalisation type d'affectation de tâches de la figure 13A, exception faite que la compilation des routines de tâche 1211 de la routine d'analyse 1210 peut se faire dans les dispositifs de noeud 1500 sélectionnés, plutôt que dans le dispositif de coordination 1300. Plus 10 spécifiquement, en obtenant les affectations initiales d'au moins une tâche initiale de la routine d'analyse 1210 aux dispositifs de noeud 1500 sélectionnés, le processeur 1350 du dispositif de coordination 1300 peut distribuer la ou les routines de tâche 1211 de l'au moins une tâche initiale aux dispositifs de noeud 1500 sélectionnés, au lieu des routines de tâche de CPU 1571 ou des routines de tâche de GPU 1671. La 15 CPU 1550 de chacun des noeuds 1500 sélectionnés peut exécuter la routine de compilation 1440 pour compiler la ou les routines de tâche distribuées 1211 pour générer la ou les routines de tâche de CPU correspondantes 1571 et/ou la ou les routines de tâche de GPU 1671 dans les dispositifs de noeud 1500 sélectionnés, au lieu de voir le processeur 1350 du dispositif de coordination 1300 le faire. 20 [00199] Les figures 14A, 14B et 14C, ensemble, représentent un mode de réalisation type d'affectation de tâches qui doivent être réalisées dans le cadre de l'exécution d'une routine d'analyse à certains des dispositifs de noeud 1500 de la grille de dispositifs de noeuds 1005. Les figures 14A et 14B illustrent la collecte et l'utilisation de données associées à une routine d'analyse 1210, des métadonnées 25 1135 d'un ensemble de données 1130 et/ou des états de noeud 1535 fournis par les dispositifs de noeud 1500 pour obtenir les affectations. La figure 14C représente la distribution de routines de tâche 1211, 1571 et/ou 1671 aux dispositifs de noeud 1500 sélectionnés. [00200] Si l'on se reporte à la figure 14A, comme le montre l'illustration, la 30 routine de commande 1340 exécutée par le processeur 1350 du dispositif de coordination 1300 peut comprendre un composant de surveillance 1345 pour amener le processeur 1350 à utiliser de façon récurrente l'interface réseau 1390 pour recevoir 3055438 les états de noeud 1535 qui peuvent être transmis de façon récurrente par chacun des dispositifs de noeud 1500 de la grille de dispositifs de noeuds 1005 via le réseau 1999. Dans certains modes de réalisation, chacun des dispositifs de noeud 1500 peut transmettre de façon récurrente un état de noeud 1535 à intervalle de temps régulier, 5 et indépendamment des autres activités en cours, comme une forme de « signal de battement de coeur » au dispositif de coordination 1300 qui indique une fonctionnalité continue, ainsi que transmettre des informations concernant les ressources actuellement disponibles et/ou les activités en cours. Dans ces modes de réalisation, une absence de réception d'un état de noeud 1535 par le dispositif de 10 coordination 1300 en provenance d'un dispositif de noeud 1500 au moment où il est attendu peut être considéré comme une indication d'un dysfonctionnement par le dispositif de noeud 1500 de sorte que les ressources du dispositif de noeud peuvent être réputées indisponibles, et toute tâche actuellement affecté à ce dernier peut être réaffectée à un autre dispositif de noeud 1500. 15 [00201] Comme on le voit également sur l'illustration, la routine de commande 1340 peut également inclure un composant d'affectation 1341 pour amener le processeur 1350 à affecter des partitions d'ensemble de données 1131 d'un ensemble de données 1130, en même temps que des tâches d'une routine d'analyse 1210 à réaliser avec les partitions d'ensemble de données 1131 affectées, à certains des 20 dispositifs de noeud 1500 de la grille de dispositifs de noeuds 1005. En se préparant à effectuer ces affectations, le processeur 1350 peut être amené à utiliser l'interface réseau 1390 pour extraire les métadonnées 1135 de l'ensemble de données 1130, ainsi que la routine d'analyse 1210 d'un ou plusieurs autres dispositifs via le réseau 1999, pour utilisation par le composant d'affectation 1341. Dans des modes de 25 réalisation dans lesquels le système de traitement distribué 1000 comprend un ou plusieurs dispositifs de stockage 1100 distincts (tels que le système de traitement distribué type 1000 de la figure 11A), les métadonnées 1135 et/ou la routine d'analyse 1210 peuvent être fournies au dispositif de coordination 1300 via le réseau 1999 des un ou plusieurs dispositifs de stockage 1100. En revanche, dans des modes 30 de réalisation dans lesquels le système de traitement distribué 1000 n'inclut pas ces dispositifs de stockage distincts et les dispositifs de noeud 1500 fournissent un stockage distribué des ensembles de données 1130 (tels que le système de traitement 3055438 96 distribué type 1000 de la figure 11B), les métadonnées 1135 et/ou la routine d'analyse 1210 peuvent être fournies au dispositif de coordination 1300 via le réseau 1999 par un ou plusieurs des dispositifs de noeud 1500. [00202] Dans d'autres modes de réalisation encore, le dispositif de visualisation 5 1800 peut fournir au dispositif de coordination 1300 la routine d'analyse 1210. Dans ces modes de réalisation, le dispositif de visualisation 1800 peut fournir une interface utilisateur par laquelle le dispositif de visualisation 1800 peut recevoir l'ordre de transmettre une commande au dispositif de coordination 1300 via le réseau 1999 pour amener à l'exécution de la routine d'analyse 1210 de manière distribuée pour 10 réaliser une analyse avec l'ensemble de données 1130. Une partie de la transmission de la commande au dispositif de coordination 1300 peut être la transmission de la routine d'analyse 1210 du dispositif de visualisation 1700 au dispositif de coordination 1300. [00203] Comme on le voit en outre sur l'illustration, dans des modes de 15 réalisation dans lesquels le dispositif de coordination 1300 doit compiler les routines de tâche 1211 de la routine d'analyse 1210, la routine de compilation 1440 peut être exécutée par le processeur 1350, et peut comprendre un composant d'analyse 1441 pour identifier celles des routines de tâche 1211 qui sont susceptibles d'être converties et compilées pour une exécution à parallélisme embarrassant par un ou 20 plusieurs GPU 1650. Pour ce faire, le composant d'analyse 1441 peut également accéder à la routine d'analyse 1210 reçue, comme le peut le composant d'affectation 1341 de la routine de commande 1340. [00204] Si l'on se reporte à la figure 14B, comme le montre l'illustration, les états de noeud 1535 peuvent spécifier quelles ressources de traitement, de stockage et/ou 25 d'accès réseau sont intégrées dans chaque dispositif de noeud 1500. Comme cela a été expliqué, les états de noeud 1535 peuvent être mis à jour de façon récurrente pour spécifier également le degré actuel de disponibilité (par exemple le pourcentage actuel de niveau d'utilisation) de chacune de ces ressources. [00205] À titre d'exemple, les états de noeud 1535 peuvent fournir des indications 30 de quantités, de types, de versions et/ou d'autres détails d'architecture interne des processeurs qui peuvent être intégrés dans chacun des dispositifs de noeud 1500. Ainsi, les états de noeud 1535 peuvent, pour chaque dispositif de noeud 1500, 3055438 97 spécifier les quantités de CPU 1550 et/ou de GPU 1650 qui sont présentes, ainsi que des informations de type pour chaque processeur y compris, entre autres, la compatibilité avec des ensembles d'instructions, le niveau de révision, la taille de la ou des mémoires cache, la quantité de coeurs de traitement, et/ou la quantité de fils 5 d'exécution pouvant être exécutés par coeur de traitement. Comme cela sera expliqué de manière plus détaillée, la fourniture de ces informations peut aider à la prise en charge d'un ensemble hétérogène de dispositifs de noeud 1500 dans la grille de dispositifs de noeuds 1005 qui emploient une variété de processeurs différents entre eux. En même temps que des informations concernant les ressources de traitement 10 intégrées dans chacun des dispositifs de noeud 1500, les états de noeud 1535 peuvent être mis à jour de façon récurrente pour fournir des indications de niveaux actuels d'utilisation de différents processeurs (par exemple différentes CPU 1550 et/ou différents GPU 1650 dans un seul dispositif de noeud 1500), les niveaux actuels d'utilisation de fils, et/ou les niveaux actuels d'utilisation d'autres caractéristiques de 15 traitement particulières (par exemple les niveaux d'utilisation d'éventuels coeurs de traitement spécialisés, des unités logiques, des extensions des ensembles d'instruction, différent niveaux de cache, etc.). [00206] Egalement à titre d'exemple, les états de noeud 1535 peuvent fournir des indications des capacités de stockage de la mémoire volatile 1561 et/ou 1661, et/ou 20 de la mémoire non volatile 1563 qui peuvent être intégrées dans chacun des dispositifs de noeud 1500. Ainsi, les états de noeud 1535 peuvent, pour chaque dispositif de noeud 1500, spécifier des quantités et/ou divers paramètres de composants de mémoire employés pour mettre en oeuvre chacune des mémoires 1561, 1661 et/ou 1563 y compris, entre autres, les types d'interface utilisés, les tailles 25 de pages et/ou de lignes, les vitesses d'accès et/ou latences, et/ou les technologies de stockage utilisées. En même temps que les informations concernant les ressources de stockage intégrées dans chacun des dispositifs de noeud 1500, les états de noeud 1535 peuvent être mis à jour de façon récurrente pour fournir des indications des niveaux actuels d'utilisation de différentes mémoires volatiles et/ou non volatiles. 30 [00207] Encore à titre d'exemple, les états de noeud 1535 peuvent fournir des indications des fonctionnalités d'accès réseau et/ou des bandes passantes de l'interface ou des interfaces réseau 1590 qui peuvent être intégrées dans chacun des 3055438 98 dispositifs de noeud 1500. Ainsi, les états de noeud 1535 peuvent, pour chaque dispositif de noeud 1500, spécifier les interfaces réseau filaires et/ou sans fil prises en charge, les protocoles pris en charge, les tailles des tampons d'entrée et/ou de sortie, etc. En même temps que les ressources d'accès au réseau d'information intégrées 5 dans chacun des dispositifs de noeud 1500, les états de noeud 1535 peuvent être mis à jour de façon récurrente pour fournir des indications des niveaux d'utilisation actuels de la bande passante et/ou des tampons pour chaque interface. [00208] Comme on le voit également sur l'illustration, les métadonnées 1135 peuvent fournir des indications de diverses caractéristiques structurelles par 10 lesquelles les données peuvent être organisées et/ou consultées dans l'ensemble de données 1130. Par exemple, les métadonnées 1135 peuvent comprendre des indications de la taille globale, du type de structure de données de l'ensemble de données 1130 (arbre binaire, réseau multidimensionnel, liste liée, etc.), du ou des types de donnée des données (virgule flottante, entier, caractères de texte, etc.), des 15 aspects du schéma d'indexage utilisé pour accéder aux données (nombre de dimensions, étiquettes utilisées, etc.), et/ou encore d'autres aspects structurels. Par exemple également, les métadonnées 1135 peuvent comprendre des indications de diverses restrictions sur la manière dont l'ensemble de données 1130 peut être divisé en les partitions d'ensemble de données 1131, telles qu'un schéma de 20 partitionnement selon lequel les données de l'ensemble de données 1130 sont déjà organisées, et/ou une taille minimum de la plus petite unité atomique de données dans laquelle l'ensemble de données 1130 peut être partitionné qui permettra encore un traitement indépendant des partitions d'ensemble de données 1131 résultantes (par exemple la taille d'une ligne ou d'une colonne dans un réseau bidimensionnel, 25 etc.). Comme le sait l'homme du métier, ces restrictions sur la manière dont l'ensemble de données 1130 peut être divisé peuvent imposer une limite supérieure sur la quantité de partitions d'ensemble de données 1131 dans lesquelles l'ensemble de données 1130 peut être divisé, qui peut effectivement imposer une limite sur la quantité de dispositifs de noeud 1500 auxquels les partitions d'ensemble de données 30 1131 résultantes peuvent être distribuées. [00209] La routine d'analyse 1210 peut être divisée en un quelconque nombre de routines de tâche 1211 qui incluent chacune des instructions qui spécifient des 3055438 99 aspects d'une tâche correspondante devant être réalisée par suite de l'exécution de la routine de tâche 1211 en question dans le cadre de l'exécution de la routine d'analyse 1210. Les instructions de chacune des différentes routines de tâche 1211 peuvent fournir des indications des ressources de traitement requises (par exemple s'il faut 5 une prise en charge pour une extension particulière d'un ensemble d'instructions) et/ou capacités de stockage requises pour prendre en charge des structures de données instanciées pendant l'exécution. La routine d'analyse 1210 peut également fournir des indications d'un ordre dans lequel les routines de tâche 1211 doivent être exécutées. En variante ou en outre, la routine d'analyse 1210 peut comprendre des 10 définitions des entrées requises pour la réalisation de chaque tâche et/ou des définitions des sorties générées par chaque tâche. La fourniture d'indications d'un ordre dans lequel les routines de tâche 1211 doivent être exécutées peut comprendre des indications de dépendances parmi les routines de tâche 1211, telles que des indications des moments où il existe une sortie d'une routine de tâche 1211 qui est 15 requise comme entrée pour une autre routine de tâche 1211. La fourniture d'indications des entrées et/ou sorties devant être générées peut faire partie d'une mise en oeuvre d'architecture informatique multitâches (MTC) dans laquelle les tâches de la routine d'analyse 1210 sont exprimées chacune de manière indépendante, au moins par leurs entrées et sorties, pour faire qu'au moins un sous- 20 ensemble des tâches de la routine d'analyse 1210 se prête à une exécution à parallélisme embarrassant. [00210] La manière dont les définitions des entrées et/ou sorties, des indications d'ordre d'exécution des tâches et/ou des indications de dépendances sont fournies peut varier en fonction des attributs du ou des langages de programmation dans 25 lesquels la routine d'analyse 1210 est générée. À titre d'exemple, dans certains modes de réalisation, des en-têtes de déclaration pour celles des routines de tâche 1211 qui sont écrites en tant que fonctions pouvant être appelées d'une manière qui respecte les conventions d'un langage de programmation donné peuvent être suffisants pour fournir ces définitions. Cependant, dans d'autres modes de 30 réalisation, un fichier distinct ou d'autres structure de données peuvent être générés, dans la routine d'analyse 1210 ou en accompagnement de la routine d'analyse 1210, pour fournir ces définitions et/ou indications. Plus spécifiquement par exemple, un 3055438 réseau peut être généré dans lequel chaque entrée spécifie les entrées requises, les sorties devant être générées et/ou la position dans un ordre d'exécution. Quelle que soit la manière exacte dont les définitions d'entrées et/ou sorties, et/ou les indications de dépendances et/ou d'ordre sont représentées dans un fichier ou d'autres structure 5 de données, dans certains modes de réalisation, ces définitions et/ou indications peuvent former une représentation d'un graphe acyclique orienté (DAG) des tâches de la routine d'analyse 1210. [00211] Pour exécuter le composant d'affectation 1341, le processeur 1350 peut être amené à employer les états de noeud 1535, les métadonnées 1135 et/ou des 10 parties de la routine d'analyse 1210 pour obtenir des affectations initiales d'au moins une tâche initiale de la routine d'analyse 1210 à certains des dispositifs de noeud 1500, et une distribution initiale d'au moins une partition d'ensemble de données 1131 à chacun des dispositifs de noeud 1500 sélectionnés. Pour obtenir ces affectations initiales, le processeur 1350 peut être amené à obtenir initialement la 15 manière de diviser l'ensemble de données 1130 en partitions d'ensemble de données 1131 en fonction, au moins en partie, d'éventuelles restrictions indiquées pour ce faire qui peuvent être présentes dans les métadonnées 1135 et/ou de la quantité de dispositifs de noeud 1500 actuellement indiqués comme ayant des ressources de stockage suffisantes dans les états de noeud 1535. Le processeur 1350 peut être 20 amené, en variante ou en outre, à analyser les instructions exécutables d'une ou plusieurs des routines de tâche 1211 de la routine d'analyse 1210 pour identifier une ou plusieurs ressources de traitement particulières requises (calculs à virgule flottante, prise en charge d'instructions de type instruction unique et données multiples (SIMD), etc.), et peut choisir certains des noeuds 1500 auxquels affecter 25 une ou plusieurs tâches initiales en fonction des indications des états de noeud 1535 concernant ceux des dispositifs de noeud 1500 qui possèdent actuellement de telles ressources de traitement disponibles. Quelle que soit la logique exacte employée pour obtenir les affectations initiales de tâches et/ou de partitions d'ensemble de données 1131 aux dispositifs de noeud 1500 sélectionnés, le processeur 1350 peut 30 stocker des indications de ces affectations initiales en tant qu'élément des données d'affectation 1330. 3055438 101 [00212] Dans des modes de réalisation dans lesquels le dispositif de coordination 1300 doit compiler les routines de tâche 1211 de la routine d'analyse 1210, le dispositif de coordination 1300 peut stocker les règles de compilation 1434 à utiliser pendant l'exécution de la routine de compilation 1440 par le processeur 1350. Les 5 règles de compilation 1434 peuvent spécifier divers aspects de la compilation des routines de tâches 1211 des routines d' analyse 1210 pour générer les routines de tâche de CPU 1571 destinées à être exécutées par une ou plusieurs des CPU 1550 et/ou les routines de tâche de GPU 1671 destinées à être exécutées par un ou plusieurs des GPU 1650. Parmi ce qui est spécifié par les règles de compilation 1434, 10 il peut y avoir également des aspects de la conversion d'instructions de routines de tâche 1211 non générées initialement pour utiliser les fonctionnalités d'exécution à parallélisme embarrassant offertes par les GPU 1650 (par la fourniture d'une quantité relativement importante de fils d'exécution) en instructions qui sont générées pour le faire. Ainsi, les règles de compilation 1434 peuvent spécifier des aspects de la 15 conversion et de la compilation d'instructions de routines de tâche 1211 initialement générées pour une exécution par les CPU 1550 en instructions générées pour une exécution par les GPU 1650. [00213] Chacune des une ou plusieurs CPU 1550 de chacun des dispositifs de noeud 1500 peut employer une architecture de traitement interne jugée adaptée au 20 traitement séquentiel des routines de tâche 1211 qui incluent diverses opérations d'entrée/sortie et/ou opérations de branchement qui conditionnent l'exécution de différents ensembles d'instructions des routines de tâche 1211 par les résultats de diverses déterminations. Chacune des CPU 1550 peut inclure un ou plusieurs coeurs de traitement 1555 (si l'on se reporte à la figure 12) qui peuvent chacun prendre en 25 charge un degré relativement limité d'exécution parallèle d'instructions sur une quantité relativement limitée de fils d'exécution. En revanche, les un ou plusieurs GPU 1650 qui peuvent être présents dans au moins un sous-ensemble des dispositifs de noeud 1500 peuvent employer une architecture de traitement interne jugée adaptée à un traitement à parallélisme embarrassant des routines de tâche 1211 qui incluent 30 un ensemble relativement limité d'instructions pour des opérations mathématiques et/ou au niveau du bit qui peuvent être réalisées de manière indépendante les unes des autres de sorte qu'il n'y ait pas de dépendances entre les nombreuses instances 3055438 102 d'une routine de tâche 1211 exécutée en parallèle. En effet, dans certains modes de réalisation, chacun des GPU 1650 peut être à même de prendre en charge le traitement parallèle sur des centaines, des milliers, voire des quantités plus élevées encore, de fils d'exécution. 5 [00214] Lorsque les instructions d'une routine de tâche 1211 sont susceptibles d'être converties pour cette exécution parallèle sur une aussi grande quantité de fils d'exécution, la tâche réalisée par cette routine de tâche 1211 peut être réalisable en un temps beaucoup plus court. À titre d'exemple, une tâche d'une des routines de tâche 1211 dont la réalisation peut prendre plusieurs jours lorsqu'on utilise les CPU 10 1550 des dispositifs de noeud 1500, peut être réalisée en seulement quelques heures d'une seule journée, si on utilise plutôt les GPU 1650. Pour les tâches qui peuvent être mises en oeuvre au moyen de l'ensemble d'instructions plus limité des GPU 1650, un seul des GPU 1650 d'un seul des dispositifs de noeud 1500 peut être à même de réaliser le même travail qu'un grand nombre des CPU 1550 d'un grand 15 nombre des noeuds 1500, et en moins de temps à un coût bien moindre. Cette augmentation de la vitesse de réalisation est encore supérieure lorsque plusieurs des GPU 1650 de plusieurs des dispositifs de noeud 1500 sont utilisés en parallèle pour réaliser une tâche en tant que tâche à parallélisme embarrassant sur les nombreux fils d'exécution pris en charge par chacun, fournissant ainsi une forme encore plus 20 hautement parallèle de la tâche en question. [00215] Cependant, il peut y avoir certaines des routines de tâche 1211 de la routine d'analyse 1210 qui incluent des instructions particulières et/ou destinées à réaliser des opérations particulière qui rendent les instructions de ces routines de tâche 1211 impossibles à convertir et à compiler pour cette exécution à parallélisme 25 embarrassant par les GPU 1650. Là encore, les GPU 1650 peuvent prendre en charge un ensemble d'instructions relativement limité. À titre d'exemple, de nombreux types d'opérations d'entrée/sortie doivent nécessairement être réalisées avec un seul fil d'exécution du fait que diverses « poignées de main » (handshake) entre protocoles et/ou d'autres caractéristiques imposent une réalisation séquentielle des 30 étapes. Par conséquent, il est envisagé que la routine d'analyse 1210 puisse comprendre à la fois des routines de tâche 1211 dans lesquelles les instructions se prêtent à une conversion et une compilation pour l'exécution à parallélisme 3055438 103 embarrassant offerte par les GPU 1650 et des routines de tâche 1211 dans lesquelles les instructions ne soient pas de nature à pouvoir être compilées pour exécution par les CPU 1550. [00216] Les règles de compilation 1434 peuvent comprendre une liste 5 d'instructions qui, si elles sont présentes dans une routine de tâche 1211, au moins n'empêchent pas la conversion et la compilation des instructions de la routine de tâche 1211 pour créer une routine de tâche de GPU correspondante 1671 dans laquelle les instructions amènent à la réalisation de la tâche de la routine de tâche 1211 en tant que tâche à parallélisme embarrassant en utilisant de nombreux fils 10 d'exécution d'au moins un GPU 1650 lorsqu'elles sont exécutées. En variante ou en outre, les règles de compilation 1434 peuvent comprendre une liste d'instructions qui, si elles sont présentes dans une routine de tâche 1211, empêchent bien cette conversion de la routine de tâche 1211 pour prendre en charge cette exécution à parallélisme embarrassant par les GPU 1650. De plus, les règles de compilation 1434 15 peuvent spécifier des circonstances particulières dans lesquelles des instructions particulières qui autrement n'empêcheraient pas cette conversion peuvent être utilisées dans une routine de tâche 1211 d'une manière (par exemple dans le cadre d'une opération d'entrée/sortie ou d'autres opération) qui empêche cette conversion. [00217] Pour celles des routines de tâche 1211 de la routine d'analyse 1210 qui 20 comportent des instructions qui peuvent prendre en charge la conversion en d'autres instructions qui peuvent être compilées pour réaliser une ou plusieurs tâches en tant que tâche(s) à parallélisme embarrassant sur les GPU 1650, les règles de compilation 1434 peuvent spécifier diverses règles pour réaliser cette conversion. À titre d'exemple, les règles de compilation 1434 peuvent comprendre une ou plusieurs 25 règles pour la conversion de valeurs indices utilisées dans des boucles pour être instanciées d'une manière plus propice à une exécution à parallélisme embarrassant dans laquelle des collisions de valeurs indices et de dépendances sont évitées entre des instances d'une tâche qui sont exécutées en parallèle. En variante ou en outre, il peut y avoir une ou plusieurs règles pour convertir des instructions qui ont été mises 30 en oeuvre dans une boucle pour amener à une réalisation séquentielle d'une opération à nombreuses reprises en instructions qui amènent plusieurs réalisations de cette opération à avoir lieu en parallèle sur de nombreux fils d'au moins un des GPU 1650. 3055438 104 Dans certaines de ces conversions comportant une boucle où la quantité de réalisations de l'opération peut être suffisamment élevée pour que toutes ne puissent pas se produire en parallèle, la boucle peut ne pas être éliminée, et peut au contraire être convertie pour employer un plus petit nombre d'itérations où un sous-ensemble 5 des réalisations de l'opération s'opère en parallèle pendant chaque itération. Comme autre exemple encore, les règles de compilation 1434 peuvent comprendre une ou plusieurs règles pour la conversion d'une structure de données instanciée dans une routine de tâche 1211, où l'accès à ses données se fait séquentiellement, en une structure de données différente où l' accès à ses données se fait d'une manière 10 parallèle sur de nombreux fils d'exécution d'au moins un des GPU 1650. [00218] Dans certains modes de réalisation, la conversion peut comporter une conversion d'instructions de la routine de tâche 1211 qui ont été initialement générées dans une programmation particulière en d' autres instructions générées dans le même langage de programmation. Cependant, dans certains de ces modes de 15 réalisation, les instructions définies pour une utilisation dans ce langage particulier peuvent être augmentées pour inclure une ou plusieurs instructions supplémentaires associées à des aspects d'architecture interne qui sont propres au GPU 1650 (types particuliers d'opérandes, types particuliers pour des valeurs qui sont renvoyées, organisation de bits et/ou d'octets de variables pour s'adapter à une mise en oeuvre en 20 registre, etc.). Dans d'autres modes de réalisation, la conversion peut comporter une conversion d'instructions de la routine de tâche 1211 qui ont été initialement générées dans un langage de programmation donné en d'autres instructions générées dans un autre langage de programmation. Dans certains de ces modes de réalisation, l'autre langage de programmation peut avoir été créé par un fournisseur des GPU 25 1650 dans le but de fournir un langage de programmation conçu pour exploiter au mieux les caractéristiques des GPU 1650. [00219] Ci-dessous est présenté un exemple d'une conversion de parties d'une routine de tâche 1211 qui peuvent être réalisées par le processeur 1350 du dispositif de coordination 1300 et/ou par une ou plusieurs CPU 1550 des dispositifs de noeud 30 1500. En premier sont représentées des parties d'une routine de tâche type 1211 générée en FCMP, un langage de programmation offert dans divers produits par la société SAS Institute Inc. implantée à Cary, NC, aux Etats-Unis. Spécifiquement, par 3055438 exemple, les déclarations de la sous-routine "income_statement_kernel" et de la structure de données "d_matrix_is" ont été converties entre les langages de programmation FCMP et C. 5 /* Register income statement fonctions */ options cmplib=(datalib.funcs); /* Initialize input data sets */ data work.policy_ds; VALUE_=.; rua; data work.scen_mort_ds; VALUE _=.; rua; data work.scen_lapse_ds; VALUE_=.; rue; %macro define_is_kernel_funcaangoage.4; %if &language = fcmp %then Edo; put running as FCMP...; proc fcmp ootlit.datalib.funcs.is; /* fonction to calculate. the power of a number */ fonction pow(x,y); retorn(x.*y); endsub; subroutine income_statement_kernel(offset,index_scen,n_rows_per_slice, n_scenmort_cols,d_matrix_morti30.4],n scen lapse_cols,d matrixlapse[30,4], n_pol_rows,n_pol_cols,d_matrix_pol[320-40,20i,n_incsta_cois,d_matrixis[30. 15]); outargs d_matrix_is; /* Create e temporary array to hotd aggregated income statement items and initiatize it to all 0 */ array is_temp[30,4); do ndx_year=1 to 30; is_temp[ndx_year,11 = b; is_tempIndx_year,21 . a; is_temp[ndx_year,3 = 0; is_temandx_year,41 = la; end; [00220] Sont ensuite représentées des parties correspondantes d'une routine de tâche de GPU correspondante générées dans le processus de conversion réalisé par le 10 processeur 1350 ou par une ou plusieurs des CPU 1550. Spécifiquement, les parties précitées de la routine de tâche type 1211 générées en FCMP ont été converties pour utiliser une extension de langage de programmation qui fait partie du modèle de programmation Compute Unified Device Architecture (CUDA) pour invoquer des fonctions des GPU (par exemple les GPU 1650), qui est promulgué par la société 15 Nvidia basée à Santa Clara, CA, aux Etats-Unis, fournisseur des GPU qui peuvent être employés comme GPU 1650. 3055438 106 tinclude -einclude irclude nclude 4include ,serr.ory.h> device__ void income_statement_kernel( double offset,double index_scen,doublc n_rows_per_slice,double device__ void income_statement_kernel( double offset, double index_scen,double n_rows_per slice,double double (* d_matrix_mort)[(int)4] = (double (*) ((int);1)_irm_d_matrix_mort; double (*.d_matrix_lapse)I(int)41 = (double (*) ((int)1)_irm_d matrix_lapse; double (* d_matrix_pol)((int = (double (*) [(int):'1)_irm_dimatrix_pol; double (* d_matrix is)((int)11 = (double. (*) ((int) Lirm_d_matrix_is; 1/ subroutine income_statement_kernel(offset,index scen,n_rews_per_stice, n_scen_mort_cots,d matrix_mort // outargs d matrix_is; // array is_temp[30,4j; double is_temp(A)(4); // do ndx_year-1 to 30; int ndx_year; for(ndx_year= ndx_year :)] // is_tempEndx_year,41 = 0; is_tempt(int)(ndx_year - 11((int)(1 I)] 3; // end; } // attained age = double attained_age; attained_age = 1; [00221] Comme le reconnaîtra facilement l'homme du métier, il arrive souvent qu'un code de programmation généré initialement pour une exécution au moyen 5 d'une première architecture de traitement ait des chances d'être exécuté plus efficacement par un processeur de la première architecture qu'un code de programmation qui a été généré initialement pour une exécution au moyen d'une seconde architecture de traitement, et qu'il soit ensuite converti pour une exécution au moyen de la première architecture de traitement. En dépit de cela, les tests 10 confirment que des gains significatifs en termes de vitesse de réalisation de certaines tâches d'une routine d'analyse 1210 peuvent être réalisés par la conversion des routines de tâche 1211 par la routine de compilation 1440, passant d'être générées pour une exécution par les CPU 1550 à être générées pour une exécution à parallélisme embarrassant par les GPU 1650. 15 [00222] Ci-dessous est présentée une table de comparaisons de temps d'exécution issus des tests d'un calcul stochastique type. Un tel calcul peut être une tâche mise en oeuvre comme l'une des routines de tâche 1211 au sein d'une routine d'analyse type 3055438 107 1210. Comme cela est représenté, lorsque le calcul stochastique est écrit en code macro SAS (un autre langage de programmation offert dans divers produits par SAS Institute Inc.) pour exécution par une CPU (par exemple une des CPU 1550 d'un des noeuds 1500), le temps résultant nécessaire à l' exécution a été mesuré comme étant 5 d'environ 93 600 secondes. Lorsque le même calcul stochastique est écrit cette fois en en FCMP pour une exécution par plusieurs CPU (par exemple plusieurs des CPU 1550 d'un ou plusieurs des noeuds 1500), le temps d'exécution résultant mesuré est de 763 secondes. Or, lorsque le même code FCMP du calcul stochastique est ensuite converti en CUDA pour une exécution à parallélisme embarrassant par un des GPU 10 offerts par la société Nvidia (par exemple un des GPU 1650 d'un des noeuds 1500), le temps d'exécution résultant mesuré est de 73 secondes. Bien que 73 secondes soit un temps plus lent que le temps d'exécution mesuré de 11 secondes obtenu lorsque le même calcul stochastique est écrit directement en CUDA pour une exécution à parallélisme embarrassant par un des GPU offerts par la société Nvidia, le temps 15 d'exécution mesuré de 73 secondes obtenu par l'utilisation de la conversion de FCMP en CUDA reste malgré tout une amélioration très nette par rapport au temps d'exécution mesuré de 763 secondes obtenu avec l'exécution du code FCMP par plusieurs CPU. Technologie employée Temps de calcul stochastique en secondes CPU Code macro SAS 93 600 code écrit en FCMP 763 GPU code écrit en FCMP et converti en CUDA 73 code écrit directement en CUDA 11 20 [00223] Ainsi, comme on peut l'apprécier d'après ces temps d'exécution mesurés, cette utilisation d'une conversion de code pour permettre la compilation pour cette exécution à parallélisme embarrassant permet à des collaborateurs qui ne possèdent pas les compétences ou la formation nécessaire d'écrire les routines de 3055438 108 tâche 1211 de la routine d'analyse 1210 de façon native en CUDA dans le but, néanmoins, de récolter les bénéfices d'une exécution à parallélisme embarrassant du code qu'ils ont pu écrire. [00224] Dans des modes de réalisation dans lesquels le dispositif de coordination 5 1300 doit compiler les routines de tâche 1211 de la routine d'analyse 1210, le processeur 1350 peut exécuter le composant d'analyse 1441 dans le cadre de l'obtention des affectations initiales de partitions d'ensemble de données 1131 et d'une ou plusieurs tâches initiales. Plus spécifiquement, le processeur 1350 peut être amené par le composant d'analyse 1441 à analyser chaque routine de tâche 1211 de 10 la routine d'analyse 1210 pour identifier celles des routines de tâche 1211 dans lesquelles les instructions se prêtent à une conversion et une compilation en des routines de tâche de GPU correspondantes 1671 pour permettre une réalisation à parallélisme embarrassant de leurs tâches correspondantes par les GPU 1650. Pour ce faire, le processeur 1350 peut être amené à employer les indications des règles de 15 compilation 1434 de quelles instructions empêchent et/ou quelles instructions n'empêchent pas de telles conversions. Le processeur 1350 peut ensuite être amené à utiliser les résultats d'une telle analyse des routines de tâche 1211 pour sélectionner certains des dispositifs de noeud 1500 dans le cadre de l'obtention des affectations initiales. Plus spécifiquement, si l'analyse des routines de tâche 1211 résulte en une 20 détermination par le processeur 1350 qu'aucune des routines de tâche 1211 ne peut être compilée en une routine de tâche de GPU correspondante 1671, alors le processeur 1350 peut limiter la sélection de dispositifs de noeud 1500 à ceux qui intègrent une ou plusieurs des CPU 1550, puisqu'aucune routine de tâche de GPU 1671 ne sera générées à partir des routines de tâche 1211. En revanche, si l'analyse 25 des routines de tâche 1211 résulte en une détermination que certaines des routines de tâche 1211 peuvent être compilées en des routines de tâche de GPU correspondantes 1671, alors que d'autres ne le peuvent pas, alors le processeur 1350 peut limiter la sélection des dispositifs de noeud 1500 à ceux qui intègrent à la fois une ou plusieurs des CPU 1550 et un ou plusieurs des GPU 1650, et qui peuvent par conséquent 30 prendre en charge l'exécution à la fois des routines de tâche de CPU 1571 et des routines de tâche de GPU 1671 générées par différentes routines de tâche 1211. En outre, si l'analyse des routines de tâche 1211 résulte en une détermination que toutes 3055438 109 les routines de tâche 1211 peuvent être compilées en des routines de tâche de GPU correspondantes 1671, alors le processeur 1350 peut limiter le choix des dispositifs de noeud 1500 à ceux qui intègrent un ou plusieurs des GPU 1650. [00225] Si l'on se reporte à la figure 14C, dans des modes de réalisation dans 5 lesquels le dispositif de coordination 1300 ne compile pas les routines de tâche 1211 de la routine d'analyse 1210, le processeur 1350 peut être amené par le composant d'affectation 1341 de la routine de commande 1340 à utiliser l'interface réseau 1390 pour distribuer la ou les routines de tâche 1211 des tâches initiales affectées aux dispositifs de noeud 1500 sélectionnés. Dans ces modes de réalisation, chacun des 10 dispositifs de noeud 1500 sélectionnés peut compiler de manière indépendante la ou les routines de tâche 1211 distribuées à chacun des noeuds 1500 sélectionnés en la ou les routines de tâche de CPU 1571 et/ou la ou les routines de tâche de GPU 1671 correspondantes en préparation de la réalisation de la ou des tâches initiales affectées à chacun des noeuds 1500 sélectionnés. 15 [00226] En variante, dans des modes de réalisation dans lesquels le dispositif de coordination 1300 doit compiler les routines de tâche 1211 de la routine d'analyse 1210 de sorte que le dispositif de coordination 1300 stocke la routine de compilation 1440 pour exécution par le processeur 1350, la routine de compilation 1440 peut comprendre un composant de compilation 1444 pour réaliser la compilation des 20 routines de tâche 1211. Plus spécifiquement, le processeur 1350 peut être amené par le composant de compilation 1444 à compiler au moins les une ou plusieurs routines de tâche 1211 associées aux une ou plusieurs tâches initiales qui ont été affectées à certains des dispositifs de noeud 1500. Pour une routine de tâche 1211 qui a été déterminée par le processeur 1350 (pendant l'exécution du composant d'analyse 25 1441) comme ne se prêtant pas à une conversion et une compilation pour générer une routine de tâche de GPU correspondante 1671, le processeur 1350 peut être amené à compiler la routine de tâche 1211 sans cette conversion pour générer une routine de tâche de CPU correspondante 1571. Pour une routine de tâche 1211 qui a été déterminée par le processeur 1350 comme étant susceptible d'être convertie et 30 compilée pour générer une routine de tâche de GPU correspondante 1671, le processeur 1350 peut être amené à effectuer cette conversion et cette compilation pour générer la tâche GPU 1671 correspondante. 3055438 [00227] Dans certains modes de réalisation, lorsqu'une routine de tâche 1211 a été déterminée par le processeur 1350 comme susceptible d'être convertie et compilée pour générer une routine de tâche de GPU correspondante 1671, le processeur 1350 peut être amené par le composant de compilation 1444 à réaliser 5 plusieurs compilations de la même routine de tâche 1211. Par exemple, dans certains de ces modes de réalisation, le processeur 1350 peut compiler en outre la même routine de tâche 1211 pour générer également une routine de tâche de CPU correspondante 1571 en plus de la routine de tâche de GPU correspondante 1671. Cela peut être jugé souhaitable pour faire face à une situation où il peut y avoir une 10 quantité insuffisante de dispositifs de noeud 1500 disponibles qui intègrent un ou plusieurs des GPU 1650 de sorte que la ou les tâches de la routine de tâche 1211 doit être réalisée par un ou plusieurs des dispositifs de noeud 1500 sur la base d'une exécution de la routine de tâche de CPU correspondante 1571 par une ou plusieurs CPU 1550. En variante ou en outre, cela peut être jugé souhaitable pour faire face à 15 une situation où un dispositif de noeud 1500 qui intègre un ou plusieurs GPU 1650 subit une défaillance pendant qu'il exécute la routine de tâche de GPU correspondante 1650, et la réalisation de la ou des tâches de la routine de tâche 1211 avec la ou les partitions d'ensemble de données particulières 1131 affectées au dispositif de noeud 1500 en question doit être réaffectée à un autre dispositif de noeud 20 1500 qui n'intègre pas de GPU 1650. [00228] Comme autre exemple encore de plusieurs compilations de la même routine de tâche 1211, dans certains de ces modes de réalisation, la grille de dispositifs de noeuds 1005 peut comprendre un ensemble hétérogène de dispositifs de noeud 1500 qui intègrent différents GPU 1650 qui ne partagent pas un ensemble 25 d'instructions de sorte que la génération d'une seule routine de tâche de GPU correspondante 1671 pour la totalité des différents GPU 1650 peut ne pas être possible. Ainsi, le processeur 1350 peut être amené à réaliser plusieurs conversions et compilations de la même routine de tâche 1211 en chacune des différentes versions de la routine de tâche de GPU 1671 nécessaires pour chacun des différents 30 GPU 1650 présents parmi les dispositifs de noeud 1500 de la grille de dispositifs de noeuds 1005. 3055438 111 [00229] Cependant, dans certains des modes de réalisation dans lesquels le dispositif de coordination 1300 doit compiler les routines de tâche 1211 de la routine d'analyse 1210, la réalisation ou non de l'analyse des routines de tâche 1211 pour identifier celles qui sont susceptibles d'être compilées pour un ou plusieurs GPU 5 1650 différents et/ou la réalisation ou non de cette compilation pour générer routines de tâche de GPU 1671 correspondantes, peuvent être conditionnées par l'existence ou non d'indications qu'il existe d'éventuels dispositifs de noeud 1500 disponibles qui intègrent un quelconque GPU 1650. Plus spécifiquement, dans une situation dans laquelle les états de noeud 1535 actuels indiquent qu'absolument aucun des 10 dispositifs de noeud qui intègrent un ou plusieurs des GPU 1650 n'est actuellement disponible pour se voir affecter une quelconque tâche, le processeur 1350 peut être amené par le composant d'affectation 1341 à se retenir d'effectuer une quelconque analyse des routines de tâche 1211 pour déterminer s'il en existe qui sont susceptibles d'être compilées pour exécution par un quelconque GPU 1650. En 15 variante ou en outre, dans des modes de réalisation dans lesquels différent dispositifs de noeud 1500 intègrent différents types de GPU 1650 de sorte que plusieurs compilations sont nécessaires pour générer des routines de tâche de GPU 1671 pour tous les types différents de GPU 1650, une situation peut se présenter dans laquelle les états de noeud 1535 indiquent que tous les GPU 1650 d'un des types sont 20 actuellement indisponibles pour une utilisation dans la réalisation d'une quelconque tâche. Dans une telle situation, le processeur 1350 peut être amené par la routine d'affectation à se retenir de compiler une quelconque routine de tâche 1211 pour générer une quelconque routine de tâche de GPU 1671 pour exécution par des GPU 1650 de ce type particulier. 25 [00230] La génération de routines de tâche de GPU 1671 d'une manière qui comprend la conversion des instructions de routines de tâche 1211 en d'autres instructions qui exploitent les caractéristiques de traitement à parallélisme embarrassant des GPU 1650, suivie d'une compilation, peut être jugée souhaitable pour améliorer la facilité avec laquelle les caractéristiques à parallélisme 30 embarrassant des GPU 1650 peuvent être utilisées. Au travers de cette utilisation de conversions d'instructions, des collaborateurs peuvent bénéficier de l'occasion de tirer parti des GPU 1650 qui peuvent être présents dans au moins certains des 3055438 112 dispositifs de noeud 1500 sans avoir besoin de structurer et d'écrire les instructions des routines de tâche 1211 d'une manière qui soit conçue pour une telle exécution à parallélisme embarrassant. En d'autres termes, on évite ainsi à ces collaborateurs de devoir acquérir l'expérience et les compétences supplémentaires nécessaires pour 5 structurer et écrire les instructions qui mettent en oeuvre les tâches de la routine d'analyse 1210 d'une manière qui soit conçue pour une exécution à parallélisme embarrassant par les GPU 1650. De plus, lorsque la grille de dispositifs de noeuds 1005 comprend des dispositifs de noeud 1500 qui intègrent différents GPU 1650 qui ne partagent pas un ensemble d'instructions, on évite en outre à ces collaborateurs de 10 devoir structurer et écrire différentes versions d'instructions qui mettent en oeuvre les tâches de la routine d'analyse 1210 d'une manière qui soit conçue pour les différentes singularités de la manière dont une exécution hautement parallèle est fournie par chacun différents GPU 1650. [00231] Les figures 15A et 15B, ensemble, représentent un mode de réalisation 15 type de la réalisation de tâches qui sont affectées à certains des dispositifs de noeud 1500 de la grille de dispositifs de noeuds 1005. La figure 15A représente des aspects d'une préparation à la réalisation qui peuvent comprendre la compilation d'une routine de tâche 1211 au sein d'un dispositif de noeud 1500 type, et la figure 15B représente des aspects de la réalisation d'une tâche dans le dispositif de noeud type 20 1500 au travers de l'exécution de la routine de tâche de CPU correspondante 1571 ou de la routine de tâche de GPU correspondante 1671. [00232] Si l'on se reporte à la figure 15A, comme expliqué précédemment, dans des modes de réalisation dans lesquels le système de traitement distribué 1000 comprend un ou plusieurs dispositifs de stockage 1100 distincts (tel que le système 25 de traitement distribué type 1000 de la figure 11A), une ou plusieurs partitions d'ensemble de données 1131 peuvent être fournies aux dispositifs de noeud 1500 via le réseau 1999, notamment au dispositif de noeud type 1500 représenté. En revanche, dans des modes de réalisation dans lesquels le système de traitement distribué 1000 n'inclut pas ces dispositifs de stockage distincts et les dispositifs de noeud 1500 30 fournissent un stockage distribué des ensembles de données 1130 (comme le système de traitement distribué type 1000 de la figure 11B), une ou plusieurs partitions d'ensemble de données 1131 avec lesquelles une tâche doit être réalisée dans le 3055438 113 dispositif de noeud type 1500 peut déjà être stockée dans le dispositif de noeud type 1500. Sinon, ces une ou plusieurs partitions d'ensemble de données 1131 peuvent être fournies au dispositif de noeud type 1500 via le réseau 1999 par un autre des dispositifs de noeud 1500. 5 [00233] Comme expliqué précédemment, dans des modes de réalisation dans lesquels le dispositif de coordination 1300 ne compile pas les routines de tâche 1211 de la routine d'analyse 1210, le dispositif de coordination 1300 peut distribuer les une ou plusieurs routines de tâche 1211 des une ou plusieurs tâches initiales affectées aux dispositifs de noeud 1500 sélectionnés. Dans ces modes de réalisation, et comme 10 le montre l'illustration, chacun des dispositifs de noeud 1500 peut stocker la routine de compilation 1440 pour exécution par une CPU 1550 de chacun des dispositifs de noeud 1500. Ainsi, après réception d'une routine de tâche 1211 du dispositif de coordination 1300, une CPU 1550 du dispositif de noeud type 1500 peut exécuter la routine de compilation 1440 pour analyser d' abord la routine de tâche 1211 afin de 15 déterminer si elle est susceptible d'être convertie et compilée pour générer une routine de tâche de GPU correspondante 1671. Si c'est le cas, alors la CPU 1550 peut être amenée à réaliser cette conversion et cette compilation de la routine de tâche 1211 pour ainsi générer la routine de tâche de GPU correspondante 1671 pour exécution par un GPU 1650 du dispositif de noeud type 1500. Cependant, si la 20 routine de tâche 1211 ne s'y prête pas, alors la CPU 1550 peut être amenée à compiler la routine de tâche 1211 sans cette conversion pour générer la routine de tâche de CPU correspondante 1571. [00234] En variante, dans des modes de réalisation dans lesquels le dispositif de coordination 1300 compile les routines de tâche 1211 de la routine d'analyse 1210, le 25 dispositif de coordination 1300 peut distribuer les une ou plusieurs routines de tâche de CPU 1571 et/ou routines de tâche de GPU 1671 correspondantes qui ont été générées dans le dispositif de coordination 1300 à partir des une ou plusieurs routines de tâche 1211. Par conséquent, le noeud type 1500 peut recevoir une routine de tâche de CPU 1571 destinée à être exécutée par la CPU 1550, ou une routine de tâche de 30 GPU 1671 destinée à être exécutée par le GPU 1650, au lieu de la routine de tâche correspondante 1211 à partir de laquelle l'une ou l'autre est générée. 3055438 114 [00235] Comme cela est représenté, la routine de commande 1640 exécutée par le GPU 1650 peut comprendre un composant d'exécution 1641 pour amener le GPU 1650 à exécuter la routine de tâche de GPU correspondante 1671, si la routine de tâche de GPU correspondante 1671 peut être générée (que ce soit dans le dispositif 5 de coordination 1300 ou dans le dispositif de noeud type 1500) à partir de la routine de tâche 1211 de la tâche initiale affectée au dispositif de noeud type 1500. En revanche, comme on le voit également sur l'illustration, la routine de commande 1540 exécutée par la CPU 1550 peut comprendre un composant d'exécution 1541 pour amener la CPU 1550 à exécuter la routine de tâche de CPU correspondante 10 1571, si la routine de tâche de GPU correspondante 1671 ne peut pas être générée à partir de la routine de tâche 1211 de la tâche initiale affectée au dispositif de noeud type 1500 de sorte que la génération de la routine de tâche de CPU correspondante 1571 est nécessaire. [00236] Si l'on se reporte à la figure 15B, et en faisant brièvement référence à la 15 figure 12, lorsque le GPU 1650 est amené par le composant d'exécution 1641 à exécuter la routine de tâche de GPU 1671 pour réaliser la tâche initiale affectée avec une partition d'ensemble de données 1131, des pages à la fois de la routine de tâche de GPU 1671 et de la partition d'ensemble de données 1131 peuvent être échangées entre la mémoire non volatile 1563 et la mémoire volatile 1661 auxquelles le GPU 20 1650 est couplé. En variante, lorsque la CPU 1550 est amenée par le composant d'exécution 1541 à exécuter la routine de tâche de CPU 1571 pour réaliser la tâche initiale affectée avec une partition d'ensemble de données 1131, des pages à la fois de la routine de tâche de CPU 1571 et de la partition d'ensemble de données 1131 peuvent être échangées entre la mémoire non volatile 1563 et la mémoire volatile 25 1561 auxquelles la CPU 1550 est couplée. Comme cela a déjà été expliqué à propos de la figure 12, chacune des mémoires volatiles 1561 et 1661 peut permettre un accès nettement plus rapide que la mémoire non volatile 1563 aux données et/ou routines stockées dans celles-ci de sorte que la CPU 1550 et le GPU 1650 peuvent plus efficacement exécuter des routines et effectuer des opérations avec des données 30 stockées dans les mémoires volatiles 1561 et 1661, respectivement. En revanche, chacune des mémoires volatiles 1561 et 1661 peut avoir une capacité de stockage nettement inférieure à celle de la mémoire non volatile 1563. Par conséquent, on peut 3055438 se trouver de façon répétée dans une situation où une partie beaucoup plus importante (sinon la totalité) d'une partition d'ensemble de données 1131 relativement grosse peut être stockée dans la mémoire non volatile 1563, alors qu'une partie relativement petite de cette partition d'ensemble de données 1131 peut 5 être stockée dans l'une ou l'autre des mémoires volatiles 1561 et 1661, nécessitant alors l'utilisation d'un échange de pages. [00237] Comme cela est représenté, la routine de commande 1540 peut également inclure un composant d'état 1543 pour amener la CPU 1550 à utiliser l'interface réseau 1590 du noeud type 1500 pour transmettre de façon récurrente des indications 10 mises à jour de l'état actuel des ressources de traitement, de stockage et/ou d'accès réseau du noeud type 1500 en tant qu'instances mises à jour de l'état de noeud 1535 au dispositif de coordination 1300. Comme expliqué précédemment à propos de la figure 12, le GPU 1650 du contrôleur graphique 1600 peut ne pas avoir accès à l'interface réseau 1590 et/ou peut ne pas exécuter les routines pilotes requises pour 15 utiliser directement l'interface réseau 1590. Ainsi, la CPU 1550 peut être amenée par le composant d'état 1543 à extraire de façon récurrente des indications d'état du GPU 1650 et/ou de la mémoire volatile 1661 du GPU 1650 pour les ajouter aux indications d'état incluses dans l'état de noeud 1535 transmis [00238] La figure 16 représente un mode de réalisation type d'une affectation de 20 tâches suivantes qui doivent être réalisées dans le cadre de l'exécution d'une routine d'analyse à certains des dispositifs de noeud 1500 de la grille de dispositifs de noeuds 1005. Comme expliqué précédemment à propos des figures 14A-B et 15B, le processeur 1350 du dispositif de coordination 1300 peut être amené par le composant de surveillance 1545 à utiliser de façon récurrente l'interface réseau 1390 pour 25 recevoir les états de noeud 1535 transmis de façon récurrente par les dispositifs de noeud 1500 de la grille de dispositifs de noeuds 1005 via le réseau 1999. [00239] Dans certains modes de réalisation, le processeur 1350 peut également être amené par le composant de surveillance 1545 à maintenir et mettre à jour de façon récurrente des indications des temps nécessaires pour réaliser les tâches 30 affectées aux dispositifs de noeud 1500. Dans certains de ces modes de réalisation, les données de retard de tâche 1335 peuvent comprendre un temps par tâche séparé pour l'achèvement qui est calculé de façon récurrente comme une moyenne des temps 3055438 116 qu'il faut à chacun de plusieurs dispositifs de noeud 1500 pour achever la même tâche. Dans des modes de réalisation dans lesquels la tâche peut avoir été affectée à différents dispositifs de noeud 1500 et où elle peut être réalisée en utilisant différents types de processeurs (par exemple une CPU 1550 ou un GPU 1650, ou différents 5 types de GPU 1650), différents temps moyens peuvent être gérés dans les données de retard de tâche 1335 pour chaque type de processeur différent employé pour exécuter une tâche. En variante ou en outre, comme mécanisme pour tenir compte des différences de ressources (notamment des ressources de traitement) entre les dispositifs de noeud 1500, des moyennes de différences relatives entre les temps 10 nécessaires à chaque dispositif de noeud 1500 pour achever les tâches qui lui ont été affectées par rapport à d'autres dispositifs de noeud 1500 peuvent être incluses dans les données de retard de tâche 1335. [00240] Dans ces modes de réalisation, le processeur 1350 peut être amené par le composant d'affectation 1541 à employer les indications stockées des temps 15 nécessaires pour achever les tâches dans les données de retard de tâche 1335 pour obtenir un ou plusieurs laps de temps dont le processeur 1350 peut retarder l'affectation d'une tâche suivante avec une partition d'ensemble de données particulière 1131 à un dispositif de noeud 1500 qui n'a pas déjà la partition d'ensemble de données particulière 1131 stockée dans celui-ci. Lorsqu'il y a 20 plusieurs laps de temps de retard, chacun peut être basé sur une moyenne différente des temps d'achèvement stockée dans les données de retard de tâche 1335 pour une tâche différente. Lorsqu'il est tenu compte de différences de ressources entre les dispositifs de noeud 1500 au travers de moyennes des différences relatives de temps, ces moyennes peuvent être employées par le processeur 1350 pour modifier chacun 25 des laps de temps de retard pour un dispositif de noeud particulier 1500. [00241] Les figures 17A, 17B et 17C, prises ensemble dans l'ordre de la figure 17A à la figure 17C, représentent un mode de réalisation type d'une réalisation de tâches parmi plusieurs des dispositifs de noeud 1500 sélectionnés de la grille de dispositifs de noeuds 1005. Plus spécifiquement, les figures 17A-C représentent un 30 triplet type de dispositifs de noeud 1500x, 1500y et 1500z réalisant une première tâche avec un ensemble de données type 1130a, et réalisant ensuite une deuxième tâche liée à la première tâche avec le même ensemble de données type 1130a. Pour 3055438 117 ce faire, chacun des dispositifs de noeud 1500x -z types doit générer un autre ensemble de données type 1130b, puis encore un autre ensemble de données type 1130c. Il convient de noter que cet exemple, basé uniquement sur les trois dispositifs de noeud 1500x-z et faisant intervenir trois ensembles de données 1130a-c qui 5 peuvent être d'une taille suffisamment réduite pour être distribués uniquement entre trois dispositifs de noeud 1500, est un exemple volontairement simplifié présenté et décrit dans le présent document à des fins d'explication et de compréhension, et qu'il ne doit pas être considéré comme limitatif. Plus spécifiquement, il est envisagé que des modes de réalisation soient susceptibles de comporter la réalisation de tâches 10 avec des ensembles de données 1130 nettement plus gros, et par conséquent, qu'ils soient susceptibles de comporter l'utilisation d'un nombre nettement plus élevé des dispositifs de noeud 1500. [00242] Pour commencer par la figure 17A, chacun des trois dispositifs de noeud 1500x-z a été affecté à la réalisation de la première tâche avec une partition 15 correspondante de trois partitions d'ensemble de données 113 lax-az de l'ensemble de données 1130a pour générer chacun une partition correspondante de trois partitions d'ensemble de données 113 lbx-bz de l'ensemble de données 1130b. En outre, chacun des trois dispositifs de noeud 1500x-z a été pourvu de sa partition correspondante des trois partitions d'ensemble de données 113 lax-az de l'ensemble 20 de données 1130a par les un ou plusieurs dispositifs de stockage 1100 via le réseau 1999. [00243] Comme cela est représenté, un ou plusieurs processeurs du dispositif de noeud 1500x (par exemple une ou plusieurs CPU 1550 et/ou un ou plusieurs GPU 1650) sont toujours en train de réaliser la première tâche avec la partition d'ensemble 25 de données 1131ax de sorte que la partition d'ensemble de données 1131bx est toujours en train d'être générée dans le dispositif de noeud 1500x. De plus, il se peut que la réalisation de la première tâche avec la partition d'ensemble de données 1131ax consomme suffisamment de ressources de traitement et/ou de stockage du dispositif de noeud 1500x pour que le dispositif de noeud 1500x puisse être jugé 30 comme n'ayant pas suffisamment de ressources de traitement et/ou de stockage pour être affecté à la réalisation d'une autre tâche jusqu'à ce que la première tâche avec la partition d'ensemble de données 1131ax ait été achevée. Pour réaliser la première 3055438 118 tâche avec la partition d'ensemble de données 1131ax pour générer la partition d'ensemble de données 1131bx, au moins un sous-ensemble de chacune de ces partitions peut être stocké dans la mémoire non volatile 1563 du dispositif de noeud 1500x. En outre, des pages de ces deux partitions peuvent être échangé entre la 5 mémoire non volatile 1563 et l'une ou l'autre des mémoires volatiles 1561 ou 1661, selon que la première tâche est réalisée par une ou plusieurs CPU 1550 ou par un ou plusieurs GPU 1650 du dispositif de noeud 1500x. [00244] Comme on le voit également sur l'illustration, un ou plusieurs processeurs du dispositif de noeud 1500y ont déjà achevé la réalisation de la première 10 tâche avec la partition d'ensemble de données 1131 ay de sorte que la partition d'ensemble de données 1131by a déjà été générée dans le dispositif de noeud 1500y, puis transmise aux un ou plusieurs dispositifs de stockage 1100 pour stockage. De plus, cette réalisation de la première tâche étant achevée, le dispositif de noeud 1500y a été affecté à la réalisation de la deuxième tâche avec la partition d'ensemble de 15 données 113 1 ay pour générer une partition d'ensemble de données 113 lcy de l'ensemble de données 1130c. Comme cela est représenté, les un ou plusieurs processeurs du dispositif de noeud 1500y sont toujours en train de réaliser la deuxième tâche avec la partition d'ensemble de données 1131ay de sorte que la partition d'ensemble de données 1131cy est toujours en train d'être générée dans le 20 dispositif de noeud 1500y. De plus, il se peut que la réalisation de la deuxième tâche avec la partition d'ensemble de données 1131 ay consomme suffisamment de ressources de traitement et/ou de stockage du dispositif de noeud 1500y pour que le dispositif de noeud 1500y puisse être jugé comme n'ayant pas suffisamment de ressources de traitement et/ou de stockage pour être affecté à la réalisation d'une 25 autre tâche jusqu'à ce que la deuxième tâche avec la partition d'ensemble de données 113 lay ait été achevée. Par suite de la réalisation de la première tâche avec la partition d'ensemble de données 113 1 ay pour générer la partition d'ensemble de données 113 lby, au moins un sous-ensemble de la partition 113 lby peut rester stocké dans la mémoire non volatile 1563 du dispositif de noeud 1500y pendant un 30 laps de temps limité. Pour réaliser la deuxième tâche avec la partition d'ensemble de données 1131ay pour générer la partition d'ensemble de données 1131cy, au moins un sous-ensemble de chacune de ces partitions peut être stocké dans la mémoire non 3055438 119 volatile 1563 du dispositif de noeud 1500x. En outre, des pages de ces deux partitions d'ensemble de données peuvent être échangées entre la mémoire non volatile 1563 et l'une ou l'autre des mémoires volatiles 1561 ou 1661, selon que la deuxième tâche est réalisée par une ou plusieurs CPU 1550 ou par un ou plusieurs GPU 1650 du 5 dispositif de noeud 1500y. En outre, par suite de cet échange, il peut être peu probable qu'une quelconque page de la partition d'ensemble de données 1131by soit toujours stockée dans la mémoire volatile 1561 ou 1661. [00245] Comme on le voit en outre sur l'illustration, un ou plusieurs processeurs du dispositif de noeud 1500z ont déjà achevé la réalisation de la première tâche avec 10 la partition d'ensemble de données 1131az de sorte que la partition d'ensemble de données 113 lbz a déjà été générée dans le dispositif de noeud 1500z, puis transmise aux un ou plusieurs dispositifs de stockage 1100 pour stockage. De même, les un ou plusieurs processeurs du dispositif de noeud 1500z ont déjà achevé la réalisation de la deuxième tâche avec la partition d'ensemble de données 1131az de sorte que la 15 partition d'ensemble de données 1131cz a également déjà été générée dans le dispositif de noeud 1500z, puis transmise aux un ou plusieurs dispositifs de stockage 1100 pour stockage. Ainsi, contrairement aux dispositifs de noeud 1500x et 1500y, le dispositif de noeud 1500z peut être jugé comme ayant suffisamment de ressources de traitement et de stockage disponibles pour que le dispositif de noeud 1500z soit 20 affecté à la réalisation d'une autre tâche. Par suite de la réalisation de la première tâche avec la partition d'ensemble de données 113 1 az pour générer la partition d'ensemble de données 113 lbz, et par suite de la réalisation de la deuxième tâche avec la partition d'ensemble de données 1131az pour générer la partition d'ensemble de données 113 lcz, au moins un sous-ensemble d'une ou plusieurs des partitions 25 d'ensemble de données 1131az, 1131bz et 1131cz peut rester stocké dans la mémoire non volatile 1563 du dispositif de noeud 1500z pendant un laps de temps limité Par suite également de la réalisation de la deuxième tâche plus récemment que la première tâche, des pages d'une ou des deux partitions d'ensemble de données 1131az et 1131cz peuvent être toujours stockées dans l'une ou l'autre des mémoires 30 volatiles 1561 ou 1661, selon que la deuxième tâche a été réalisée par une ou plusieurs CPU 1550 ou par un ou plusieurs GPU 1650 du dispositif de noeud 1500z. 3055438 En revanche, il peut être peu probable qu'une quelconque page de la partition 1131bz soit toujours stockée dans la mémoire volatile 1561 ou 1661. [00246] Ainsi, dans les circonstances qui viennent d'être décrites, et comme le représentent les traits en pointillé sur la figure 17B, le dispositif de noeud 1500z est 5 disponible de sorte qu'il peut être affecté à la réalisation de la deuxième tâche avec la partition d'ensemble de données 1131ax de l'ensemble de données 1130a pour générer la partition d'ensemble de données 1131cx de l'ensemble de données 1130c. Toutefois, comme cela vient d'être évoqué, c'est le dispositif de noeud 1500x qui a été initialement pourvu de la partition d'ensemble de données 113 1 ax par les un ou 10 plusieurs dispositifs de stockage 1100. Par conséquent, la partition d'ensemble de données 113 lax est déjà stockée dans la mémoire non volatile 1563 du dispositif de noeud 1500x de sorte que la partition d'ensemble de données 1131ax n'a pas besoin d'être à nouveau transmise via le réseau 1999 par les un ou plusieurs dispositifs de stockage 1100 si le dispositif de noeud 1500x peut être affecté à la réalisation de la 15 deuxième tâche avec la partition d'ensemble de données 1131ax. En outre, là encore, par suite de la réalisation en cours de la première tâche avec la partition d'ensemble de données 1131ax dans le dispositif de noeud 1500x, il y a actuellement un échange de pages de la partition d'ensemble de données 1131ax entre la mémoire non volatile 1563 et l'une ou l'autre des mémoires volatiles 1561 ou 1661. Ainsi, une ou 20 plusieurs pages de la partition d'ensemble de données 1131ax sont actuellement stockées dans la mémoire volatile 1561 ou 1661 du dispositif de noeud 1500x, et l'affectation de la réalisation de la deuxième tâche avec la partition d'ensemble de données 113 1 ax au dispositif de noeud 1500x relativement rapidement après le dispositif de noeud 1500x a achevé sa réalisation de la première tâche permet de tirer 25 profit du stockage à durée limitée de ces une ou plusieurs pages dans la mémoire volatile 1561 ou 1661, ce qui peut permettre au dispositif de noeud 1500x de commencer la réalisation de la deuxième tâche d'autant plus rapidement. [00247] Par conséquent, comme le représentent les traits en pointillé sur la figure 17B, en dépit de la disponibilité du dispositif de noeud 1500z pour être affecté à la 30 réalisation de la deuxième tâche avec la partition d'ensemble de données 1131ax, le dispositif de noeud 1500z n'y est pas affecté. Au lieu de cela, le processeur 1350 du dispositif de coordination 1300 est amené par le composant d'affectation 1341 (si 3055438 121 l'on se reporte à la figure 16) à retarder l'affectation de la réalisation de la deuxième tâche avec la partition d'ensemble de données 113 lax à l'un quelconque des dispositifs de noeud 1500x-z pendant un laps de temps pour offrir l'occasion au dispositif de noeud 1500x d'achever sa réalisation de la première tâche avec la 5 partition d'ensemble de données 1131ax. [00248] Comme cela a été expliqué, dans certains modes de réalisation, la durée du laps de temps de ce retard peut s'appuyer sur des indications dans les états de noeud 1535 reçus de façon récurrente du temps qu'ont mis un ou plusieurs noeuds pour achever la même tâche dont l'affectation est retardée (par exemple en fonction 10 d'une moyenne générée à partir des temps nécessaires à un ou plusieurs noeuds pour achever la même tâche). Cependant, comme cela a été également expliqué, la durée du retard peut également être basée sur des déterminations de différences entre les temps nécessaires au noeud auquel on offre l'occasion d'achever une tâche et les temps nécessaires à d'autres noeuds pour achever la même tâche. Là encore, la prise 15 en compte de ces différences de temps peut être jugée souhaitable pour prendre en compte les différences qui peuvent exister dans les diverses ressources intégrées à différents dispositifs de noeud 1500. Ainsi, dans l'exemple des figures 17A-C, la durée du retard permettant d'offrir au dispositif de noeud 1500x l'occasion d'achever la première tâche avec la partition d'ensemble de données 1131ax peut s'appuyer sur 20 le temps qu'il a fallu à l'un des dispositifs de noeud 1500y et 1500z ou aux deux pour achever la première tâche avec leurs partitions respectives d'ensemble de données 1131ay et 1131az (par exemple une moyenne de ceux-ci), et/ou sur des différences entre le temps nécessaire au dispositif de noeud 1500x pour achever des tâches et les temps nécessaires aux dispositifs de noeud 1500y et/ou 1500z pour achever les 25 mêmes tâches. [00249] Quelle que soit la manière exacte dont la durée du retard dans l'affectation de la réalisation de la deuxième tâche avec la partition d'ensemble de données 1131ax à l'un des dispositifs de noeud 1550x-z est obtenue, le processeur 1350 du dispositif de coordination 1300 peut employer une horloge 1351 qui peut 30 être intégrée dans le processeur 1350 (si l'on se reporte à la figure 16) pour surveiller le passage du time afin de déterminer le moment où la durée du retard s'est entièrement écoulée. Si la durée du retard s'écoule entièrement avant que le dispositif 3055438 122 de noeud 1500x ait pu achever sa réalisation de la première tâche avec la partition d' ensemble de données 1131 ax, alors le processeur 1350 peut être amené par le composant d'affectation 1341 à affecter la réalisation de la deuxième tâche avec la partition d'ensemble de données 1131ax au dispositif de noeud 1500z. En revanche, 5 comme on le voit sur la figure 17C, si le dispositif de noeud 1500x achève sa réalisation de la première tâche avec la partition d'ensemble de données 113 1 ax avant que la durée du retard se soit écoulée, alors le processeur 1350 peut être amené à affecter la réalisation de la deuxième tâche avec la partition d'ensemble de données 1131ax au dispositif de noeud 1500x. Là encore, cette affectation de la deuxième 10 tâche avec la partition d'ensemble de données 1131ax au dispositif de noeud 1500x peut au moins tirer profit du stockage d'au moins une partie de la partition d'ensemble de données 1131ax dans la mémoire non volatile 1563, sinon également du stockage d'une ou plusieurs pages de la partition d'ensemble de données 1131ax dans la mémoire volatile 1561 ou 1661. 15 [00250] Les figures 18A, 18B et 18C, prises ensemble dans l'ordre de la figure 18A à la figure 18C, représentent un autre mode de réalisation type d'une réalisation de tâches parmi plusieurs des dispositifs de noeud 1500 sélectionnés de la grille de dispositifs de noeuds 1005. Plus spécifiquement, les figures 18A-C représentent le même triplet type de dispositifs de noeud 1500x, 1500y et 1500z réalisant une 20 première tâche avec un ensemble de données type 1130a pour générer un ensemble de données type 1130b, et réalisant ensuite une deuxième tâche avec l'ensemble de données type 1130b généré par la réalisation de la première tâche. Pour réaliser la deuxième tâche avec l'ensemble de données type 1130b, chacun des dispositifs de noeud 1500x-z types doit générer encore un autre ensemble de données type 1130c. 25 Comme pour les figures 17A-C, il convient de noter que cet exemple basé uniquement sur trois dispositifs de noeud 1500, et faisant intervenir trois ensembles de données 1130a-c qui peuvent être d'une taille suffisamment réduite pour être distribués uniquement entre les trois dispositifs de noeud 1500x-z, est un autre exemple volontairement simplifié présenté et décrit dans le présent document à des 30 fins d'explication et de compréhension, et qu'il ne doit pas être considéré comme limitatif. Là encore, il est envisagé que modes de réalisation soient susceptibles de comporter la réalisation de tâches avec des ensembles de données 1130 nettement 3055438 123 plus gros, et par conséquent, qu'ils soient susceptibles de comporter l'utilisation d'un nombre nettement plus élevé des dispositifs de noeud 1500. [00251] Pour commencer par la figure 18A, chacun des trois dispositifs de noeud 1500x-z a été affecté à la réalisation de la première tâche avec une partition 5 correspondante de trois partitions d'ensemble de données 1131ax-az de l'ensemble de données 1130a pour générer chacun une partition correspondante de trois partitions d'ensemble de données 1131bx-bz de l'ensemble de données 1130b. Comme cela est représenté, les dispositifs de noeud 1500x-z ont achevé tous les trois leur réalisation de la première tâche, et chacun a transmis sa partition correspondante 10 des partitions d'ensemble de données 1131bx-bz aux un ou plusieurs dispositifs de stockage 1100 pour stockage en tant qu'ensemble de données 1130b. Pour permettre ces réalisations de la première tâche, chacun des trois dispositifs de noeud 1500x-z a été pourvu de sa partition correspondante des trois partitions d'ensemble de données 113 lax-az de l'ensemble de données 1130a par les un ou plusieurs dispositifs de 15 stockage 1100 via le réseau 1999. [00252] Après avoir achevé la première tâche, chacun des dispositifs de noeud 1500y et 1500z a été affecté à la réalisation de la deuxième tâche avec les partitions d'ensemble de données 113 lby et 113 lbz que les dispositifs de noeud 1500y et 1500z, respectivement, ont générées par suite de leur réalisation de la première tâche. 20 En revanche, après avoir achevé la première tâche le dispositif de noeud 1500x a été affecté à la réalisation d'une tâche d'une autre routine d'analyse indépendante. Comme expliqué précédemment, l'affectation de tâches de routines d'analyse différentes et indépendantes peut se produire dans des modes de réalisation dans lesquels la grille de dispositifs de noeuds 1005 est partagée au point que plusieurs 25 routines d'analyse indépendantes sont réalisées en même temps au moyen des dispositifs de noeud 1500. [00253] Comme cela est représenté, un ou plusieurs processeurs du dispositif de noeud 1500x (par exemple une ou plusieurs CPU 1550 et/ou un ou plusieurs GPU 1650) sont toujours en train de réaliser la tâche de la routine d'analyse indépendante. 30 De plus, il se peut que la réalisation de la tâche de la routine d'analyse indépendante consomme suffisamment de ressources de traitement et/ou de stockage du dispositif de noeud 1500x pour que le dispositif de noeud 1500x puisse être jugé comme n'ayant 3055438 124 pas suffisamment de ressources de traitement et/ou de stockage pour être affecté à la réalisation d'une autre tâche jusqu'à ce que la tâche de la routine d'analyse indépendante ait été achevée. Par suite de la réalisation de la première tâche avec la partition d'ensemble de données 113 1 ax pour générer la partition d'ensemble de 5 données 1131bx, au moins un sous-ensemble de l'une ou des deux partitions 113 lax et 113 lbx peut rester stocké dans la mémoire non volatile 1563 du dispositif de noeud 1500x pendant un laps de temps limité. Pour réaliser la tâche de la routine d'analyse indépendante, il peut y avoir un échange de pages d'une partition d'ensemble de données indépendante entre la mémoire non volatile 1563 et l'une ou l'autre des 10 mémoires volatiles 1561 ou 1661, selon que la tâche de la routine d'analyse indépendante est réalisée par une ou plusieurs CPU 1550 ou par un ou plusieurs GPU 1650 du dispositif de noeud 1500x. En outre, par suite de cet échange, il peut être peu probable qu'une quelconque page des partitions d'ensemble de données 1131ax ou 113 lbx soit toujours stockée dans la mémoire volatile 1561 ou 1661. 15 [00254] Comme cela est représenté, un ou plusieurs processeurs du dispositif de noeud 1500y sont toujours en train de réaliser la deuxième tâche avec la partition d'ensemble de données 1131by de sorte que la partition d'ensemble de données 1131cy est toujours en train d'être générée dans le dispositif de noeud 1500y. De plus, il se peut que la réalisation de la deuxième tâche avec la partition d'ensemble 20 de données 1131by consomme suffisamment de ressources de traitement et/ou de stockage du dispositif de noeud 1500y pour que le dispositif de noeud 1500y puisse être jugé comme n'ayant pas suffisamment de ressources de traitement et/ou de stockage pour être affecté à la réalisation d'une autre tâche jusqu'à ce que la deuxième tâche avec la partition d'ensemble de données 1131 ay ait été achevée. Par 25 suite de la réalisation de la première tâche avec la partition d'ensemble de données 113 lay pour générer la partition d'ensemble de données 1131by, au moins un sous-ensemble de la partition 1131 ay peut rester stocké dans la mémoire non volatile 1563 du dispositif de noeud 1500y pendant un laps de temps limité Pour réaliser la deuxième tâche avec la partition d'ensemble de données 1131by pour générer la 30 partition d'ensemble de données 1131cy, au moins un sous-ensemble de chacune de ces partitions peut être stocké dans la mémoire non volatile 1563 du dispositif de noeud 1500x. En outre, des pages de ces deux partitions d'ensemble de données 3055438 peuvent être échangées entre la mémoire non volatile 1563 et l'une ou l'autre des mémoires volatiles 1561 ou 1661, selon que la deuxième tâche est réalisée par une ou plusieurs CPU 1550 ou par un ou plusieurs GPU 1650 du dispositif de noeud 1500y. En outre, par suite de cet échange, il peut être peu probable qu'une quelconque page 5 de la partition d'ensemble de données 1131 ay soit toujours stockée dans la mémoire volatile 1561 ou 1661. [00255] Comme on le voit en outre sur l'illustration, un ou plusieurs processeurs du dispositif de noeud 1500z ont déjà achevé la réalisation de la deuxième tâche avec la partition d'ensemble de données 1131bz de sorte que la partition d'ensemble de 10 données 113 lcz a également déjà été générée dans le dispositif de noeud 1500z, puis transmise aux un ou plusieurs dispositifs de stockage 1100 pour stockage. Ainsi, contrairement aux dispositifs de noeud 1500x et 1500y, le dispositif de noeud 1500z peut être jugé comme ayant suffisamment de ressources de traitement et de stockage disponibles pour que le dispositif de noeud 1500z soit affecté à la réalisation d'une 15 autre tâche. Par suite de la réalisation de la première tâche avec la partition d'ensemble de données 1131az pour générer la partition d'ensemble de données 1131bz, et par suite de la réalisation de la deuxième tâche avec la partition d'ensemble de données 113 lbz pour générer la partition d'ensemble de données 1131cz, au moins un sous-ensemble d'une ou plusieurs des partitions d'ensemble de 20 données 113 laz, 1131bz et 113 lcz peut rester stocké dans la mémoire non volatile 1563 du dispositif de noeud 1500z pendant un laps de temps limité Par suite également de la réalisation de la deuxième tâche plus récemment que la première tâche, des pages d'une ou des deux partitions d'ensemble de données 1131bz et 113 lcz peuvent être toujours stockées dans l'une ou l'autre des mémoires volatiles 25 1561 ou 1661, selon que la deuxième tâche a été réalisée par une ou plusieurs CPU 1550 ou par un ou plusieurs GPU 1650 du dispositif de noeud 1500z. En revanche, il peut être peu probable qu'une quelconque page de la partition 113 laz soit toujours stockée dans la mémoire volatile 1561 ou 1661. [00256] Ainsi, dans les circonstances qui viennent d'être décrites, et comme le 30 représentent les traits en pointillé sur la figure 18B, le dispositif de noeud 1500z est disponible de sorte qu'il peut être affecté à la réalisation de la deuxième tâche avec la partition d'ensemble de données 1131bx de l'ensemble de données 1130b pour 3055438 126 générer la partition d'ensemble de données 113 lcx de l'ensemble de données 1130c. Toutefois, comme cela vient d'être évoqué, c'est le dispositif de noeud 1500x qui a initialement généré la partition d'ensemble de données 1131bx. Par conséquent, la partition d'ensemble de données 1131bx est déjà stockée dans la mémoire non 5 volatile 1563 du dispositif de noeud 1500x de sorte que la partition d'ensemble de données 1131bx n'a pas besoin d'être transmise via le réseau 1999 par les un ou plusieurs dispositifs de stockage 1100 (ou par le dispositif de noeud 1500x) si le dispositif de noeud 1500x peut être affecté à la réalisation de la deuxième tâche avec la partition d'ensemble de données 113 lbx. Ainsi, l'affectation de la réalisation de la 10 deuxième tâche avec la partition d'ensemble de données 113 lbx au dispositif de noeud 1500x relativement rapidement après le dispositif de noeud 1500x a achevé sa réalisation de la tâche de la routine d'analyse indépendante permet de tirer profit du stockage à durée limitée de la partie d'ensemble de données 113 lbx dans la mémoire non volatile 1563 du dispositif de noeud 1500x, ce qui peut permettre au dispositif de 15 noeud 1500x de commencer la réalisation de la deuxième tâche d'autant plus rapidement. [00257] Par conséquent, comme le représentent les traits en pointillé sur la figure 18B, en dépit de la disponibilité du dispositif de noeud 1500z pour être affecté à la réalisation de la deuxième tâche avec la partition d'ensemble de données 1131bx, le 20 dispositif de noeud 1500z n'y est pas affecté. Au lieu de cela, le processeur 1350 du dispositif de coordination 1300 est amené par le composant d'affectation 1341 (si l'on se reporte à la figure 16) à retarder l'affectation de la réalisation de la deuxième tâche avec la partition d'ensemble de données 1131bx à l'un quelconque des dispositifs de noeud 1500x-z pendant un laps de temps pour offrir l'occasion au 25 dispositif de noeud 1500x d'achever sa réalisation de la tâche de la routine d'analyse indépendante. Comme pour le mode de réalisation type des figures 17A-C, si la durée du retard s'écoule entièrement avant que le dispositif de noeud 1500x ait pu achever sa réalisation de la tâche de la routine d'analyse indépendante, alors le processeur 1350 peut être amené par le composant d'affectation 1341 (si l'on se 30 reporte à la figure 16) à affecter la réalisation de la deuxième tâche avec la partition d'ensemble de données 113 lbx au dispositif de noeud 1500z. En revanche, comme on le voit sur la figure 18C, si le dispositif de noeud 1500x achève sa réalisation de la 3055438 127 tâche de la routine d'analyse indépendante avant que la durée du retard se soit écoulée, alors le processeur 1350 peut être amené à affecter la réalisation de la deuxième tâche avec la partition d'ensemble de données 113 lbx au dispositif de noeud 1500x. 5 [00258] La figure 19 représente un mode de réalisation type d'un flux logique 2100. Le flux logique 2100 peut être représentatif de tout ou partie des opérations exécutées par un ou plusieurs modes de réalisation décrits dans le présent document. Plus spécifiquement, le flux logique 2100 peut représenter les opérations réalisées par le processeur 1350 pour exécuter la routine de commande 1340 et/ou la routine 10 de compilation 1440, et/ou réalisées par un ou plusieurs autres composants du dispositif de coordination 1300. [00259] À 2110, un processeur d'un dispositif de coordination d'un système de traitement distribué (par exemple le processeur 1350 du dispositif de coordination 1300 du système de traitement distribué 1000) peut analyser des états de noeud que le 15 dispositif de coordination reçoit de façon récurrente des dispositifs de noeud d'une grille de dispositifs de noeud (par exemple les états de noeud 1535 des dispositifs de noeud 1500 de la grille de dispositifs de noeuds 1005) pour déterminer quelles ressources de traitement sont disponibles dans chacun des dispositifs de noeud. Comme cela a été expliqué, les états de noeud 1535 transmis de façon récurrente au 20 dispositif de coordination 1300 par les dispositifs de noeud 1500 peuvent indiquer quelles ressources de traitement sont intégrées dans chacun des dispositifs de noeud 1500 (par exemple quel(les) CPU1500 et/ou quel(s) GPU 1600 sont inclus, quelles caractéristiques de traitement sont fournies par chacun, etc.), et/ou dans quelle mesure ces ressources de traitement sont actuellement disponibles dans chacun des 25 dispositifs de noeud 1500. [00260] À 2120, le processeur du dispositif de coordination peut vérifier s'il y a de quelconques GPU indiqués dans les états de noeud comme étant suffisamment disponibles dans l'un quelconque des dispositifs de noeud pour qu'une tâche puisse être affectée à ces dispositifs de noeud pour être réalisée par ces GPU disponibles. Si 30 aucun GPU n'est ainsi disponible, alors à 2122, le processeur peut compiler toutes les routines de tâche d'une routine d'analyse destinées à être exécutées par les CPU des dispositifs de noeud (par exemple les routines de tâche 1211 d'une routine 3055438 128 d'analyse 1210). À 2124, le processeur peut ensuite privilégier l'affectation de toutes des tâches de la routine d'analyse aux dispositifs de noeud choisis du fait qu'ils intègrent seulement une ou plusieurs CPU et/ou qu'ils intègrent une combinaison d'une ou plusieurs CPU et d'un ou plusieurs GPU. 5 [00261] En revanche, s'il existe des GPU jugés suffisamment disponibles à 2120, alors à 2130, le processeur peut analyser chacune des routines de tâche de la routine d'analyse pour déterminer si d'éventuelles routines de tâche se prêtent à une conversion de leurs instructions et à une compilation pour être exécutées par les GPU des dispositifs de noeud de la grille de dispositifs de noeuds. Si, à 2140, il n'existe 10 aucune de ces routines de tâche qui soit candidate, alors à 2122, le processeur peut compiler toutes les routines de tâche de la routine d'analyse destinées à être exécutées par les CPU des dispositifs de noeud. Ensuite, une fois encore, à 2124, le processeur peut alors privilégier l'affectation de toutes des tâches de la routine d'analyse aux dispositifs de noeud choisis du fait qu'ils intègrent seulement une ou 15 plusieurs CPU et/ou qu'ils intègrent une combinaison d'une ou plusieurs CPU et d'un ou plusieurs GPU. Comme expliqué précédemment, si aucune des routines de tâche 1211 d'une routine d'analyse 1210 n'est susceptible d'être compilée pour exécution par un GPU 1650, le fait de privilégier l'affectation des tâches de cette routine d'analyse 1210 aux dispositifs de noeud 1500 qui intègrent seulement des 20 CPU 1550, si possible, et/ou aux dispositifs de noeud 1500 qui intègrent une combinaison de CPU 1550 et de GPU 1650, si nécessaire, peut être jugé souhaitable pour limiter les affectations de tâches à des dispositifs de noeud 1500 qui intègrent des GPU 1650 si aucune des tâches ne doit être réalisée par un GPU 1650. Cela peut aider à laisser des GPU 1650 des dispositifs de noeud 1500 de la grille de dispositifs 25 de noeuds 1005 plus facilement disponibles pour la réalisation de tâches d'une autre routine d'analyse qui peuvent être réalisées par des GPU. [00262] En revanche, si à 2140, il y a au moins une routine de tâche de la routine d'analyse qui se prête à cette conversion et cette compilation, alors une vérification peut être effectuée à 2150 pour voir si toutes les routines de tâche de la routine 30 d'analyse sont ainsi candidates. Si c'est le cas, alors à 2152, le processeur peut compiler toutes les routines de tâche de la routine d'analyse destinées à être exécutées par les GPU des dispositifs de noeud. À 2154, le processeur peut ensuite 3055438 129 privilégier l'affectation de toutes des tâches de la routine d'analyse aux dispositifs de noeud choisis du fait qu'ils intègrent seulement un ou plusieurs GPU et/ou du fait qu'ils intègrent une combinaison d'une ou plusieurs CPU et un ou plusieurs GPU. [00263] Cependant, si à 2150, il y a un mélange de routines de tâche qui sont et 5 ne sont pas candidates à cette conversion et à cette compilation, alors à 2160, le processeur peut compiler toutes les routines de tâche de la routine d'analyse qui sont donc susceptibles d'être exécutées par les GPU des dispositifs de noeud. À 2162, le processeur peut compiler toutes les routines de tâche de la routine d'analyse qui ne sont donc pas susceptibles d'être exécutées par les CPU des dispositifs de noeud. À 10 2164, le processeur peut ensuite privilégier l'affectation de toutes des tâches de la routine d'analyse aux dispositifs de noeud choisis du fait qu'ils intègrent une combinaison d'une ou plusieurs CPU et d'un ou plusieurs GPU. [00264] La figure 20 représente un mode de réalisation type d'un flux logique 2200. Le flux logique 2200 peut être représentatif de tout ou partie des opérations 15 exécutées par un ou plusieurs modes de réalisation décrits dans le présent document. Plus spécifiquement, le flux logique 2200 peut représenter les opérations réalisées par les une ou plusieurs CPU 1550 pour exécuter la routine de commande 1540 et/ou la routine de compilation 1440, et/ou réalisées par un ou plusieurs autres composants d'un ou plusieurs des dispositifs de noeud 1500. 20 [00265] À 2210, une CPU d'un dispositif de noeud d'un système de traitement distribué (par exemple une CPU 1550 d'un des dispositifs de noeud 1500 du système de traitement distribué 1000) peut analyser une routine de tâche (par exemple une routine de tâche 1211 d'une routine d'analyse 1210) pour déterminer si elle se prête à une conversion de ses instructions et à une compilation pour être exécutée par les un 25 ou plusieurs GPU du dispositif de noeud (par exemple un ou plusieurs des GPU 1650). Comme expliqué précédemment, dans des modes de réalisation dans lesquels le dispositif de coordination 1300 ne compile pas les routines de tâche 1211, une ou plusieurs CPU 1550 de chacun des dispositifs de noeud 1500 peut le faire. En outre, cette compilation peut comprendre une analyse de chaque routine de tâche 1211 30 reçue par chacun des dispositifs de noeud 1500 qui intègre un ou plusieurs des GPU 1650 pour déterminer s'il faut compiler pour exécution par une ou plusieurs CPU 1550 ou par un ou plusieurs GPU 1650. 3055438 [00266] Si, à 2220, la routine de tâche n'est pas candidate, alors à 2222, la CPU peut compiler la routine de tâche de la routine d' analyse destinée à être exécutée par les une ou plusieurs CPU du dispositif de noeud. En revanche, si à 2220, la routine de tâche est candidate, alors à 2230, la CPU peut compiler la routine de tâche de la 5 routine d'analyse destinée à être exécutée par les un ou plusieurs GPU du dispositif de noeud. [00267] La figure 21 représente un mode de réalisation type d'un flux logique 2300. Le flux logique 2300 peut être représentatif de tout ou partie des opérations exécutées par un ou plusieurs modes de réalisation décrits dans le présent document. 10 Plus spécifiquement, le flux logique 2300 peut représenter les opérations réalisées par le processeur 1350 pour exécuter la routine de commande 1340, et/ou réalisées par un ou plusieurs autres composants du dispositif de coordination 1300. [00268] À 2310, un processeur d'un dispositif de coordination d'un système de traitement distribué (par exemple le processeur 1350 du dispositif de coordination 15 1300 du système de traitement distribué 1000) peut recevoir des métadonnées descriptives d'un ensemble de données d'un ou plusieurs dispositifs de stockage (par exemple les métadonnées 1135 des un ou plusieurs dispositifs de stockage 1100). À 2312, le processeur peut recevoir une routine d'analyse qui comprend plusieurs routines de tâche des un ou plusieurs dispositifs de stockage et/ou d'un dispositif de 20 visualisation (par exemple la routine d'analyse 1210 comprenant plusieurs routines de tâche 1211 provenant un ou plusieurs dispositifs de stockage 1100 ou du dispositif de visualisation 1800). À 2314, le processeur peut recevoir les transmissions les plus récentes de données d'état de noeud des dispositifs de noeud d'une grille de dispositifs de noeud du système de traitement distribué (par exemple les états de noeud 1535 des 25 dispositifs de noeud 1500 de la grille de dispositifs de noeuds 1005). Comme expliqué précédemment, dans des modes de réalisation dans lesquels les dispositifs de noeud 1500 servent également de dispositifs de stockage au moins des un ou plusieurs ensembles de données 1130, le dispositif de coordination 1300 peut recevoir les métadonnées 1135 et/ou la routine d'analyse de l'un des dispositifs de noeud 1500. 30 [00269] À 2320, le processeur peut obtenir des affectations initiales de partitions d'ensemble de données (par exemple les partitions d'ensemble de données 1131) et de tâches initiales, notamment une sélection de plusieurs des dispositifs de noeud 3055438 131 auxquels des partitions d'ensemble de données doivent être distribuées, et des affectations initiales des une ou plusieurs tâches initiales doivent être effectuées. À 2322, le processeur peut transmettre des indications de la distribution affectée des partitions d'ensemble de données aux un ou plusieurs dispositifs de stockage et/ou 5 aux dispositifs de noeud sélectionnés. Comme cela a été expliqué, la distribution de partitions d'ensemble de données aux dispositifs de noeud sélectionnés des un ou plusieurs dispositifs de stockage peut être coordonnée entre les un ou plusieurs dispositifs de stockage, les dispositifs de noeud sélectionnés et/ou le dispositif de coordination de l'une quelconque de diverses manières en utilisant l'un quelconque 10 d'une variété de protocoles pour amener à la transmission des partitions d'ensemble de données aux dispositifs de noeud sélectionnés. [00270] À 2330, le processeur peut transmettre des indications aux dispositifs de noeud sélectionnés de l'affectation d'une première tâche à réaliser au niveau des dispositifs de noeud sélectionnés avec les partitions d'ensemble de données 15 correspondantes. Comme cela a été expliqué, la transmission de routines de tâche de la routine d'analyse, ou la transmission de routines de tâche de CPU et/ou de routines de tâche de GPU (par exemple les routines de tâche 1211, les routines de tâche de CPU 1571 et/ou les routines de tâche de GPU 1671) aux dispositifs de noeud sélectionnés peut se faire dans le cadre du signalement d'affectations de tâches aux 20 dispositifs de noeud sélectionnés. [00271] À 2340, le processeur peut recevoir, d'un premier dispositif de noeud des dispositifs de noeud sélectionnés, une indication d'achèvement de la première tâche avec la première partition d'ensemble de données par le premier dispositif de noeud. Comme cela a été expliqué, ces indications peuvent être transmises au dispositif de 25 coordination dans le cadre des transmissions récurrentes d'états de noeud 1535. [00272] À 2350, le processeur peut retarder l'affectation d'une réalisation d'une deuxième tâche employant une deuxième partition d'ensemble de données à l'un quelconque des dispositifs de noeud sélectionnés, y compris le premier dispositif de noeud, pendant un laps de temps prédéterminé de retard pour offrir l'occasion à un 30 deuxième dispositif de noeud des dispositifs de noeud sélectionnés dans lequel la deuxième partition d'ensemble de données est déjà stockée de devenir disponible. Comme cela a été expliqué, cette imposition d'un retard dans l'affectation d'une 3055438 132 tâche suivante avec une partition d'ensemble de données particulière peut être pour permettre qu'un dispositif de noeud qui stocke déjà la partition d'ensemble de données particulière en question devienne disponible de manière à tirer profit du stockage de la partition d'ensemble de données particulière en question dans le 5 dispositif de noeud en question en affectant la tâche suivante avec la partition d'ensemble de données particulière à ce dispositif de noeud. Là encore, de cette manière, on peut économiser à la fois les ressources de bande passante réseau et le temps nécessaire pour transmettre la partition d'ensemble de données particulière à un autre dispositif de noeud en attendant de cette manière que le dispositif de noeud 10 en question devienne disponible. [00273] À 2360, le processeur peut vérifier si le deuxième dispositif de noeud, dans lequel la deuxième partition d'ensemble de données est déjà stockée, est devenu disponible avant la fin du laps de temps de retard. Si le deuxième dispositif de noeud est devenu disponible dans le laps de temps de retard, alors le processeur peut 15 transmettre une indication d'affectation pour réaliser la deuxième tâche avec la deuxième partition d'ensemble de données au deuxième dispositif de noeud à 2362. En revanche, si le deuxième dispositif de noeud n'est pas devenu disponible dans le laps de temps de retard, alors le processeur peut transmettre une indication d'affectation pour réaliser la deuxième tâche avec la deuxième partition d'ensemble 20 de données au premier dispositif de noeud à 2370. [00274] La figure 22 représente un mode de réalisation type d'un flux logique 2400. Le flux logique 2300 peut être représentatif de tout ou partie des opérations exécutées par un ou plusieurs modes de réalisation décrits dans le présent document. Plus spécifiquement, le flux logique 2400 peut représenter les opérations réalisées 25 par le processeur 1350 pour exécuter la routine de commande 1340, et/ou réalisées par un ou plusieurs autres composants du dispositif de coordination 1400. [00275] À 2410, un processeur d'un dispositif de coordination d'un système de traitement distribué (par exemple le processeur 1350 du dispositif de coordination 1300 du système de traitement distribué 1000) peut recevoir une indication d'un 30 dispositif de noeud d'une grille de dispositifs de noeuds du système de traitement distribué (par exemple un des dispositifs de noeud 1500 de la grille de dispositifs de noeuds 1005) du fait que le dispositif de noeud en question a achevé sa réalisation 3055438 133 d'une routine de tâche impliquant une partition d'ensemble de données d'un ensemble de données (par exemple une des partitions d'ensemble de données 1131 de l'ensemble de données 1130). À 2412, le processeur peut déterminer le temps qui s'est écoulé entre sa transmission d'un signal au dispositif de noeud pour réaliser la 5 tâche avec la partition d'ensemble de données, et la réception de l'indication du dispositif de noeud d'achèvement de cette réalisation de cette tâche. [00276] À 2420, le processeur peut comparer le nouveau temps écoulé à de précédents temps écoulés nécessaires aux autres dispositifs de noeud pour réaliser la même tâche avec leurs partitions correspondantes d'ensemble de données du même 10 ensemble de données. À 2422, le processeur peut vérifier si le nouveau temps écoulé est similaire aux temps écoulés précédents pour ces réalisations de la même tâche dans les limites d'un seuil de similitude prédéterminé. Si ce n'est pas le cas, alors le processeur peut employer le nouveau temps écoulé conjointement avec les temps écoulés précédents pour obtenir à nouveau un laps de temps de retard duquel retarder 15 une nouvelle affectation de tâche pour permettre l'achèvement de la tâche par un autre noeud. Comme cela a été expliqué, ces déterminations d'un laps de temps de retard peuvent comporter l'établissement d'une moyenne des temps nécessaires à différents dispositifs de noeud 1500 pour réaliser la même tâche. [00277] La figure 23 représente un mode de réalisation type d'un flux logique 20 2500. Le flux logique 2500 peut être représentatif de tout ou partie des opérations exécutées par un ou plusieurs modes de réalisation décrits dans le présent document. Plus spécifiquement, le flux logique 2500 peut représenter les opérations réalisées par le processeur 1350 pour exécuter la routine de commande 1340, et/ou réalisées par un ou plusieurs autres composants du dispositif de coordination 1300. 25 [00278] À 2510, un processeur d'un dispositif de coordination d'un système de traitement distribué (par exemple le processeur 1350 du dispositif de coordination 1300 du système de traitement distribué 1000) peut recevoir, d'un premier dispositif de noeud d'une grille de dispositifs de noeuds du système de traitement distribué (par exemple un des dispositifs de noeud 1500 de la grille de dispositifs de noeuds 1005), 30 une indication d'achèvement d'une première tâche avec une première partition d'ensemble de données d'un ensemble de données (par exemple une des partitions d'ensemble de données 1131 d'un ensemble de données 1130) par le premier 3055438 134 dispositif de noeud. Comme cela a été expliqué, ces indications peuvent être transmises au dispositif de coordination dans le cadre des transmissions récurrentes d'états de noeud 1535. [00279] À 2520, le processeur peut retarder l'affectation d'une réalisation d'une 5 deuxième tâche employant une deuxième partition d'ensemble de données du même ensemble de données à de quelconques dispositifs de noeud de la grille de dispositifs de noeuds, y compris le premier dispositif de noeud, pendant un laps de temps prédéterminé de retard pour offrir l'occasion à un deuxième dispositif de noeud de la grille de dispositifs de noeuds dans lequel la deuxième partition d'ensemble de 10 données est déjà stockée de devenir disponible. À 2530, le processeur peut vérifier si le deuxième dispositif de noeud, dans lequel la deuxième partition d'ensemble de données est déjà stockée, est devenu disponible avant la fin du laps de temps de retard. Si le deuxième dispositif de noeud est devenu disponible dans le laps de temps de retard, alors le processeur peut transmettre une indication d'affectation pour 15 réaliser la deuxième tâche avec la deuxième partition d'ensemble de données au deuxième dispositif de noeud à 2532. [00280] En revanche, si à 2530, le deuxième dispositif de noeud n'est pas devenu disponible dans le laps de temps de retard, alors le processeur peut vérifier à 2540 s'il y a eu un autre dispositif de noeud de la grille de dispositifs de noeuds qui a été 20 pourvu de la deuxième partition d'ensemble de données pour préparer l'autre dispositif de noeud à servir de dispositif de noeud de secours pour une tâche impliquant la deuxième partition d'ensemble de données. S'il n'existe aucun autre dispositif de ce genre, alors le processeur peut transmettre une indication d'affectation pour réaliser la deuxième tâche avec la deuxième partition d'ensemble 25 de données au premier dispositif de noeud à 2542. [00281] En revanche, si à 2540, il existe un autre dispositif de noeud de ce genre, alors le processeur peut vérifier à 2550 si une indication a été reçue que l'autre dispositif de noeud est actuellement disponible pour se voir affecter une tâche. Si ce n'est pas le cas, alors une fois encore, le processeur peut transmettre une indication 30 d'affectation pour réaliser la deuxième tâche avec la deuxième partition d'ensemble de données au premier dispositif de noeud à 2542. Cependant, si cette indication que l'autre dispositif de noeud est actuellement disponible a été reçue, alors le processeur 3055438 peut transmettre une indication d'affectation pour réaliser la deuxième tâche avec la deuxième partition d'ensemble de données à l'autre dispositif de noeud à 2552. [00282] Dans divers modes de réalisation, chacun des processeurs 1150, 1350, 1550, 1650 et 1850 peut comprendre l'un quelconque d'une grande variété de 5 processeurs disponibles dans le commerce. En outre, un ou plusieurs de ces processeurs peuvent comprendre plusieurs processeurs, un processeur à fils d'exécution multiples, un processeur multi-coeurs (que les coeurs multiples coexistent sur la même puce ou sur des puces séparées), et/ou une architecture multiprocesseurs d'une autre variété par laquelle plusieurs processeurs séparés physiquement sont liés. 10 [00283] Cependant, dans un mode de réalisation spécifique, la CPU 1550 de chacun des un ou plusieurs dispositifs de noeud 1500 peut être choisie de manière à effectuer efficacement l'analyse de plusieurs instances de flux de travail au moins partiellement en parallèle. À titre d'exemple, la CPU 1550 peut intégrer une architecture de type instruction unique et données multiples (SIMD), peut intégrer 15 plusieurs pipelines de traitement, et/ou peut intégrer la capacité à prendre en charge plusieurs fils d'exécution simultanés par pipeline de traitement. [00284] En variante ou en outre, dans un mode de réalisation spécifique, chaque GPU 1650 des un ou plusieurs dispositifs de noeud qui peut comprendre au moins un des GPU 1650 peut intégrer des fonctionnalités de fils d'exécution multiples et/ou 20 plusieurs coeurs de processeur pour permettre des réalisations en parallèle de tâches. À titre d'exemple, le GPU 1650 peut intégrer une architecture interne conçue pour permettre des réalisations en parallèle de tâches employant un ensemble d'instructions relativement limité sur des centaines, des milliers, des dizaines de milliers, voire des quantités plus élevées encore, de fils d'exécution pour recevoir des 25 applications graphiques comportant de l'imagerie à relativement haute résolution. [00285] Dans divers modes de réalisation, chacune des routines de commande 1140, 1340, 1540, 1840 et 1640, y compris les composants dont chacune se compose, peut être choisie de manière à agir sur tout type de processeur ou de processeurs qui sont choisis pour mettre en oeuvre les processeurs 1150, 1350, 1550, 1850 et/ou 1650 30 applicables dans les dispositifs 1100, 1300, 1500 correspondants et/ou le contrôleur graphique 1600. Dans divers modes de réalisation, chacune de ces routines peut comprendre un ou plusieurs d'un système d'exploitation, de pilotes de périphériques 3055438 136 et/ou de routines au niveau de l'application (par exemple les « suites logicielles » fournies sur des supports de type disque, les « applets » obtenus d' serveur distant, etc.). Lorsqu'un système d'exploitation est inclus, le système d'exploitation peut être l'un quelconque d'une variété de systèmes d'exploitation disponibles adaptés aux 5 processeurs 1150, 1550 et/ou 1850. Lorsqu'un ou plusieurs pilotes de périphériques sont inclus, ces pilotes de périphériques peuvent permettre la prise en charge de l'un quelconque d'une variété d'autres composants, qu'il s'agisse de composants matériels ou logiciels, des dispositifs 1100, 1300, 1500, 1800 et/ou 1600. [00286] Dans divers modes de réalisation, chacune des mémoires 1160, 1360, 10 1560, 1660 et 1860 peut s'appuyer sur l'une quelconque d'une grande variété de technologies de stockage d'informations, comprenant des technologies volatiles nécessitant la fourniture ininterrompue de courant électrique, et/ou comprenant des technologies impliquant l'utilisation de supports de stockage lisibles par machine qui peuvent ou non être amovibles. Ainsi, chacune de ces mémoires peut comprendre 15 l'un quelconque d'une grande variété de types (ou combinaisons de types) de dispositif de stockage y compris, entre autres, une mémoire morte (ROM), une mémoire vive (RAM), une RAM dynamique (DRAM), une DRAM à double débit de données (DDR-DRAM), une DRAM synchrone (SDRAM), une RAM statique (SRAM), une ROM programmable (PROM), une ROM programmable effaçable 20 (EPROM), une ROM programmable effaçable (EEPROM), une mémoire flash, une mémoire polymère (par exemple une mémoire polymère ferroélectrique), une mémoire ovonique, une mémoire à changement de phase ou ferroélectrique, une mémoire de type silicium-oxyde-nitrure-oxyde-silicium (SONOS), des cartes magnétiques ou optiques, un ou plusieurs disques durs ferromagnétiques individuels, 25 une mémoire de classe de stockage non volatile, ou une pluralité de dispositifs de stockage organisés en un ou plusieurs réseaux (par exemple plusieurs disques durs ferromagnétiques organisés en un réseau de type réseau redondant de disques indépendants, ou réseau RAID). On notera que bien que chacune de ces mémoires soit représentée comme un seul bloc, une ou plusieurs de ces dernières peuvent 30 comprendre plusieurs dispositifs de stockage qui peuvent s'appuyer sur différentes technologies de stockage. Ainsi, par exemple, une ou plusieurs de chacune de ces mémoires représentées peut correspondre à une combinaison d'un disque optique ou 3055438 137 d'un lecteur de carte mémoire flash par lesquels des programmes et/ou des données peuvent être stockés et transmis sur une forme ou une autre de support de stockage lisible par machine, d'un disque dur ferromagnétique pour stocker des programmes et/ou des données localement pendant une durée relativement prolongée, et d'un ou 5 plusieurs périphériques mémoire volatils à semi-conducteurs permettant un accès relativement rapide à des programmes et/ou des données (par exemple une SRAM ou une DRAM). Il convient de noter également que chacune de ces mémoires peut être constituée de plusieurs composants de mémoire s'appuyant sur une technologie de stockage identique, mais qui peuvent être gérés séparément du fait d'une 10 spécialisation d'utilisation (par exemple, emploi de certains périphériques DRAM comme mémoire principale alors que d'autres périphériques DRAM sont employés comme tampon de trames distinct d'un contrôleur graphique). [00287] Cependant, dans un mode de réalisation spécifique, la mémoire 1160 dans des modes de réalisation dans lesquels les un ou plusieurs des dispositifs de 15 stockage 1100 permettent le stockage d'un ou plusieurs ensembles de données 1130, ou la mémoire non volatile 1563 dans des modes de réalisation dans lesquels les dispositifs de noeud 1500 permettent le stockage d'un ou plusieurs ensembles de données 1130, peut être mise en oeuvre avec un réseau redondant de disques indépendants (RAID) d'un niveau de RAID choisi de manière à procurer une 20 tolérance aux pannes au stockage d'un ou plusieurs ensembles de données 1130. [00288] Dans divers modes de réalisation, chacun des dispositifs d'entrée 1320 et 1820 peut être l'un quelconque de divers types de dispositif d'entrée qui peuvent employer chacun l'un quelconque d'une grande variété de technologies de détection et/ou de réception d'entrée. Les exemples de ces dispositifs d'entrée comprennent, de 25 façon non exhaustive, des microphones, des télécommandes, des stylets, des lecteurs de cartes, des lecteurs d'empreintes digitales, des gants d'interaction de réalité virtuelle, des tablettes d'entrée graphiques, des joysticks, des claviers, des scanners rétiniens, les composants d'entrée tactile d'écrans tactiles, des trackballs, des capteurs d'ambiance, et/ou soit des caméras, soit des réseaux de caméras destinés à 30 surveiller les mouvements de personnes pour accepter des commandes et/ou des données fournies par ces personnes au travers de gestes et/ou d'expressions faciales. 3055438 138 [00289] Dans divers modes de réalisation, chacun des dispositifs d'affichage 1380 et 1880 peut être l'un quelconque de divers types de dispositif d'affichage qui peuvent employer chacun l'une quelconque d'une grande variété de technologies de présentation visuelle. Les exemples d'un tel dispositif d'affichage comprennent, de 5 façon non exhaustive, un tube cathodique (CRT), un panneau électroluminescent (EL), un écran à cristaux liquides (LCD), un écran plasma, etc. Dans certains modes de réalisation, les dispositifs d'affichage 1180 et/ou 1880 peuvent chacun être dispositif d'affichage à écran tactile de sorte que les dispositifs d'entrée 1110 et/ou 1810, respectivement, peuvent être intégrés dans ceux-ci en tant que composants 10 tactiles de ceux-ci. [00290] Dans divers modes de réalisation, chacune des interfaces réseau 1190, 1390, 1590 et 1890 peut employer l'une quelconque d'une grande variété de technologies de communications permettant à ces dispositifs d'être couplés à d'autres dispositifs, comme expliqué. Chacune de ces interfaces comprend un circuit 15 fournissant au moins certaines des fonctionnalités requises pour permettre ce couplage. Cependant, chacune de ces interfaces peut également être au moins partiellement mise en oeuvre avec des séquences d'instructions exécutées par un processeur correspondant parmi les processeurs (par exemple pour mettre en oeuvre une pile de protocoles ou d'autres caractéristiques). Lorsque des câbles 20 électriquement et/ou optiquement conducteurs sont employés, ces interfaces peuvent employer des synchronisations et/ou des protocoles conformes à l'une quelconque d'une variété de normes industrielles y compris, entre autres, RS-232C, RS-422, USB, Ethernet (IEEE-802.3) ou IEEE-1394. Lorsque l'utilisation de transmissions sans fil est en jeu, ces interfaces peuvent employer des synchronisations et/ou des 25 protocoles conformes à l'une quelconque d'une variété de normes industrielles y compris, entre autres, IEEE 802.11a, 802.11ad, 802.11ah, 802.11ax, 802.11b, 802.11g, 802.16, 802.20 (communément dénommées « accès sans fil à large bande mobile ») ; Bluetooth ; ZigBee ; ou un service de radiotéléphonie cellulaire GSM avec le service général de radiocommunication en mode paquets (General Packet 30 Radio Service - GSM/GPRS), le CDMA/1xRTT, le débit de données amélioré pour l'évolution globale (Enhanced Data Rates for Global Evolution : EDGE), Evolution Data Only/Optimized (EV-DO), Evolution for Data and Voice (EV-DV), High Speed 3055438 139 Downlink Packet Access (HSDPA), High Speed Uplink Packet Access (HSUPA), 4G LTE, etc. [00291] Cependant, dans un mode de réalisation spécifique, une ou plusieurs des interfaces réseau 1190, 1390 et/ou 1590 peut être mis en oeuvre avec plusieurs ports 5 d'interface réseau à base de cuivre ou à base de fibre optique pour fournir des passerelles redondantes et/ou parallèles lors de l'échange d'une ou plusieurs des partitions d'ensemble de données 1131, des routines de tâche 1211, des routines de tâche de CPU 1571 et/ou des routines de tâche de GPU 1671. [00292] Dans divers modes de réalisation, la répartition de ressources de 10 traitement et/ou de stockage entre les dispositifs de noeud 1300, et/ou les architectures API employées pour prendre en charge les communications entre les dispositifs de noeud et d'autres dispositifs peuvent être configurées et/ou choisies de manière à être conformes à l'une quelconque d'une variété de normes de traitement distribué y compris, entre autres, IEEE P2413, AllJoyn, IoTivity, etc. À titre 15 d'exemple, un sous-ensemble d'API et/ou d'autres caractéristiques architecturales d'une ou plusieurs de ces normes peut être employé pour mettre en oeuvre le degré relativement peu élevé de coordination décrit dans le présent document afin de fournir une plus grande efficacité dans la parallélisation des traitements de données, tout en limitant les échanges d'informations de coordination qui peuvent conduire à 20 des instances de sérialisation indésirables parmi les processus. Toutefois, il convient de noter que la parallélisation du stockage, de l'extraction et/ou du traitement de parties des ensembles de données 1130 ne dépend pas des architectures API existantes et/ou des protocoles de communications qui les prennent en charge, ni n'est contrainte par ceux-ci. Plus largement, il n'y a rien dans la manière dont les 25 ensembles de données 1130 peuvent être organisés pour le stockage, la transmission et/ou la distribution via le réseau 1999 qui soit lié à des architectures API ou des protocoles existants. [00293] Certains systèmes peuvent utiliser Hadoop®, un cadre ouvert (open- source) permettant de stocker et d'analyser les big data dans un environnement 30 informatique distribué. Certains systèmes peuvent utiliser l'informatique en nuage, qui peut permettre un accès réseau universel, pratique et à la demande à un groupement partagé de ressources informatiques configurables (réseaux, serveurs, 3055438 mémoire, applications et services) qui peut être fourni et libéré avec peu d'effort de gestion ou d'interaction du fournisseur de service. Certains systèmes de type grille peuvent être mis en oeuvre sous forme de grappe multi-noeud Hadoop®, comme le sait l'homme du métier. Apache' Hadoop® est un cadre logiciel ouvert (open- 5 source) pour l'informatique distribuée. REVENDICATIONS1. Un procédé mis en oeuvre par ordinateur comprenant : analyse d'un état actuel de ressources d'au moins un dispositif de noeud d'une pluralité de dispositifs de noeud pour déterminer une disponibilité d'au moins un processeur graphique (GPU) de l'au moins un dispositif de noeud pour être affecté à la réalisation d'une première tâche d'une routine d'analyse, dans laquelle : fonctionnement de la pluralité de dispositifs de noeud est coordonné pour réaliser des tâches de routines d'analyse au moins partiellement en parallèle ; la routine d'analyse est générée pour exécution par au moins une unité centrale (CPU) de l'au moins un noeud ; et les ressources de l'au moins un dispositif de noeud sont choisies dans un groupe comprenant l'au moins une CPU, l'au moins un GPU, et de l'espace mémoire dans au moins une mémoire de l' au moins un dispositif de noeud ; en réponse à une détermination établissant que l'au moins un GPU est disponible pour être affecté à la réalisation de la première tâche de la routine d'analyse : l'analyse d'une première routine de tâche de la routine d'analyse pour déterminer si la première routine de tâche peut être compilée pour générer une routine de tâche de GPU pour exécution par l'au moins un GPU pour amener l'au moins un GPU à réaliser des instances multiples de la première tâche de la routine d'analyse au moins partiellement en parallèle sans une dépendance entre des entrées et des sorties des instances multiples de la première tâche, dans laquelle : la première routine de tâche est générée pour exécution par l'au moins une CPU pour réaliser la première tâche de la routine d'analyse ; et la détermination de si la première routine de tâche peut être compilée pour générer la routine de tâche de GPU comprend une détermination de si la première routine de tâche inclut une instruction qui 3055438 142 empêche la compilation pour générer la routine de tâche de GPU et une détermination de si des entrées et des sorties de la première routine de tâche sont définies pour ne pas nécessiter la dépendance ; et en réponse à une détermination que la première routine de tâche peut 5 être compilée pour générer la routine de tâche de GPU : affectation d'une partition d' ensemble de données d'une pluralité de partitions d'ensemble de données d'un ensemble de données à l'au moins un dispositif de noeud pour permettre un accès à la partition d' ensemble de données par l'au moins un GPU ; 10 emploi d'une règle de conversion pour convertir au moins une instruction de la première routine de tâche en au moins une instruction correspondante de la routine de tâche de GPU ; compilation de l'au moins une instruction correspondante de la routine de tâche de GPU pour exécution par l'au moins un GPU ; et 15 affectation d'une réalisation de la première tâche de la routine d'analyse avec la partition d'ensemble de données à l'au moins un dispositif de noeud pour permettre une réalisation des instances multiples de la première tâche avec la partition d'ensemble de données par l'au moins un GPU. 20 2. Le procédé mis en oeuvre par ordinateur de la revendication 1, dans lequel la détermination de si la première routine de tâche inclut une instruction qui empêche la compilation pour générer la routine de tâche de GPU comprend : détermination de si l'instruction de la première routine de 25 tâche est incluse dans un ensemble d'instructions qui ne peuvent pas être converties en au moins une instruction pouvant être exécutée par l'au moins un GPU ; et en réponse à une détermination de si l'instruction de la première routine de tâche n'est pas incluse dans l'ensemble d'instructions, 30 détermination de si l'instruction de la première routine de tâche est utilisée dans la première routine de tâche d'une manière qui empêche une conversion en au moins une instruction pouvant être exécutée par l'au moins un GPU. 3055438 143 3. Le procédé mis en oeuvre par ordinateur de la revendication 1 ou 2, dans lequel la conversion de l'au moins une instruction de la première routine de tâche en l'au moins une instruction correspondante de la routine de tâche de GPU comprend une 5 conversion de l'au moins une instruction de la première routine de tâche d'un premier langage de programmation en l'au moins une instruction correspondante dans un deuxième langage de programmation conformément à la règle de conversion. 10 4. Le procédé mis en oeuvre par ordinateur de la revendication 1, 2 ou 3, dans lequel : l'au moins une mémoire de l'au moins un dispositif de noeud comprend une première mémoire volatile couplée de manière communicative à l'au moins une CPU, et une deuxième mémoire volatile couplée de manière communicative à l'au moins un GPU ; 15 affectation de la partition d'ensemble de données à l'au moins un dispositif de noeud pour permettre un accès à la partition d'ensemble de données par l'au moins un GPU comprend le fait d'amener la partition d'ensemble de données à être stockée dans la deuxième mémoire volatile ; et en réponse à une détermination que l'au moins un GPU n'est 20 pas disponible pour être affecté à la réalisation de la première tâche de la routine d'analyse, le procédé comprenant : le fait de se retenir d'analyser la première routine de tâche pour déterminer si la première routine de tâche peut être compilée pour générer la routine de tâche de GPU ; 25 affectation de la partition d'ensemble de données à l'au moins un dispositif de noeud pour amener la mémoire de la partition d'ensemble de données dans la première mémoire volatile à permettre un accès à la partition d'ensemble de données par l'au moins une CPU ; 30 compilation de la première routine de tâche pour exécution par l'au moins une CPU ; et 3055438 144 affectation de la réalisation de la première tâche de la routine d'analyse avec la partition d'ensemble de données à l'au moins un dispositif de noeud pour permettre la réalisation de la première tâche avec la partition d'ensemble de données 5 par l'au moins une CPU. 5. Le procédé mis en oeuvre par ordinateur de l'une quelconque des revendications 1 à 4, dans lequel : un dispositif de coordination coordonne le fonctionnement de 10 la pluralité de dispositifs de noeud ; le dispositif de coordination reçoit de façon récurrente des mises à jour de l'état actuel provenant de chaque dispositif de noeud de la pluralité de dispositifs de noeud ; et analyse de l'état actuel pour déterminer la disponibilité de l'au 15 moins un GPU de l'au moins un dispositif de noeud comprend l'identification, au niveau du dispositif de coordination, d'un dispositif de noeud de la pluralité de dispositifs de noeud qui intègre un GPU indiqué dans l'état actuel comme disponible. 20 6. Le procédé mis en oeuvre par ordinateur de la revendication 5, dans lequel l'affectation de la partition d'ensemble de données de l'ensemble de données à l'au moins un dispositif de noeud comprend : analyse, au niveau du dispositif de coordination, d'une métadonnée indicative de caractéristiques structurelles de l'ensemble de 25 données pour identifier une restriction dans une manière dont l'ensemble de données peut être divisé en la pluralité de partitions d'ensemble de données, dans laquelle la restriction est choisie dans un groupe constitué d'une indication d'une plus petite unité atomique de données dans l'ensemble de données, et une spécification d'un schéma de partitionnement ; et 30 obtention d'une division de l'ensemble de données en la pluralité de partitions d'ensemble de données basée au moins partiellement sur la restriction. 3055438 145 7. Le procédé mis en oeuvre par ordinateur de la revendication 6, comprenant : extraction de la métadonnée d'au moins un dispositif de stockage dans lequel l'ensemble de données est stocké ; et 5 transmission d'une indication de l'affectation de la partition d'ensemble de données à l'au moins un dispositif de noeud ou à l'au moins un dispositif de stockage pour provoquer une transmission de la partition d'ensemble de données de l'au moins un dispositif de stockage à l'au moins un dispositif de noeud. 10 8. Le procédé mis en oeuvre par ordinateur de l'une quelconque des revendications 1 à 7, dans lequel : analyse de l'état actuel pour déterminer la disponibilité de l'au moins un GPU de l'au moins un dispositif de noeud comprend l'analyse, par 15 une CPU d'un dispositif de noeud, d'un état actuel du dispositif de noeud visant à déterminer si un GPU du dispositif de noeud est actuellement disponible, dans lequel : l'au moins une CPU comprend la CPU ; l'au moins un dispositif de noeud comprend le dispositif de 20 noeud ; et l'au moins un GPU comprend le GPU. 9. Le procédé mis en oeuvre par ordinateur de l'une quelconque des revendications 1 à 8, comprenant : 25 analyse d'une deuxième routine de tâche de la routine d'analyse pour déterminer si la deuxième routine de tâche peut être compilée ou non pour générer une autre routine de tâche de GPU pour exécution par l'au moins un GPU pour amener l'au moins un GPU à réaliser des instances multiples de la deuxième tâche de la routine d'analyse au moins partiellement 30 en parallèle sans une dépendance entre des entrées et des sorties des instances multiples de la deuxième tâche, dans lequel la deuxième routine de tâche est 3055438 146 générée pour exécution par l'au moins une CPU pour réaliser une deuxième tâche de la routine d'analyse ; et en réponse à une détermination que la deuxième routine de tâche ne peut pas être compilée pour générer l'autre routine de tâche de 5 GPU : compilation de la deuxième routine de tâche pour exécution par l'au moins une CPU ; et affectation d'une réalisation de la deuxième tâche de la routine d'analyse avec la partition d'ensemble de 10 données à l'au moins un dispositif de noeud pour permettre la réalisation de la deuxième tâche avec les partitions d'ensemble de données par l'au moins une CPU. 10. Le procédé mis en oeuvre par ordinateur de la revendication 9, comprenant une 15 analyse de la routine d'analyse pour déterminer un ordre de tâches de la routine d'analyse, dans lequel l'ordre de tâches comprend un ordre relatif des première et deuxième tâches. 11. Un appareil comprenant un processeur et une mémoire sur laquelle sont stockées 20 des instructions qui, lorsqu'elles sont exécutées par le processeur, amènent le processeur à effectuer le procédé de l'une quelconque des revendications 1 à 10. 12. L'appareil de la revendication 11, comprenant un dispositif de coordination configuré pour coordonner le fonctionnement de la pluralité de dispositifs de noeud. 25 13. L'appareil de la revendication 11 ou 12, dans lequel l'appareil comprend un dispositif de noeud de l'au moins un dispositif de noeud ; le dispositif de noeud comprend un GPU de l' au moins un 30 GPU ; et le processeur comprend une CPU de l'au moins une CPU. 3055438 147 14. Un programme informatique comprenant des instructions de code pour une exécution des étapes du procédé de l'une quelconque des revendications 1 à 10 lorsque ledit programme est exécuté sur un ordinateur.