OpenCL dans le Trading - page 4

 

AMD Developer Central : Présentation technique d'OpenCL. Épisode 2 : Qu'est-ce qu'OpenCL™ ? (a continué)



AMD Developer Central : Présentation technique d'OpenCL. Épisode 2 : Qu'est-ce qu'OpenCL™ ? (a continué)

Dans cette vidéo, Justin Hensley discute de la plate-forme et des modèles de mémoire d'OpenCL, qu'il est important de comprendre lors de l'utilisation d'OpenCL pour accélérer les applications. Il explique qu'un hôte est connecté à un ou plusieurs appareils OpenCL, tels que des GPU ou des processeurs multicœurs, qui ont des unités de calcul qui exécutent du code dans un modèle de données multiples à instruction unique. Les éléments de travail ont une mémoire privée, tandis que les groupes de travail ont une mémoire locale partagée, chaque appareil a une mémoire globale et constante, et les développeurs doivent gérer explicitement la synchronisation de la mémoire et des données pour obtenir des performances maximales. En outre, Hensley discute des objets OpenCL tels que les périphériques, les contextes, les files d'attente, les tampons, les images, les programmes, les noyaux et les événements, qui sont utilisés pour soumettre du travail aux périphériques, synchroniser et profiler les données. Enfin, il explique comment exécuter un programme OpenCL en trois étapes simples : créer des objets programme et noyau, créer des objets mémoire et créer des files d'attente de commandes avec des événements pour garantir le bon ordre d'exécution du noyau.

  • 00:00:00 Dans cette section, Justin Hensley explique les modèles de plate-forme et de mémoire d'OpenCL, qu'il est important de comprendre lors de l'utilisation d'OpenCL pour accélérer les applications. Un hôte est connecté à un ou plusieurs périphériques OpenCL (GPU, DSP ou processeur multicœur), qui ont des unités de calcul qui exécutent du code dans un modèle de données multiples à instruction unique. En termes de mémoire, le processeur hôte a une mémoire qui n'est accessible que par le CPU, tandis que le dispositif de calcul a une mémoire globale et constante (non synchronisée) et chaque élément de travail a sa propre mémoire privée à laquelle lui seul peut accéder. Les groupes de travail ont une mémoire locale partagée et les développeurs doivent explicitement gérer la synchronisation de la mémoire et des données s'ils veulent obtenir des performances maximales de leurs appareils. Enfin, Hensley aborde les objets OpenCL, tels que les périphériques, les contextes, les files d'attente, les tampons, les images, les programmes, les noyaux et les événements, qui sont utilisés pour soumettre du travail aux périphériques, synchroniser et profiler les données.

  • 00:05:00 Dans cette section, l'orateur explique comment exécuter un programme OpenCL en trois étapes simples. Tout d'abord, vous créez des objets programme pour construire le code source et des objets noyau contenant le code à exécuter sur divers appareils avec des arguments. Deuxièmement, vous créez des objets mémoire, soit des images, soit des tampons. Troisièmement, vous créez des files d'attente de commandes et les utilisez pour mettre en file d'attente le travail de différents appareils, mais l'ordre de travail peut être en ordre ou non. Par conséquent, les événements sont utilisés pour garantir que les noyaux sont exécutés dans l'ordre nécessaire lorsque des dépendances existent.
Episode 2: What is OpenCL™? (continued)
Episode 2: What is OpenCL™? (continued)
  • 2013.05.27
  • www.youtube.com
In this video, you continue to learn about OpenCL™. We describe the details about the OpenCL™ platform and memory models. Topics covered include compute devi...
 

AMD Developer Central : Présentation technique d'OpenCL. Épisode 3 : Configuration des ressources



AMD Developer Central : Présentation technique d'OpenCL. Épisode 3 : Configuration des ressources

