Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
6. Superscalaire et VLIW
6. Superscalaire et VLIW
La vidéo explore comment les processeurs utilisent l'exécution superscalaire pour détecter et extraire le parallélisme entre les instructions binaires afin d'améliorer les performances. Il traite de l'importance de la logique de contrôle dans l'identification des instances où les instructions peuvent s'exécuter simultanément, par exemple en l'absence de dépendances entre elles. La vidéo présente également deux exemples de conception de processeur, superscalaire et VLIW, ce dernier transférant la responsabilité de la détection des dépendances aux compilateurs, générant de longs mots d'instruction à exécuter en parallèle. Bien que VLIW réduise la vérification du temps d'exécution, les points inutilisés dans le mot d'instruction long peuvent toujours entraîner un gaspillage dans l'unité d'exécution.
7. SIMD et multithreading matériel
7. SIMD et multithreading matériel
La vidéo explique deux manières de relever les défis du parallélisme : instruction unique, données multiples (SIMD) et multithreading matériel (SMT). SIMD permet aux instructions matérielles de s'exécuter en parallèle sur plusieurs éléments de données, simplifiant la logique de planification et de décodage. SMT exploite le parallélisme au niveau des threads en exécutant simultanément des flux d'instructions indépendants, exigeant des fichiers de registre supplémentaires et un partage de cache minutieux. La vidéo traite également de la mise en œuvre de la planification des threads par tranches temporelles, où les threads occupent à tour de rôle le chemin de données du processeur de manière circulaire, réduisant la latence et permettant à plusieurs threads d'accéder simultanément aux unités de calcul et aux systèmes de mémoire. En fin de compte, le processeur peut accueillir autant de threads que nécessaire, bien que le gain de performances puisse ne pas être aussi important sur un processeur à un seul thread.
8. Architecture de processeur multicœur
8. Architecture de processeur multicœur
Cette vidéo explique l'architecture des processeurs multicœurs et leurs avantages, tels que plusieurs cœurs fonctionnant indépendamment et partageant certains composants, tandis que chaque cœur possède son propre pipeline et cache de données. L'importance de la hiérarchie des caches pour combler l'écart de vitesse entre le microprocesseur et l'accès à la mémoire est mise en évidence à l'aide de plusieurs niveaux de caches qui exploitent la localité temporelle et spatiale. La vidéo aborde également la conception du système sur puce, qui combine différentes unités de fonction et interfaces en une seule puce pour réduire le coût et le facteur de forme. Dans l'ensemble, la vidéo fournit une introduction utile à la complexité et aux compromis impliqués dans la conception de processeurs multicœurs.
9. Architecture GPU
9. Architecture GPU
L'unité de traitement accéléré (APU) est un processeur hétérogène avec des cœurs à faible consommation d'énergie et des unités GPU, tous sur la même puce. Les GPU ont un grand nombre de cœurs de shader qui peuvent être programmés avec des instructions, et leurs caches sont généralement non cohérents, ce qui simplifie leur conception et permet des performances bien supérieures lorsque de nombreux cœurs fonctionnent en même temps. AMD et Nvidia utilisent de petites unités de calcul pour prendre en charge l'opération sur plusieurs éléments de données en même temps et disposent de fichiers de registre volumineux pour prendre en charge le changement de contexte rapide. L'orateur explique également comment gérer le flux de contrôle dans l'architecture GPU, en particulier pour traiter les instructions de branchement qui peuvent produire des résultats invalides, mais les programmeurs n'ont pas à se soucier de ces problèmes car les fournisseurs de processeurs ont déjà fourni une logique de contrôle dans le matériel. Dans l'ensemble, les GPU sont des processeurs populaires pour les charges de travail complexes sur le marché moderne, en particulier dans le domaine de l'IA et de l'apprentissage automatique.
10. Composants internes du FPGA
10. Composants internes du FPGA
Cette vidéo traite de l'architecture et des fonctionnalités des matrices de portes programmables sur le terrain (FPGA). Les FPGA ont une logique programmable, leur permettant d'être reprogrammés pour accueillir de nouvelles fonctionnalités, et ont un accès direct aux données via des quantités massives d'entrées et de sorties (E/S). La structure de la table de consultation dans les FPGA se compose de plusieurs niveaux de multiplexeurs qui peuvent être programmés pour définir des fonctions logiques. Les FPGA utilisent des registres programmables qui peuvent être utilisés pour les compteurs, les registres à décalage, les machines d'état et les fonctions DSP. Chaque bloc rectangulaire sur la puce représente un bloc de réseau logique (LAB), chaque LAB contenant dix modules de logique adaptative (ALM). Les FPGA sont utilisés dans des secteurs tels que les appareils grand public, l'automobile, l'instrumentation médicale, la communication et la diffusion.
et les bits de retenue, et comment l'entrée des registres peut provenir d'éléments logiques précédents.
11. Mémoire OpenCL sur un système GPU
11. Mémoire OpenCL sur un système GPU
L'instructeur explique le mappage de la mémoire OpenCL au GPU AMD et les différents niveaux de mémoire dans un système GPU. Le dispositif de calcul a un processeur de commande qui gère les directives vers les unités de calcul, qui fonctionnent comme des cœurs avec plusieurs voies SIMD, des fichiers de registre privés et une mémoire privée. Le programme du noyau est destiné à fournir des travaux autonomes qui permettent d'utiliser tous les cœurs disponibles et de réduire la latence d'accès à la mémoire. L'orateur mentionne également le concept d'intensité arithmétique, qui fait référence au rapport entre le calcul et le mouvement de l'axe mémoire, et comment il doit être élevé pour éviter que la bande passante mémoire du GPU ne soit le facteur limitant.
12. Exemple OpenCL : Multiplication matricielle
12. Exemple OpenCL : Multiplication matricielle
Cette vidéo présente la multiplication matricielle comme exemple de programmation OpenCL. L'orateur montre comment le code C est écrit pour créer des boucles indépendantes qui peuvent traverser les lignes et les colonnes de la matrice. Les éléments de travail sont discutés et comment ils peuvent être mappés aux éléments de matrice dans OpenCL. Une implémentation du noyau est expliquée, couvrant les arguments de la fonction du noyau, comment elle est appelée et son corps. L'orateur montre comment la matrice d'entrée est stockée dans un tableau à une dimension en utilisant des numéros de ligne et d'index pour calculer les indices. En fin de compte, la fonction noyau calcule le produit scalaire pour produire l'élément dans la matrice de sortie. L'approche linéaire du stockage des matrices dans la mémoire physique est soulignée.
13. Structure d'un programme OpenCL (partie 1)
13. Structure d'un programme OpenCL (partie 1)
Dans la vidéo "Structure d'un programme OpenCL (part1)", le processus de construction d'une application OpenCL est expliqué. Le programme doit d'abord interroger la plate-forme OpenCL pour comprendre ses ressources et créer un contexte OpenCL et une file d'attente de commandes. Des tampons sont ensuite créés pour l'échange de données entre l'hôte et la mémoire de l'appareil, et le programme du noyau est compilé dans un binaire pour exécution sur l'appareil. La vidéo explique ensuite comment créer des tampons en lecture seule et en écriture seule, allouer de l'espace pour les matrices de sortie et copier les résultats sur l'hôte. L'importance de vérifier les appels d'API pour une exécution réussie est soulignée.
14. Structure d'un programme OpenCL (partie 2)
14. Structure d'un programme OpenCL (partie 2)
La troisième étape de la programmation OpenCL implique la compilation du noyau, qui est différente pour les périphériques FPGA puisqu'elle est effectuée hors ligne. Le programme CL create avec source et C TX est utilisé pour créer un programme, suivi du programme CL build pour construire le programme en binaire. La fonction correcte du noyau est sélectionnée à l'aide du point d'entrée approprié, et les arguments du noyau doivent être initialisés à l'aide de l'argument CL set kernel avec le pointeur correct. L'orateur détaille la configuration correcte des arguments dans la multiplication matricielle. Ils discutent ensuite de la configuration des tailles de groupe de travail locales et globales, de l'exécution du noyau et de l'obtention des résultats à l'aide de l'API CL in queue buffer. Enfin, l'orateur mentionne brièvement les événements de la programmation OpenCL.
15. Démo de multiplication de matrice OpenCL
15. Démo de multiplication de matrice OpenCL
La vidéo "OpenCL Matrix Multiplication Demo" explique le processus d'exécution d'un exemple de multiplication matricielle à l'aide du framework OpenCL. Il comprend plusieurs fichiers de code source tels qu'un programme C principal pour le côté hôte, un programme noyau et un makefile. La vidéo couvre différents aspects du framework OpenCL, l'obtention des ID de plate-forme et de périphérique, la création d'un contexte OpenCL, des objets de programme et de noyau, la gestion des tampons pour l'hôte et la création et l'initialisation des tampons sur le périphérique. Le présentateur montre également un exemple de noyau qui effectue des opérations de produit scalaire et une démonstration du résultat final sur un moteur de calcul AMD Radeon pro 575.