portaldacalheta.pt
  • Principal
  • Mode De Vie
  • Rise Of Remote
  • Processus Financiers
  • Gestion De Projet
La Technologie

Interview: La promesse d'Intel oneAPI et Direct Parallel C ++



Intel n’est pas le premier nom qui vous vient à l’esprit lorsque vous pensez au développement de logiciels, même s’il s’agit de l’une des sociétés technologiques les plus influentes et les plus innovantes de la planète. Il y a quatre décennies, le processeur 8088 d'Intel a contribué à lancer la révolution des PC, et si vous lisez ceci sur un ordinateur de bureau ou un ordinateur portable, il y a de fortes chances que vous ayez un Intel Inside. Il en va de même pour les serveurs et une gamme d'autres matériels sur lesquels nous comptons chaque jour. Cela ne veut pas dire qu'AMD et les autres fournisseurs n'ont pas de produits compétitifs parce qu'ils en ont, mais Intel domine toujours le marché des processeurs x86.

Les ingénieurs en logiciel utilisent les plates-formes matérielles Intel depuis des décennies, généralement sans même tenir compte du logiciel et du micrologiciel qui les sous-tendent. S'ils avaient besoin de plus de performances de virtualisation, ils ont opté pour des produits multicœur, Core i7 hyperthread ou Xeon. Pour le bricolage de la base de données locale, ils pourraient obtenir un SSD Intel. Mais maintenant, Intel souhaite que les développeurs commencent également à utiliser davantage de ses logiciels.



Qu'est-ce que Intel oneAPI?

Entrer oneAPI , présenté par Intel comme un modèle de programmation unique et unifié qui vise à simplifier le développement sur différentes architectures matérielles: CPU, GPU, FPGA, accélérateurs IA, etc. Tous ont des propriétés très différentes et excellent dans différents types d'opérations.



Qu



Intel s'est désormais engagé dans une stratégie de «logiciel d'abord» et s'attend à ce que les développeurs en prennent note. L'idée principale derrière oneAPI est de permettre l'utilisation d'une plate-forme pour une gamme de matériels différents, par conséquent, les développeurs n'auraient pas à utiliser différents langages, outils et bibliothèques lorsqu'ils codent pour des CPU et des GPU, par exemple. Avec oneAPI, la boîte à outils et la base de code seraient les mêmes pour les deux.

Pour rendre cela possible, Intel a développé Données parallèles C ++ (DPC ++) comme alternative open-source aux langages propriétaires généralement utilisés pour programmer pour du matériel spécifique (par exemple, GPU ou FFPGA). Ce nouveau langage de programmation est censé offrir la productivité et la familiarité du C ++ tout en incluant un compilateur à déployer sur différentes cibles matérielles.



Data Parallel C ++ intègre également le groupe Khronos SYCL pour prendre en charge le parallélisme des données et la programmation hétérogène. Intel offre actuellement un accès gratuit à ses DevCloud , permettant aux ingénieurs logiciels d'essayer leurs outils et de bricoler avec oneAPI et DPC ++ dans le cloud sans trop de tracas.

oneAPI pour le développement interarchitecture



comment faire un bot discord sur mobile

Mais attendez, cela fonctionnera-t-il sur du matériel fabriqué par d'autres fournisseurs? Qu'en est-il des licences, est-ce gratuit? Oui et oui: oneAPI est conçu pour être indépendant du matériel et open source, et cela ne changera pas.

Pour en savoir plus sur oneAPI, nous avons discuté de sa genèse et de son avenir avec Sanjiv M. Shah, vice-président du groupe architecture, graphisme et logiciel d'Intel et directeur général des technologies, des entreprises et du cloud computing chez Intel.



Sanjiv: Pour ce qui est de ce que contient oneAPI, je le considère comme quatre éléments. Le premier est un langage et une bibliothèque standard, le second est un ensemble d'outils d'apprentissage en profondeur, le troisième est en réalité une couche d'abstraction matérielle et une couche de pilote logiciel qui peut abstraire différents accélérateurs, et le quatrième est un ensemble de bibliothèques axées sur le domaine. , comme Matlab et ainsi de suite. Ce sont les quatre catégories de choses dans oneAPI, mais nous pouvons aller plus loin et parler des neuf éléments de oneAPI. Ces neuf éléments sont essentiellement le nouveau langage que nous introduisons appelé Data Parallel C ++ et sa bibliothèque standard.

Il existe deux bibliothèques d'apprentissage, une pour les réseaux de neurones et une pour les communications. Il y a la bibliothèque que nous appelons le niveau zéro pour l'abstraction matérielle, et il existe quatre bibliothèques axées sur le domaine. Nous faisons cela d'une manière très, très ouverte. Les spécifications pour tous ces éléments sont déjà ouvertes et disponibles. Nous les appelons la version 0.5. Nous avons l'intention de passer à la version 1.0 d'ici la fin de 2020, et nous avons également des implémentations open source de tout cela. Encore une fois, notre objectif est de permettre aux gens de tirer parti de ce qui existe déjà. Si un fournisseur de matériel souhaite implémenter ce langage, il peut utiliser ce qui est open-source et l'exécuter avec lui.



Q: En ce qui concerne les algorithmes et la mise en œuvre, comment cela fonctionne-t-il?

effet de la couleur sur le comportement humain

Ce que nous fournissons, ce sont les primitives que les algorithmes utiliseraient: les primitives mathématiques sous-jacentes et les primitives de communication. En règle générale, l’innovation en matière d’algorithmes se produit à un niveau plus élevé que cela, où ils ne sont pas vraiment en train de refaire les mathématiques fondamentales, les mathématiques matricielles, les mathématiques de convolution, etc. Il s'agit de trouver de nouvelles façons d'utiliser ces mathématiques et de nouvelles façons d'utiliser les modèles de communication. Notre objectif est vraiment pour nous de fournir le primitif, le niveau zéro, afin que d'autres puissent innover par dessus.



Q: Comment cela fonctionne-t-il au niveau matériel?

Si vous êtes un fournisseur de matériel, prenons une matrice d'IA, par exemple quelqu'un qui construit un ASIC d'IA - il existe deux façons pour ce fournisseur de matériel de se «brancher» et d'exploiter l'écosystème de l'IA. La première serait de fournir cette interface matérielle de bas niveau que nous appelons le niveau zéro, et s'ils fournissent leur version de niveau zéro à l'aide de l'API standard, ils peuvent tirer parti de l'open source s'ils le souhaitent, puis de toutes les couches logicielles ci-dessus. peut automatiquement en tirer parti.

Cela pourrait être difficile pour un ASIC axé sur le segment, de fournir toute la généralité du niveau zéro. Donc, comme alternative à cela, ils peuvent également simplement fournir les noyaux mathématiques et les noyaux de communication qui sont dans notre domaine et les bibliothèques d'apprentissage en profondeur, puis nous ferons le travail de «plomberie» ces bibliothèques dans les cadres de plus haut niveau, donc ils l'obtiendraient automatiquement.

Q: Vous avez mentionné que la version que vous avez actuellement est désignée 0.5 et que la spécification complète devrait être prête d'ici la fin de 2020.

Notre initiative oneAPI comporte donc deux volets. L'un est la partie industrie et l'autre les produits Intel. La spécification de l'industrie est à 0,5, et vers le milieu de l'année, nous aimerions atteindre 1,0. Parallèlement à cela, Intel construit un ensemble de produits, et les produits qu'Intel construit sont aujourd'hui en version bêta et implémentent la spécification 0.5. D'ici la fin de l'année, nous aimerions arriver à un produit 1.0.

