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
Cours 17. Synchronisation sans verrous
Cours 17. Synchronisation sans verrous
Charles Leiserson explore le concept de synchronisation sans verrous dans une vidéo YouTube. Il fournit un exemple qui démontre la nécessité d'un ordre linéaire global d'instructions pour assurer une exécution séquentielle, et explique comment l'exclusion mutuelle peut être obtenue grâce à la cohérence séquentielle, en évitant les difficultés et les problèmes potentiels liés à l'utilisation de verrous. Leiserson présente l'algorithme de Peterson comme une solution qui utilise uniquement les opérations de chargement et de stockage pour accéder aux sections critiques sans interférence des processus concurrents. La vidéo couvre également les défis de la synchronisation via la mémoire en raison de la réorganisation du matériel et le concept de clôtures de mémoire pour maintenir l'ordre relatif avec d'autres instructions. Leiserson soutient que la prise en charge de la cohérence séquentielle pour les machines parallèles est bénéfique mais difficile à réaliser pour les concepteurs de matériel.
La deuxième partie de la vidéo traite de l'utilisation des clôtures de mémoire et des instructions de synchronisation pour prévenir les erreurs dans les programmes parallèles. L'orateur explore différentes manières d'implémenter des clôtures de mémoire, implicitement ou explicitement, et l'importance d'une ingénierie et d'une coordination minutieuses entre différentes équipes travaillant sur différents aspects d'un processeur. En outre, le conférencier discute de l'utilisation des instructions CAS dans le cadre de l'algorithme sans verrouillage dans la norme de langage C11 pour implémenter des mutex d'algorithmes d'exclusion mutuelle sans blocage à n fils utilisant uniquement un espace constant. Charles Leiserson explique le problème de l'utilisation de verrous dans un système multithread et la solution consistant à utiliser CAS à la place, car un thread qui maintient le verrou pendant une longue période peut potentiellement bloquer d'autres threads en attente d'accéder à la même ressource. De plus, la vidéo met en évidence le problème potentiel du problème ABA avec la comparaison et l'échange et encourage les personnes intéressées par le sujet à en savoir plus sur les algorithmes sans verrouillage.
Cours 18. Langages spécifiques à un domaine et réglage automatique
Cours 18. Langages spécifiques à un domaine et réglage automatique
Dans cette vidéo, le professeur Saman Amarasignhe du département EECS du MIT discute des avantages de l'utilisation de langages spécifiques à un domaine (DSL) et de l'autoréglage dans l'ingénierie des performances. Il souligne l'importance des DSL, qui capturent des domaines spécifiques à un domaine difficiles à décrire dans des langages à usage général, permettant aux programmeurs de tirer parti des connaissances des experts du domaine pour de meilleures performances. Singh discute de l'optimisation des processus de graphes à l'aide de DSL, y compris le partitionnement de graphes et l'importance de la forme du graphe dans le calcul. Il introduit le DSL Halide pour le traitement d'image, qui permet une optimisation rapide du code et une portabilité entre les machines. Il discute de l'utilisation de Halide dans diverses industries comme Google et Adobe. En fin de compte, il souligne l'importance d'expérimenter différentes approches pour optimiser le code tout en se concentrant sur le parallélisme, la localité et le travail redondant.
La vidéo parle également des défis de l'ingénierie des performances et de la recherche des paramètres optimaux pour qu'un programme fonctionne efficacement. L'orateur suggère que le réglage automatique peut résoudre ce problème en recherchant automatiquement le grand espace de paramètres pour trouver les valeurs optimales. Il note que la recherche exhaustive peut être peu pratique et que les solutions basées sur l'heuristique peuvent ne pas être optimales. Le réglage automatique, qui définit un espace de valeurs acceptables et itère en fonction des résultats de performance, peut accélérer le processus de recherche de solutions optimales. L'orateur discute également de l'application de l'autotuning dans la génération d'horaires pour Try, qui a été en mesure de produire des horaires plus efficacement que la recherche exhaustive.
Cours 19. Leiserchess Codewalk
Cours 19. Leiserchess Codewalk
Dans cette vidéo YouTube intitulée "19. Leiserchess Codewalk", Helen Xu explique les règles du Lesierchess, un jeu joué par deux équipes dans le but de tirer sur le roi de l'équipe adverse ou de faire tirer votre roi. Le jeu a deux types de mouvements, les mouvements de base et de swat, et une règle Ko qui rend un mouvement illégal s'il annule le mouvement le plus récent de l'adversaire. Xu plonge dans divers aspects du jeu, y compris la méthode de contrôle du temps Fisher, la notation Forsythe-Edwards, l'autotesteur Cloud et l'organisation du projet, l'évaluation et la comparaison des bots à l'aide des évaluations Elo, la génération de mouvements, l'évaluation statique et les algorithmes de recherche tels que alpha-bêta, variation de principe, élagage des sous-arbres et tables de transposition. Elle discute également de l'importance de l'infrastructure de test pour optimiser le programme et le fichier eval.c, qui contient des heuristiques qui évaluent chaque case du plateau en fonction du type de pièce et de sa couleur.
L'orateur se penche également sur l'aspect de la couverture laser du jeu, expliquant le système compliqué de génération de tous les mouvements possibles pour une position basée sur la couleur du joueur à l'aide d'une déclaration while-true. Ils expliquent également l'importance de l'exactitude du code et comment le tester, suggérant la conversion de la représentation pour garantir l'exactitude avant l'optimisation des performances. L'orateur discute également de la grande flexibilité offerte par l'interface Leiserchess UCI, qui permet aux utilisateurs d'éditer des tableaux et des commandes à leur guise, et rassure les téléspectateurs sur le fait que le code mort sera nettoyé et que tout autre bogue doit être signalé pour être corrigé.
Cours 20. Parallélisme spéculatif & Leiserchess
20. Parallélisme spéculatif et Leiserchess
Dans cette vidéo YouTube intitulée "20. Speculative Parallelism & Leiserchess", l'instructeur présente le concept de parallélisme spéculatif, qui consiste essentiellement à deviner de manière préventive que certaines tâches peuvent être effectuées en parallèle et peuvent aboutir à un code plus rapide. Cependant, l'orateur prévient que ce code est non déterministe et ne doit être utilisé que lorsque cela est nécessaire, tout en mettant en garde contre son utilisation dans les cas où un meilleur code de série pourrait être utilisé. Une partie importante de la vidéo tourne autour de la discussion des recherches alpha-bêta parallèles, ce qui implique d'élaguer l'arbre de jeu pour optimiser le temps de recherche, et parle également des différentes structures de données et heuristiques utilisées dans le processus d'évaluation des algorithmes de recherche, en particulier pour éviter le cycle et la quiescence. recherche. La vidéo aborde également les avantages de l'approfondissement itératif et comment il conduit à un meilleur ordre des mouvements pour les recherches, tout en discutant du hachage Zobrist, une technique d'optimisation utilisée dans les algorithmes de recherche impliquant une valeur de hachage unique pour chaque position sur l'échiquier avec les mêmes pièces.
Cette vidéo traite également de diverses techniques d'optimisation pour les moteurs d'échecs telles que les tables de transposition, les réductions de coups tardifs et l'utilisation de bitboards pour la génération de coups. L'orateur parle également du sujet du "parallélisme spéculatif et du Leiserchess" où il conseille aux programmeurs d'évaluer si un mouvement affecte la trajectoire du laser et de rechercher la "couverture laser". L'orateur suggère de laisser les anciennes représentations dans le code et d'utiliser des programmes pour tester les changements. Ils ont également développé une heuristique pour mesurer la distance entre un laser et le roi dans Leiserchess. D'autres suggestions d'optimisation incluent la recherche d'un meilleur moyen d'évaluer la proximité de l'adversaire avec le laser du joueur et l'optimisation du tri des mouvements. Enfin, l'importance de refactoriser et de tester correctement le code est discutée.
Cours 21. Réglage d'un algorithme TSP
Cours 21. Réglage d'un algorithme TSP
Cette vidéo YouTube se concentre sur le problème du voyageur de commerce (TSP), un problème NP-difficile qui existe depuis de nombreuses années. L'orateur passe par divers algorithmes et approches pour optimiser l'espace de recherche et élaguer la recherche pour accélérer l'algorithme TSP, comme la mise en œuvre d'un meilleur algorithme d'arbre couvrant minimum, l'activation de l'optimisation du compilateur et la modification du calcul de la distance pour utiliser un algorithme de recherche de table. La nécessité de limiter l'espace de recherche et de penser de manière créative pour optimiser les programmes en termes de vitesse et de performances est soulignée tout au long de la vidéo, ce qui fournit des informations précieuses sur la résolution des TSP et d'autres problèmes connexes.
Dans cette vidéo, l'orateur aborde diverses techniques d'optimisation de l'algorithme TSP, telles que la mise en cache, l'évaluation paresseuse et le stockage des données dans une table de hachage, en soulignant l'importance des données empiriques par rapport à l'intuition. Il partage également son expérience avec la résolution du problème TSP et l'importance de l'ingénierie de la performance dans sa profession. L'orateur donne un aperçu du processus d'optimisation du code, y compris le développement incrémental et la génération récursive, et encourage le public à utiliser ces techniques car elles sont faciles à mettre en œuvre. Enfin, le conférencier exprime sa gratitude pour la poursuite de l'ingénierie de la performance et le développement d'algorithmes qui améliorent divers services Google, ainsi que pour les amitiés qu'il a nouées tout au long de sa carrière.
Cours 22. Optimisation des graphes
Cours 22. Optimisation des graphes
La vidéo traite du concept de graphe, des différentes manières de le représenter et des techniques d'optimisation pour améliorer l'efficacité des algorithmes de graphe. Le conférencier explore les applications des graphes dans la modélisation des relations et la recherche du chemin le plus court ou le moyen le moins cher pour atteindre une destination, ainsi que des moyens optimaux de stocker des graphes en mémoire pour ajouter, supprimer ou balayer des arêtes. La vidéo couvre également l'optimisation des performances du cache dans les recherches de graphes à l'aide de vecteurs de bits, ainsi que la mise en œuvre de l'algorithme de recherche parallèle en largeur d'abord avec des sommes de préfixes pour filtrer les valeurs négatives. Enfin, l'orateur parle de leurs expériences sur un graphe aléatoire à dix millions de sommets et cent millions d'arêtes, soulignant l'importance du déterminisme dans le code pour assurer la fiabilité et la cohérence.
La vidéo aborde également diverses techniques d'optimisation de graphes, notamment la mise en œuvre de l'opérateur min droit, le code BFS parallèle déterministe, la technique d'optimisation de direction et la compression de graphes. La technique d'optimisation de direction implique une approche ascendante pour explorer les arêtes entrantes lorsque la frontière est grande et a été appliquée à d'autres algorithmes de graphe, tandis que la compression de graphe vise à réduire l'utilisation de la mémoire en codant les différences entre les arêtes consécutives et en réduisant le nombre de bits utilisés. pour stocker ces valeurs. De plus, la vidéo souligne l'importance de tester les optimisations sur différents types de graphiques pour déterminer où ils fonctionnent bien et où ils ne fonctionnent pas.
Cours 23. Haute performance dans les langages dynamiques
Cours 23. Haute performance dans les langages dynamiques
Les défis liés à l'écriture de code critique pour les performances dans des langages typés dynamiquement de haut niveau sont abordés dans cette vidéo, en mettant l'accent sur le langage de programmation Julia. Julia vise à fournir des fonctionnalités interactives de haut niveau tout en offrant le même niveau de performances que les langages de niveau inférieur tels que C et Fortran. La capacité de Julia à écrire du code générique qui fonctionne pour plusieurs types, la métaprogrammation intégrée et les chemins de code optimisés le rendent plus rapide que Python dans des situations telles que la génération de grandes matrices de vandermonde et un code optimisé pour des polynômes spécifiques dans des fonctions spéciales. De plus, les chemins de code optimisés de Julia allouent les boîtes beaucoup plus rapidement que Python, ce qui en fait un meilleur choix pour traiter les structures de données dynamiques comme les tableaux. Enfin, la vidéo traite des multiples capacités de répartition et d'inférence de type de Julia, permettant à différentes versions d'une fonction pour différents arguments et types d'être déduits de manière récursive.
Dans cette vidéo explique également comment fonctionne le polymorphisme paramétrique dans Julia et comment il permet de créer des familles infinies de types. En définissant un type paramétré, comme un type de point avec des paramètres pour X et Y, et en définissant ces paramètres sur un sous-type de réel, on peut créer un ensemble complet de types qui peuvent être « instanciés » avec un sous-type particulier. De plus, l'orateur discute des capacités et des bibliothèques de Julia pour implémenter le threading, la récupération de place et le parallélisme de mémoire distribuée, ainsi que sa large gamme de support Unicode pour les identifiants. De plus, l'importance d'avoir des variables avec des noms propres et descriptifs est soulignée, et l'orateur mentionne un projet qui explore la fusion de la technologie Julia avec la technologie Silk qui pourrait conduire à de nouveaux développements à l'avenir.
Richard Feynman : Les machines peuvent-elles penser ?
Richard Feynman : Les machines peuvent-elles penser ?
Dans la vidéo "Richard Feynman : les machines peuvent-elles penser ?", Feynman soutient que si les machines sont meilleures que les humains dans de nombreux domaines comme l'arithmétique, la résolution de problèmes et le traitement de grandes quantités de données, les machines n'atteindront jamais une pensée et une intelligence humaines. Les machines ont du mal à reconnaître les images en raison de complexités telles que les variations de lumière et de distance, et bien que les ordinateurs reconnaissent les modèles, ils ne peuvent pas découvrir de nouvelles idées et relations par eux-mêmes. Feynman discute également de l'efficacité de l'utilisation de machines pour la prévision météorologique et d'autres tâches complexes, citant l'exemple d'un homme du nom de Lumic qui a utilisé une liste d'heuristiques pour remporter le championnat du jeu naval en Californie. Pour fabriquer des machines intelligentes, Feynman suggère aux développeurs d'éviter les distorsions psychologiques évoluant sournoisement et de se concentrer plutôt sur la recherche de nouvelles façons d'éviter le travail, car les machines montrent les faiblesses nécessaires de l'intelligence.
Regard sur l'IA : Ilya Sutskever
Regard sur l'IA : Ilya Sutskever
Ilya Sutskever aborde une variété de sujets liés à l'IA dans cette vidéo. Il partage son intérêt précoce pour l'IA et l'apprentissage automatique et décrit comment sa collaboration avec Jeff Hinton a conduit au développement du réseau neuronal convolutif AlexNet. Sutskever parle également des défis et des limites des modèles de langage, affirmant qu'ils font plus que simplement apprendre des régularités statistiques et que la représentation d'idées et de concepts est une réalisation importante. Il discute également du besoin de grandes quantités de données et de processeurs plus rapides dans la formation à l'IA et suggère la possibilité d'une forme de démocratie à large bande passante où les individus saisissent des données pour spécifier le comportement des systèmes.
Mathématiques pour l'apprentissage automatique - Calcul multivarié - Spécialisation en ligne complète
Mathématiques pour l'apprentissage automatique - Calcul multivarié - Spécialisation en ligne complète
Partie 1
Partie 2
Partie 3
Partie 4