L'inévitabilité de l'intégration des FPGA dans les centres de données

L'inévitabilité de l'intégration des FPGA dans les centres de données
Il n'est pas nécessaire d'être un développeur de puces pour programmer des FPGA, tout comme il n'est pas nécessaire d'être programmeur en C++ pour écrire du code en Java. Cependant, dans les deux cas, cela pourrait s'avérer utile.

L'objectif de la commercialisation des deux technologies, Java et FPGA, est de contredire cette dernière affirmation. La bonne nouvelle pour les FPGA est qu'avec les niveaux d'abstraction appropriés et les outils adéquats, au cours des 35 dernières années, depuis l'invention des dispositifs logiques programmables, il est devenu de plus en plus facile de créer des algorithmes et des flux de données pour les FPGA au lieu des CPU, DSP, GPU ou de toute autre forme d'ASIC spécialisés.

L'incroyable opportunité de leur création se manifeste au moment où les CPU ne pouvaient plus être le seul module de calcul de centres de données pour exécuter de nombreuses tâches, pour diverses raisons. Les FPGA ont atteint leur efficacité, offrant rapidité, faible latence, capacités de mise en réseau et mémoire – les capacités de calcul hétérogène des FPGA SoC modernes, qui représentent pratiquement des systèmes de calcul complets. Cependant, les FPGA s'intègrent également bien avec d'autres dispositifs dans des systèmes hybrides, et nous croyons qu'ils commencent à trouver leur place légitime dans la hiérarchie des calculs.

C'est pourquoi nous avons organisé la conférence The Next FPGA Platform à San José, le 22 janvier. Naturellement, l'un des principaux fournisseurs de FPGA au monde et pionnier dans ce domaine est Xilinx. Ivo Bolsens, vice-président senior et directeur technique de Xilinx, a pris la parole lors de la conférence et nous a fait part de ses réflexions sur la manière dont Xilinx aide à créer des systèmes de calcul modulables pour les centres de données.

Il a fallu beaucoup de temps aux architectes système et aux programmeurs pour parvenir à un centre de données hétérogène, où des ressources informatiques de différents types résolvent des tâches de calcul, de stockage et d'organisation des réseaux. Cela semble nécessaire car il devient de plus en plus difficile de suivre la loi de Moore avec l'utilisation de divers CMOS. Tant que notre langage est encore lié au CPU, nous continuons à parler d'« accélération des applications », faisant référence à l'amélioration des performances des programmes par rapport à ce qui peut être réalisé uniquement avec des CPU. Dans un certain temps, les centres de données deviendront des ensembles de capacités de calcul, de stockage de données et de protocoles les reliant tous, et nous reviendrons à des termes comme « calcul » et « applications ». Les calculs hybrides deviendront aussi normaux que les services « cloud » d'aujourd'hui, fonctionnant sur la base de simples ou machines virtuelles, et à un moment donné, nous utiliserons simplement le mot « calcul » pour décrire leur fonctionnement. À un moment donné – et probablement l'ère de cette évolution sera fortement favorisée par les FPGA – nous appellerons à nouveau cela le traitement des données.

L'intégration des FPGA dans les centres de données nécessitera un changement de mentalité. « En réfléchissant aux moyens d'accélérer les applications d'aujourd'hui, il faut revenir aux bases de leur exécution, quels sont les ressources utilisées, où le temps est dépensé », explique Bolens. – Il faut étudier le problème global que vous essayez de résoudre. De nombreuses applications fonctionnant dans les centres de données aujourd'hui se mettent à l'échelle en capturant une grande quantité de ressources. Prenons par exemple l'apprentissage automatique, qui utilise un nombre énorme de nœuds de calcul. Mais en parlant d'accélération, il faut penser non seulement à l'accélération des calculs, mais aussi à l'accélération de l'infrastructure.

Par exemple, dans les opérations liées à l'apprentissage automatique que Bolens a étudiées en pratique, environ 50 % du temps est consacré à la transmission des données de part et d'autre entre des capacités de calcul dispersées, et seulement la moitié restante du temps est consacrée aux calculs eux-mêmes.