Le produit d'Intel va au-delà des neuf éléments de oneAPI car, en plus des éléments de programmation de base que nous fournissons, nous souhaitons également fournir les éléments dont les programmeurs ont vraiment besoin, comme des débogueurs, des analyseurs et des outils de compatibilité afin qu'ils migrent des langages existants vers les données. Langage C ++ parallèle.

Q: Quelle est la difficulté pour le développeur de faire la transition? L'environnement au sens large est-il similaire à ce qu'ils utilisent depuis des années?

Oui, c'est très similaire. Permettez-moi de décrire un peu Data Parallel C ++ car c'est une grande partie de ce que nous faisons. DPC ++ est trois choses. Il s'appuie sur le langage C ++ de la norme internationale ISO. Il existe un groupe appelé Khronos qui définit le standard appelé SYCL, et SYCL est superposé au C ++. Nous prenons SYCL, puis nous ajoutons des extensions par-dessus SYCL. La façon dont nous construisons Data Parallel C ++, ce n'est en réalité que du C ++ avec des extensions, c'est ce qu'est SYCL.

compilateur et runtime oneAPI DPC ++

Tout compilateur C ++ peut le compiler. La beauté de DPC ++ est que n'importe quel compilateur peut le compiler, seul un compilateur expérimenté peut tirer parti de ce qu'il y a dans ce langage et générer du code accélérateur. La façon dont nous conduisons ce langage, nous le faisons très, très ouvertement, donc toutes nos discussions sur Data Parallel C ++ se déroulent avec le comité SYCL. Les implémentations sont open-source, toutes les extensions sont déjà publiées, et nous travaillons très, très soigneusement pour nous assurer que nous avons un bon parcours vers les futurs standards SYCL. En regardant dans 5 à 10 ans à partir de maintenant, un glidepath dans ISO C ++ également.

Q: En ce qui concerne les compilateurs et la migration vers DPC ++, la courbe d'apprentissage ne devrait pas être un gros problème?

Oui, cela dépend d'où vous partez, bien sûr. Pour un programmeur C ++, la courbe d'apprentissage serait très petite. Pour un programmeur C, vous devrez surmonter l'obstacle de l'apprentissage du C ++, mais c'est tout. C ++ est très familier. Pour un programmeur habitué à des langages comme OpenCL, cela devrait être très similaire.

L'autre partie que je dois souligner est que nous faisons le travail en open source en utilisant l'infrastructure LLVM. Toutes nos sources sont déjà ouvertes, il y a un référentiel Intel GitHub où vous pouvez aller voir l'implémentation du langage, même télécharger un compilateur open-source. Tous les outils Intel, nos offres de produits bêta sont également disponibles gratuitement pour que quiconque puisse jouer et télécharger. Nous avons également un cloud de développement disponible, où les gens n'ont pas besoin de télécharger ou d'installer quoi que ce soit, ils peuvent simplement écrire le code et commencer à utiliser tous les outils dont nous avons parlé.

Q: Le C ++ est performant et relativement simple, mais nous savons tous qu’il vieillit, le développement est lent, il y a trop de parties prenantes, donc elles ralentissent tout. Ce ne serait évidemment pas le cas avec DPC ++. Vous auriez des itérations et des mises à jour beaucoup plus rapides?

Je pense que vous avez touché un point très, très important pour nous, à savoir une évolution rapide qui n’est pas ralentie par les normes. Donc, nous voulons faire nos discussions ouvertement avec la norme, donc il y a un moyen d'entrer dans les normes, mais nous voulons aussi le faire rapidement.

Les langages fonctionnent mieux lorsqu'ils sont co-conçus par leurs utilisateurs et implémenteurs, à mesure que les architectures évoluent. Notre objectif est une conception de code itérative très rapide où nous pratiquons les choses, trouvons la meilleure façon de faire les choses et les rendons standard. Donc, absolument, une itération rapide est un grand objectif.

Q: Une question qui a été soulevée par certains de mes collègues (vous pouvez probablement comprendre qu'ils sont quelque peu préoccupés par l'ouverture à tout ce qui vient d'une grande entreprise): DPC ++ restera-t-il toujours ouvert à tous les utilisateurs et fournisseurs?

Absolument! La spécification est réalisée avec une licence Creative Commons. N'importe qui peut utiliser la spécification, la prendre et la fourchette si elle le souhaite, et la faire évoluer. Je tiens à souligner que tous les éléments de oneAPI ne sont pas open-source, mais nous sommes sur la bonne voie pour rendre presque tous les éléments open-source. Tout cela, n'importe qui peut saisir et exploiter - il est disponible pour la mise en œuvre.

une introduction à l'apprentissage automatique

Codeplay , qui est une société basée au Royaume-Uni, a annoncé une implémentation Nvidia de DPC ++, et nous encourageons vraiment tous les fournisseurs de matériel et de logiciels à faire leur portage. Nous sommes à un point unique dans l'industrie où les accélérateurs sont de plus en plus courants pour plusieurs fournisseurs. Lorsque cela se produit dans l'histoire, lorsqu'il n'y a qu'un seul fournisseur, leur langue domine. L'industrie du logiciel exige une solution standard et plusieurs fournisseurs.

Ce que nous essayons de faire ici, c'est ce que nous avons fait il y a environ deux décennies et demie avec OpenMP , où il y avait plusieurs langues parallèles mais aucune langue vraiment dominante. Nous avons pris tout cela et l'avons unifié dans une norme qui maintenant, 25 ans plus tard, est la façon de programmer pour HPC.

Q: Serait-il correct de dire que DPC ++ va connaître beaucoup d'évolution au cours des prochaines années? Qu'en est-il des tenseurs, qu'en est-il du nouveau matériel qui sort?

Oui, absolument, vous avez raison. Nous devons faire évoluer le langage pour prendre en charge le nouveau matériel qui sortira. C'est l'objectif d'une itération plus rapide. Un autre point que je veux souligner est que nous concevons Data Parallel C ++ afin que vous puissiez également brancher des extensions spécifiques à l'architecture si vous le souhaitez.

Ainsi, s'il s'agit d'un langage standard que nous souhaitons utiliser sur plusieurs architectures, nous nous rendons également compte que parfois, un public, un public très important a besoin du maximum de performances possible. Ils voudront peut-être se plonger dans une programmation de très bas niveau qui ne sera pas nécessairement compatible avec l'architecture. Nous développons des extensions et des mécanismes afin que vous puissiez avoir des extensions pour les tenseurs, etc., qui seraient spécifiques à l'architecture.

Q: Quel contrôle un développeur peut-il avoir sur le code généré pour le matériel? Quel contrôle peuvent-ils avoir sur la gestion de la mémoire entre le système et les différents accélérateurs?

Nous empruntons le concept de tampons à SYCL, qui donnent un contrôle mémoire très explicite à l'utilisateur, mais en plus de cela, nous ajoutons également la notion de mémoire unifiée . Notre objectif est de donner au programmeur un niveau de contrôle dont il a besoin, non seulement pour gérer la mémoire, mais aussi pour générer du code rapide. Certaines des extensions que nous ajoutons sur SYCL sont des éléments tels que des sous-groupes, des réductions, des tuyaux, etc. Cela vous permettra de générer un bien meilleur code pour différentes architectures.

Q: Un point intéressant est la distribution oneAPI pour Python — Intel a spécifiquement répertorié NumPy, SciPy, SciKit Learn. Je suis curieux de connaître le gain de performances et les avantages de productivité qui pourraient être débloqués grâce à oneAPI. Avez-vous des indicateurs à ce sujet?

C’est une excellente question. Nous soutenons cet écosystème. Pourquoi Python voudrait-il utiliser un accélérateur? Il s'agit d'optimiser les performances de ses bibliothèques mathématiques et analytiques. Ce que nous faisons, c'est «plomberie» NumPy, SciPy, SciKit Learn, etc., afin que nous puissions obtenir de bonnes performances en tirant parti des bibliothèques que nous avons en plus. L'implémentation par défaut de NumPy, SciPy, SciKit Learn, etc., comparée à celle qui est correctement installée avec des packages natifs optimisés, peut générer des gains très, très importants. Nous avons constaté des gains de l’ordre de 200x, 300x, etc.

Notre objectif avec Python est que nous souhaitons obtenir une fraction raisonnable, 2x, peut-être dans les 80% des performances du code natif. À l’heure actuelle, vous êtes souvent à 10x ou plus. Nous voulons vraiment combler cet écart en effectuant toutes les tâches de haute performance afin que vous soyez dans un facteur de 2, et en fait beaucoup plus élevé que cela.

Q: De quels types de matériel parlons-nous? Les développeurs pourraient-ils libérer ce potentiel sur un poste de travail ordinaire ou nécessiterait-il quelque chose d'un peu plus puissant?

Non, ce serait partout. Si vous pensez d'où vient le gain, vous comprendrez. Les bibliothèques Python normales n'utilisent aucune des capacités de virtualisation sur les processeurs. Ils n'utilisent aucune des capacités multicœurs des processeurs. Ils ne sont pas optimisés, le système de mémoire et tout ce qui n'est pas optimisé. Donc, cela revient à une matrice multipliée qui est écrite par un programmeur naïf et compilée par un compilateur sans aucune optimisation, puis comparez cela à ce qu'un expert écrit en code d'assemblage. Vous pouvez constater des gains multipliés par 100 lorsque vous comparez ces deux éléments, et dans le monde Python, c'est essentiellement ce qui se passe.

les inefficacités créées par de plus en plus de personnes travaillant ensemble s'appelle :

Les interpréteurs Python et les bibliothèques standard sont si haut niveau que le code avec lequel vous vous retrouvez devient un code très, très naïf. Lorsque vous l'aplombez correctement avec des bibliothèques optimisées, vous obtenez ces énormes gains. Un ordinateur portable a déjà deux à six ou huit cœurs de processeur, ils sont multithreads et ont des capacités de vectorisation assez décentes, peut-être 256, peut-être 512. Donc, il y a beaucoup de performances dans les ordinateurs portables et les stations de travail. Lorsque vous adaptez cela aux GPU, une fois que vous avez des graphiques disponibles, vous pouvez imaginer d'où viennent les gains.

Si vous regardez nos graphiques intégrés, ils deviennent également très puissants. Je suis sûr que vous avez vu le Ice Lake Gen 11, où le les graphiques intégrés sont nettement meilleurs que la génération précédente . Vous pouvez voir d'où viendraient les avantages, même sur les ordinateurs portables.

Q: Qu'en est-il de la disponibilité DevCloud? Si je me souviens bien, il est gratuit pour tout le monde pour le moment, mais le restera-t-il après votre médaille d'or l'année prochaine?

C'est une bonne question. À ce stade, je vais être honnête, je ne connais pas la réponse. Notre intention à ce stade est qu'elle soit gratuite pour toujours. C'est pour le développement, pour jouer, et il y a beaucoup de puissance là-bas, pour que les gens puissent réellement faire leurs courses.

Q: Cela ne vous dérangerait pas si nous demandions à quelques milliers de développeurs de l'essayer?

Oh, absolument pas. Nous aimerions que cela se produise!

pirater la carte de crédit tous les détails 2018

Je peux résumer ce que nous essayons de faire. Premièrement, nous sommes très, très enthousiastes à propos de oneAPI. Il est temps qu’une solution multifournisseurs décolle, car plusieurs fournisseurs sont actuellement disponibles sur le marché. Si vous jetez un coup d'œil à notre gamme de processeurs, pas seulement les GPU à venir, les GPU intégrés de plus en plus puissants et notre feuille de route FPGA, c'est un moment passionnant pour construire une norme pour tout cela. Notre objectif est la productivité, les performances et l'infrastructure de l'industrie afin que vous puissiez en tirer parti.

En ce qui concerne les trois publics dont j'ai parlé, les développeurs d'applications peuvent facilement tirer parti des choses, car elles sont déjà disponibles. Les fournisseurs de matériel peuvent tirer parti de la pile logicielle et brancher du nouveau matériel, tandis que les fournisseurs d'outils et de langage peuvent facilement l'utiliser. Intel ne peut pas créer tous les langages et tous les outils du monde, c'est donc une infrastructure open source que d'autres peuvent exploiter et s'appuyer très facilement.

Comprendre les bases

Qu'est-ce que Intel oneAPI?

Intel oneAPI est un modèle de programmation unique et unifié qui vise à simplifier le développement sur différentes architectures matérielles: processeurs, GPU, FPGA, accélérateurs d'intelligence artificielle, etc.

Qu'est-ce que Data Parallel C ++?

Data Parallel C ++, ou DPC ++ en abrégé, est une alternative open source basée sur C aux langages de programmation propriétaires généralement utilisés pour coder pour des types de matériel spécifiques, tels que les GPU ou les FFPGA.

OneAPI est-il limité uniquement au matériel Intel?

Non, oneAPI est conçu pour être indépendant du matériel et fonctionner avec des processeurs, des GPU et divers accélérateurs matériels de différents fournisseurs.

OneAPI est-il gratuit?

Oui, oneAPI est une initiative open-source et presque tous ses blocs de construction peuvent être utilisés librement.

Passer en temps réel avec Redis Pub / Sub

Back-End

Passer en temps réel avec Redis Pub / Sub
Meilleures pratiques en matière de fusions et acquisitions en Amérique latine

Meilleures pratiques en matière de fusions et acquisitions en Amérique latine

Processus Financiers

Articles Populaires
Conception de page de destination: création de la page de destination ultime
Conception de page de destination: création de la page de destination ultime
Modèles de fiches de conditions - Clauses à surveiller lors de la négociation
Modèles de fiches de conditions - Clauses à surveiller lors de la négociation
Promesses JavaScript: un tutoriel avec des exemples
Promesses JavaScript: un tutoriel avec des exemples
Introduction à OpenGL: un didacticiel sur le rendu de texte 3D
Introduction à OpenGL: un didacticiel sur le rendu de texte 3D
C Corp contre S Corp, partenariat, entreprise individuelle et LLC: quelle est la meilleure entité commerciale?
C Corp contre S Corp, partenariat, entreprise individuelle et LLC: quelle est la meilleure entité commerciale?
 
Les marchés à millions de dollars sont-ils meilleurs que les marchés à milliards de dollars?
Les marchés à millions de dollars sont-ils meilleurs que les marchés à milliards de dollars?
Créer un curseur de page complète personnalisé avec CSS et JavaScript
Créer un curseur de page complète personnalisé avec CSS et JavaScript
La métaprogrammation Ruby est encore plus cool qu'il n'y paraît
La métaprogrammation Ruby est encore plus cool qu'il n'y paraît
Blockchain, IoT et l'avenir des transports: comprendre la devise du moteur
Blockchain, IoT et l'avenir des transports: comprendre la devise du moteur
Explorer les algorithmes d'apprentissage automatique supervisé
Explorer les algorithmes d'apprentissage automatique supervisé
Articles Populaires
  • comment se connecter au metamask depuis un site web
  • quelle est la difference entre s corporation et c corporation
  • grattage web avec sélénium python
  • dette convertible vs actions convertibles
  • comment faire un discord bot java
Catégories
  • Mode De Vie
  • Rise Of Remote
  • Processus Financiers
  • Gestion De Projet
  • © 2022 | Tous Les Droits Sont Réservés

    portaldacalheta.pt