Dans l'épisode 3 de la série de didacticiels OpenCL, l'orateur se penche sur la configuration et la gestion des ressources dans OpenCL, couvrant des sujets tels que les objets mémoire, le contexte, les périphériques et les files d'attente de commandes. Le processus d'accès et d'allocation de mémoire pour les images est également abordé, en mettant l'accent sur les appels d'image en lecture et en écriture et les formats pris en charge. Les caractéristiques des opérations de mémoire synchrones et asynchrones sont examinées, avec une explication de la façon dont le système de gestion d'événements OpenCL peut être utilisé pour garantir l'achèvement du transfert de données. Enfin, il est conseillé aux utilisateurs d'interroger les informations sur l'appareil avec l'appel CL get device info pour choisir le meilleur appareil pour leur algorithme.

  • 00: 00: 00 Dans cette section, Justin Hensley d'AMD discute de l'allocation des ressources dans OpenCL, en se concentrant spécifiquement sur les objets mémoire et la configuration du contexte et des périphériques. Il explique comment interroger le système pour trouver les périphériques disponibles, créer un contexte partagé et configurer des files d'attente de commandes pour parler aux périphériques. Hensley note également que plusieurs cœurs d'un processeur sont considérés comme un seul périphérique OpenCL et que les périphériques dans différents contextes ne peuvent pas partager de données. Pour choisir le meilleur appareil pour un algorithme, les utilisateurs peuvent interroger le runtime OpenCL pour obtenir des informations sur l'appareil avec l'appel CL get device info pour déterminer le nombre d'unités de calcul, la fréquence d'horloge, la taille de la mémoire et les extensions prises en charge. Enfin, Hensley décrit les tampons comme de simples morceaux de mémoire et les images comme des structures de données opaques formatées en 2D et 3D.

  • 00:05:00 Dans cette section, la vidéo explique comment OpenCL traite les images et comment l'accès aux images via les appels d'image en lecture et en écriture est nécessaire. Le format et l'échantillonneur de données pour une image sont également abordés et la manière dont l'appel de formats d'image pris en charge CL doit être utilisé pour déterminer les formats pris en charge. Pour allouer un tampon d'image, le format et la taille sont définis, et l'appel de création de tampon CL est utilisé pour créer un objet tampon pour les données d'entrée et de sortie. CL in queue read et CL in queue right buffer sont des commandes utilisées pour lire et écrire des données depuis et vers des objets mémoire, respectivement. Si une région de mémoire doit être mappée
    à l'espace d'adressage de l'hôte, le CL dans le tampon de mappe de files d'attente est utilisé. Enfin, le tampon de copie de file d'attente CLN est utilisé pour copier de la mémoire entre deux objets mémoire.

  • 00: 10: 00 Dans cette section, l'orateur explique que les données ne peuvent être partagées qu'avec des objets mémoire alloués dans le même contexte et que toutes les opérations peuvent être effectuées de manière synchrone ou asynchrone. Les opérations synchrones sont effectuées lorsque l'appel de blocage est défini sur CL vrai, ce qui signifie que le transfert de données sera bloqué jusqu'à ce que l'opération de mémoire réelle ait lieu. Cela peut prendre un certain temps selon l'emplacement de la mémoire. Alternativement, avec CL false, ce sera un appel asynchrone, et il faut utiliser le système de gestion d'événements CL ouvert pour garantir que la mémoire est complètement copiée avant d'être utilisée.
Episode 3: Resource Setup
Episode 3: Resource Setup
  • 2013.05.27
  • www.youtube.com
In this video, you learn about resource allocation, resource setup and how to setup the OpenCL™ runtime. Topics include choosing devices, creating contexts a...
 

AMD Developer Central : Présentation technique d'OpenCL. Épisode 4 : Exécution du noyau



AMD Developer Central : Présentation technique d'OpenCL. Épisode 4 : Exécution du noyau

Dans cette section, Justin Hensley couvre le sujet de l'exécution du noyau dans OpenCL, expliquant que les objets du noyau contiennent une fonction spécifique du noyau et sont déclarés avec le qualificateur du noyau. Il décompose les étapes d'exécution d'un noyau, y compris la définition des arguments du noyau et la mise en file d'attente du noyau. Hensley souligne l'importance d'utiliser des événements pour gérer plusieurs noyaux et éviter les problèmes de synchronisation, et il suggère d'utiliser CL attendre les événements pour attendre qu'ils soient terminés avant de continuer. La vidéo détaille également le profilage de l'application pour optimiser les noyaux qui prennent le plus de temps à s'exécuter.

  • 00:00:00 Dans cette section, Justin Hensley discute de l'exécution du noyau dans OpenCL. Il explique que les objets du noyau encapsulent une fonction spécifique du noyau dans un programme et sont déclarés avec le qualificateur du noyau. L'objet programme encapsule la source du programme ou le binaire précompilé à partir du disque et une liste de périphériques. Une fois l'objet programme construit, l'utilisateur peut le compiler pour les appareils dont il dispose au moment de l'exécution. Une fois le noyau construit, il doit être exécuté avec les deux étapes de base de l'exécution consistant à définir les arguments du noyau et à mettre le noyau en file d'attente. Pour définir les arguments, l'utilisateur utilisera la fonction appelée "CL Set Kernel Arg" avec le premier argument étant le noyau qui doit être exécuté.

  • 00:05:00 Dans cette section, la vidéo explique comment définir la taille des arguments et exécuter réellement le noyau. L'exemple utilisé est le traitement d'images avec une taille globale définie sur une image avec une hauteur d'image d'une taille donnée. La vidéo explique que le runtime OpenCL dans les files d'attente des tâches de manière asynchrone, il appartient donc au programmeur d'utiliser des événements pour suivre l'état d'exécution. La vidéo explique également différentes façons de synchroniser les commandes et de synchroniser explicitement entre les files d'attente à l'aide d'événements. La vidéo fournit des exemples d'un appareil et d'une file d'attente et de deux appareils et deux files d'attente, expliquant l'importance d'utiliser des événements pour éviter les problèmes de dépendance explicites.

  • 00:10:00 Dans cette section, Justin Hensley explique comment gérer les noyaux et les événements lors de l'utilisation d'OpenCL. Il explique que l'utilisation d'événements est importante lors de la gestion de plusieurs noyaux et de la prévention des problèmes de synchronisation. Il suggère d'utiliser CL wait for events, qui attend que tous les événements soient terminés avant de continuer, et in queue wait for events, qui dans les files d'attente un point de blocage pour une utilisation ultérieure par le runtime OpenCL, permettant à l'application de continuer à s'exécuter sans blocage. De plus, CL get event profiling info peut être utilisé pour profiler l'application afin que les développeurs puissent optimiser les noyaux qui prennent le plus de temps à s'exécuter.
Episode 4: Kernel Execution
Episode 4: Kernel Execution
  • 2013.05.27
  • www.youtube.com