«C'est ici, je pense, que la FPGA peut aider, car nous pouvons optimiser à la fois les aspects de calcul et les aspects de transmission de données pour l'application. Et nous pouvons le faire à la fois au niveau de l'infrastructure générale et au niveau de la puce. C'est l'un des grands avantages des FPGA, qui permettent de créer des réseaux de communication adaptés aux besoins spécifiques de l'application. En observant les schémas typiques de déplacement des données dans des tâches liées à l'intelligence artificielle, je ne vois pas la nécessité d'une architecture complexe basée sur des commutateurs. On peut construire un réseau avec un grand flux de données. La même chose s'applique aux tâches de formation des réseaux neuronaux : il est possible de construire un réseau maillé avec des tailles de paquets qui s'adaptent à la tâche spécifique. Avec les FPGA, il est très précisément possible d'échelonner et de personnaliser les protocoles de transmission de données et la topologie du schéma pour une application spécifique. Et en ce qui concerne l'apprentissage automatique, il est également clair que nous n'avons pas besoin de nombres à virgule flottante double précision, et nous pouvons aussi adapter cela ».

La différence entre FPGA et CPU ou ASIC spécialisés est que ces derniers sont programmés lors de leur fabrication, et après cela, vous ne pouvez plus reconsidérer les types de données calculées ou les éléments calculés, ni la nature du flux de données traversant le dispositif. Les FPGA vous permettent de reconsidérer si les conditions de travail changent.

Dans le passé, cet avantage coûtait cher, lorsque la programmation pour FPGA n'était pas pour les âmes sensibles. Il faut ouvrir les compilateurs pour FPGA afin qu'ils s'intègrent mieux avec les outils utilisés par les programmeurs pour créer des applications de calcul parallèle pour CPU dans des langages comme C, C++ ou Python, et déléguer une partie du travail à des bibliothèques accélérant les procédures sur FPGA. C'est ce que fait la pile pour l'apprentissage automatique Vitis, qui est à la base de plateformes MO telles que Caffe et TensorFlow, et qui a des bibliothèques pour exécuter des modèles d'IA conventionnels ou ajouter des capacités FPGA à des tâches telles que le transcodage vidéo, la reconnaissance d'objets dans des vidéos, l'analyse de données, la gestion des risques financiers, et toute bibliothèque tierce.

Ce concept n'est pas très différent du projet CUDA de Nvidia, lancé il y a dix ans, qui transfère les calculs parallèles vers des accélérateurs GPU, ou de l'ensemble d'outils ROCm d'AMD, ou des promesses du projet Intel, OneAPI, qui doit fonctionner sur différents CPU, GPU et FPGA.

La question est de savoir comment tous ces outils seront reliés ensemble, afin que quiconque puisse programmer un ensemble de capacités de calcul à sa guise. C'est important car les FPGA sont devenus plus complexes, beaucoup plus complexes que n'importe quel CPU existant. Ils sont fabriqués avec les technologies de process les plus avancées et à l'aide des technologies d'emballage de puces les plus modernes. Ils trouveront leur niche, car nous ne pouvons plus nous permettre de gaspiller du temps, de l'argent, de l'énergie et de l'intellect - toutes ces ressources sont trop coûteuses.

« Les FPGA offrent des avantages technologiques, dit Bolsens. - Et ce n'est pas juste une simple publicité concernant l'adaptabilité et la reconfigurabilité. Dans toutes les applications critiques - apprentissage machine, analyse de graphes, trading haute fréquence, etc. - ils ont la possibilité d'adapter non seulement le chemin de propagation des données à une tâche spécifique, mais aussi l'architecture de la mémoire - comment les données se déplacent au sein de la puce. De plus, les FPGA disposent de beaucoup plus de mémoire que d'autres dispositifs. Il convient également de noter que si la tâche ne tient pas dans un seul FPGA, il est possible de la mettre à l'échelle sur plusieurs puces, sans rencontrer les inconvénients qui vous attendent lors de la mise à l'échelle des tâches sur plusieurs CPU ou GPU. »

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster