Bien que cette approche ne soit plus à la mode depuis quelques temps, il reste virtuellement impossible aux autres méthodes de maintenir à la fois prix bas et performances élevées, chose habituellement rendue possible par l'utilisation d'un système Linux, lorsqu'il s'agit d'héberger dans la machine une unité de calcul dédiée. Le problème est que la prise en charge logicielle de ces outils est très limitée. Nous serons plus ou moins livrés à nous mêmes.
En général, les processeurs secondaires tendent à se spécialiser dans l'exécution de fonctions bien spécifiques.
Avant de se sentir découragés parce que livrés à nous-mêmes, il est utile de comprendre que, bien qu'il puisse être difficile de le préparer à recevoir un système particulier, un PC sous Linux reste l'une des rares plate-formes qui se prêtent convenablement à cet usage.
Un PC forme un bon système d'accueil pour deux raisons : La première est sa capacité à évoluer aisément et de façon peu onéreuse. Les ressources telles que la mémoire, les disques, le réseau et autres peuvent être ajoutées vraiment très facilement à un PC. La seconde est sa facilité d'interfaçage. Non seulement les prototypes de cartes ISA et PCI sont largement répandus et disponibles, mais le port parallèle fournit également des performances raisonnables dans une interface discrète. L'adressage séparé des entrées / sorties de l'architecture IA32 facilite également l'interfaçage en offrant une protection de ces adresses au niveau du port individuel.
Linux est également un bon système d'exploitation pour l'hébergement de
systèmes dédiés. La libre et complète disponibilité du code source, et les
nombreux manuels de programmation avancée constituent évidement une aide
très précieuse. Mais Linux apporte également une gestion des tâches pratiquement
temps-réel. Il existe même une version fonctionnant en vrai temps-réel.
Mais une chose peut-être plus importante encore est le fait que, même
dans un environnement Unix complet, Linux sait prendre en charge des outils
de développement écrits pour fonctionner sous MS-DOS ou Windows. Les programmes
DOS peuvent être exécutés dans un processus Unix en utilisant
dosemu
, qui dresse une machine virtuelle protégée
qui peut littéralement exécuter du code MS-DOS. La prise en charge des programmes
Windows 3.xx sous Linux est encore plus directe : Certains logiciels libres comme
wine
simulent Windows 3.11 suffisamment bien pour permettre à la plupart des programmes
Windows d'être exécutés correctement sur une machine Unix équipée de X-Window[26].
Les deux sections suivantes donnent des exemples de systèmes parallèles auxiliaires que j'aimerais voir être exploités sous Linux :
Un marché prospère s'est développé autour des puces DSP (« Digital Signal Processing », ou « Traitement Numérique du Signal ») à hautes performances. Bien qu'elles soient en général conçues pour être embarquées dans des systèmes dédiés à des usages bien spécifiques, elles peuvent aussi être utilisées comme de très bons ordinateurs parallèles annexes. Voici pourquoi :
Plusieurs d'entre elles, comme le TMS320 de Texas Instruments et la famille SHARC d'Analog Devices sont conçues pour permettre l'assemblage de machines parallèles en n'utilisant que très peu, voire aucun circuit logique intermédiaire.
Ces puces sont bon marché, spécialement au niveau du coût par MIP ou par MFLOP. Prix des circuits de gestion logique de base compris, on peut trouver un processeur DSP pour le dixième du prix du processeur d'un PC, à performances comparables.
Elle ne nécessitent que peu de puissance et ne dissipent pas beaucoup de chaleur. Cela signifie qu'il est possible d'alimenter toute une poignée de processeurs de ce type avec une simple alimentation PC conventionnelle, et de les enfermer dans le boîtier d'un PC sans transformer celui-ci en haut-fourneau.
La plupart des jeux d'instructions des DSP contiennent des choses assez exotiques et que les langages de haut niveau (c'est-à-dire : comme le C) ne sont pas à même d'utiliser correctement. Par exemple, l'« adressage de bit inversé ». En utilisant des systèmes parallèles inclus dans une machine, il est possible de compiler et d'exécuter directement la plupart du code sur cette machine, tout en confiant l'exécution des quelques algorithmes consommant la plupart du temps système aux DSP, par l'entremise d'un code particulièrement soigné et optimisé à la main.
Ces DSP ne sont pas vraiment conçus pour faire fonctionner un système d'exploitation UNIX ou assimilé, et ne sont généralement pas non plus adaptés à une utilisation autonome comme processeur général d'un ordinateur. Le système de gestion de la mémoire, par exemple, est insuffisant pour beaucoup d'entre eux. En d'autres mots, ils sont bien plus efficaces lorsqu'ils sont intégrés au sein d'une machine hôte plus polyvalente … telle qu'un PC sous Linux.
Bien que de nombreux modems et cartes son contiennent des processeurs DSP accessibles par des pilotes Linux, les grands profits arrivent avec l'utilisation de systèmes parallèles intégrés comprenant au moins quatre processeurs DSP.
Même si la série TMS320 de Texas Instruments, sur http://dspvillage.ti.com, est populaire depuis un bon moment, les systèmes de ce type étant disponibles sont encore peu nombreux. Il existe à la fois une version uniquement entière et une version virgule flottante du TMS320. Les anciens modèles utilisaient un format de virgule flottante en simple précision assez inhabituel, mais les nouveaux gèrent à présent les formats IEEE. Les anciens TMS320C4x (ou simplement « C4x »), accomplissaient jusqu'à 80 MFLOP en utilisant le format de nombre en virgule flottante simple précision spécifique à TI. En comparaison, un seul « C67x » apportera jusqu'à 1 GFLOP en simple précision et 420 MFLOP en double précision au format IEEE, en utilisant une architecture à base de VLIW nommée VelociTI. Non seulement il est aisé de configurer un groupe de circuits de ce type pour en faire un multiprocesseur, mais un de ces circuits, le multiprocesseur « 'C8x », formera à lui seul un processeur principal à technologie RISC accusant 100 MFLOP au format IEEE, et doté soit de deux, soit de quatre DSP esclaves intégrés.
L'autre famille de processeurs DSP qui ne soit pas simplement utilisée ces temps-ci par quelques rares systèmes en parallèle est SHARC (ou « ADSP-2106x »), d'Analog Devices. Ces circuits peuvent être configurés en un multiprocesseur à mémoire partagée formé par 6 processeurs sans nécessiter de logique externe pour les associer, et peuvent aussi former de plus grands systèmes grâce à des circuits de liaison de 4 bits. Les systèmes au-delà de celui-ci sont essentiellement destinés aux applications militaires, et reviennent assez cher. Toutefois, Integrated Computing Engines, Inc. produit un petit jeu de deux cartes PCI assez intéressant, nommé GreenICE. Cette unité contient un réseau de 16 processeurs SHARC, et affiche une vitesse de pointe d'1.9 GFLOP au format IEEE simple précision. GreenICE coûte moins de 5000 dollars.
A mon avis, les circuits DSP parallèles intégrés mériteraient une plus grande attention de la part du petit monde du calcul en parallèle sous Linux…
Si l'objectif final du traitement en parallèle reste l'atteinte des plus hautes vitesses possibles, et bien pourquoi ne pas fabriquer du matériel sur mesure ? Nous connaissons tous la réponse : Trop cher, trop long à développer, le matériel ainsi conçu devient inutile lorsque l'algorithme change même de façon minime, et cætera. Cependant, les récentes avancées faites dans le domaine des FPGA (« Field Programmable Gate Array », ou « Réseaux Logiques Programmables à effet de Champ ») ont réduit à néant la plupart de ces objections. Aujourd'hui, la densité des portes logiques est suffisamment élevée pour qu'un processeur entier puisse être intégré dans un seul FPGA, et le temps de reconfiguration (ou de reprogrammation) d'un de ces FPGA a également chuté à un niveau où l'on peut raisonnablement reconfigurer le circuit même entre deux phases d'un même algorithme.
Il ne faut pas avoir froid aux yeux pour utiliser ces techniques : Il faudra travailler avec des langages de description matérielle tels que le VHDL pour configurer les FPGA, tout comme écrire du code de bas niveau pour programmer les interfaces avec le système d'accueil Linux. En revanche, le coût des FPGA est assez bas, spécialement pour les algorithmes opérant sur des données entières et de précision normale (ce qui ne représente en fait qu'un surensemble restreint de tout ce à quoi le SWAR s'applique bien), ces FPGA peuvent effectuer des opérations complexes à peu près aussi vite qu'on peut les leur transmettre. Par exemple, de simples systèmes à base de FPGA ont accusé des performances supérieures à celles des supercalculateurs lors de recherches sur des bases de données génétiques.
Il existe plusieurs compagnies produisant du matériel approprié à base de FPGA, mais les deux suivantes en sont un bon exemple :
Virtual Computer Company propose toute une gamme de produits utilisant des FPGA Xilinx à base de SRAM et reconfigurables dynamiquement. Leur « Virtual ISA Proto Board » 8/16 bits coûte moins de 2000 dollars.
L'ARC-PCI d'Altera (« Altera Reconfigurable Computer », sur bus PCI), sur http://www.altera.com/html/new/pressrel/pr_arc-pci.html, est un type de carte similaire, mais utilisant les FPGA d'Altera et un bus PCI comme interface plutôt qu'un bus ISA.
Bon nombre de ces outils de conception, langages de description
matérielle, compilateurs, routeurs, et cætera, sont livrés sous forme
d'un code objet qui ne fonctionne que sous DOS ou Windows. Nous
pourrions simplement conserver une partition DOS/Windows sur notre PC
d'accueil et redémarrer lorsque nous en avons besoin. Toutefois, la
plupart de ces outils peuvent probablement fonctionner sous Linux en
utilisant dosemu
ou des émulateurs Windows tels que
wine
.
[26] N.D.T. : WINE a évolué avec le temps et reconnaît naturellement les versions plus récentes de ce système d'exploitation.
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:15