In this video, you learn about the execution and synchronization of OpenCL™ kernels. Topics include program and kernel objects, compiling and executing kerne...
 

AMD Developer Central : Présentation technique d'OpenCL. Épisode 5 : Programmation avec OpenCL™ C



AMD Developer Central : Présentation technique d'OpenCL. Épisode 5 : Programmation avec OpenCL™ C

Cette vidéo présente diverses fonctionnalités du langage OpenCL™ C, notamment les fonctions d'élément de travail, les fonctions de groupe de travail, les types de vecteurs et les fonctions de synchronisation intégrées. La vidéo souligne l'importance d'utiliser des qualificateurs d'espace d'adressage corrects pour une écriture de code parallèle efficace et un partage de mémoire entre les groupes de travail. Le concept de types de vecteurs est discuté en détail avec l'utilisation de l'espace mémoire correct pour les arguments de pointeur du noyau, les variables locales et les variables globales du programme. De plus, les fonctions mathématiques intégrées et les fonctions de groupe de travail telles que les barrières et les memfences sont couvertes par une suggestion pour vérifier ces fonctions lors de l'exécution.

  • 00:00:00 Dans cette section, Dustin Hensley d'AMD parle des fonctionnalités du langage OpenCL™ C, qui incluent les fonctions d'élément de travail, les fonctions de groupe de travail, les types de vecteurs et les fonctions de synchronisation intégrées. OpenCL est basé sur ISO C99, avec les restrictions de l'absence d'en-têtes C99 standard, de pointeurs de fonction, de récursivité, de tableaux de longueur variable et de champs de bits. Avec OpenCL, il existe des qualificateurs d'espace d'adressage pour permettre une écriture de code parallèle efficace, tout en permettant également le partage de la mémoire entre les groupes de travail. De plus, il existe un accès optimisé aux images via des fonctions d'image intégrées et des fonctions d'exécution intégrées pour accéder aux informations d'exécution. Hensley a démontré un noyau parallèle de données simple qui utilise des fonctions d'élément de travail et a montré comment différentes fonctions et variables OpenCL peuvent être utilisées pour construire ce noyau.

  • 00:05:00 Dans cette section, le concept de types de vecteurs dans OpenCL est abordé. Ces types de vecteurs sont conçus pour être portables sur différents temps d'exécution et possèdent certaines caractéristiques qui les rendent sûrs, alignés à la longueur du vecteur et dotés de fonctions intégrées. La vidéo montre ensuite plusieurs exemples d'opérations vectorielles telles que la création d'un vecteur littéral et la sélection de composants spécifiques du vecteur. De plus, il est à noter qu'il existe plusieurs espaces d'adressage différents dans OpenCL et qu'il est important d'utiliser le bon pour les arguments de pointeur du noyau, les variables locales et les variables globales du programme. Le fait de ne pas spécifier d'espace mémoire peut entraîner une valeur par défaut sur privé et causer des problèmes.

  • 00: 10: 00 Dans cette section, il est expliqué que la conversion de données d'espaces mémoire globaux, locaux ou privés vers un autre espace mémoire à l'aide de pointeurs n'est pas autorisée dans OpenCL. La copie explicite des données est nécessaire pour les espaces mémoire requis. En ce qui concerne la sémantique et les conversions, les règles C99 sont suivies pour les conversions scalaires et pointeurs, et aucune conversion implicite n'est autorisée pour les types vectoriels. L'importance d'être explicite est mise en évidence en utilisant des fonctions spécifiques pour déterminer le type d'arrondi effectué dans l'opération, plutôt que de compter sur la machine pour le gérer. Les fonctions mathématiques intégrées d'OpenCL, telles que la fonction de journalisation, offrent différentes saveurs telles que la précision totale, la demi-précision et la fonction native pour gérer plus efficacement les cas ambigus de la bibliothèque C99, et différentes méthodes sont disponibles pour passer d'un type de données à l'autre à l'aide de ce type de trait de soulignement ou convertir un type en un autre type.

  • 00: 15: 00 Dans cet extrait, l'orateur discute des fonctions de groupe de travail intégrées et des extensions d'OpenCL C. Ces fonctions incluent des outils de synchronisation tels que des barrières et des Memphis qui permettent la synchronisation de la mémoire. L'orateur parle également de l'importance d'utiliser tous les éléments de travail d'un groupe de travail pour exécuter la même fonction plutôt que de mettre en place une barrière que tous les éléments n'atteindront pas. De plus, l'orateur parle des diverses extensions, y compris les fonctions atomiques et la sélection des modes d'arrondi au moment de la compilation. L'orateur recommande d'aller à la spécification pour en savoir plus sur ces fonctions et extensions et les vérifier lors de l'exécution.
Episode 5: Programming with OpenCL™ C
Episode 5: Programming with OpenCL™ C
  • 2013.05.27
  • www.youtube.com
In this video, you learn about the OpenCL™ C kernel language. Topics include work items and work groups, data types, vector operations, address spaces, type ...
 

Comment utiliser OpenCL pour le travail GPU



Comment utiliser OpenCL pour le travail GPU

La vidéo présente OpenCL en tant qu'outil standard ouvert pouvant fonctionner sur la plupart des nouvelles cartes graphiques sous Windows avec l'installation requise de CUDA ou de pilotes graphiques spécifiques en fonction de la carte. L'orateur décrit un programme simple, le processus de création d'un noyau, des tampons pour les données, la définition des arguments du noyau et la taille de travail globale, et l'exécution de la charge de travail sur l'appareil dans OpenCL, en le comparant à CUDA. Les paramètres impliqués dans la création d'un noyau dans OpenCL pour le travail GPU, la mise en file d'attente du tampon de lecture, la désallocation de mémoire ont été expliqués avec des exemples de codes pour vérifier les calculs. En présentant un petit programme qui applique un flou subtil aux images en niveaux de gris à l'aide d'OpenCL, le présentateur souligne qu'OpenCL a plus de code passe-partout que CUDA mais est une solution ouverte et standard applicable à différentes cartes graphiques et peut être réutilisée sur différents systèmes quel que soit le fabricant.

  • 00: 00: 00 Dans cette section, l'orateur présente OpenCL et explique comment il s'agit d'un standard ouvert qui peut fonctionner avec la plupart des cartes graphiques les plus récentes sous Windows, avec la nécessité d'installer CUDA ou le pilote graphique spécifique en fonction de la carte. L'orateur fournit ensuite un programme simple et décrit son fonctionnement dans OpenCL, en le comparant à CUDA. Ils passent par le processus de création d'un noyau, de création de tampons pour les données et de définition des arguments du noyau et de la taille de travail globale avant d'exécuter la charge de travail sur l'appareil.

  • 00:05:00 Dans cette section, l'orateur explique les paramètres impliqués dans la création d'un noyau en OpenCL pour le travail GPU. Le paramètre de taille de travail globale est le nombre d'unités avec lesquelles vous voulez travailler, tandis que la taille de travail locale est la quantité que vous voulez faire dans chaque unité. La taille de travail globale doit être un multiple de la taille de travail locale, et bien que vous puissiez exécuter un travail sans spécifier la taille de travail locale globale, il est préférable de définir les deux afin que vous sachiez sur quelles dimensions vous travaillez. L'orateur poursuit ensuite en expliquant le tampon de lecture de mise en file d'attente, comment désallouer de la mémoire et fournit un exemple de code pour vérifier que tous les calculs ont été effectués correctement. Enfin, l'orateur compare son exemple avec une charge de travail qui fait un flou sur une image, montrant les paramètres et l'utilisation des tuples.

  • 00:10:00 Dans cette section, l'orateur explique les modifications de code apportées à un exemple précédent et présente un noyau qui effectuera un flou subtil sur une image. Après avoir créé des pointeurs et des tampons de différentes tailles, le locuteur définit des arguments pour le noyau avant de récupérer la mémoire et de libérer les pointeurs. Enfin, le locuteur lit les images en niveaux de gris, redéfinit les pixels sur le résultat et écrit l'image en niveaux de gris.

  • 00:15:00 Dans cette section, le présentateur présente un petit programme qui applique un flou subtil à une image en niveaux de gris à l'aide d'OpenCL. Le présentateur note qu'OpenCL a plus de code passe-partout que CUDA, recommandant l'utilisation d'une classe ou d'un objet pour garder toutes les variables du programme du noyau et de la file d'attente de commandes organisées. Cependant, le présentateur souligne qu'OpenCL est une solution ouverte et standard qui fonctionne sur différentes cartes graphiques et peut être réutilisée sur différents systèmes sans se lier à une marque ou à un fabricant spécifique. Dans l'ensemble, le présentateur fournit une introduction utile à l'utilisation d'OpenCL pour le travail sur GPU.
How to use OpenCL for GPU work
How to use OpenCL for GPU work
  • 2018.03.04
  • www.youtube.com
We use OpenCL to run workloads on GPU and try a simple blur filter.Git repositoryhttps://github.com/kalaspuffar/openclPlease follow me on Twitterhttp://twitt...
 

EECE.6540 Informatique hétérogène (Université du Massachusetts Lowell)



1. Brève introduction au traitement parallèle avec des exemples

Cette vidéo fournit une brève introduction au traitement parallèle avec des exemples. L'orateur explique que le calcul parallèle consiste à décomposer une tâche plus importante en sous-tâches plus petites à exécuter en parallèle. Deux stratégies principales pour y parvenir sont diviser pour régner et disperser et rassembler. La vidéo fournit des exemples d'applications naturelles et artificielles qui ont intrinsèquement beaucoup de parallélisme, telles que les sens humains, les voitures autonomes et la croissance cellulaire. La vidéo aborde également les avantages du traitement parallèle et montre comment il peut être appliqué au tri, à la multiplication vectorielle, au traitement d'image et à la recherche du nombre d'occurrences d'une chaîne de caractères dans un corps de texte. Enfin, la vidéo présente le processus de réduction, également appelé processus de sommation, pour collecter et traiter les résultats obtenus à partir de ressources parallèles.

  • 00:00:00 Dans cette section, l'intervenant présente le concept de calcul parallèle et explique qu'il consiste à diviser une tâche plus importante en sous-tâches plus petites à exécuter en parallèle. Deux stratégies principales pour y parvenir sont diviser pour régner et disperser et rassembler. L'orateur donne des exemples d'applications naturelles et artificielles qui ont intrinsèquement beaucoup de parallélisme, telles que les sens humains, les voitures autonomes et la croissance cellulaire. De plus, le conférencier donne un exemple de problème de tri et explique comment il peut être abordé en utilisant la stratégie diviser pour mieux régner.

  • 00: 05: 00 Dans cette section, l'orateur discute de deux exemples de traitement parallèle, en commençant par le tri en utilisant le tri par fusion comme exemple. Les longues listes non triées d'entiers sont décomposées en sous-problèmes plus petits de deux entiers par groupe, et quatre unités de calcul cartographient et comparent les sous-problèmes pour obtenir la séquence triée finale d'entiers. Le deuxième exemple discuté est la multiplication vectorielle, qui est intrinsèquement parallèle aux données car chaque opération de multiplication est indépendante des autres. Ce problème a une faible intensité arithmétique, ce qui le rend simple et rapide à réaliser. L'orateur mentionne également brièvement le concept d'intensité arithmétique pour mettre en évidence le compromis entre le calcul et l'accès à la mémoire dans différents types de problèmes de traitement.

  • 00: 10: 00 Dans cette section, l'orateur discute des avantages du traitement parallèle et de la manière dont il permet une utilisation efficace des ressources informatiques. Il explique qu'avec le traitement parallèle, vous pouvez effectuer plusieurs calculs en même temps, sans avoir à charger et décharger constamment des données. Le concept de parallélisme des tâches est introduit, où plusieurs unités de calcul travaillent indépendamment sur des données différentes. L'exemple du traitement d'image est utilisé pour illustrer comment les données peuvent être transmises à travers un pipeline de plusieurs unités fonctionnelles pour maximiser le calcul. En mettant en œuvre un traitement parallèle, les unités de calcul peuvent fonctionner simultanément, réduisant les temps d'attente et augmentant la vitesse de calcul.

  • 00: 15: 00 Dans cette section, le concept de traitement parallèle est expliqué plus en détail à l'aide d'un exemple de recherche du nombre d'occurrences d'une chaîne de caractères dans un corps de texte. Le problème peut être divisé en une comparaison de correspondances potentielles qui peut être effectuée par comparaison de mots individuels, qui peuvent être parallélisés. La comparaison peut également se faire de manière encore plus granulaire en comparant chaque lettre en parallèle. L'ensemble de données est divisé en unités plus petites pour effectuer la même opération en parallèle, ce qui rend la tâche de comparaison hautement parallèle.

  • 00:20:00 Dans cette section, nous découvrons la deuxième étape du traitement parallèle, qui est le processus de réduction, également connu sous le nom de processus de sommation. Ici, la phase de collecte collecte les résultats de comparaison des concurrents individuels et les rassemble pour le post-traitement. Le résultat final est produit en collectant les résultats intermédiaires des ressources parallèles et en les additionnant. Si la sortie des unités de comparaison montre une correspondance, le nombre final obtenu après addition de toutes ces sorties indique combien de fois un mot est apparu dans le texte original.
Brief Introduction to Parallel Processing with Examples
Brief Introduction to Parallel Processing with Examples
  • 2020.05.21
  • www.youtube.com
This video starts the series on Heterogeneous Computing. In this video we introduce the concept of parallel processing with some examples.If you are interest...
 

2. Concurrence, parallélisme, décompositions des données et des tâches



2. Concurrence, parallélisme, décompositions des données et des tâches

La vidéo se penche sur les concepts de concurrence et de parallélisme, ainsi que sur l'utilisation des décompositions de tâches et de données, et sur les techniques de décomposition des données pour le parallélisme et la concurrence. La loi d'Amdahl est explorée comme un moyen de calculer l'accélération théorique lors de l'exécution de tâches sur plusieurs processeurs. L'importance des graphiques de dépendance des tâches est mise en évidence dans l'identification des dépendances inter-tâches lors de la décomposition d'un problème en sous-tâches. Les méthodes de décomposition des données, telles que les données d'entrée et le partitionnement des vecteurs de ligne, sont indiquées comme utiles pour effectuer des calculs. Les opérations atomiques et la synchronisation sont décrites comme essentielles pour générer le résultat correct une fois toutes les sous-tâches terminées.

  • 00:00:00 Dans cette section, la vidéo présente les concepts de concurrence et de parallélisme. La simultanéité se produit lorsque deux ou plusieurs activités se déroulent en même temps, qui peuvent être sur des processeurs différents ou même sur un seul processeur utilisant des techniques de partage de temps. Le parallélisme, en revanche, signifie strictement que deux activités sont exécutées simultanément sur différentes unités d'exécution matérielles, telles que des CPU ou des FPGA. La vidéo traite également de la loi d'Amdahl, qui est utilisée pour calculer l'accélération théorique lors de l'exécution de tâches sur plusieurs processeurs. Bien que certaines tâches doivent rester en série, des tâches pouvant être repensées pour s'exécuter en parallèle peuvent être exécutées à l'aide d'unités de traitement, telles que des GPU, des FPGA ou des processeurs multicœurs.

  • 00:05:00 Dans cette section, l'orateur discute du concept de calcul parallèle et de la manière dont il a été implémenté dans les architectures CPU, en particulier dans les processeurs Pentium d'Intel. Ils expliquent que dans l'architecture de processeur traditionnelle, le parallélisme au niveau des instructions est souvent utilisé pour exécuter simultanément des instructions indépendantes, ce qui améliore les performances. Cependant, dans leur classe, ils se concentrent sur le parallélisme des tâches et des données et sur la manière dont ces parallélismes de niveau supérieur peuvent être exploités à l'aide d'algorithmes et de threads logiciels. Ils introduisent le concept de décomposition des tâches, qui consiste à décomposer un algorithme en tâches individuelles, et de décomposition des données, qui consiste à diviser un ensemble de données en morceaux discrets pouvant être utilisés en parallèle.

  • 00: 10: 00 Dans cette section, la vidéo aborde le concept des graphiques de dépendance des tâches et leur utilité pour décrire les relations entre les tâches lors de la décomposition d'un problème en sous-tâches. Si les tâches n'ont pas de dépendances, elles peuvent être exécutées en parallèle, ce qui permet un traitement plus efficace. La vidéo présente également le concept de décomposition des données, qui consiste à diviser les données en différentes tâches de calcul. Les exemples de convolution d'image et de multiplication matricielle montrent comment les données de sortie peuvent être utilisées pour déterminer comment les données peuvent être décomposées en différents groupes ou partitions.

  • 00: 15: 00 Dans cette section, l'orateur discute de différentes techniques de décomposition de données pour le parallélisme et la concurrence. La première technique consiste à partitionner les données en vecteurs de ligne dans la matrice d'origine pour un mappage un à un ou plusieurs à un. La deuxième technique implique la décomposition des données d'entrée, qui a une donnée d'entrée qui correspond à plusieurs données de sortie. Des exemples de ceci incluent les histogrammes tar gram et la recherche de sous-chaînes. Pour calculer le résultat final à partir de ces parties de données intermédiaires, une synchronisation et des opérations atomiques peuvent être nécessaires pour s'assurer que toutes les sous-tâches sont terminées et que le résultat correct est généré.
Concurrency, Parallelism, Data and Task Decompositions
Concurrency, Parallelism, Data and Task Decompositions
  • 2020.05.21
  • www.youtube.com
This video compares concurrency with parallelism, and discusses decomposition methods to parallelize a task.
 

3. Calcul parallèle : logiciel et matériel



3. Calcul parallèle : logiciel et matériel

La vidéo présente différentes approches pour atteindre des niveaux élevés de parallélisme en informatique. L'orateur décrit les techniques matérielles et logicielles utilisées pour effectuer le calcul parallèle, y compris le parallélisme au niveau des instructions (ILP), les threads logiciels, les processeurs multicœurs, les processeurs SIMD et SPMD. La vidéo explique également l'importance de la densité de parallélisme et le concept d'unités de calcul/traitement, qui permettent un calcul parallèle efficace. De plus, le conférencier discute des défis de la création d'opérations atomiques à des fins de synchronisation et de la nécessité de restructurer les problèmes pour une exécution efficace sur les GPU.

  • 00:00:00 Dans cette section, l'orateur discute de différentes approches pour atteindre des niveaux élevés de parallélisme. Au début de la conception des processeurs, les gens s'appuyaient sur le parallélisme au niveau des instructions (ILP) et les threads logiciels pour obtenir le parallélisme. Cependant, ces conceptions ne sont pas faites automatiquement et le programmeur doit être expérimenté dans la conception de ces applications logicielles. En termes de matériel, il existe différents types de processeurs disponibles pour les tâches de calcul parallèle. Les processeurs multicœurs sont conçus pour le parallélisme des tâches, tandis que les processeurs SIMD sont conçus pour tirer parti du parallélisme des données. Les GPU sont les meilleurs pour les tâches de parallélisme des données car ils peuvent exécuter plusieurs données en même temps sur des centaines voire des milliers de cœurs.

  • 00:05:00 Dans cette section, l'orateur aborde les concepts de SIMD et SPMD, qui sont couramment utilisés dans le calcul parallèle. SIMD signifie Single Instruction Multiple Data, dans lequel chaque cœur peut effectuer des opérations sur différentes données en même temps. D'autre part, SPMD signifie Single Program Multiple Data, dans lequel plusieurs instances du même programme fonctionnent indépendamment sur différentes parties de données. L'exploration de bandes en boucle est une technique populaire pour diviser les tâches parallèles de données entre des processeurs indépendants, qui peuvent utiliser l'unité vectorielle pour exécuter des itérations en même temps. L'orateur donne un exemple d'addition de vecteurs utilisant SPMD avec l'extraction de boucles, où chaque programme s'exécute sur différentes parties de données.

  • 00: 10: 00 Dans cette section, l'orateur explique comment différents processeurs peuvent travailler sur différentes parties des données en calcul parallèle, en utilisant l'exemple de l'exécution de chaque bloc de données en tant que thread indépendant. Le coût de création de threads pour les GPU est élevé, de sorte que le calcul attendu sur chaque processeur doit être plus important, connu sous le nom de densité de parallélisme. Pour les FPGA, la surcharge de création de threads est très faible, il peut donc y avoir un grand nombre d'instances d'exécution SGMD. Les données multiples à instruction unique (SIMD) permettent l'exécution simultanée d'une instruction sur plusieurs données, de nombreuses unités arithmétiques et logiques (ALU) exécutant l'instruction ensemble. Les algorithmes parallèles peuvent réduire la quantité de flux de contrôle et d'autres matériels en faveur des unités ALU.

  • 00: 15: 00 Dans cette section, l'orateur explique le concept d'unités de calcul/traitement utilisées dans une puce pour le calcul. Ils peuvent prendre des entrées de données et effectuer des opérations simultanément, permettant un calcul parallèle efficace. L'architecture est basée sur SMID (Single Instruction Multiple Data) et est largement utilisée dans le matériel GPU. L'orateur souligne l'importance des opérations atomiques à des fins de synchronisation, mais met en garde contre les frais généraux importants de ces opérations. Les problèmes qui sont décomposés à l'aide du partitionnement des données d'entrée devront probablement être restructurés pour une exécution efficace sur un GPU.
