FR3055438A1 - Compilation pour traitement parallele base sur gpu de dispositif de noeud - Google Patents

Compilation pour traitement parallele base sur gpu de dispositif de noeud Download PDF

Info

Publication number
FR3055438A1
FR3055438A1 FR1757193A FR1757193A FR3055438A1 FR 3055438 A1 FR3055438 A1 FR 3055438A1 FR 1757193 A FR1757193 A FR 1757193A FR 1757193 A FR1757193 A FR 1757193A FR 3055438 A1 FR3055438 A1 FR 3055438A1
Authority
FR
France
Prior art keywords
task
node
routine
gpu
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1757193A
Other languages
English (en)
Other versions
FR3055438B1 (fr
Inventor
Henry Gabriel Victor Bequet
Huina Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SAS Institute Inc
Original Assignee
SAS Institute Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/422,285 external-priority patent/US9760376B1/en
Application filed by SAS Institute Inc filed Critical SAS Institute Inc
Publication of FR3055438A1 publication Critical patent/FR3055438A1/fr
Application granted granted Critical
Publication of FR3055438B1 publication Critical patent/FR3055438B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Library & Information Science (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Un appareil peut inclure un processeur et une mémoire pour stocker des instructions qui amènent le processeur à effectuer des opérations comprenant: en réponse à une détermination qu'un GPU d'un dispositif de nœud est disponible, déterminer si une routine de tâche peut être compilée pour générer une routine de tâche de GPU pour exécution par le GPU pour amener à la réalisation d'instances multiples d'une tâche de la routine de tâche au moins partiellement en parallèle sans dépendances entre ces dernières ; et en réponse à une détermination que la routine de tâche peut être compilée pour générer la routine de tâche de GPU : employer une règle de conversion pour convertir la routine de tâche en la routine de tâche de GPU ; compiler la routine de tâche de GPU pour exécution par le GPU ; et affecter la réalisation de la tâche avec une partition d'ensemble de données au dispositif de nœud pour permettre une réalisation des instances multiples avec la partition d'ensemble de données par le GPU.

Description

Titulaire(s) : SAS INTITUTE INC..
Mandataire(s) : BANDPAY & GREUTER.
154/ COMPILATION POUR TRAITEMENT PARALLELE BASE SUR GPU DE DISPOSITIF DE NOEUD.
FR 3 055 438 - A1 |5/j Un appareil peut inclure un processeur et une mémoire pour stocker des instructions qui amènent le processeur à effectuer des opérations comprenant: en réponse à une détermination qu'un GPU d'un dispositif de noeud est disponible, déterminer si une routine de tâche peut être compilée pour générer une routine de tâche de GPU pour exécution par le GPU pour amener à la réalisation d'instances multiples d'une tâche de la routine de tâche au moins partiellement en parallèle sans dépendances entre ces dernières; et en réponse à une détermination que la routine de tâche peut être compilée pour générer la routine de tâche de GPU : employer une règle de conversion pour convertir la routine de tâche en la routine de tâche de GPU ; compiler la routine de tâche de GPU pour exécution par le GPU ; et affecter la réalisation de la tâche avec une partition d'ensemble de données au dispositif de noeud pour permettre une réalisation des instances multiples avec la partition d'ensemble de données par le GPU.
Figure FR3055438A1_D0001
i
COMPILATION POUR TRAITEMENT PARALLELE BASE SUR GPU DE
DISPOSITIF DE NŒUD
ARRIERE-PLAN [0001] Il est de plus en plus courant d’utiliser des grilles constituées d’un grand nombre de dispositifs de nœud 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 nœud 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 nœud, notamment l’objectif d’exploiter les ressources de traitement de chaque dispositif de nœud 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 nœud, 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 nœud de la grille. L’approche classique pour affecter les tâches consiste simplement à affecter la tâche suivante à effectuer au dispositif de nœud 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.
[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 nœud d’une pluralité de dispositifs de nœud, à déterminer 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 nœud de la pluralité de dispositifs de nœud 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 nœud de la pluralité de dispositifs de nœud 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é à 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 nœud pour amener à la réalisation de la première tâche avec la première partition par le premier dispositif de nœud et pour amener au stockage d’au moins une partie de la première partition dans une mémoire volatile du premier dispositif de nœud ; 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 nœud pour amener à la réalisation de la première tâche avec la deuxième partition par le deuxième dispositif de nœud 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 nœud ; recevoir une indication de la part du premier dispositif de nœud, de l’achèvement de la réalisation de la première tâche avec la première partition par le premier dispositif de nœud de sorte que le premier dispositif de nœud 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 nœud 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 nœud 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 nœud 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 de la première tâche avec la deuxième partition par le deuxième dispositif de nœud de sorte que le deuxième dispositif de nœud est disponible pour être affecté à la réalisation d’une autre tâche a été reçue du deuxième dispositif de nœud 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 nœud 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 nœud pour permettre des accès à au moins une partie de la deuxième partition dans la mémoire volatile du deuxième dispositif de nœud ; 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 nœud pour éviter l’extraction de la deuxième partition par le premier dispositif de nœud. 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 nœud 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 nœud ; 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 nœud pour amener à l’extraction de la deuxième partition par le premier dispositif de nœud.
[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 de temps entre la transmission d’une affectation pour réaliser la première tâche à un dispositif de nœud de la pluralité de dispositifs de nœud 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 nœud.
[0006] Le processeur peut être amené à effectuer des opérations comprenant : déterminer une quantité de dispositifs de nœud de la pluralité de dispositifs de nœud 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 nœud 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 ; 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 nœud peut amener le premier dispositif de nœud à 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 nœud peut amener le deuxième dispositif de nœud à 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 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, pour chaque dispositif de nœud d’un sous-ensemble de la pluralité de dispositifs de nœud, 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 nœud du sous-ensemble comme dispositif de nœud de secours pour répondre à une défaillance d’un des dispositifs de nœud de la pluralité de dispositifs de nœud, où : un troisième dispositif de nœud de la pluralité de dispositifs de nœud 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 nœud 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 troisième dispositif de nœud comme dispositif de nœud de secours pour répondre à une défaillance du deuxième dispositif de nœud. Le processeur peut être amené à recevoir une indication, pendant le laps de temps prédéterminé, du troisième dispositif de nœud d’achèvement de la réalisation de la première tâche avec la troisième partition par le troisième dispositif de nœud de sorte que le troisième dispositif de nœud 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 nœud 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 nœud 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 sin· la deuxième partition au troisième dispositif de nœud ; 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 nœud.
[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 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 avec la première partition au premier dispositif de nœud peut amener le premier dispositif de nœud à : 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 nœud comme entrée pour la réalisation de la première tâche par le premier dispositif de nœud ; 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 nœud. 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 nœud peut amener le deuxième dispositif de nœud à : 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 nœud comme entrée pour la réalisation de la première tâche par le deuxième dispositif de nœud ; 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 nœud. 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 nœud peut amener le deuxième dispositif de nœud à utiliser au moins une partie de la deuxième partition encore stockée dans la mémoire volatile du deuxième dispositif de nœud comme entrée pour la réalisation de la deuxième tâche par le deuxième dispositif de nœud pour limiter les accès à la deuxième partition stockée dans de la mémoire non volatile du deuxième dispositif de nœud.
[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 réalisation de la deuxième tâche sur la deuxième partition peut comprendre Γ 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 nœud peut amener le premier dispositif de nœud à : générer la première partition comme sortie de la réalisation de la première tâche par le premier dispositif de nœud ; 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 nœud. 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 nœud peut amener le deuxième dispositif de nœud à : 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 nœud ; 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 nœud. 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 nœud peut amener le deuxième dispositif de nœud à utiliser au moins une partie de la deuxième partition encore stockée dans la mémoire volatile du deuxième dispositif de nœud comme entrée pour la réalisation de la deuxième tâche par le deuxième dispositif de nœud pour limiter les accès à la deuxième partition stockée dans de la mémoire non volatile du deuxième dispositif de nœud.
[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 nœud d’une pluralité de dispositifs de nœud, 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 nœud de la pluralité de dispositifs de nœud 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 nœud de la pluralité de dispositifs de nœud 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 nœud pour amener à la réalisation de la première tâche avec la première partition par le premier dispositif de nœud 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 nœud ; 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 nœud pour amener à la réalisation de la première tâche avec la deuxième partition par le deuxième dispositif de nœud 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 nœud ; recevoir une indication de la part du premier dispositif de nœud de l’achèvement de la réalisation de la première tâche avec la première partition par le premier dispositif de nœud de sorte que le premier dispositif de nœud 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 nœud 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 nœud 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 nœud 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 de la première tâche avec la deuxième partition par le deuxième dispositif de nœud de sorte que le deuxième dispositif de nœud est disponible pour être affecté à la réalisation d’une autre tâche a été reçue du deuxième dispositif de nœud 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 nœud 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 nœud pour permettre des accès à au moins une partie de la deuxième partition dans la mémoire volatile du deuxième dispositif de nœud; 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 nœud pour éviter l’extraction de la deuxième partition par le premier dispositif de nœud. 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 nœud 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 nœud ; 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 nœud pour amener à l’extraction de la deuxième partition par le premier dispositif de nœud.
[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 nœud de la pluralité de dispositifs de nœud 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 nœud.
[0013] Le processeur est amené à effectuer des opérations comprenant : déterminer une quantité de dispositifs de nœud de la pluralité de dispositifs de nœud 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 nœud 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 ;
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 nœud peut amener le premier dispositif de nœud à 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 nœud peut amener le deuxième dispositif de nœud à extraire la deuxième partition des un ou plusieurs dispositifs de stockage.
[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.
[0015] Le processeur peut être amené à effectuer des opérations comprenant, pour chaque dispositif de nœud d’un sous-ensemble de la pluralité de dispositifs de nœud, 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 nœud du sous-ensemble comme dispositif de nœud de secours pour répondre à une défaillance d’un des dispositifs de nœud de la pluralité de dispositifs de nœud, où : un troisième dispositif de nœud de la pluralité de dispositifs de nœud 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 nœud est affecté à l’extraction et au stockage de la deuxième partition des un ou plusieurs dispositifs de stockage pour permettre Putilisation du troisième dispositif de nœud comme dispositif de nœud de secours pour répondre à une défaillance du deuxième dispositif de nœud. Le processeur peut être amené à recevoir une indication, pendant le laps de temps prédéterminé, de la part du troisième dispositif de nœud d’achèvement de la réalisation de la première tâche avec la troisième partition par le troisième dispositif de nœud de sorte que le troisième dispositif de nœud 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 l’achèvement de la première tâche avec la troisième partition par le troisième dispositif de nœud 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 nœud dans les limites du laps de temps prédéterminé, à : affecter la réalisation de la deuxième tâche sur la deuxième partition au troisième dispositif de nœud ; 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 nœud.
[0016] 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 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 avec la première partition au premier dispositif de nœud peut amener le premier dispositif de nœud à : 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 nœud comme entrée pour la réalisation de la première tâche par le premier dispositif de nœud ; 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 nœud. 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 nœud peut amener le deuxième dispositif de nœud à : 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 nœud comme entrée pour la réalisation de la première tâche par le deuxième dispositif de nœud ; 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 il dispositif de nœud. 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 nœud peut amener le deuxième dispositif de nœud à utiliser au moins une partie de la deuxième partition encore stockée dans la mémoire volatile du deuxième dispositif de nœud comme entrée pour la réalisation de la deuxième tâche par le deuxième dispositif de nœud pour limiter les accès à la deuxième partition stockée dans une mémoire non volatile du deuxième dispositif de nœud.
[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 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 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 nœud peut amener le premier dispositif de nœud à : générer la première partition comme sortie de la réalisation de la première tâche par le premier dispositif de nœud ; 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 nœud. 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 nœud peut amener le deuxième dispositif de nœud à : 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 nœud ; 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 nœud. 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 nœud peut amener le deuxième dispositif de nœud à utiliser au moins une partie de la deuxième partition encore stockée dans la mémoire volatile du deuxième dispositif de nœud comme entrée pour la réalisation de la deuxième tâche par le deuxième dispositif de nœud pour limiter les accès à la deuxième partition stockée dans une mémoire non volatile du deuxième dispositif de nœud.
[0018] Un procédé mis en œuvre par ordinateur peut comprendre, pour chaque dispositif de nœud d’une pluralité de dispositifs de nœud, l’obtention au niveau d’un 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 nœud de la pluralité de dispositifs de nœud pour réaliser la première tâche avec une première partition de la pluralité de partitions du premier ensemble de données ; et l’obtention d’une deuxième affectation d’un deuxième dispositif de nœud de la pluralité de dispositifs de nœud 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 avec la première partition au premier dispositif de nœud pour amener à la réalisation de la première tâche avec la première partition par le premier dispositif de nœud et pour amener au stockage d’au moins une partie de la première partition dans une mémoire volatile du premier dispositif de nœud ; la transmission d’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 nœud pour amener à la réalisation de la première tâche avec la deuxième partition par le deuxième dispositif de nœud 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 nœud ; la réception, au niveau du dispositif de coordination, d’une indication de la part du premier dispositif de nœud d’achèvement de la réalisation de la première tâche avec la première partition par le premier dispositif de nœud de sorte que le premier dispositif de nœud 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 nœud 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 nœud 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 nœud résultant de 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 nœud de sorte que le deuxième dispositif de nœud est disponible pour être affecté à la réalisation d’une autre tâche a été reçue du deuxième dispositif de nœud 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 nœud dans les limites du laps de temps prédéterminé : l’affectation de la réalisation de la deuxième tâche sur la deuxième partition au deuxième dispositif de nœud pour permettre des accès à au moins une partie de la deuxième partition dans la mémoire volatile du deuxième dispositif de nœud; 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 nœud pour éviter l’extraction de la deuxième partition par le premier dispositif de nœud.
[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 nœud de la pluralité de dispositifs de nœud et la réception d’une indication d’achèvement de la réalisation de la première tâche de la part du dispositif de nœud.
[0020] Le procédé peut comprendre la détermination, au niveau du dispositif de coordination, d’une quantité de dispositifs de nœud de la pluralité de dispositifs de nœud qui sont disponibles pour réaliser la première tâche ; et l’obtention, au niveau 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 nœud 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 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 nœud peut amener le premier dispositif de nœud à 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 nœud peut amener le deuxième dispositif de nœud à extraire la deuxième partition 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 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 nœud dans les limites du laps de temps prédéterminé : l’affectation de la réalisation de la deuxième tâche sur la deuxième partition au premier dispositif de nœud ; 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 nœud pour amener à l’extraction de la deuxième partition par le premier dispositif de nœud.
[0022] 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 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 avec la première partition au premier dispositif de nœud peut amener le premier dispositif de nœud à : 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 nœud comme entrée pour la réalisation de la première tâche par le premier dispositif de nœud ; 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 nœud. 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 nœud peut amener le deuxième dispositif de nœud à : 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 nœud comme entrée pour la réalisation de la première tâche par le deuxième dispositif de nœud ; 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 nœud. 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 nœud peut amener le deuxième dispositif de nœud à utiliser au moins une partie de la deuxième partition encore stockée dans la mémoire volatile du deuxième dispositif de nœud comme entrée pour la réalisation de la deuxième tâche par le deuxième dispositif de nœud pour limiter les accès à la deuxième partition stockée dans une mémoire non volatile du deuxième dispositif de nœud.
[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 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 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 nœud peut amener le premier dispositif de nœud à : générer la première partition comme sortie de la réalisation de la première tâche par le premier dispositif de nœud ; 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 nœud. 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 nœud peut amener le deuxième dispositif de nœud à : 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 nœud ; 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 nœud. 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 nœud peut amener le deuxième dispositif de nœud à utiliser au moins une partie de la deuxième partition encore stockée dans la mémoire volatile du deuxième dispositif de nœud comme entrée pour la réalisation de la deuxième tâche par le deuxième dispositif de nœud pour limiter les accès à la deuxième partition stockée dans une mémoire non volatile du deuxième dispositif de nœud.
[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 à effectuer des opérations comprenant : analyser un état actuel des ressources d’au moins un dispositif de nœud d’une pluralité de dispositifs de nœud pour déterminer une disponibilité d’au moins un processeur graphique (GPU) de l’au moins un dispositif de nœud 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 nœud 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 de traitement (CPU) de l’au moins un nœud ; et les ressources de l’au moins un dispositif de nœud 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 moins un dispositif de nœud. 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 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 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 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 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 nœud 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 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 nœud 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.
[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 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 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 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 nœud peut comprendre 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 ; affecter la partition d’ensemble de données à l’au moins un dispositif de nœud 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 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 partition d’ensemble de données à l’au moins un dispositif de nœud 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 nœud 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 nœud ; 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 nœud de la pluralité de dispositifs de nœud ; 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 nœud, le processeur peut être amené à identifier un dispositif de nœud de la pluralité de dispositifs de nœud qui intègre un GPU indiqué par 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 nœud, le processeur peut être amené à effectuer des opérations comprenant : analyser 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 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 transmettre une indication de l’affectation de la partition d’ensemble de données à l’au moins un dispositif de nœud 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 nœud.
[0027] L’appareil peut comprendre un dispositif de nœud de l’au moins un dispositif de nœud ; le dispositif de nœud 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 nœud, la CPU peut être amenée à déterminer si le GPU du dispositif de nœud est indiqué par l’état actuel comme disponible. Le processeur est 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 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 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 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 nœud pour 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 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 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 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 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 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.
[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 à effectuer des opérations comprenant : analyser un état actuel des ressources d’au moins un dispositif de nœud d’une pluralité de dispositifs de nœud pour déterminer une disponibilité d’au moins un processeur graphique (GPU) de l’au moins un dispositif de nœud 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 nœud 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 nœud ; et les ressources de l’au moins un dispositif de nœud 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 moins un dispositif de nœud. 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 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 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 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 moins un dispositif de nœud 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 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 nœud 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.
[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 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 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 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 nœud 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 d’ensemble de données à l’au moins un dispositif de nœud 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 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 partition d’ensemble de données à l’au moins un dispositif de nœud 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 nœud 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 coordonne le fonctionnement de la pluralité de dispositifs de nœud ; 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 nœud de la pluralité de dispositifs de nœud ; 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 nœud, le processeur peut être amené à identifier un dispositif de nœud de la pluralité de dispositifs de nœud 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 nœud, 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 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 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 nœud 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 nœud.
[0032] Le processeur peut inclure une CPU de l’au moins une CPU ; la CPU peut être un composant d’un dispositif de nœud de l’au moins un dispositif de nœud ; le dispositif de nœud 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 l’au moins un dispositif de nœud, la CPU peut être amenée à déterminer si le GPU du dispositif de nœud 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 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 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 nœud pour permettre 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 œuvre par ordinateur peut comprendre : l’analyse d’un état actuel des ressources d’au moins un dispositif de nœud d’une pluralité de dispositifs de nœud pour déterminer une disponibilité d’au moins un processeur graphique (GPU) de l’au moins un dispositif de nœud 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 nœud 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 de traitement (CPU) de l’au moins un nœud ; et les ressources de l’au moins un dispositif de nœud 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 moins un dispositif de nœud. 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 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 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 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 d’ensemble de données d’un ensemble de données à l’au moins un dispositif de nœud 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 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 nœud 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.
[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 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 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 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 nœud peut comprendre 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 d’ensemble de données à l’au moins un dispositif de nœud 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 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 nœud 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 nœud 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.
[0036] Un dispositif de coordination peut coordonner le fonctionnement de la pluralité de dispositifs de nœud ; 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 nœud de la pluralité de dispositifs de nœud ; et l’analyse de l’état actuel pour déterminer la disponibilité de l’au moins un GPU de l’au moins un dispositif de nœud peut comprendre l’identification, au niveau du dispositif de coordination, d’un dispositif de nœud de la pluralité de dispositifs de nœud 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 nœud peut comprendre : analyser, au niveau 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 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 à l’au moins un dispositif de nœud 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 nœud.
[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 nœud peut comprendre une analyse, par une CPU d’un dispositif de nœud, d’un état actuel du dispositif de nœud pour savoir si un GPU du dispositif de nœud est actuellement disponible, dans laquelle : l’au moins une CPU peut comprendre la CPU ; l’au moins un dispositif de nœud peut comprendre le dispositif de nœud ; et l’au moins un GPU peut comprendre le GPU. [0038] Le procédé selon la revendication 21 peut comprendre : l’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 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 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. 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 de nœud 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.
[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 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 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.
[0044] La figure 4 représente un système informatique de type grille de communications comprenant une variété de nœuds de commande et de travail, selon certains modes de réalisation de la présente technologie.
[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 nœud, selon certains modes de réalisation de la présente technologie.
[0046] La figure 6 représente une partie d’un système informatique de type grille de communications comprenant un nœud de commande et un nœud 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 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 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.
[0051] Les figures 11A et 1 IB 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 de l’affectation de la réalisation de tâches d’une routine d’analyse à des dispositifs de nœud 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 d’une tâche affectée par un mode de réalisation type d’un dispositif de nœud.
[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.
[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 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 et de la compilation d’une routine de tâche par un dispositif de nœud.
[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. [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 ressources de traitement, de stockage et de bande passante réseau au sein d’une grille de dispositifs de nœud 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 processeurs d’une grille. Chaque dispositif de nœud d’une grille de dispositifs de nœud 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 nœud de la grille peut comprendre un ou plusieurs unités 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.
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 nœud peut s’appuyer sur la disponibilité de ressources dans les dispositifs de nœud et/ou sur une analyse automatisée des routines de tâches dans la routine d’analyse pour identifier des 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 dispositif de nœud 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 nœud peut être retardée d’un laps de temps prédéterminé pour offrir à un autre dispositif de nœud encore en train de réaliser une tâche précédente avec la partition d’ensemble de données particulière en question 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 nœud afin de permettre à la tâche suivante d’être réalisée avec la 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 nœud.
[0065] Un dispositif de coordination d’une grille de dispositifs de nœud peut recevoir de façon récurrente des données de nœud de chacun des nœuds de la grille de dispositifs de nœuds 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 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 diverses caractéristiques structurelles de l’au moins un ensemble de données. A partir des données de nœud, 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 nœud sélectionnés et des affectations initiales d’une ou plusieurs tâches devant être réalisées par les dispositifs de nœud sélectionnés. Le dispositif de coordination peut ensuite transmettre des indications des affectations initiales aux dispositifs de nœud 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 distribuées parmi les dispositifs de nœud sélectionnés pour permettre aux dispositifs de nœud 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 la distribution de partitions d’ensemble de données à effectuer aux dispositifs de nœud 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 nœud sélectionnés peut extraire une ou plusieurs des partitions d’ensemble de données de l’un ou plusieurs des dispositifs de 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 nœud 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 nœud, chacun des dispositifs de nœud 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 les résultats de diverses déterminations. Les une ou plusieurs CPU peuvent chacune inclure un ou plusieurs cœurs de traitement qui peuvent chacun prendre en charge un degré relativement limité d’exécution parallèle d’instructions sur une quantité 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 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 dispositif de nœud peut être à même de faire le même travail que les CPU d’un grand nombre de dispositifs de nœud séparés, mais plus rapidement et plus économiquement. Ainsi, il peut être avantageux qu’il y ait au moins un sousensemble des dispositifs de nœud 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, 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 nœuds dans lesquels une partie, mais pas la totalité, des dispositifs de nœud intègrent ces GPU, déterminer si une routine d’analyse comprend des routines de tâche pour une ou 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 nœud intégrant des GPU ou de dispositifs de nœud n’intégrant pas de GPU pour réaliser les tâches de la routine d’analyse. Le dispositif de coordination peut analyser les routines de tâche d’une routine d’analyse pour identifier les tâches qui sont mises en œuvre 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 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 nœud qui 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 nœuds qui intègrent un ou plusieurs GPU disponibles pour se voir affecter des tâches d’une autre routine d’analyse dans lesquelles les 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 sur le choix des dispositifs de nœud auxquels affecter des tâches, dans certains modes de réalisation, des indications de quelles ressources de traitement sont disponibles parmi les dispositifs de nœud 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 réalisation dans lesquels aucun des dispositifs de nœud qui intègrent des GPU n’est actuellement disponible pour se voir affecter une quelconque tâche (par exemple, tous les dispositifs de nœud 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 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 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 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 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 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 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 nœuds comprend des dispositifs de nœud 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 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 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 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 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 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 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 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 nœud 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 devoir acquérir les compétences nécessaires pour structurer et écrire les instructions qui mettent en œuvre 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 nœuds comprend des dispositifs de nœud qui intègrent différents GPU qui ne partagent pas un ensemble d’instructions, on évite en 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 nœud, chacun des dispositifs de nœud peut intégrer des capacités de stockage mises en œuvre sous forme de combinaison d’une mémoire volatile et d’une mémoire non volatile. La mémoire volatile peut être mise en œuvre 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 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 peut être mise en œuvre 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 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 à 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 nœud 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 aux composants de mémoire volatile, la mémoire non volatile peut être mise en œuvre de manière à avoir une capacité de stockage supérieure à celle de la mémoire volatile dans chacun des dispositifs de nœud. 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 nœud pour faire que chaque partition d’ensemble de données de l’ensemble de données qui est distribué à un dispositif de nœud 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.
[0074] De ce fait, dans chaque dispositif de nœud, 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 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 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 nœud 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 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 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 nœud peut être limité dans le temps.
[0075] Dans des dispositifs de nœud 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 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 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 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 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 des dispositifs de nœud 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 nœud. Après cette réception et ce stockage, des pages de la partition d’ensemble de données reçues 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 dispositif de coordination peut recevoir de façon récurrente des données de nœud, chacun des dispositifs de nœud peut intégrer une interface réseau vers un réseau employé par la grille de dispositifs de nœuds afin de coupler de manière communicative les dispositifs de nœud les uns aux autres, au dispositif de coordination et/ou à un ou plusieurs dispositifs de stockage (par exemple une grille 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 nœud 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 nœud via le réseau, et des partitions d’ensemble de données obtenues dans un nœud 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 nœud peuvent ne pas pouvoir utiliser directement l’interface réseau du dispositif de nœud pour effectuer des échanges de 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 nœud peuvent ainsi utiliser l’interface réseau pour le compte des un ou plusieurs GPU. Là encore, une telle action pour le compte 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.
[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 nœud 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 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 nœud 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 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 nœud de la grille de dispositifs de nœuds deviennent inactifs pendant des laps de temps divers pour attendre la disponibilité de dispositifs de nœud particuliers pour une utilisation dans 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 nœud qui devient disponible pour une utilisation dans la réalisation d’une tâche sans considérer quels dispositifs de nœud 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 retardée d’un certain laps de temps pour permettre qu’un dispositif de nœud 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 nœud auquel la partition 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 offrir l’occasion d’affecter cette tâche suivante de ces tâches à un dispositif de nœud 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 nœud disponible peut entraîner l’affectation à un dispositif de nœud 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 nœud 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 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 nœud pour réaliser ainsi 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 à un deuxième dispositif de nœud, 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 nœud 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 nœud 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 nœud dans lequel la deuxième partition d’ensemble de données n’est pas déjà stockée peut être affecté à cette réalisation (par exemple le premier dispositif de nœud). Alternativement, dans d’autres modes de réalisation, s’il y a encore un autre dispositif de nœud 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 nœud comme secours en réponse à une défaillance par un dispositif de nœud réalisant une tâche avec le deuxième partie d’ensemble de données, et si le deuxième dispositif de nœud 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 nœud est actuellement disponible pour être ainsi affecté, alors cet autre dispositif de nœud 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 du deuxième dispositif de nœud 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 nœud. 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 dispositif de nœud, il aurait fallu que la deuxième partition d’ensemble de données soit transmise au premier dispositif de nœud soit par le deuxième dispositif de nœud 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 nœud, la réalisation par le premier dispositif de nœud de la deuxième tâche avec 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 nœud pour permettre à cette réalisation de commencer.
[0080] Comme autre exemple encore, chacun d’un premier dispositif de nœud 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 nœud 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 tâche. Cependant, pendant que le premier dispositif de nœud peut être disponible pour être affecté une autre tâche, le deuxième dispositif de nœud (résultant du partage de dispositifs de nœud 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 nœud peut n’être pas encore disponible pour être 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 nœud, luimême, a généré. Là encore, le dispositif de coordination peut ne pas affecter le premier dispositif de nœud 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 nœud d’achever sa réalisation de la tâche de la routine d’analyse indépendante de sorte que le deuxième dispositif de nœud 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 nœud 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 nœud.
[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 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 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 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.
[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 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 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 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 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. H 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 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 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 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.
[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 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 à 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 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 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 à 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 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
ΡΡΤΠΠΑ41 FRl.?ni7 Π» 7R_ÇPFC-Tr»n«l FP 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 » (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 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 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 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, 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 Γ 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.
[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 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, 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 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 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 sousroutine, 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 ê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, 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 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).
[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 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 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, 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 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 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 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 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 œuvre par les batteries de serveurs. Par exemple, des 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 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 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 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.
[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. Comme autre exemple, les données peuvent être traitées dans le cadre de l’environnement informatique 114.
[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 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). Lin réseau sans fil peut comprendre une interface sans fil ou une combinaison 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 œuvre au moyen de routeurs, de points d’accès, de ponts, de passerelles, ou 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 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) 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 comme aux analyses en temps réel (par exemple ESP). Cela sera décrit plus loin à propos de la figure 2.
[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 transmissionll8. La grille de communications 120 peut être un système informatique à base de grille permettant de traiter d’importantes quantités de 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 nœuds de 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 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 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 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.
[00100] Bien que les périphériques réseau 204-209 soient représentés sur la figure 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 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 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, 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 (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 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 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 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 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 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 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 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 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 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 é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, 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 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), 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.
[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 é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 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 à 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
DCT ΛΠΖ Λ 1 Έ7Γ>1 1Λ1 Π ΠΟ ΊΟ CTïlC/' Γ7Γ>
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. [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 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 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 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 interré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 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 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 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, 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 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 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 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 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 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 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 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 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 é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 liaison gère les communications de nœud à nœud, 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).
[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 nœuds d’un même réseau (par exemple un environnement informatique de type grille). La 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 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.
[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.
[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 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 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 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.
[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 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 œuvre 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 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 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 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 nœud peut déterminer la façon dont les données au sein de l’environnement doivent être routées (par exemple quel nœud doit recevoir 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 œuvre comme indiqué sur le protocole de la 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é avec des charges de travail non interactives lorsque les données résident en mémoire sur les machines, ou les nœuds 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 nœuds. Les données sont co-localisées en étant prédistribuées sur les nœuds de la grille, et le code analytique de chaque nœud charge les données locales en mémoire. Chaque nœud peut être affecté à une tâche particulière telle qu’une partie d’un projet de traitement, ou pour organiser ou commander d’autres nœuds dans la grille.
[00121] La figure 4 représente un système informatique de type grille de communications 400 comprenant une variété de nœuds 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 nœuds de commande et un ou plusieurs nœuds de travail. Le système informatique de type grille de communications 400 comprend des nœuds de commande 402, 404, et 406. Les nœuds de commande sont reliés de manière communicative via des trajets de communication 451, 453, et 455. Par conséquent, les nœuds 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 représenté sur la figure 4 comme comprenant trois nœuds de commande, la grille de communications peut comprendre plus de trois nœuds 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 nœuds de travail. Sur la figure 4 sont représentés six nœuds de travail 410-420. Bien que la figure 4 montre six nœuds de travail, une grille de communications selon des modes de réalisation de la présente technologie peut comprendre plus de six nœuds de travail, ou moins. Le nombre de nœuds 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 nœud de travail, du temps octroyé à la grille de communications pour finir le projet, entre autres. Chaque nœud de travail dans la grille de communications 400 peut être relié (de manière filaire ou sans fil, et directement ou indirectement) aux nœuds de commande 4023055438
406. Par conséquent, chaque nœud de travail peut recevoir des informations des nœuds de commande (par exemple une instruction pour réaliser un travail sur un projet) et peut transmettre des informations aux nœuds de commande (par exemple un résultat d’un travail réalisé sur un projet). En outre, les nœuds de travail peuvent communiquer les uns avec les autres (directement ou indirectement). Par exemple, les nœuds 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 nœud de travail en question. Cependant, dans certains modes de réalisation, des nœuds de travail peuvent, par exemple, ne pas être reliés (de manière communicative ou autrement) à certains autres nœuds de travail. Dans un mode de réalisation, des nœuds de travail peuvent être à même de communiquer uniquement avec le nœud de commande qui les commande, et peuvent ne pas être à même de communiquer avec d’autres nœuds de travail de la grille de communications, qu’il s’agisse d’autres nœuds de travail commandés par le nœud de commande qui commande le nœud de travail, ou de nœuds de travail qui sont commandés par d’autres nœuds de commande de la grille de communications.
[00123] Un nœud de commande peut être relié à un dispositif externe avec lequel le nœud 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 exemple, un serveur ou un ordinateur peut être relié à des nœuds de commande et peut transmettre un projet ou un travail au nœud. Le projet peut comprendre un ensemble de données. L’ensemble de données peut être d’une taille quelconque. Une fois que le nœud de commande a reçu ce projet comprenant un gros ensemble de données, le nœud de commande peut distribuer l’ensemble de données ou les projets liés à l’ensemble de données à réaliser par les nœuds 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 nœud de commande (par exemple un nœud de données Hadoop employant un système de fichiers distribués Hadoop, ou HDES).
[00124] Des nœuds de commande peuvent avoir connaissance de l’état des nœuds 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 nœuds de travail, coordonner les nœuds de travail, entre autres responsabilités. Des nœuds de travail peuvent accepter des demandes de travail émanant d’un nœud de commande et fournir au nœud de commande des résultats du travail effectué par le nœud de travail. Une grille peut démarrer à partir d’un seul nœud (par exemple une machine, un ordinateur, un serveur, etc.). Ce premier nœud peut être affecté ou peut démarrer en tant que nœud de commande primaire qui va commander tous les nœuds 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 nœuds. Après que les nœuds 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 nœud. Une poignée de communication peut être créée sur chaque nœud. Une poignée, par exemple, est une référence au communicateur qui est valable dans un seul processus sur un seul nœud, et la poignée peut être utilisée lors d’une demande de communications entre des nœuds.
[00126] Un nœud de commande, tel que le nœud de commande 402, peut être désigné comme nœud de commande primaire. Un serveur, un ordinateur ou autre dispositif externe peut être relié au nœud de commande primaire. Une fois que le nœud de commande a reçu un projet, le nœud de commande primaire peut distribuer des parties du projet à ses nœuds de travail pour exécution. Par exemple, lorsqu’un projet est lancé sur la grille de communications 400, un nœud de commande primaire 402 commande le travail à réaliser pour le projet afin de terminer le projet comme demandé ou ordonné. Le nœud de commande primaire peut distribuer du travail aux nœuds 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 nœud de travail peut effectuer une analyse sur une partie des données qui est déjà locale au nœud de travail (par exemple stockée sur celui-ci). Le nœud de commande primaire coordonne et traite également les résultats du travail réalisé par chaque nœud de travail après que chaque nœud de travail a exécuté et terminé son travail. Par exemple, le nœud de commande primaire peut recevoir un résultat d’un ou plusieurs nœuds de travail, et le nœud de 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 rutilisateur final. [00127] Tous les nœuds de commande restants, tels que les nœuds de commande 404 et 406, peuvent être affectés comme nœuds de commande de secours pour le projet. Dans un mode de réalisation, les nœuds de commande de secours ne peuvent commander aucune partie du projet. En revanche, les nœuds de commande de secours peuvent servir de secours pour le nœud de commande primaire et prendre sa place comme nœud de commande primaire si le nœud de commande primaire est défaillant. Si une grille de communications n’inclut qu’un seul nœud de commande, et que le nœud de commande connaît une défaillance (par exemple le nœud 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 certains cas, par exemple toute une nuit de retard) dans l’achèvement du projet. Par conséquent, une grille à plusieurs nœuds de commande, comprenant un nœud de commande de secours, peut être bénéfique.
[00128] Pour ajouter un autre nœud ou une autre machine à la grille, le nœud de commande primaire peut ouvrir une paire de sockets (connecteurs logiciels) 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 nœuds de la grille). Le nœud de commande primaire peut recevoir une liste d’autres nœuds (par exemple d’autres machines, ordinateurs, serveurs) qui vont participer à la grille, et du rôle que chaque nœud va remplir dans la grille. Au démarrage du nœud de commande primaire (par exemple le premier nœud de la grille), le nœud de commande primaire peut utiliser un protocole de réseau pour démarrer le processus serveur sur chaque autre nœud de la grille. Des paramètres de ligne de commande, par exemple, peuvent communiquer à chaque nœud une ou plusieurs informations, telles que : le rôle qu’aura le nœud dans la grille, le nom d’hôte du nœud de commande primaire, le numéro de port sur lequel le nœud de commande primaire accepte des liaisons de nœuds homologues, entre autres. Les informations peuvent également être fournies dans un fichier de configuration, 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 nœud par le nœud de commande primaire. Des mises à jour des informations de grille peuvent également être envoyées ultérieurement à ces nœuds.
[00129] Pour tout nœud de commande autre que le nœud de commande primaire ajouté à la grille, le nœud de commande peut ouvrir trois sockets. Le premier socket peut accepter des demandes de travail émanant de clients, le deuxième socket peut accepter des liaisons d’autres membres de la grille, et le troisième socket peut être relié (par exemple de façon permanente) au nœud de commande primaire. Lorsqu’un nœud de commande (par exemple un nœud de commande primaire) reçoit une liaison d’un autre nœud de commande, il commence par voir si le si le nœud homologue figurer dans la liste des nœuds configurés de la grille. S’il ne figure pas dans la liste, le nœud 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 nœud authentificateur peut transmettre des informations à ses homologues, telles que le numéro de port sur lequel un nœud est à l’écoute de liaisons, le nom d’hôte du nœud, des informations sur la façon d’authentifier le nœud, entre autres informations. Lorsqu’un nœud, tel que le nouveau nœud de commande, reçoit des informations à propos d’un autre nœud actif, il va vérifier s’il a déjà une liaison avec cet autre nœud. S’il n’a pas de liaison avec ce nœud, il peut alors établir une avec liaison le nœud de commande en question.
[00130] Tout nœud de travail ajouté à la grille peut établir une liaison au nœud de commande primaire et à d’éventuels autres nœuds 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 nœuds de commande, comprenant à la fois des nœuds primaires ou de secours, ou d’un serveur ou d’un utilisateur commandant la grille). Une fois l’authentification réussie, le nœud de travail peut accepter des informations de configuration provenant du nœud de commande.
[00131] Lorsqu’un nœud rejoint une grille de communications (par exemple lorsque le nœud est activé sur un nœud existant de la grille ou relié à celui-ci ou les deux), le nœud 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 nœuds et entités externes (dispositifs, utilisateurs, etc.) à identifier le nœud et à le distinguer des autres nœuds. Lorsqu’un nœud est relié à la grille, le nœud peut partager son identifiant unique avec les autres nœuds de la grille. Comme chaque nœud peut partager son identifiant unique, chaque nœud peut connaître l’identifiant unique de tous les autres nœuds de la grille. Des identifiants uniques peuvent également designer une hiérarchie de chacun des nœuds (par exemple des nœuds de commande de secours) de la grille. Par exemple, les identifiants uniques de chacun des nœuds de commande de secours peuvent être stockés dans une liste de nœuds de commande de secours pour indiquer un ordre dans lequel les nœuds de commande de secours vont prendre le relais d’un nœud de commande primaire défaillant pour devenir un nouveau nœud de commande primaire. Cependant, une hiérarchie de nœuds peut également être déterminée en utilisant des méthodes autres que l’utilisation des identifiants uniques des nœuds. 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 nœud de commande). Pour ajouter un nouveau nœud à la grille, le nœud de commande peut commencer par ajouter le nouveau nœud à sa table de nœuds de grille. Le nœud de commande peut également notifier ensuite tous les autres nœuds de commande de l’existence du nouveau nœud. Les nœuds recevant la notification peuvent reconnaître qu’ils ont mis à jour leurs informations de configuration.
[00133] Le nœud de commande primaire 402 peut, par exemple, transmettre une ou plusieurs communications aux nœuds de commande de secours 404 et 406 (et, par exemple, à d’autres nœuds 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 nœud de commande primaire 402 peuvent être de types variés et peuvent comprendre divers types d’informations. Par exemple, le nœud de commande primaire 402 peut transmettre des clichés (par exemple des informations d’état) de la grille de communications de sorte que le
T'»T“T' ΛΛΑ A 1 nœud 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 nœuds de travail de la grille, les identifiants uniques des nœuds, ou leurs relations avec le nœud de commande primaire) et l’état d’un projet (comprenant, par exemple, l’état de la partie du projet de chaque nœud de travail). Le cliché peut également inclure une analyse ou des résultats reçus des nœuds de travail de la grille de communications. Les nœuds de commande de secours peuvent recevoir et stocker les données de secours reçues du nœud de commande primaire. Les nœuds de commande de secours peuvent transmettre une demande d’un tel cliché (ou d’autres informations) émanant du nœud de commande primaire, ou le nœud de commande primaire peut envoyer ces informations périodiquement aux nœuds de commande de secours.
[00134] Comme on l’aura noté, les données de secours peuvent permettre au nœud de commande de secours de prendre le relais comme nœud de commande primaire en cas de défaillance du nœud de commande primaire, sans obliger la grille à redémarrer le projet depuis le début. Si le nœud de commande primaire est défaillant, le nœud de commande de secours qui va prendre le relais comme nœud de commande primaire peut extraire la version la plus récente du cliché reçu du nœud de commande primaire et utiliser le cliché pour poursuivre le projet à partir du stade du projet indiqué par les données de secours. Cela peut éviter un échec du projet dans son ensemble.
[00135] Un nœud de commande de secours peut utiliser divers procédés pour déterminer que le nœud de commande primaire est défaillant. Dans un exemple d’un tel procédé, le nœud de commande primaire peut transmettre (par exemple périodiquement) une communication au nœud de commande de secours, qui indique que le nœud de commande primaire fonctionne et n’a pas connu de défaillance, telle qu’une communication de type battement de cœur. Le nœud de commande de secours peut déterminer que le nœud de commande primaire a connu une défaillance si le nœud de commande de secours n’a pas reçu de communication de type battement de cœur pendant un certain laps de temps prédéterminé. En variante, un nœud de commande de secours peut également recevoir une communication émanant du nœud de commande primaire lui-même (avant sa défaillance) ou d’un nœud de travail que le nœud de commande primaire a connu une défaillance, par exemple du fait que le nœud de commande primaire n’a pas communiqué avec le nœud de travail.
[00136] Différent procédés peuvent être effectués pour déterminer quels nœud de commande de secours d’un ensemble de nœuds de commande de secours (par exemple les nœuds de commande de secours 404 et 406) vont prendre le relais du nœud de commande primaire défaillant 402 et devenir le nouveau nœud de commande primaire. Par exemple, le nouveau nœud de commande primaire peut être choisi en fonction d’un classement ou d’une « hiérarchie » de nœuds de commande de secours basés sur leurs identifiants uniques. Dans un autre mode de réalisation, un nœud de commande de secours peut être affecté pour être le nouveau nœud 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). Dans un mode de réalisation encore différent, le nœud de commande de secours qui prend le relais comme nouveau nœud de commande primaire peut être désigné en fonction de la bande passante ou d’autres statistiques relatives à la grille de communications.
[00137] Un nœud de travail de la grille de communications peut également connaître une défaillance. En cas de défaillance d’un nœud de travail, un travail en train d’être réalisé par le nœud de travail défaillant peut être redistribué entre les nœuds de travail opérationnels. Dans un autre mode de réalisation, le nœud de commande primaire peut transmettre une communication à chacun des nœuds de travail utilisables toujours dans la grille de communications, que chacun des nœuds de travail doit également être délibérément défaillant. Une fois que chacun des nœuds 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.
[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 nœud, selon des modes de réalisation de 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 nœud de la grille de communications, comme expliqué à l’opération 502. Par exemple, un nœud de commande (par exemple un nœud de commande de secours relié à un nœud de commande primaire et à un nœud 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 nœud de commande primaire ou un état de projet du nœud de travail. L’état de projet du nœud de commande primaire et l’état de projet du nœud de travail peut comprendre un état d’une ou plusieurs parties d’un projet exécuté par les nœuds 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 nœud de commande (par exemple un nœud de commande de secours) peut stocker les informations d’état de grille reçues localement dans le nœud de commande. En variante, les informations d’état de grille peuvent être envoyées à un autre dispositif pour stockage lorsque le nœud 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 nœud de la grille de communications à l’opération 506. Par exemple, un nœud peut recevoir une communication de défaillance comprenant une indication que le nœud de commande primaire a connu une défaillance, invitant un nœud de commande de secours à prendre le relais du nœud de commande primaire. Dans un autre mode de réalisation, un nœud peut recevoir une communication de défaillance qu’un nœud de travail a connu une défaillance, invitant un nœud de commande à réaffecter le travail en train d’être réalisé par le nœud de travail. Le processus peut également inclure la réaffectation d’un nœud ou d’une partie du projet en train d’être exécuté par le nœud défaillant, comme expliqué à l’opération 508. Par exemple, un nœud de commande peut désigner le nœud de commande de secours comme nouveau nœud de commande primaire sur la base de la communication de défaillance lors de la réception de la communication de défaillance. Si le nœud défaillant est un nœud de travail, un nœud de commande peut identifier un état de projet du nœud de travail défaillant en utilisant le cliché de la grille de communications, lorsque l’état de projet du nœud de travail défaillant comprend un état d’une partie du projet en train d’être exécuté par le nœud 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, et transmettre un ensemble d’instructions basé sur les informations d’état de grille mises à jour à un ou plusieurs nœuds 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 nœud de commande primaire ou un état de projet mis à jour du nœud de travail. Les informations mises à jour peuvent être transmises aux autres nœuds 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 nœud de commande et un nœud de travail, selon des modes de réalisation de la présente technologie. Le système informatique de type grille de communications 600 comprend un nœud de commande (le nœud de commande 602) et un nœud de travail (le nœud de travail 610) à des fins d’illustration, mais il peut comprendre plusieurs nœuds de travail et/ou de commande. Le nœud de commande 602 est relié de manière communicative au nœud de travail 610 via un trajet de communication 650. Par conséquent, le nœud de commande 602 peut transmettre des informations (liées par exemple à la grille de communications ou aux notifications), au nœud 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 nœuds de traitement de données (le nœud de commande 602 et le nœud de travail 610). Les nœuds 602 et 610 comprennent des processeurs de données multi-cœurs. Chaque nœud 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 nœud et s’interface avec une mémoire tampon 622 également associée à ce nœud. Chaque nœud 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 nœud de commande 602 et sur un serveur de base de données (non représenté) au niveau du nœud de travail 610.
[00143] Chaque nœud 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 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 nœuds 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 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 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 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 nœud 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 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 en enregistrant les données dans une mémoire partagée à laquelle peuvent accéder l’UDF et le GESC.
[00145] Le GESC 620 des nœuds 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 nœuds 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 messages (MPI). Chaque GESC 620 peut s’engager dans une communication de point à point avec le GESC d’un autre nœud ou dans une communication collective avec plusieurs GESC via le réseau. Le GESC 620 de chaque nœud peut contenir des instructions logicielles identiques (ou quasi identiques). Chaque nœud peut être capable de fonctionner comme nœud de commande ou comme nœud de travail. Le GESC du nœud de commande 602 peut communiquer, sur un trajet de communication 652, avec un dispositif client 630. Plus spécifiquement, le nœud 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.
[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 nœud 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 nœud de commande 602 peut accepter des demandes de données et transférer les données correspondant à la demande. Grâce à ce processus, des collections de données peuvent être réparties entre plusieurs emplacements physiques. Dans cet exemple, chaque nœud 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 de données en utilisant des techniques de duplication. La duplication consiste à fournir une copie de secours des données stockées sur un nœud sur un ou plusieurs autres nœuds. Par conséquent, en cas de défaillance d’un nœud, les données provenant du nœud défaillant peuvent être récupérées d’une copie dupliquée résidant dans un autre nœud. Cependant, comme expliqué dans le présent document à propos de la figure 4, les données ou les informations d’état de chaque nœud de la grille de communications peuvent également être partagées avec chaque nœud de la grille.
[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 nœud de commande peut transmettre des données avec un 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 nœud 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 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 nœud de commande peut déterminer si la requête demande l’utilisation de l’environnement informatique à base de grille pour exécuter le projet. Si la détermination est non, alors le nœud de commande lance l’exécution du projet dans un environnement solo (par exemple au niveau du nœud de commande), comme expliqué à l’opération 710. Si la détermination est oui, le nœud 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 demande peut comprendre une configuration demandée de la grille. Par exemple, la demande peut comprendre un nombre de nœuds de commande et un nombre de nœuds de travail à utiliser dans la grille pour exécuter le projet. Une fois le projet terminé, le nœud 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 environnement solo ou dans un environnement à base de grille, le nœud 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 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 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 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 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 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 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 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 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 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 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 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 œuvre dans une ou plusieurs de machines 220 et 240 représentées sur la figure 2. L’ESPE peut être mis en œuvre dans une de ces machines par une application ESP. Une application ESP peut intégrer un ESPE avec son propre groupement ou ses propres 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 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 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 nœud de traitement dans un modèle de traitement de flux 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 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 nouveaux blocs évènements circulent en flux à travers l’ESPE 800. Un graphe orienté, par exemple, est un ensemble de nœuds 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 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 (BD) 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, 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 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 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 é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 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 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 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 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. 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 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 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 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.
[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.
[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 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 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élération, le potentiel électrique, ou le courant électrique, etc.). [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 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, 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 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.
[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 874ac, 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 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 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 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 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.
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 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 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.
[00166] L’ API de publication/abonnement fournit une connectivité multiplateforme 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 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 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
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é 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 ΓΑΡΙ 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 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 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 é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 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 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 d’abonnement à un évènement B 874b, et au dispositif d’abonnement à un évènement C 874c, respectivement.
[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 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é.
[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 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 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 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 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 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 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 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 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 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 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. 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 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 é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 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.
[00176] La figure 1 IA 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 nœud 1500 qui peuvent former une grille de dispositifs de nœuds 1005, et/ou un dispositif de visualisation 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 nœud 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é de manière plus détaillée, les dispositifs de nœud 1500 peuvent fonctionner ensemble en tant que grille 1005 sous le contrôle du dispositif de coordination 1300, chacun des multiples dispositifs de nœud 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 les multiples dispositifs de nœud 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 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 nœud 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 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 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 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, 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 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 œuvre une logique 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 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 nœud 1500 via le réseau 1999 avec le 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 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 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 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 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 nœud. À titre d’exemple, ces autres dispositifs peuvent effectuer une ou plusieurs opérations de 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 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 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 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 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 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 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 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 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 » (bigendiari) ou « petit-boutiste » (little-endiari), 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 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 nœud 1535, des données d’affectation 1330, des données de retard de tâche 1335, une routine de compilation 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 œuvre une logique permettant de réaliser diverses fonctions.
[00183] Dans divers modes de réalisation, chacun des dispositifs de nœud 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 nœud 1500 au réseau 1999. La mémoire 1560 peut stocker une routine de commande 1540, une ou plusieurs partitions d’ensemble de données 1131, une instance de l’état de nœud 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 opérant sur la CPU 1550 de chacun des dispositifs de nœud 1500 pour mettre en œuvre une logique permettant de réaliser diverses fonctions. Dans des modes de réalisation dans lesquels plusieurs des dispositifs de nœud 1500 sont utilisés ensemble en tant que grille de dispositifs de nœuds 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 nœud 1500 pour réaliser diverses fonctions au moins partiellement en parallèle avec les CPU 1550 d’autres dispositifs de nœud 1500.
[00184] Au moins un sous-ensemble des dispositifs de nœud 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 intégrer une séquence d’instructions opérant sur le GPU 1650 de chacun des dispositifs de nœud 1600 qui intègre le contrôleur graphique 1600 pour mettre en œuvre une logique permettant de réaliser diverses fonctions. Dans des modes de réalisation dans lesquels plusieurs des dispositifs de nœud 1600 sont utilisés ensemble en tant que grille de dispositifs de nœuds 1005, la séquence d’instructions de la routine de commande 1640 peut opérer sur le GPU 1650 du contrôleur graphique 1600 de chacun de ces dispositifs de nœud 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 nœud 1500.
[00185] Comme on le voit sur la figure 12, la mémoire 1560 peut se diviser en 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 œuvre 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 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 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 œuvre avec un ou plusieurs composants de mémoire non volatile 1564. Les un ou plusieurs composants de mémoire non 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 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 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 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 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 11 A, dans divers modes de réalisation, le 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 commande 1840 peut intégrer une séquence d’instructions opérant sur le processeur 1850 pour mettre en œuvre une logique permettant de réaliser diverses fonctions. Le processeur 1850 peut être amené par son exécution de la routine de commande 1840 à utiliser l’interface réseau 1890 pour recevoir les données de résultats 1830 d’un des dispositifs de nœud 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 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 nœud 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 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 nœud 1500 de la grille de dispositifs de nœuds 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.
[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 nœud 1500 de l’autre mode de réalisation type de la figure 11B peuvent assurer directement la fonction de 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 11 A.
[00190] En ce qui concerne les deux modes de réalisation des figures 11A et 1 IB, il convient de noter que dans certains modes de réalisation, les fonctions réalisées par le dispositif de coordination 1300 peuvent être réalisées par l’un des dispositifs de nœud 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
1300). Dans ces modes de réalisation, ledit un des dispositifs de nœud 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 nœud 1500 dans des modes de réalisation dans lesquels les dispositifs de nœud 1500 assurent la fonction de stockage des un ou plusieurs dispositifs de stockage 1100). En outre, ledit un des dispositifs de nœud 1500 peut également recevoir les états de nœud 1535 d’autres dispositifs de nœud 1500. En outre, ledit un des dispositifs de nœud 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 nœud 1500.
[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 ê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 nœud 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.
[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 processeur 1350 peut également être amené à recevoir, des dispositifs de nœud 1500, les états de nœud 1535 indicatifs de ressources de traitement, de stockage et/ou d’accès réseau intégrées dans chacun des dispositifs de nœud 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 nœud 1535 pour obtenir des affectations initiales d’au moins une tâche initiale de la routine d’analyse 1210 à des dispositifs de nœud donnés 1500, ainsi qu’une distribution initiale des partitions d’ensemble de données 1131 aux dispositifs de nœud 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 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 nœud 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 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 nœud 1500. Le processeur 1350 peut ensuite être amené à distribuer les 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 nœud 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 nœud donnés 1500 peut recevoir et stocker les 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, 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 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 nœud 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 pour réaliser une tâche avec l’au moins une partition d’ensemble de données reçue 1131.
[00195] Indépendamment du fait que la CPU 1550 ou un GPU 1650 de chaque dispositif de nœud 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 nœud correspondant 1535 avec des 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 nœud 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 nœud correspondant 1535 au dispositif de coordination 1300.
[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 nœud 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 nœud 1500 pour déterminer le temps nécessaire pour achever diverses tâches. Le 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 nœud 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 plusieurs tâches suivantes à un ou plusieurs des dispositifs de nœud 1500.
[00197] Ces retards dans l’affectation de tâches suivantes peuvent permettre d’affecter ces tâches suivantes à certains des dispositifs de nœud 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 nœud 1500. En 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 partitions d’ensemble de données particulières 1131 étaient initialement affectées à des dispositifs de nœud 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 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 nœud 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. [00198] Si l’on se reporte à la figure 13B, l’affectation de tâches à certains des dispositifs de nœud 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 nœud 1500 sélectionnés, plutôt que dans le dispositif de coordination 1300. Plus spécifiquement, en obtenant les affectations initiales d’au moins une tâche initiale de la routine d’analyse 1210 aux dispositifs de nœud 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 nœud 1500 sélectionnés, au lieu des routines de tâche de CPU 1571 ou des routines de tâche de GPU 1671. La CPU 1550 de chacun des nœuds 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 nœud 1500 sélectionnés, au lieu de voir le processeur 1350 du dispositif de coordination 1300 le faire.
[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 nœud 1500 de la grille de dispositifs de nœuds 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 1135 d’un ensemble de données 1130 et/ou des états de nœud 1535 fournis par les dispositifs de nœud 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 nœud 1500 sélectionnés.
[00200] Si l’on se reporte à la figure 14A, comme le montre l’illustration, la 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 les états de nœud 1535 qui peuvent être transmis de façon récurrente par chacun des dispositifs de nœud 1500 de la grille de dispositifs de nœuds 1005 via le réseau 1999. Dans certains modes de réalisation, chacun des dispositifs de nœud 1500 peut transmettre de façon récurrente un état de nœud 1535 à intervalle de temps régulier, et indépendamment des autres activités en cours, comme une forme de « signal de battement de cœur » 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 nœud 1535 par le dispositif de coordination 1300 en provenance d’un dispositif de nœud 1500 au moment où il est attendu peut être considéré comme une indication d’un dysfonctionnement par le dispositif de nœud 1500 de sorte que les ressources du dispositif de nœud peuvent être réputées indisponibles, et toute tâche actuellement affecté à ce dernier peut être réaffectée à un autre dispositif de nœud 1500.
[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 dispositifs de nœud 1500 de la grille de dispositifs de nœuds 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 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 11 A), 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 de réalisation dans lesquels le système de traitement distribué 1000 n’inclut pas ces dispositifs de stockage distincts et les dispositifs de nœud 1500 fournissent un stockage distribué des ensembles de données 1130 (tels que le système de traitement 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 nœud 1500.
[00202] Dans d’autres modes de réalisation encore, le dispositif de visualisation 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 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 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 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 nœud 1535 peuvent spécifier quelles ressources de traitement, de stockage et/ou d’accès réseau sont intégrées dans chaque dispositif de nœud 1500. Comme cela a été expliqué, les états de nœud 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 nœud 1535 peuvent fournir des indications 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 nœud 1500.
Ainsi, les états de nœud 1535 peuvent, pour chaque dispositif de nœud 1500, 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 cœurs de traitement, et/ou la quantité de fils d’exécution pouvant être exécutés par cœur 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 nœud 1500 dans la grille de dispositifs de nœuds 1005 qui emploient une variété de processeurs différents entre eux. En même temps que des informations concernant les ressources de traitement intégrées dans chacun des dispositifs de nœud 1500, les états de nœud 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 nœud 1500), les niveaux actuels d’utilisation de fils, et/ou les niveaux actuels d’utilisation d’autres caractéristiques de traitement particulières (par exemple les niveaux d’utilisation d’éventuels cœurs 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 nœud 1535 peuvent fournir des indications des capacités de stockage de la mémoire volatile 1561 et/ou 1661, et/ou de la mémoire non volatile 1563 qui peuvent être intégrées dans chacun des dispositifs de nœud 1500. Ainsi, les états de nœud 1535 peuvent, pour chaque dispositif de nœud 1500, spécifier des quantités et/ou divers paramètres de composants de mémoire employés pour mettre en œuvre chacune des mémoires 1561, 1661 et/ou 1563 y compris, entre autres, les types d’interface utilisés, les tailles 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 nœud 1500, les états de nœud 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.
[00207] Encore à titre d’exemple, les états de nœud 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 dispositifs de nœud 1500. Ainsi, les états de nœud 1535 peuvent, pour chaque dispositif de nœud 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 dans chacun des dispositifs de nœud 1500, les états de nœud 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 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 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 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, 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 nœud 1500 auxquels les partitions d’ensemble de données 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 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 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 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 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 œuvre 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 sousensemble 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 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 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
100 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 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 nœud 1535, les métadonnées 1135 et/ou des 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 nœud 1500, et une distribution initiale d’au moins une partition d’ensemble de données 1131 à chacun des dispositifs de nœud 1500 sélectionnés. Pour obtenir ces affectations initiales, le processeur 1350 peut être amené à obtenir initialement la 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 nœud 1500 actuellement indiqués comme ayant des ressources de stockage suffisantes dans les états de nœud 1535. Le processeur 1350 peut être 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 nœuds 1500 auxquels affecter une ou plusieurs tâches initiales en fonction des indications des états de nœud 1535 concernant ceux des dispositifs de nœud 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 nœud 1500 sélectionnés, le processeur 1350 peut stocker des indications de ces affectations initiales en tant qu’élément des données d’affectation 1330.
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 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, 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 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 nœud 1500 peut employer une architecture de traitement interne jugée adaptée au 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 cœurs de traitement 1555 (si l’on se reporte à la figure 12) qui peuvent chacun prendre en 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 nœud 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 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
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.
[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 1550 des dispositifs de nœud 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 œuvre au moyen de l’ensemble d’instructions plus limité des GPU 1650, un seul des GPU 1650 d’un seul des dispositifs de nœud 1500 peut être à même de réaliser le même travail qu’un grand nombre des CPU 1550 d’un grand nombre des nœuds 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 nœud 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 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 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 é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
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 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 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 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 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 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 en œuvre 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.
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 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 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 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 œuvre en 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 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 nœud 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
105 exemple, les déclarations de la sous-routine income_statement_kemel et de la structure de données d_matrix_is ont été converties entre les langages de programmation FCMP et C.
/* Regisxer income statement fonctions*/ options ·ζ»ρΗώ»'.(;<ί8ΐόί:Χ&'..1 unes) ;
/* Initialize input data sets */ data work.policy_ds;
_VALUE_-.;
rtin;
data work.s cen_mort_ds;
_VALÜE_=.;
run;
data work.scen_lapse__ds;
_VALÜE_-.;
rua;
Rsmaero define is_kernel_fune ( language- 5 ;
*if filanguage - femp «fethen %do;
%put running as FCMP...;
proc feap outlib=datalib.funcs.is;
/* fonction to calculate the power of a number */ fonction pow(x,y3;
return{x**y); endsub;
subroutine incomê_stateroent-kernel(offset,index^scen,n_rows_per_sXicer n_scen_mort_cols>d_matrix_mort[38,4],n_scen_lapse_cols,d_matrix_lapse[38,4], rt_pol_rows, n_4>ol„coXs, d_mat r ix_pol [32S48t28], n_incsta_cols, d_mat rix_is [38,15] ) ;
outargs d_matrix_is;
/* Create a temporary array to hold aggregated income statement items and initialize it to ail 8 */ array is_temp[38,4î; do ndx_year=X to 38;
is_temp[ndx_year,X) - 8; is_tempindx_year,2] « S; isjtempindx_year,3l - 8; is_teropindx_year,4j =8; 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 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é
Nvidia basée à Santa Clara, CA, aux Etats-Unis, fournisseur des GPU qui peuvent être employés comme GPU 1650.
106
Jjinrludfc «ftoat.h>
Sinclude «math,h» #include «stdio.h» #include «stdlib,h>
Mntlude «assert,h>
#irtclude «memory,h» _dévies voici incoffle_statement_kemel( double offset,double irtdex_scen,double n_rows_per_slice,double _devise void income_statement_kernel( double offset,double index_scen,double n_rows_per_slice,double double (* d_satrix_mort)f(î«t)ij = (double (*) Κίηί)4 )_i«X_d_matrix_iwjrt; double (* d_inaÎrix_lapse) Hint) -] = (double (*) t(int) »] )_ira_djnatrix_lapsej double (* djsatrix_pol)[(int), *] = (double (*) l(int). .] )_ira_d_raetrix_pol; double (* d_matrix_is) ((int):i ] = (double (*) ((int) )_in»_d_(natrix_is;
// subroutine incowe_statsBent_teroel{offset,xiîcÎex_scen,n_rows_per_slice, n_scen_mort_cols,d_aatrixjBor1 ft outargs d_jnatrix_is; *~ // array is_teop[30,4];
double is^tempL-i] [··] ;
// do ndx~year=l to 30; int ndx_year;
for(ndx_year=;j rtdx_year <= ndx_year++) { // is~temtp[ndx_year, 1J = 0; is_temp[(£nt}(ndx_year - i)]l(int)(i - 1)1 = â;
// is_temp[ndx_year,2} = 0;
is_terapl(int)(ndx_year - i)1i(int}U - i)J = // is_tee>p[ndx~year,3] = 0; is_temp((int)(ndx_year - )][(iflt)( - ;)] = // is_temp[ndx~yeart4J = 0; is_templ(int)(ndx_year - J )] l(int)(’, - 1)J = «; tf end;
} // attained_age = 1; double attained_age;
attained age - ;;
[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 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 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.
[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 œuvre comme l’une des routines de tâche 1211 au sein d’une routine d’analyse type
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 nœuds 1500), le temps résultant nécessaire à l’exécution a été mesuré comme étant 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 nœuds 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 offerts par la société Nvidia (par exemple un des GPU 1650 d’un des nœuds 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 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
[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
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 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 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 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 nœud 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 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 nœud 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 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 nœud 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 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
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 nœud 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 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 nœud 1500 sélectionnés. Dans ces modes de réalisation, chacun des dispositifs de nœud 1500 sélectionnés peut compiler de manière indépendante la ou les routines de tâche 1211 distribuées à chacun des nœuds 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 nœuds 1500 sélectionnés.
[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 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 nœud 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 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 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.
110 [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 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 quantité insuffisante de dispositifs de nœud 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 nœud 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 à une situation où un dispositif de nœud 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 nœud 1500 en question doit être réaffectée à un autre dispositif de nœud 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 nœuds 1005 peut comprendre un ensemble hétérogène de dispositifs de nœud 1500 qui intègrent différents GPU 1650 qui ne partagent pas un ensemble 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 GPU 1650 présents parmi les dispositifs de nœud 1500 de la grille de dispositifs de nœuds 1005.
m [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 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 nœud 1500 disponibles qui intègrent un quelconque GPU 1650. Plus spécifiquement, dans une situation dans laquelle les états de nœud 1535 actuels indiquent qu’absolument aucun des dispositifs de nœud 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 variante ou en outre, dans des modes de réalisation dans lesquels différent dispositifs de nœud 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 nœud 1535 indiquent que tous les GPU 1650 d’un des types sont 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.
[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 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
112 dispositifs de nœud 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 structurer et écrire les instructions qui mettent en œuvre 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 nœuds 1005 comprend des dispositifs de nœud 1500 qui intègrent différents GPU 1650 qui ne partagent pas un ensemble d’instructions, on évite en outre à ces collaborateurs de devoir structurer et écrire différentes versions d’instructions qui mettent en œuvre 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 type de la réalisation de tâches qui sont affectées à certains des dispositifs de nœud 1500 de la grille de dispositifs de nœuds 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 nœud 1500 type, et la figure 15B représente des aspects de la réalisation d’une tâche dans le dispositif de nœud type 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 de traitement distribué type 1000 de la figure 11 A), une ou plusieurs partitions d’ensemble de données 1131 peuvent être fournies aux dispositifs de nœud 1500 via le réseau 1999, notamment au dispositif de nœud 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 nœud 1500 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
113 dispositif de nœud type 1500 peut déjà être stockée dans le dispositif de nœud type 1500. Sinon, ces une ou plusieurs partitions d’ensemble de données 1131 peuvent être fournies au dispositif de nœud type 1500 via le réseau 1999 par un autre des dispositifs de nœud 1500.
[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 nœud 1500 sélectionnés. Dans ces modes de réalisation, et comme le montre l’illustration, chacun des dispositifs de nœud 1500 peut stocker la routine de compilation 1440 pour exécution par une CPU 1550 de chacun des dispositifs de nœud 1500. Ainsi, après réception d’une routine de tâche 1211 du dispositif de coordination 1300, une CPU 1550 du dispositif de nœud type 1500 peut exécuter la routine de compilation 1440 pour analyser d’abord la routine de tâche 1211 afin de 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 nœud type 1500. Cependant, si la 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 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 nœud 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 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.
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 de coordination 1300 ou dans le dispositif de nœud type 1500) à partir de la routine de tâche 1211 de la tâche initiale affectée au dispositif de nœud 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 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 nœud 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 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 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 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 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
115 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 ê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 nœud type 1500 pour transmettre de façon récurrente des indications mises à jour de l’état actuel des ressources de traitement, de stockage et/ou d’accès réseau du nœud type 1500 en tant qu’instances mises à jour de l’état de nœud 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 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 nœud 1535 transmis.
[00238] La figure 16 représente un mode de réalisation type d’une affectation de 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 nœud 1500 de la grille de dispositifs de nœuds 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 recevoir les états de nœud 1535 transmis de façon récurrente par les dispositifs de nœud 1500 de la grille de dispositifs de nœuds 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 affectées aux dispositifs de nœud 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
116 qu’il faut à chacun de plusieurs dispositifs de nœud 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 nœud 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 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 nœud 1500, des moyennes de différences relatives entre les temps nécessaires à chaque dispositif de nœud 1500 pour achever les tâches qui lui ont été affectées par rapport à d’autres dispositifs de nœud 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 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 nœud 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 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 nœud 1500 au travers de moyennes des différences relatives de temps, ces moyennes peuvent être employées par le processeur 1350 pour modifier chacun des laps de temps de retard pour un dispositif de nœud 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 nœud 1500 sélectionnés de la grille de dispositifs de nœuds 1005. Plus spécifiquement, les figures 17A-C représentent un triplet type de dispositifs de nœud 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
117 ce faire, chacun des dispositifs de nœud 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 nœud 1500x-z 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 trois dispositifs de nœud 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 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 nœud 1500.
[00242] Pour commencer par la figure 17A, chacun des trois dispositifs de nœud 1500x-z a été affecté à la réalisation de la première tâche avec une partition 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. En outre, chacun des trois dispositifs de nœud 1500x-z a été pourvu de sa partition correspondante des trois partitions d’ensemble de données 1131ax-az de l’ensemble 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 nœud 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 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 nœud 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 nœud 1500x pour que le dispositif de nœud 1500x 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 première tâche avec la partition d’ensemble de données 1131ax ait été achevée. Pour réaliser la première
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 nœud 1500x. En outre, des pages de ces deux partitions peuvent être échangé entre la 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 nœud 1500x.
[00244] Comme on le voit également sur l’illustration, un ou plusieurs processeurs du dispositif de nœud 1500y ont déjà achevé la réalisation de la première tâche avec la partition d’ensemble de données 1131ay de sorte que la partition d’ensemble de données 1131by a déjà été générée dans le dispositif de nœud 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 nœud 1500y a été affecté à la réalisation de la deuxième tâche avec la partition d’ensemble de données 1131ay pour générer une partition d’ensemble de données 1131cy de l’ensemble de données 1130c. Comme cela est représenté, les un ou plusieurs processeurs du dispositif de nœud 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 dispositif de nœud 1500y. De plus, il se peut que la réalisation de la deuxième tâche avec la partition d’ensemble de données 1131ay consomme suffisamment de ressources de traitement et/ou de stockage du dispositif de nœud 1500y pour que le dispositif de nœud 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 1131ay ait été achevée. Par suite de la réalisation de la première tâche avec la partition d’ensemble de données 1131ay pour générer la partition d’ensemble de données 1131by, au moins un sous-ensemble de la partition 1131by peut rester stocké dans la mémoire non volatile 1563 du dispositif de nœud 1500y pendant un 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
119 volatile 1563 du dispositif de nœud 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 dispositif de nœud 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 nœud 1500z ont déjà achevé la réalisation de la première tâche avec la partition d’ensemble de données 1131az de sorte que la partition d’ensemble de données 1131bz a déjà été générée dans le dispositif de nœud 1500z, puis transmise aux un ou plusieurs dispositifs de stockage 1100 pour stockage. De même, les un ou plusieurs processeurs du dispositif de nœud 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 partition d’ensemble de données 113lez a également déjà été générée dans le dispositif de nœud 1500z, puis transmise aux un ou plusieurs dispositifs de stockage 1100 pour stockage. Ainsi, contrairement aux dispositifs de nœud 1500x et 1500y, le dispositif de nœud 1500z peut être jugé comme ayant suffisamment de ressources de traitement et de stockage disponibles pour que le dispositif de nœud 1500z soit 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 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 1131az pour générer la partition d’ensemble de données 113 lez, au moins un sous-ensemble d’une ou plusieurs des partitions d’ensemble de données 1131az, 1131bz et 113lez peut rester stocké dans la mémoire non volatile 1563 du dispositif de nœud 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 113lez peuvent être toujours stockées dans l’une ou l’autre des mémoires 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 nœud 1500z.
120
En revanche, il peut être peu probable qu’une quelconque page de la partition 113 lbz 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 nœud 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 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 nœud 1500x qui a été initialement pourvu de la partition d’ensemble de données 1131ax par les un ou plusieurs dispositifs de stockage 1100. Par conséquent, la partition d’ensemble de données 1131ax est déjà stockée dans la mémoire non volatile 1563 du dispositif de nœud 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 nœud 1500x peut être affecté à la réalisation de la 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 nœud 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 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 nœud 1500x, et l’affectation de la réalisation de la deuxième tâche avec la partition d’ensemble de données 1131ax au dispositif de nœud 1500x relativement rapidement après le dispositif de nœud 1500x a achevé sa réalisation de la première tâche permet de tirer 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 nœud 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 nœud 1500z pour être affecté à la réalisation de la deuxième tâche avec la partition d’ensemble de données 1131ax, le dispositif de nœud 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
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 1131ax à l’un quelconque des dispositifs de nœud 1500x-z pendant un laps de temps pour offrir l’occasion au dispositif de nœud 1500x d’achever sa réalisation de la première tâche avec la 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 nœud 1535 reçus de façon récurrente du temps qu’ont mis un ou plusieurs nœuds pour achever la même tâche dont l’affectation est retardée (par exemple en fonction d’une moyenne générée à partir des temps nécessaires à un ou plusieurs nœuds 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 nœud auquel on offre l’occasion d’achever une tâche et les temps nécessaires à d’autres nœuds pour achever la même tâche. Là encore, la prise 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 nœud 1500. Ainsi, dans l’exemple des figures 17A-C, la durée du retard permettant d’offrir au dispositif de nœud 1500x l’occasion d’achever la première tâche avec la partition d’ensemble de données 1131ax peut s’appuyer sur le temps qu’il a fallu à l’un des dispositifs de nœud 1500y et 1500z ou aux deux pour achever la première tâche avec leurs partitions respectives d’ensemble de données 1131 ay et 1131az (par exemple une moyenne de ceux-ci), et/ou sur des différences entre le temps nécessaire au dispositif de nœud 1500x pour achever des tâches et les temps nécessaires aux dispositifs de nœud 1500y et/ou 1500z pour achever les 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 nœud 1550x-z est obtenue, le processeur 1350 du dispositif de coordination 1300 peut employer une horloge 1351 qui peut ê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
122 de nœud 1500x ait pu achever sa réalisation de la première tâche avec la partition d’ensemble de données 1131ax, 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 nœud 1500z. En revanche, comme on le voit sur la figure 17C, si le dispositif de nœud 1500x achève sa réalisation de la première tâche avec la partition d’ensemble de données 1131ax 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 nœud 1500x. Là encore, cette affectation de la deuxième tâche avec la partition d’ensemble de données 1131ax au dispositif de nœud 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.
[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 nœud 1500 sélectionnés de la grille de dispositifs de nœuds 1005. Plus spécifiquement, les figures 18A-C représentent le même triplet type de dispositifs de nœud 1500x, 1500y et 1500z réalisant une 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 nœud 1500x-z types doit générer encore un autre ensemble de données type 1130c. Comme pour les figures 17A-C, il convient de noter que cet exemple basé uniquement sur trois dispositifs de nœud 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 nœud 1500x-z, est un autre 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. 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
123 plus gros, et par conséquent, qu’ils soient susceptibles de comporter l’utilisation d’un nombre nettement plus élevé des dispositifs de nœud 1500.
[00251] Pour commencer par la figure 18A, chacun des trois dispositifs de nœud 1500x-z a été affecté à la réalisation de la première tâche avec une partition 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 nœud 1500x-z ont achevé tous les trois leur réalisation de la première tâche, et chacun a transmis sa partition correspondante 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 nœud 1500x-z a été pourvu de sa partition correspondante des trois partitions d’ensemble de données 1131ax-az de l’ensemble de données 1130a par les un ou plusieurs dispositifs de stockage 1100 via le réseau 1999.
[00252] Après avoir achevé la première tâche, chacun des dispositifs de nœud 1500y et 1500z a été affecté à la réalisation de la deuxième tâche avec les partitions d’ensemble de données 1131by et 1131bz que les dispositifs de nœud 1500y et 1500z, respectivement, ont générées par suite de leur réalisation de la première tâche. En revanche, après avoir achevé la première tâche le dispositif de nœud 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 nœuds 1005 est partagée au point que plusieurs routines d’analyse indépendantes sont réalisées en même temps au moyen des dispositifs de nœud 1500.
[00253] Comme cela est représenté, un ou plusieurs processeurs du dispositif de nœud 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. 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 nœud 1500x pour que le dispositif de nœud 1500x puisse être jugé comme n’ayant
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 1131ax pour générer la partition d’ensemble de données 1131bx, au moins un sous-ensemble de l’une ou des deux partitions 1131ax et 1131bx peut rester stocké dans la mémoire non volatile 1563 du dispositif de nœud 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 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 nœud 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 1131bx soit toujours stockée dans la mémoire volatile 1561 ou 1661.
[00254] Comme cela est représenté, un ou plusieurs processeurs du dispositif de nœud 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 nœud 1500y. De plus, il se peut que la réalisation de la deuxième tâche avec la partition d’ensemble de données 1131by consomme suffisamment de ressources de traitement et/ou de stockage du dispositif de nœud 1500y pour que le dispositif de nœud 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 1131ay ait été achevée. Par suite de la réalisation de la première tâche avec la partition d’ensemble de données 1131ay pour générer la partition d’ensemble de données 1131by, au moins un sousensemble de la partition 1131ay peut rester stocké dans la mémoire non volatile 1563 du dispositif de nœud 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 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 nœud 1500x. En outre, des pages de ces deux partitions d’ensemble de données
125 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 nœud 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 1131ay 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 nœud 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 données 113 lez a également déjà été générée dans le dispositif de nœud 1500z, puis transmise aux un ou plusieurs dispositifs de stockage 1100 pour stockage. Ainsi, contrairement aux dispositifs de nœud 1500x et 1500y, le dispositif de nœud 1500z peut être jugé comme ayant suffisamment de ressources de traitement et de stockage disponibles pour que le dispositif de nœud 1500z soit 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 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 1131bz 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 données 1131az, 1131bz et 113 lez peut rester stocké dans la mémoire non volatile 1563 du dispositif de nœud 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 113lez peuvent être toujours stockées dans l’une ou l’autre des mémoires 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 nœud 1500z. En revanche, il peut être peu probable qu’une quelconque page de la partition 1131az 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 représentent les traits en pointillé sur la figure 18B, le dispositif de nœud 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
126 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 nœud 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 volatile 1563 du dispositif de nœud 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 nœud 1500x) si le dispositif de nœud 1500x peut être affecté à la réalisation de la deuxième tâche avec la partition d’ensemble de données 1131bx. Ainsi, l’affectation de la réalisation de la deuxième tâche avec la partition d’ensemble de données 1131bx au dispositif de nœud 1500x relativement rapidement après le dispositif de nœud 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 1131bx dans la mémoire non volatile 1563 du dispositif de nœud 1500x, ce qui peut permettre au dispositif de nœud 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 nœud 1500z pour être affecté à la réalisation de la deuxième tâche avec la partition d’ensemble de données 1131bx, le dispositif de nœud 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 nœud 1500x-z pendant un laps de temps pour offrir l’occasion au dispositif de nœud 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 nœud 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 reporte à la figure 16) à affecter la réalisation de la deuxième tâche avec la partition d’ensemble de données 1131bx au dispositif de nœud 1500z. En revanche, comme on le voit sur la figure 18C, si le dispositif de nœud 1500x achève sa réalisation de la
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 1131bx au dispositif de nœud 1500x.
[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 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 nœud que le dispositif de coordination reçoit de façon récurrente des dispositifs de nœud d’une grille de dispositifs de nœud (par exemple les états de nœud 1535 des dispositifs de nœud 1500 de la grille de dispositifs de nœuds 1005) pour déterminer quelles ressources de traitement sont disponibles dans chacun des dispositifs de nœud. Comme cela a été expliqué, les états de nœud 1535 transmis de façon récurrente au dispositif de coordination 1300 par les dispositifs de nœud 1500 peuvent indiquer quelles ressources de traitement sont intégrées dans chacun des dispositifs de nœud 1500 (par exemple quel(les) CPU 1500 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 dispositifs de nœud 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 nœud comme étant suffisamment disponibles dans l’un quelconque des dispositifs de nœud pour qu’une tâche puisse être affectée à ces dispositifs de nœud pour être réalisée par ces GPU disponibles. Si 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 nœud (par exemple les routines de tâche 1211 d’une routine
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 nœud 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.
[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 nœud de la grille de dispositifs de nœuds. Si, à 2140, il n’existe 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 nœud. 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 nœud 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. 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 nœud 1500 qui intègrent seulement des CPU 1550, si possible, et/ou aux dispositifs de nœud 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 nœud 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 nœud 1500 de la grille de dispositifs de nœuds 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 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 nœud. À 2154, le processeur peut ensuite
129 privilégier l’affectation de toutes des tâches de la routine d’analyse aux dispositifs de nœud 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 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 nœud. À 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 nœud. À 2164, le processeur peut ensuite privilégier l’affectation de toutes des tâches de la routine d’analyse aux dispositifs de nœud 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 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 nœud 1500.
[00265] À 2210, une CPU d’un dispositif de nœud d’un système de traitement distribué (par exemple une CPU 1550 d’un des dispositifs de nœud 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 ou plusieurs GPU du dispositif de nœud (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 nœud 1500 peut le faire. En outre, cette compilation peut comprendre une analyse de chaque routine de tâche 1211 reçue par chacun des dispositifs de nœud 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.
130 [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 nœud. En revanche, si à 2220, la routine de tâche est candidate, alors à 2230, la CPU peut compiler la routine de tâche de la routine d’analyse destinée à être exécutée par les un ou plusieurs GPU du dispositif de nœud.
[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. 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] A 2310, 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 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 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 nœud des dispositifs de nœud d’une grille de dispositifs de nœud du système de traitement distribué (par exemple les états de nœud 1535 des dispositifs de nœud 1500 de la grille de dispositifs de nœuds 1005). Comme expliqué précédemment, dans des modes de réalisation dans lesquels les dispositifs de nœud 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 nœud 1500. [00269] A 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 nœud
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 aux dispositifs de nœud sélectionnés. Comme cela a été expliqué, la distribution de partitions d’ensemble de données aux dispositifs de nœud 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 nœud sélectionnés et/ou le dispositif de coordination de l’une quelconque de diverses manières en utilisant l’un quelconque d’une variété de protocoles pour amener à la transmission des partitions d’ensemble de données aux dispositifs de nœud sélectionnés.
[00270] À 2330, le processeur peut transmettre des indications aux dispositifs de nœud sélectionnés de l’affectation d’une première tâche à réaliser au niveau des dispositifs de nœud sélectionnés avec les partitions d’ensemble de données 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 nœud sélectionnés peut se faire dans le cadre du signalement d’affectations de tâches aux dispositifs de nœud sélectionnés.
[00271] À 2340, le processeur peut recevoir, d’un premier dispositif de nœud des dispositifs de nœud 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 nœud. Comme cela a été expliqué, ces indications peuvent être transmises au dispositif de coordination dans le cadre des transmissions récurrentes d’états de nœud 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 nœud sélectionnés, y compris le premier dispositif de nœud, pendant un laps de temps prédéterminé de retard pour offrir l’occasion à un deuxième dispositif de nœud des dispositifs de nœud 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
132 tâche suivante avec une partition d’ensemble de données particulière peut être pour permettre qu’un dispositif de nœud 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 dispositif de nœud en question en affectant la tâche suivante avec la partition d’ensemble de données particulière à ce dispositif de nœud. 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 nœud en attendant de cette manière que le dispositif de nœud en question devienne disponible.
[00273] À 2360, le processeur peut vérifier si le deuxième dispositif de nœud, 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 nœud est 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 de données au deuxième dispositif de nœud à 2362. En revanche, si le deuxième dispositif de nœud 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 de données au premier dispositif de nœud à 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 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 dispositif de nœud d’une grille de dispositifs de nœuds du système de traitement distribué (par exemple un des dispositifs de nœud 1500 de la grille de dispositifs de nœuds 1005) du fait que le dispositif de nœud en question a achevé sa réalisation
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). A 2412, le processeur peut déterminer le temps qui s’est écoulé entre sa transmission d’un signal au dispositif de nœud pour réaliser la tâche avec la partition d’ensemble de données, et la réception de l’indication du dispositif de nœud 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 nœud pour réaliser la même tâche avec leurs partitions correspondantes d’ensemble de données du même ensemble de données. A 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 une nouvelle affectation de tâche pour permettre l’achèvement de la tâche par un autre nœud. 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 nœud 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 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.
[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 nœud d’une grille de dispositifs de nœuds du système de traitement distribué (par exemple un des dispositifs de nœud 1500 de la grille de dispositifs de nœuds 1005), 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
134 dispositif de nœud. Comme cela a été expliqué, ces indications peuvent être transmises au dispositif de coordination dans le cadre des transmissions récurrentes d’états de nœud 1535.
[00279] À 2520, 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 du même ensemble de données à de quelconques dispositifs de nœud de la grille de dispositifs de nœuds, y compris le premier dispositif de nœud, pendant un laps de temps prédéterminé de retard pour offrir l’occasion à un deuxième dispositif de nœud de la grille de dispositifs de nœuds dans lequel la deuxième partition d’ensemble de données est déjà stockée de devenir disponible. À 2530, le processeur peut vérifier si le deuxième dispositif de nœud, 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 nœud est 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 de données au deuxième dispositif de nœud à 2532.
[00280] En revanche, si à 2530, le deuxième dispositif de nœud 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 nœud de la grille de dispositifs de nœuds qui a été pourvu de la deuxième partition d’ensemble de données pour préparer l’autre dispositif de nœud à servir de dispositif de nœud 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 de données au premier dispositif de nœud à 2542.
[00281] En revanche, si à 2540, il existe un autre dispositif de nœud de ce genre, alors le processeur peut vérifier à 2550 si une indication a été reçue que l’autre dispositif de nœud 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 d’affectation pour réaliser la deuxième tâche avec la deuxième partition d’ensemble de données au premier dispositif de nœud à 2542. Cependant, si cette indication que l’autre dispositif de nœud est actuellement disponible a été reçue, alors le processeur
135 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 nœud à 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 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-cœurs (que les cœurs 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. [00283] Cependant, dans un mode de réalisation spécifique, la CPU 1550 de chacun des un ou plusieurs dispositifs de nœud 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 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 nœud qui peut comprendre au moins un des GPU 1650 peut intégrer des fonctionnalités de fils d’exécution multiples et/ou plusieurs cœurs 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 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 œuvre les processeurs 1150, 1350, 1550, 1850 et/ou 1650 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
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 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, 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 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 (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, 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 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
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 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 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 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 nœud 1500 permettent le stockage d’un ou plusieurs ensembles de données 1130, peut être mise en œuvre avec un réseau redondant de disques indépendants (RAID) d’un niveau de RAID choisi de manière à procurer une 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 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 à 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.
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 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 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 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 œuvre avec des séquences d’instructions exécutées par un processeur correspondant parmi les processeurs (par exemple pour mettre en œuvre une pile de protocoles ou d’autres caractéristiques). Lorsque des câbles é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 (EEEE-802.3) ou IEEE-1394. Lorsque l’utilisation de transmissions sans fil est en jeu, 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, IEEE 802.11a, 802.1 lad, 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 Radio Service - GSM/GPRS), le CDMA/lxRTT, 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
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 œuvre avec plusieurs ports 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 traitement et/ou de stockage entre les dispositifs de nœud 1300, et/ou les architectures API employées pour prendre en charge les communications entre les dispositifs de nœud 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 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 œuvre 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 à 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 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 (opensource) permettant de stocker et d’analyser les big data dans un environnement 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,
140 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 œuvre sous forme de grappe multi-nœud Hadoop®, comme le sait l’homme du métier. Apache™ Hadoop® est un cadre logiciel ouvert (open5 source) pour l’informatique distribuée.
141

Claims (14)

  1. REVENDICATIONS
    1. Un procédé mis en œuvre par ordinateur comprenant :
    analyse d’un état actuel de ressources d’au moins un dispositif de nœud d’une pluralité de dispositifs de nœud pour déterminer une disponibilité d’au moins un processeur graphique (GPU) de l’au moins un dispositif de nœud 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 nœud 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 nœud ; et les ressources de l’au moins un dispositif de nœud 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 nœud ;
    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
    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 ê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 nœud pour permettre un accès à la partition d’ensemble de données par l’au moins un GPU ;
    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 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 nœud 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.
  2. 2. Le procédé mis en œuvre 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 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, 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.
    143
  3. 3. Le procédé mis en œuvre 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 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.
  4. 4. Le procédé mis en œuvre par ordinateur de la revendication 1, 2 ou 3, dans lequel :
    l’au moins une mémoire de l’au moins un dispositif de nœud 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 ;
    affectation de la partition d’ensemble de données à l’au moins un dispositif de nœud 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 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 ;
    affectation de la partition d’ensemble de données à l’au moins un dispositif de nœud 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 ;
    compilation de la première routine de tâche pour exécution par l’au moins une CPU ; et
    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 nœud 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.
  5. 5. Le procédé mis en œuvre par ordinateur de l’une quelconque des revendications 1 à 4, dans lequel :
    un dispositif de coordination coordonne le fonctionnement de la pluralité de dispositifs de nœud ;
    le dispositif de coordination reçoit de façon récurrente des mises à jour de l’état actuel provenant de chaque dispositif de nœud de la pluralité de dispositifs de nœud ; et analyse de l’état actuel pour déterminer la disponibilité de l’au moins un GPU de l’au moins un dispositif de nœud comprend l’identification, au niveau du dispositif de coordination, d’un dispositif de nœud de la pluralité de dispositifs de nœud qui intègre un GPU indiqué dans l’état actuel comme disponible.
  6. 6. Le procédé mis en œuvre 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 nœud comprend :
    analyse, au niveau du dispositif de coordination, d’une métadonnée indicative de caractéristiques structurelles de l’ensemble de 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 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.
    145
  7. 7. Le procédé mis en œuvre 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 transmission d’une indication de l’affectation de la partition d’ensemble de données à l’au moins un dispositif de nœud 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 nœud.
  8. 8. Le procédé mis en œuvre 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 nœud comprend l’analyse, par une CPU d’un dispositif de nœud, d’un état actuel du dispositif de nœud visant à déterminer si un GPU du dispositif de nœud est actuellement disponible, dans lequel :
    l’au moins une CPU comprend la CPU ;
    l’au moins un dispositif de nœud comprend le dispositif de nœud ; et l’au moins un GPU comprend le GPU.
  9. 9. Le procédé mis en œuvre par ordinateur de l’une quelconque des revendications 1 à 8, comprenant :
    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 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
    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 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 données à l’au moins un dispositif de nœud 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. 10. Le procédé mis en œuvre par ordinateur de la revendication 9, comprenant une 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. 11. Un appareil comprenant un processeur et une mémoire sur laquelle sont stockées 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. 12. L’appareil de la revendication 11, comprenant un dispositif de coordination configuré pour coordonner le fonctionnement de la pluralité de dispositifs de nœud.
  13. 13. L’appareil de la revendication 11 ou 12, dans lequel l’appareil comprend un dispositif de nœud de l’au moins un dispositif de nœud ;
    le dispositif de nœud comprend un GPU de l’au moins un
    GPU ; et le processeur comprend une CPU de l’au moins une CPU.
    147
  14. 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.
    1/32 i_ _i
    *0} „ C jc Φ as Ω.2.Φ C CF {fl £4 _,· •ro .. □ .c SJ ro a. 2.0 S -0) „ 3 jc œ ro 0.3.0) •c ,cr to MU «-MU '0) -C .(J) •413 EZ «fl> CL * CL *- CL *-
    2/32
FR1757193A 2016-08-25 2017-07-28 Compilation pour traitement parallele base sur gpu de dispositif de noeud Active FR3055438B1 (fr)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662379512P 2016-08-25 2016-08-25
US62379512 2016-08-25
US201662394411P 2016-09-14 2016-09-14
US62394411 2016-09-14
US15/422,285 US9760376B1 (en) 2016-02-01 2017-02-01 Compilation for node device GPU-based parallel processing

Publications (2)

Publication Number Publication Date
FR3055438A1 true FR3055438A1 (fr) 2018-03-02
FR3055438B1 FR3055438B1 (fr) 2022-07-29

Family

ID=59778869

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1757193A Active FR3055438B1 (fr) 2016-08-25 2017-07-28 Compilation pour traitement parallele base sur gpu de dispositif de noeud

Country Status (9)

Country Link
CN (1) CN107783782B (fr)
BE (1) BE1025002B1 (fr)
CA (1) CA2974556C (fr)
DE (1) DE102017213160B4 (fr)
DK (1) DK179709B1 (fr)
FR (1) FR3055438B1 (fr)
GB (1) GB2553424B (fr)
HK (1) HK1245439B (fr)
NO (1) NO343250B1 (fr)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111327921A (zh) * 2018-12-17 2020-06-23 深圳市炜博科技有限公司 视频数据处理方法及设备
CN109743453B (zh) * 2018-12-29 2021-01-05 出门问问信息科技有限公司 一种分屏显示方法及装置
CN110163791B (zh) * 2019-05-21 2020-04-17 中科驭数(北京)科技有限公司 数据计算流图的gpu处理方法及装置
CN111984322B (zh) * 2020-09-07 2023-03-24 北京航天数据股份有限公司 一种控制指令传输方法及装置
CN112783506B (zh) * 2021-01-29 2022-09-30 展讯通信(上海)有限公司 一种模型运行方法及相关装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8134561B2 (en) * 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US8549500B2 (en) * 2007-02-14 2013-10-01 The Mathworks, Inc. Saving and loading graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment
US8938723B1 (en) * 2009-08-03 2015-01-20 Parallels IP Holdings GmbH Use of GPU for support and acceleration of virtual machines and virtual environments
US8310492B2 (en) * 2009-09-03 2012-11-13 Ati Technologies Ulc Hardware-based scheduling of GPU work
US8769510B2 (en) * 2010-04-08 2014-07-01 The Mathworks, Inc. Identification and translation of program code executable by a graphical processing unit (GPU)
DE102013208418A1 (de) * 2012-05-09 2013-11-14 Nvidia Corp. Verfahren und System zur separaten Kompilierung von Geräte-Code, welcher in Host-Code eingebettet ist
US9152601B2 (en) * 2013-05-09 2015-10-06 Advanced Micro Devices, Inc. Power-efficient nested map-reduce execution on a cloud of heterogeneous accelerated processing units
EP2887219A1 (fr) * 2013-12-23 2015-06-24 Deutsche Telekom AG Système et procédé de programmation de tâches à réalité augmentée mobile
US9632761B2 (en) * 2014-01-13 2017-04-25 Red Hat, Inc. Distribute workload of an application to a graphics processing unit
US9235871B2 (en) * 2014-02-06 2016-01-12 Oxide Interactive, LLC Method and system of a command buffer between a CPU and GPU

Also Published As

Publication number Publication date
DK179709B1 (en) 2019-04-09
DK201770596A1 (en) 2018-03-12
NO20171277A1 (en) 2018-02-26
BE1025002B1 (fr) 2018-09-17
CN107783782A (zh) 2018-03-09
GB2553424B (en) 2018-11-21
NO343250B1 (en) 2018-12-27
GB2553424A (en) 2018-03-07
DE102017213160A1 (de) 2018-03-01
DE102017213160B4 (de) 2023-05-25
FR3055438B1 (fr) 2022-07-29
CA2974556C (fr) 2018-06-05
CA2974556A1 (fr) 2018-02-25
CN107783782B (zh) 2019-03-15
GB201712171D0 (en) 2017-09-13
BE1025002A1 (fr) 2018-09-14
HK1245439B (zh) 2019-12-06

Similar Documents

Publication Publication Date Title
BE1025002B1 (fr) Compilation pour traitement parallele base sur gpu de dispositif de noeud
US9760376B1 (en) Compilation for node device GPU-based parallel processing
Assunção et al. Big Data computing and clouds: Trends and future directions
EP3622388B1 (fr) Plateforme destinée au traitement collaboratif de tâches informatiques
US20200133977A1 (en) Staged training of neural networks for improved time series prediction performance
US9734473B2 (en) Computer-implemented system for hierarchical unconstraining in data processes
FR3000578A1 (fr) Systeme et procede de calcul partage utilisant une fourniture automatisee de ressources informatiques heterogenes
US20200042361A1 (en) Task completion using a blockchain network
US20150143327A1 (en) Project management tool
EP3786781A1 (fr) Systeme d&#39;aide a la conception d&#39;application d&#39;intelligence artificielle, executable sur des plateformes informatiques distribuees
Basak et al. Stream Analytics with Microsoft Azure: Real-time data processing for quick insights using Azure Stream Analytics
FR3105849A1 (fr) Procede et systeme de gestion d’autorisation pour une plateforme de gouvernance unifiee d’une pluralite de solutions de calcul intensif
Anjos et al. BIGhybrid: a simulator for MapReduce applications in hybrid distributed infrastructures validated with the Grid5000 experimental platform
US20230052612A1 (en) Multilayer processing engine in a data analytics system
Lin et al. Web3DP: A crowdsourcing platform for 3D models based on web3 infrastructure
Hall et al. Adapting ubicomp software and its evaluation
Quintero et al. IBM data engine for hadoop and spark
Kukreja et al. Data Engineering with Apache Spark, Delta Lake, and Lakehouse: Create scalable pipelines that ingest, curate, and aggregate complex data in a timely and secure way
Birk Design and Implementation of a Scalable Crowdsensing Platform for Geospatial Data
van Dam et al. Building the analysis in motion infrastructure
AjayKumar et al. Enhancing portable environment using cloud and grid
Barney CERN openlab explores new CPU/FPGA processing solutions
FR3069933B1 (fr) Procede de validation de mutualisation de briques applicatives sur une infrastructure informatique
Bastholm et al. Challenges of real-time processing in HPC environments: the ASKAP experience
Coffrin et al. The ISTI Rapid Response on Exploring Cloud Computing 2018

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLSC Publication of the preliminary search report

Effective date: 20211203

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7