Parallel Computing: Software and Hardware
Parallel Computing: Software and Hardware
  • 2020.05.21
  • www.youtube.com
This video introduces the general characteristics of parallel computing, the associated software and hardware methods.
 

4. Deux articles importants sur les processeurs hétérogènes



4. Deux articles importants sur les processeurs hétérogènes

La vidéo couvre divers articles liés à l'informatique hétérogène, y compris les tendances en matière de conception de processeurs et d'efficacité énergétique, les avantages de l'utilisation de matériel personnalisé et d'accélérateurs spécialisés, l'importance d'équilibrer les grands et les petits cœurs, et les défis du mouvement des données et de la communication efficace entre les cœurs. Les articles discutent également de la nécessité de comprendre la planification et la partition de la charge de travail lorsque vous travaillez avec des processeurs hétérogènes et l'utilisation de langages de programmation et de frameworks comme OpenCL, CUDA et OpenMP. Dans l'ensemble, les articles mettent en évidence les avantages potentiels de l'utilisation de plusieurs cœurs et accélérateurs pour maximiser les performances et l'efficacité énergétique dans des environnements informatiques hétérogènes.

  • 00:00:00 Dans cette section, l'orateur discute de deux articles importants liés à l'informatique hétérogène qui ont été publiés au cours de la dernière décennie. Le premier article parle de la tendance à passer d'un seul cœur de processeur à plusieurs cœurs et de l'utilisation efficace des transistors unship pour gagner en performance. Le deuxième article est un article d'enquête qui explique comment les architectes informatiques, les programmeurs et les chercheurs évoluent vers une approche plus coopérative dans l'utilisation conjointe du CPU et du GPU pour maximiser à la fois les performances et l'utilisation. L'orateur parle également de la tendance à passer des performances monocœur aux performances des molécules ou des performances en termes de débit en utilisant des cœurs et des accélérateurs hétérogènes. La transcription comprend également un graphique montrant l'augmentation du nombre de transistors sur une seule puce de 1971 à 2009 et met en évidence les principaux avantages de l'utilisation de l'informatique hétérogène.

  • 00: 05: 00 Dans cette section, la vidéo traite de la mise à l'échelle des transistors et de la manière dont elle peut permettre plus de transistors sur une seule puce, ce qui améliore les performances et l'efficacité énergétique. La vidéo présente ensuite un diagramme qui montre les différentes techniques utilisées pour concevoir des microprocesseurs, telles que l'ajout de cœurs supplémentaires ou la mise en œuvre d'une exécution spéculative. Bien qu'il n'y ait pas d'augmentation significative des performances chaque année, l'efficacité énergétique a été multipliée par près de cinq, ce qui permet d'effectuer davantage de tâches à un débit plus élevé. La vidéo présente également la règle de Pollock, qui est une simple observation sur les performances des processeurs.

  • 00: 10: 00 Dans cette section, l'orateur discute de l'augmentation des performances des processeurs à mesure que la surface ou le nombre de transistors augmente. La relation entre ces facteurs est approximativement la racine carrée du nombre de transistors. D'autre part, la densité de la DRAM augmente de près du double tous les deux ans, mais les performances en termes de vitesse de lecture/écriture ne suivent pas. Le budget énergétique total est plat, donc même réduire la taille des transistors et augmenter le nombre de transistors n'améliorerait pas de manière significative les performances. La puissance de fuite devient prédominante à mesure que la taille du transistor diminue, ce qui signifie que s'appuyer sur l'augmentation de la fréquence, la réduction de la tension d'alimentation et la capacité des connexions et des fils seuls ne peut pas atteindre les objectifs de performance prévus, tels que térabit ou plus d'opérations.

  • 00: 15: 00 Dans cette section, l'orateur discute de la conception de plusieurs cœurs dans des processeurs hétérogènes, soulignant qu'il n'est peut-être pas avantageux d'avoir de grands cœurs uniformes. Au lieu de cela, la personnalisation du matériel avec des accélérateurs fixes ou programmables et la combinaison de la logique avec les cœurs peuvent conduire à une meilleure utilisation des cœurs. L'orateur présente un exemple où une conception avec 30 cœurs plus petits (5 millions de transistors chacun) surpasse une conception avec six cœurs plus grands (25 millions de transistors chacun) tout en utilisant le même nombre total de transistors (150 millions). Le compromis entre le débit et les performances monocœur peut également être optimisé en maintenant un équilibre entre les gros et les petits cœurs.

  • 00: 20: 00 Dans cette section, l'orateur discute de l'utilisation de processeurs hétérogènes pour du matériel personnalisé et des avantages de l'utilisation de cœurs plus petits et personnalisés au lieu de cœurs de processeur à usage général. En utilisant une logique spécialisée pour construire des unités fonctionnelles telles que des multiplicateurs ou des unités FFT, les concepteurs peuvent atteindre une efficacité énergétique supérieure à celle des conceptions à usage général. En outre, le document aborde les défis du déplacement des données et l'importance d'avoir des hiérarchies de mémoire efficaces et des interconnexions pour une communication efficace entre les cœurs. Le document propose une répartition de 10 % pour les accélérateurs et les cœurs spécialisés, plutôt que les 90 % traditionnels pour la construction de processeurs superscalaires hors service afin d'obtenir de meilleures performances à un seul thread.

  • 00:25:00 Dans cette section, la vidéo traite de deux articles sur les processeurs hétérogènes. Le premier article traite des défis rencontrés dans le mouvement des données et l'efficacité énergétique. Une tendance de conception est la mise à l'échelle de la tension permettant d'exécuter différents cœurs à différentes vitesses, ce qui peut réduire considérablement la consommation d'énergie en fonction de la charge de travail et de la planification des tâches. Le deuxième article traite de la tendance au parallélisme à grande échelle et aux cœurs hétérogènes avec des tailles variables et une fréquence et une tension flexibles. De plus, il y a une tendance à utiliser différents accélérateurs matériels intégrés à la puce et à se concentrer sur un positionnement efficace des données pour réduire les mouvements de données inutiles. Le document reconnaît les atouts uniques des différentes architectures de CPU et des algorithmes de conception pour correspondre aux futures fonctionnalités du CPU.

  • 00: 30: 00 Dans cette section, l'orateur discute de l'importance de comprendre les techniques de planification et la partition de la charge de travail lors de l'utilisation de processeurs hétérogènes tels que le CPU FPGA. La planification implique de décider quand une sous-tâche doit s'exécuter sur un processeur spécifique, tandis que la partition de la charge de travail s'occupe du partitionnement des données et des tâches. L'orateur mentionne également divers langages de programmation et frameworks comme OpenCL, CUDA et OpenMP pour différents types de processeurs.
Two Important Papers about Heterogeneous Processors
Two Important Papers about Heterogeneous Processors
  • 2020.05.21
  • www.youtube.com
This video provides an overview of two important papers on the design and programming of heterogenous processors/systems.S. Borkar and A. Chien, The Future o...
 

5. Présentation du matériel informatique



5. Présentation du matériel informatique

La vidéo donne un aperçu du matériel informatique et aborde des sujets tels que les architectures de processeur, les considérations de conception, le multithreading, la mise en cache, la hiérarchie de la mémoire et la conception de la logique de contrôle. Il explique également comment un programme est un ensemble d'instructions qu'un ordinateur suit pour effectuer une tâche et les différents types de programmes, y compris les logiciels système et les applications. La vidéo souligne l'importance des composants matériels d'un ordinateur, tels que le processeur et la mémoire, qui fonctionnent ensemble pour exécuter des programmes et effectuer des tâches.

  • 00:00:00 Dans cette section, le conférencier présente les sujets qui seront abordés dans le cours, notamment les architectures et innovations de processeur, l'espace de conception architecturale, l'architecture CPU et GPU, et le FPGA en tant qu'architecture émergente hautes performances. L'orateur parle également des origines d'OpenCL et de la manière dont il a été progressivement façonné par différents fournisseurs en fonction des processeurs qu'ils fournissent, ce qui a conduit à un modèle de paradigme basé sur des blocs de cohérence souple qui permet d'obtenir l'indépendance de la plate-forme. Les performances des programmes OpenCL dépendent toujours de l'implémentation, de l'algorithme et de la manière dont il peut être mappé à l'architecture matérielle. La conception de différents processeurs nécessite de nombreuses considérations et compromis, par exemple s'il faut un processeur monocœur ou plusieurs processeurs.

  • 00: 05: 00 Dans cette section, la vidéo explique certaines des considérations de conception en matière de matériel informatique, telles que les cœurs superscalaires et la planification des instructions. La vidéo traite également du multithreading comme moyen d'augmenter la quantité de travail utile qu'un processeur peut gérer, ainsi que de l'importance de la mise en cache et de la hiérarchie de la mémoire. L'hétérogénéité des processeurs est de plus en plus courante, ce qui inclut les CPU avec GPU, FPGA et gros et petits cœurs. Enfin, la conception de la logique de contrôle est cruciale, permettant la réorganisation des instructions pour exploiter le parallélisme des niveaux d'instruction dans des flux de contrôle complexes.

  • 00:10:00 Dans cette section, la vidéo explique qu'un programme est un ensemble d'instructions qu'un ordinateur suit pour effectuer une tâche spécifique. Le programme est composé de code écrit dans un langage de programmation, qui est ensuite compilé ou interprété dans un langage machine que l'ordinateur peut comprendre. La vidéo décrit ensuite les différents types de programmes, y compris les logiciels système tels que les systèmes d'exploitation et les pilotes de périphériques, ainsi que les applications telles que les traitements de texte et les jeux. Les composants matériels de l'ordinateur, tels que le processeur et la mémoire, fonctionnent ensemble pour exécuter ces programmes et effectuer les tâches souhaitées.
Overview of Computing Hardware
Overview of Computing Hardware
  • 2020.05.22
  • www.youtube.com
This video introduces hardware tradeoffs and conventional CPU architecture.
Raison: