Sophie

Sophie

distrib > * > 2010.0 > * > by-pkgid > a412ceb851151854794ced2a242192bb > files > 2728

howto-html-fr-20080722-1mdv2010.0.noarch.rpm

<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>3.&nbsp;Clusters de syst&egrave;mes Linux</title><link href="style.css" rel="stylesheet" type="text/css"><meta content="DocBook XSL Stylesheets V1.68.1" name="generator"><link rel="start" href="index.html" title="Le traitement en parall&egrave;le sous Linux"><link rel="up" href="index.html" title="Le traitement en parall&egrave;le sous Linux"><link rel="prev" href="ar01s02.html" title="2.&nbsp;Linux sur SMP"><link rel="next" href="ar01s04.html" title="4.&nbsp;SIMD Within A Register&nbsp;: SWAR (Ex&nbsp;: utilisation de MMX)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">3.&nbsp;<span class="foreignphrase"><em class="foreignphrase">Clusters</em></span> de syst&egrave;mes Linux</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ar01s02.html">Pr&eacute;c&eacute;dent</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ar01s04.html">Suivant</a></td></tr></table><hr></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N10704"></a>3.&nbsp;<span class="foreignphrase"><em class="foreignphrase">Clusters</em></span> de syst&egrave;mes Linux</h2></div></div></div><p>

Cette section tente de donner un aper&ccedil;u de ce qu'est le traitement 
parall&egrave;le en <span class="foreignphrase"><em class="foreignphrase">cluster</em></span> sous Linux. Les 
<span class="foreignphrase"><em class="foreignphrase">clusters</em></span> sont, actuellement, &agrave; la fois 
l'approche la plus populaire et la plus vari&eacute;e, en s'&eacute;tendant du simple 
r&eacute;seau de stations de travail (<span class="foreignphrase"><em class="foreignphrase">Network Of 
Workstations</em></span>&nbsp;: <span class="emphasis"><em>NOW</em></span>) aux 
machines en parall&egrave;le essentiellement construites sur mesure, et dans 
lesquelles il arrive que l'on trouve comme &eacute;l&eacute;ments des PC sous Linux. Il 
existe &eacute;galement un grand nombre de logiciels pouvant prendre en charge 
le calcul en parall&egrave;le dans des <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> 
de machines Linux.

</p><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N1071A"></a>3.1.&nbsp;Pourquoi un <span class="foreignphrase"><em class="foreignphrase">cluster</em></span>&nbsp;?</h3></div></div></div><p>

Le traitement en parall&egrave;le au travers d'un 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span> offre plusieurs avantages 
majeurs&nbsp;:

</p><div class="itemizedlist"><ul type="disc"><li><p>

Chacune des machines d'un <span class="foreignphrase"><em class="foreignphrase">cluster</em></span> peut 
&ecirc;tre un syst&egrave;me complet, utilisable avec une large gamme d'applications 
de calcul. Cela conduit beaucoup de gens &agrave; sugg&eacute;rer l'id&eacute;e que ce type 
de <span class="foreignphrase"><em class="foreignphrase">cluster</em></span> pourrait faire usage de tous 
les &laquo;&nbsp;<span class="quote">cycles machine perdus</span>&nbsp;&raquo; sur les ordinateurs tournant &agrave; 
ne rien faire dans les bureaux. Il n'est pas si facile de r&eacute;cup&eacute;rer ces 
cycles, et cela risque de ralentir l'&eacute;cran de veille de votre coll&egrave;gue, 
mais cela peut &ecirc;tre fait.

</p></li><li><p>

L'explosion actuelle des syst&egrave;mes en r&eacute;seau signifie que la plupart du 
mat&eacute;riel n&eacute;cessaire &agrave; la construction d'un 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span> se vend d&eacute;j&agrave; en grande quantit&eacute; 
et aux prix r&eacute;duits inh&eacute;rents &agrave; la &laquo;&nbsp;<span class="quote">grande distribution</span>&nbsp;&raquo;. 
On peut &eacute;conomiser encore un peu plus en partant du principe qu'une 
seule carte vid&eacute;o, un seul moniteur et un seul clavier soient 
n&eacute;cessaires pour chaque <span class="foreignphrase"><em class="foreignphrase">cluster</em></span> (bien 
qu'il vous faille tout de m&ecirc;me les passer d'une machine &agrave; une autre pour 
faire l'installation initiale de Linux, une fois lanc&eacute;, un PC sous Linux 
typique n'a pas besoin de &laquo;&nbsp;<span class="quote">console</span>&nbsp;&raquo;). En comparaison, les 
syst&egrave;mes SMP et processeurs auxiliaires repr&eacute;sentent des march&eacute;s plus 
r&eacute;duits, tendant &agrave; proposer des prix plus &eacute;lev&eacute;s par performances &agrave; 
l'unit&eacute;.

</p></li><li><p>

Les calculateurs en <span class="foreignphrase"><em class="foreignphrase">cluster</em></span> peuvent 
<span class="emphasis"><em>&eacute;voluer en de tr&egrave;s grands syst&egrave;mes</em></span>. Alors qu'il est 
actuellement difficile de trouver un ordinateur SMP &agrave; plus de quatre 
processeurs qui soit compatible avec Linux, la plupart du mat&eacute;riel 
r&eacute;seau disponible permet de b&acirc;tir facilement un 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span> incluant jusqu'&agrave; 16 machines. 
Avec un peu d'huile de coude, on peut mettre en r&eacute;seau des centaines 
voire des milliers de machines. En fait, Internet tout entier pourrait 
&ecirc;tre assimil&eacute; &agrave; un seul immense <span class="foreignphrase"><em class="foreignphrase">cluster</em></span>.

</p></li><li><p>

Le fait que remplacer une &laquo;&nbsp;<span class="quote">mauvaise machine</span>&nbsp;&raquo; au sein d'un 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span> soit une op&eacute;ration triviale 
compar&eacute; &agrave; la r&eacute;paration d'un ordinateur SMP partiellement d&eacute;faillant 
garantit une disponibilit&eacute; bien plus &eacute;lev&eacute;e aux configurations de 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span> soign&eacute;es. Cela devient important 
non seulement pour les applications qui ne peuvent tol&eacute;rer des 
interruptions de service trop importantes, mais aussi dans l'utilisation 
en g&eacute;n&eacute;ral de syst&egrave;mes qui contiennent un nombre suffisant de 
processeurs pour que la panne d'une machine en particulier soit assez 
courante (par exemple, m&ecirc;me si la dur&eacute;e moyenne avant la premi&egrave;re panne 
d'un PC est environ deux ans, dans un 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span> de 32 machines, la probabilit&eacute; 
qu'au moins une machine tombe en panne dans les six premiers mois est 
assez &eacute;lev&eacute;e).

</p></li></ul></div><p>

Tr&egrave;s bien. Si les <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> sont gratuits 
ou tr&egrave;s peu on&eacute;reux, peuvent devenir tr&egrave;s grands et offrir une haute 
disponibilit&eacute;&hellip; pourquoi tout le monde n'utilise pas un 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span>&nbsp;? Eh bien, parce qu'il y a 
aussi des probl&egrave;mes&nbsp;:

</p><div class="itemizedlist"><ul type="disc"><li><p>

&Agrave; quelques exceptions pr&egrave;s, le mat&eacute;riel r&eacute;seau n'est pas con&ccedil;u pour le 
traitement en parall&egrave;le. Typiquement, les temps de latence sont &eacute;lev&eacute;s 
et la bande passante r&eacute;duite compar&eacute;s aux syst&egrave;mes SMP et processeurs 
auxiliaires. Par exemple, si les temps de latence d'un SMP n'exc&egrave;dent 
g&eacute;n&eacute;ralement pas plus de quelques microsecondes, ils atteignent 
couramment des centaines, voire des milliers de microsecondes dans un 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span>. La bande passante des 
communications dans un syst&egrave;me SMP d&eacute;passe souvent 100 m&eacute;gaoctets par 
seconde. Bien que le mat&eacute;riel r&eacute;seau le plus rapide (c'est-&agrave;-dire le 
&laquo;&nbsp;<span class="quote">Gigabit Ethernet</span>&nbsp;&raquo;) pr&eacute;sente une vitesse comparable, la 
plupart des r&eacute;seaux sont de 10 &agrave; 1000 fois plus lents.

La performance d'un mat&eacute;riel r&eacute;seau est d&eacute;j&agrave; suffisamment m&eacute;diocre dans 
un <span class="foreignphrase"><em class="foreignphrase">cluster</em></span> <span class="emphasis"><em>isol&eacute;</em></span>. Si 
le r&eacute;seau n'est pas isol&eacute; du reste du trafic, ce qui est souvent le cas 
lorsque l'on utilise des &laquo;&nbsp;<span class="quote">machines qui sont en r&eacute;seau</span>&nbsp;&raquo; 
plut&ocirc;t qu'un syst&egrave;me con&ccedil;u pour &ecirc;tre un 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span>, les performances peuvent &ecirc;tre 
bien pires encore.

</p></li><li><p>

La gestion logicielle des <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> en 
tant que syst&egrave;me unique est tr&egrave;s mince. Par exemple, la commande 
<code class="literal">ps</code> ne fait &eacute;tat que des processus s'ex&eacute;cutant sur un 
seul syst&egrave;me Linux, pas des processus s'ex&eacute;cutant &agrave; travers le 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span> Linux entier.

</p></li></ul></div><p>

Moralit&eacute;, les <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> ont un tr&egrave;s grand 
potentiel, mais ce potentiel risque d'&ecirc;tre tr&egrave;s difficile &agrave; concr&eacute;tiser 
pour la plupart des applications. La bonne nouvelle, c'est qu'il existe 
un soutien logiciel tr&egrave;s d&eacute;velopp&eacute; pour vous aider &agrave; obtenir de bonnes 
performances avec les programmes adapt&eacute;s &agrave; cet environnement, et qu'il 
existe &eacute;galement des r&eacute;seaux con&ccedil;us sp&eacute;cialement pour &eacute;largir la palette 
de programmes pouvant avoir de bonnes performances.

</p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N1078F"></a>3.2.&nbsp;Le mat&eacute;riel r&eacute;seau</h3></div></div></div><p>

Les r&eacute;seaux informatiques sont en pleine explosion&hellip; mais vous le 
savez d&eacute;j&agrave;. Un nombre toujours grandissant de technologies et produits 
r&eacute;seau a &eacute;t&eacute; d&eacute;velopp&eacute;, et la plupart d'entre eux sont disponibles sous 
une forme qui peut &ecirc;tre utilis&eacute;e pour faire d'un groupe de machines (des 
PC fonctionnant chacun sous Linux) un 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span> de traitement en parall&egrave;le.

</p><p>

Malheureusement, aucune technologie r&eacute;seau ne r&eacute;sout compl&egrave;tement tous 
les probl&egrave;mes. &Agrave; vrai dire, le nombre d'approches diff&eacute;rentes, en co&ucirc;t 
et en performances, est &agrave; premi&egrave;re vue assez difficile &agrave; croire. Par 
exemple, le co&ucirc;t par machine mise en r&eacute;seau s'&eacute;tend de moins de 5 
dollars jusqu'&agrave; plus de 4000. La bande passante et les temps de latence 
varient aussi selon quatre ordres de grandeur.

</p><p>

Avant d'en apprendre plus sur les sp&eacute;cificit&eacute;s de certains r&eacute;seaux, il 
est important de remarquer que ces choses &eacute;voluent tr&egrave;s fr&eacute;quemment 
(voir <a href="http://www.linux.org.uk/NetNews.html" target="_top">http://www.linux.org.uk/NetNews.html</a> pour avoir des 
nouvelles fra&icirc;ches concernant les r&eacute;seaux sous Linux), et qu'il est tr&egrave;s 
difficile d'obtenir des infos pr&eacute;cises concernant certains r&eacute;seaux.

</p><p>

J'ai plac&eacute; un &laquo;&nbsp;<span class="quote"><span class="emphasis"><em>?</em></span></span>&nbsp;&raquo; aux endroits 
incertains. J'ai aussi pass&eacute; beaucoup de temps &agrave; faire des recherches 
sur ce sujet, mais je reste s&ucirc;r que ce r&eacute;sum&eacute; est plein d'erreurs et 
d'omissions importantes. Si vous avez des corrections ou des ajouts &agrave; y 
apporter, merci de m'envoyer un courrier &eacute;lectronique en anglais &agrave; 
l'adresse suivante&nbsp;: <code class="email">&lt;<a href="mailto:hankd CHEZ engr POINT uky POINT edu">hankd CHEZ engr POINT uky POINT edu</a>&gt;</code>.

</p><p>

Les r&eacute;sum&eacute;s comme le <a href="http://www.mcgeoch.com/other/lan-technology.html" target="_top">LAN Technology 
Scorecard</a><sup>[<a href="#ftn.N107AC" name="N107AC">10</a>]</sup> donnent les caract&eacute;ristiques de nombreux et 
diff&eacute;rents types de r&eacute;seaux et de standards de r&eacute;seaux locaux (LAN). 
Cependant, l'essentiel de ce guide pratique est centr&eacute; sur les propri&eacute;t&eacute;s les 
plus indiqu&eacute;es &agrave; la construction d'un 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span> Linux. Chaque section d&eacute;crivant 
un type de r&eacute;seau d&eacute;bute par une courte liste de caract&eacute;ristiques. Ci 
dessous, la d&eacute;finition de chaque entr&eacute;e.

</p><div class="variablelist"><dl><dt><span class="term">Prise en charge sous Linux&nbsp;:</span></dt><dd><p>

Si la r&eacute;ponse est <span class="emphasis"><em>non</em></span>, la signification est claire. 
Les autres r&eacute;ponses tentent de d&eacute;crire l'interface de base utilis&eacute;e pour 
acc&eacute;der au r&eacute;seau. La plupart du mat&eacute;riel r&eacute;seau est interfac&eacute; via un 
pilote de p&eacute;riph&eacute;rique du noyau, sachant typiquement g&eacute;rer les 
communications TCP/UDP. D'autres r&eacute;seaux utilisent des interfaces plus 
directes (par exemple des biblioth&egrave;ques) pour r&eacute;duire les temps de 
latence en &eacute;vitant d'avoir &agrave; passer par le noyau.

</p><p>

Il y a quelques ann&eacute;es, il &eacute;tait consid&eacute;r&eacute; comme parfaitement acceptable 
d'acc&eacute;der au coprocesseur math&eacute;matique (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">floating 
point unit</em></span></span>&nbsp;&raquo;) par un appel syst&egrave;me mais 
aujourd'hui, c'est clairement ridicule. &Agrave; mon avis, n&eacute;cessiter un appel 
syst&egrave;me pour chaque communication entre les processeurs ex&eacute;cutant un 
programme en parall&egrave;le est peu commode. Le probl&egrave;me est que les 
ordinateurs n'ont pas encore int&eacute;gr&eacute; ces m&eacute;canismes de communication, et 
que les approches non &laquo;&nbsp;<span class="quote">orient&eacute;es noyau</span>&nbsp;&raquo; tendent &agrave; pr&eacute;senter 
des probl&egrave;mes de portabilit&eacute;. Vous allez entendre beaucoup parler de ce 
sujet dans un avenir proche, principalement sous la forme de la nouvelle 
<span class="emphasis"><em> Virtual Interface (VI) Architecture</em></span> (<a href="http://www.intel.com/intelpress/sum_via.htm" target="_top">http://www.intel.com/intelpress/sum_via.htm</a>) m&eacute;thode 
standardis&eacute;e pour les op&eacute;rations des interfaces r&eacute;seau et servant &agrave; 
contourner les couches des syst&egrave;mes d'exploitation usuels. Le standard 
VI est appuy&eacute; par Compaq, Intel et Microsoft, et aura assur&eacute;ment un 
impact important sur la conception des SAN (<span class="foreignphrase"><em class="foreignphrase">System Area 
Network</em></span>) dans les prochaines ann&eacute;es.

</p></dd><dt><span class="term">Bande passante maximum&nbsp;:</span></dt><dd><p>

C'est le chiffre dont tout le monde se soucie. J'ai g&eacute;n&eacute;ralement repris 
les d&eacute;bits maximum th&eacute;oriques. Votre moyenne, elle, 
<span class="emphasis"><em>va</em></span> varier.

</p></dd><dt><span class="term">Temps de latence minimum&nbsp;:</span></dt><dd><p>

&Agrave; mon avis, c'est le chiffre dont tout le monde devrait se soucier, plus 
encore que de la bande passante. L&agrave; encore, j'ai utilis&eacute; les 
(irr&eacute;alistes) valeurs th&eacute;oriques id&eacute;ales, mais au moins ces nombres 
prennent en compte <span class="emphasis"><em>toutes</em></span> les sources de latence, 
tant logicielles que mat&eacute;rielles. Dans la plupart des cas, les temps de 
latence r&eacute;seau ne durent que quelques microsecondes. Des nombres 
beaucoup plus grands refl&egrave;tent les couches des mat&eacute;riels et logiciels 
inefficaces.

</p></dd><dt><span class="term">Disponibilit&eacute;&nbsp;:</span></dt><dd><p>

Reprise telle quelle, cette ligne d&eacute;crit la forme sous laquelle vous 
pouvez acqu&eacute;rir ce type de mat&eacute;riel. Le mat&eacute;riel de la grande 
distribution est disponible largement et de plusieurs fabricants, le 
prix &eacute;tant alors le premier crit&egrave;re de choix. Les choses propos&eacute;es par 
&laquo;&nbsp;<span class="quote">diff&eacute;rents fabricants</span>&nbsp;&raquo; sont disponibles chez plus d'un 
seul concurrent, mais il existe des diff&eacute;rences significatives, et des 
probl&egrave;mes potentiels d'interop&eacute;rabilit&eacute;. Les r&eacute;seaux produits par un 
&laquo;&nbsp;<span class="quote">fabricant exclusif</span>&nbsp;&raquo; vous laissent &agrave; la merci de ce 
fournisseur, aussi bienveillant soit-il. &laquo;&nbsp;<span class="quote">Domaine public</span>&nbsp;&raquo; 
signifie que m&ecirc;me si vous ne pouvez trouver quelqu'un pour vous vendre 
ce type de mat&eacute;riel, vous ou n'importe qui d'autre pouvez acheter les 
composants et en fabriquer un exemplaire. C'est typiquement le cas des 
prototypes de recherche. Ils ne sont en g&eacute;n&eacute;ral ni pr&ecirc;ts &agrave; &ecirc;tre utilis&eacute;s 
par le public, ni disponibles &agrave; celui-ci.

</p></dd><dt><span class="term">Port ou bus utilis&eacute;&nbsp;:</span></dt><dd><p>

La mani&egrave;re dont on relie l'interface r&eacute;seau &agrave; l'ordinateur. Les 
meilleures performances (et d&eacute;sormais les plus courantes) s'obtiennent 
avec le bus PCI. Il existe aussi des cartes pour bus EISA, VESA local 
bus (VLB), et ISA. ISA fut le premier, et il est toujours utilis&eacute; par 
les cartes aux basses performances. On trouve toujours l'EISA comme bus 
secondaire dans les machines PCI. Ces derniers temps, on ne trouve plus 
beaucoup de mat&eacute;riel &agrave; base de VLB (m&ecirc;me si la <a href="http://www.vesa.org" target="_top">Video Electronics Standards 
Association</a> voit les choses autrement).

</p><p>

Bien s&ucirc;r, toute interface que vous pouvez utiliser sans avoir &agrave; ouvrir 
le bo&icirc;tier de votre PC est plus qu'attrayante. les interfaces IrDA 
(N.D.T.&nbsp;: port infrarouge) et USB font leur apparition de plus en 
plus fr&eacute;quemment. Le Port Parall&egrave;le Standard (SPP) est longtemps rest&eacute; 
&laquo;&nbsp;<span class="quote">ce sur quoi vous branchiez votre imprimante</span>&nbsp;&raquo;, mais s'est 
av&eacute;r&eacute; derni&egrave;rement &ecirc;tre tr&egrave;s utile comme extension du bus ISA. Cette 
nouvelle fonction est am&eacute;lior&eacute;e par le standard IEEE 1284, qui sp&eacute;cifie 
les optimisations EPP et ECP. Il y a aussi le bon vieux port s&eacute;rie 
RS232, lent mais fiable. Je n'ai eu vent d'aucun t&eacute;moignage concernant 
l'interconnexion de machines par le biais des connecteurs vid&eacute;o (VGA), 
clavier, souris ou joystick&hellip;

</p></dd><dt><span class="term">Structure du r&eacute;seau&nbsp;:</span></dt><dd><p>

Un bus est un fil, un ensemble de fils, ou une fibre (optique). Un 
<span class="foreignphrase"><em class="foreignphrase">hub</em></span> (&laquo;&nbsp;<span class="quote">concentrateur</span>&nbsp;&raquo; ou 
&laquo;&nbsp;<span class="quote">plaque tournante</span>&nbsp;&raquo;) est une petite boite qui peut recevoir 
diff&eacute;rents types de fils ou de fibres. Les commutateurs 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">switched hubs</em></span></span>&nbsp;&raquo;) permettent 
&agrave; plusieurs connexions de transmettre activement et simultan&eacute;ment leurs 
donn&eacute;es.

</p></dd><dt><span class="term">Co&ucirc;t par machine reli&eacute;e&nbsp;:</span></dt><dd><p>

Voici comment lire ces nombres. Supposons que, en dehors des connexions 
r&eacute;seau, acheter un PC comme unit&eacute; de votre 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span> vous co&ucirc;te 2000 dollars. L'ajout 
de Fast Ethernet porte le prix &agrave; l'unit&eacute; &agrave; environ 2400 dollars. L'ajout 
de Myrinet m&egrave;ne ce prix &agrave; 3800 dollars environ. Si vous avez 20&nbsp;000 
dollars &agrave; d&eacute;penser, vous pouvez alors avoir soit 8 machines reli&eacute;es par 
du Fast Ethernet, soit 5 machines reli&eacute;es par du Myrinet. Il est 
&eacute;galement tr&egrave;s raisonnable d'utiliser plusieurs types de r&eacute;seaux. Par 
exemple, avec 20&nbsp;000 dollars, vous pouvez vous offrir 8 machines 
reli&eacute;es entre elles par Fast Ethernet et TTL_PAPERS. Choisissez un 
r&eacute;seau &mdash; ou un ensemble de r&eacute;seaux &mdash; qui permettra &agrave; votre 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span> d'ex&eacute;cuter votre application le 
plus rapidement possible.

</p><p>

Au moment o&ugrave; vous lirez ces lignes, ces chiffres seront faux&hellip; En 
fait, ils le sont s&ucirc;rement d&eacute;j&agrave;. Il peut aussi y avoir un grand nombre 
de r&eacute;ductions, d'offres sp&eacute;ciales, et c&aelig;tera. Mais en tout cas, les prix 
cit&eacute;s ici ne seront jamais suffisamment erron&eacute;s pour vous conduire &agrave; 
faire un choix totalement inappropri&eacute;. Nul besoin d'avoir un doctorat 
(m&ecirc;me si c'est mon cas ;-) pour constater que l'utilisation de r&eacute;seaux 
on&eacute;reux n'a de sens que si votre application a r&eacute;ellement besoin de 
leurs propri&eacute;t&eacute;s ou si les PC utilis&eacute;s dans votre 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span> sont eux aussi relativement 
chers.

</p></dd></dl></div><p>
Maintenant que vous &ecirc;tes avertis, place au spectacle&hellip;
</p><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10825"></a>3.2.1.&nbsp;ArcNet</h4></div></div></div><p>

<div class="itemizedlist"><ul type="disc"><li><p>
Prise en charge par Linux&nbsp;: <span class="emphasis"><em>pilotes du noyau</em></span>
</p></li><li><p>
Bande passante maximum&nbsp;: <span class="emphasis"><em>2,5 Mbits/s</em></span>
</p></li><li><p>
Temps de latence minimum&nbsp;: <span class="emphasis"><em>1000 microsecondes&nbsp;?</em></span>
</p></li><li><p>
Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>diff&eacute;rents fabricants</em></span>
</p></li><li><p>
Port ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>ISA</em></span>
</p></li><li><p>
Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em><span class="foreignphrase"><em class="foreignphrase">Hub</em></span> ou bus non commut&eacute;s (anneau logique)</em></span>
</p></li><li><p>
Co&ucirc;t par machine reli&eacute;e&nbsp;: <span class="emphasis"><em>200 dollars</em></span>
</p></li></ul></div>

</p><p>
ARCNET est un r&eacute;seau local principalement destin&eacute; &agrave; &ecirc;tre utilis&eacute;
dans les syst&egrave;mes de contr&ocirc;le temps r&eacute;el embarqu&eacute;s. Comme Ethernet,
le r&eacute;seau est physiquement organis&eacute; en prises le long d'un bus d'un
ou plusieurs <span class="foreignphrase"><em class="foreignphrase">hubs</em></span>. En revanche, et contrairement
&agrave; Ethernet, il utilise un protocole &agrave; base de jetons qui structure de mani&egrave;re
logique le r&eacute;seau comme un anneau. Les ent&ecirc;tes des paquets sont r&eacute;duites (3 ou 4
octets) et les messages peuvent &ecirc;tre tr&egrave;s courts (jusqu'&agrave; un seul octet).
De fait, ARCNET est plus efficace qu'Ethernet. Malheureusement, il est
aussi plus lent, et moins populaire ce qui le rend plus cher. Vous trouvez
plus d'informations sur le site de l'<a href="http://www.arcnet.com/" target="_top">ARCNET Trade Association</a>.
</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10861"></a>3.2.2.&nbsp;ATM</h4></div></div></div><p>

<div class="itemizedlist"><ul type="disc"><li><p>
Prise en charge par Linux&nbsp;: <span class="emphasis"><em>pilotes du noyau, biblioth&egrave;ques AAL*</em></span>
</p></li><li><p>
Bande passante maximum&nbsp;: <span class="emphasis"><em>155 Mbits/s</em></span> (bient&ocirc;t, <span class="emphasis"><em>1200 Mbits/s</em></span>)
</p></li><li><p>
Temps de latence minimum&nbsp;: <span class="emphasis"><em>120 microsecondes</em></span>
</p></li><li><p>
Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>diff&eacute;rents fabricants</em></span>
</p></li><li><p>
Port ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>PCI</em></span>
</p></li><li><p>
Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em><span class="foreignphrase"><em class="foreignphrase">hubs</em></span> commut&eacute;s</em></span>
</p></li><li><p>
Co&ucirc;t par machine reli&eacute;e&nbsp;: <span class="emphasis"><em>3000 dollars</em></span>
</p></li></ul></div>

</p><p>
A moins d'avoir &eacute;t&eacute; dans le coma ces derni&egrave;res ann&eacute;es, vous avez
s&ucirc;rement beaucoup entendu dire qu'ATM (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Asynchronous Transfer Mode</em></span></span>&nbsp;&raquo;)
<span class="emphasis"><em>est</em></span> l'avenir&hellip; Eh bien, en quelque sorte.
ATM est meilleur march&eacute; que HiPPI et plus rapide que Fast Ethernet,
et il peut &ecirc;tre utilis&eacute; sur de tr&egrave;s longues distances, ce qui
int&eacute;resse beaucoup les op&eacute;rateurs t&eacute;l&eacute;phoniques. Le protocole du
r&eacute;seau ATM est &eacute;galement con&ccedil;u pour fournir une interface logicielle
aux temps d'acc&egrave;s r&eacute;duits et g&eacute;rant plus efficacement les messages
courts et les communications en temps r&eacute;el (c'est-&agrave;-dire les transmissions
audio et vid&eacute;o num&eacute;riques). C'est aussi l'un des r&eacute;seaux aux plus hauts
d&eacute;bits que Linux prenne actuellement en charge. La mauvaise nouvelle,
c'est qu'ATM n'est pas vraiment bon march&eacute;, et qu'il demeure encore des
probl&egrave;mes de compatibilit&eacute; entre fabricants. Un aper&ccedil;u du d&eacute;veloppement
ATM sous Linux est disponible sur <a href="http://linux-atm.sourceforge.net/" target="_top">http://linux-atm.sourceforge.net/</a>.
</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N108A4"></a>3.2.3.&nbsp;CAPERS</h4></div></div></div><p>

<div class="itemizedlist"><ul type="disc"><li><p>
Prise en charge par Linux&nbsp;: <span class="emphasis"><em>biblioth&egrave;que AFAPI</em></span>
</p></li><li><p>
Bande passante maximum&nbsp;: <span class="emphasis"><em>1,2 Mbit/s</em></span>
</p></li><li><p>
Temps de latence maximum&nbsp;: <span class="emphasis"><em>3 microsecondes</em></span>
</p></li><li><p>
Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>grande distribution</em></span>
</p></li><li><p>
Port ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>SPP (port parall&egrave;le)</em></span>
</p></li><li><p>
Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>c&acirc;ble entre 2 machines</em></span>
</p></li><li><p>
Co&ucirc;t par machine reli&eacute;e&nbsp;: <span class="emphasis"><em>2 dollars</em></span>
</p></li></ul></div>

</p><p>

CAPERS (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Cable Adapter for Parallel Execution and 
Rapid Synchronisation</em></span></span>&nbsp;&raquo;&nbsp;: &laquo;&nbsp;<span class="quote">Adaptateur 
par C&acirc;ble pour l'Ex&eacute;cution en Parall&egrave;le et la Synchronisation 
Rapide</span>&nbsp;&raquo;) est un produit d&eacute;riv&eacute; du projet PAPERS, de 
l'<span class="foreignphrase"><em class="foreignphrase">University School of Electrical and Computer 
Engineering</em></span> de Purdue. En substance, ce projet d&eacute;finit 
un protocole logiciel permettant d'utiliser une simple liaison 
point-&agrave;-point par le port parall&egrave;le, type &laquo;&nbsp;<span class="quote">LapLink</span>&nbsp;&raquo;, pour 
impl&eacute;menter la biblioth&egrave;que PAPERS sur deux PC sous Linux. L'id&eacute;e n'est 
exploitable &agrave; grande &eacute;chelle, mais le prix est imbattable. Tout comme avec 
TTL_PAPERS, pour am&eacute;liorer la s&eacute;curit&eacute; du syst&egrave;me, il est recommand&eacute;, 
mais pas n&eacute;cessaire, d'appliquer un correctif mineur au noyau.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N108E4"></a>3.2.4.&nbsp;Ethernet</h4></div></div></div><p>

<div class="itemizedlist"><ul type="disc"><li><p>
Prise en charge par Linux&nbsp;: <span class="emphasis"><em>pilotes du noyau</em></span>
</p></li><li><p>
Bande passante maximum&nbsp;: <span class="emphasis"><em>10 Mbits/s</em></span>
</p></li><li><p>
Latence minimum&nbsp;: <span class="emphasis"><em>100 microsecondes</em></span>
</p></li><li><p>
Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>grande distribution</em></span>
</p></li><li><p>
Port ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>PCI</em></span>
</p></li><li><p>
Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>commutateurs ou concentrateurs, ou m&ecirc;me bus simple</em></span>
</p></li><li><p>
Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>100 dollars</em></span> (sans concentrateur, <span class="emphasis"><em>50 dollars</em></span>)
</p></li></ul></div>

</p><p>

Depuis plusieurs ann&eacute;es maintenant, l'Ethernet &agrave; 10Mbits/s est le 
standard des technologies r&eacute;seau. Une bonne carte Ethernet s'ach&egrave;te pour 
moins de 50 dollars, et bon nombre de PC en sont aujourd'hui &eacute;quip&eacute;s de 
s&eacute;rie, l'interface &eacute;tant int&eacute;gr&eacute;e &agrave; la carte-m&egrave;re. Les r&eacute;seaux &agrave; base 
Ethernet dont la charge n'est pas tr&egrave;s &eacute;lev&eacute;e peuvent &ecirc;tre organis&eacute;s 
comme un long bus &agrave; prises multiples sans concentrateur 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">hub</em></span></span>&nbsp;&raquo;). Une telle 
configuration peut servir jusqu'&agrave; 200 machines pour un co&ucirc;t minimal, 
mais n'est pas appropri&eacute;e au traitement en parall&egrave;le. Ajouter un 
concentrateur non commut&eacute; n'am&eacute;liore pas beaucoup les performances. En 
revanche, les commutateurs 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">switches</em></span></span>&nbsp;&raquo;), qui peuvent 
offrir une bande passante maximum &agrave; plusieurs connexions simultan&eacute;ment 
ne co&ucirc;tent qu'aux alentours de 100 dollars par port. Linux prend en 
charge un nombre impressionnant d'interfaces Ethernet diff&eacute;rentes, mais 
il est important de garder &agrave; l'esprit que les variations entre ces 
mat&eacute;riels peuvent engendrer de grandes diff&eacute;rences de performance. 
Consultez le <a href="http://www.traduc.org/docs/howto/lecture/Hardware-HOWTO.html" target="_top">Guide pratique de 
la compatibilit&eacute; mat&eacute;rielle avec Linux</a> (N.D.T.&nbsp;: version 
fran&ccedil;aise du <a href="http://www.tldp.org/HOWTO/Hardware-HOWTO/" target="_top"> 
<span class="foreignphrase"><em class="foreignphrase">Hardware&nbsp;Compatibility&nbsp;HOWTO</em></span> 
</a>) pour plus d'informations concernant les diff&eacute;rents &eacute;quipements 
fonctionnant sous Linux, et pour avoir une id&eacute;e de leur qualit&eacute;.

</p><p>

Le <span class="foreignphrase"><em class="foreignphrase">cluster</em></span> Linux &agrave; 16 machines r&eacute;alis&eacute; 
dans le cadre du projet &laquo;&nbsp;<span class="quote"><a href="http://www.beowulf.org" target="_top">Beowulf</a></span>&nbsp;&raquo; (initialement 
d&eacute;velopp&eacute; au CESDIS de la NASA) est une mani&egrave;re int&eacute;ressante d'augmenter 
ses performances. C'est &agrave; Donald Becker, auteur de plusieurs pilotes de 
cartes Ethernet, que l'on doit la prise en charge de la r&eacute;partition du 
trafic au travers de plusieurs cartes r&eacute;seau s'&eacute;clipsant mutuellement 
(autrement dit, partageant les m&ecirc;mes adresses r&eacute;seau). Cette fonction 
est int&eacute;gr&eacute;e en standard dans Linux, et s'effectue de mani&egrave;re invisible 
en dessous du niveau des op&eacute;rations sur les 
<span class="foreignphrase"><em class="foreignphrase">sockets</em></span>. Le co&ucirc;t d'un hub n'&eacute;tant pas 
n&eacute;gligeable, relier chaque machine &agrave; deux (ou plus) r&eacute;seaux Ethernet, 
sans <span class="foreignphrase"><em class="foreignphrase">hubs</em></span> ni 
<span class="foreignphrase"><em class="foreignphrase">switches</em></span>, pour am&eacute;liorer les performances 
peut s'av&eacute;rer financi&egrave;rement tr&egrave;s rentable. D'une mani&egrave;re g&eacute;n&eacute;rale, dans 
les situations o&ugrave; une machine est le goulet d'&eacute;tranglement d'un r&eacute;seau, 
la r&eacute;partition de charge &agrave; travers plusieurs r&eacute;seaux 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">shadow networks</em></span></span>&nbsp;&raquo;) se 
r&eacute;v&egrave;le bien plus efficace que l'usage d'un r&eacute;seau &eacute;quip&eacute; d'un 
commutateur seul.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10944"></a>3.2.5.&nbsp;Ethernet (Fast Ethernet)</h4></div></div></div><p>

<div class="itemizedlist"><ul type="disc"><li><p>
Prise en charge par Linux&nbsp;: <span class="emphasis"><em>pilotes du noyau</em></span>
</p></li><li><p>

Bande passante maximum&nbsp;: <span class="emphasis"><em>100 Mbits/s</em></span>

</p></li><li><p>

Temps de latence minimum&nbsp;: <span class="emphasis"><em>80 microsecondes</em></span>

</p></li><li><p>

Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>grande distribution</em></span>

</p></li><li><p>

Port ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>PCI</em></span>

</p></li><li><p>

Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>concentrateurs ou commutateurs 
(<span class="foreignphrase" lang="en"><em class="foreignphrase">hubs</em></span> ou <span class="foreignphrase" lang="en"><em class="foreignphrase">switches</em></span>)</em></span>

</p></li><li><p>

Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>400 dollars (?)</em></span>

</p></li></ul></div>

</p><p>

Bien qu'il existe un certain nombre de technologies diff&eacute;rentes nomm&eacute;es 
&laquo;&nbsp;<span class="quote">Fast Ethernet</span>&nbsp;&raquo;, elles se r&eacute;f&egrave;rent souvent &agrave; un r&eacute;seau 
Ethernet 100 Mbits/s en grande partie compatible avec les anciens c&acirc;bles 
et p&eacute;riph&eacute;riques 10 Mbits/s type &laquo;&nbsp;<span class="quote">10 BaseT</span>&nbsp;&raquo;. Comme on peut 
s'y attendre, tout ce qui s'appelle Ethernet b&eacute;n&eacute;ficie des prix de la 
vente de masse, et ces interfaces ne co&ucirc;tent g&eacute;n&eacute;ralement qu'une 
fraction du prix des cartes ATM &agrave; 155 Mbits/s. Le probl&egrave;me est qu'une 
collection de machines partageant tous le m&ecirc;me &laquo;&nbsp;<span class="quote">bus</span>&nbsp;&raquo; &agrave; 100 
Mbits/s (&agrave; l'aide d'un <span class="foreignphrase"><em class="foreignphrase">hub</em></span> non commut&eacute;) 
peut pr&eacute;senter des performances n'atteignant en moyenne m&ecirc;me pas celles 
d'un r&eacute;seau 10 Mbits/s utilisant un commutateur fournissant &agrave; chaque 
machine une connexion 10 Mbits/s compl&egrave;te.

</p><p>
Les commutateurs pouvant fournir une connexion 100 Mbits &agrave; chaque
machine simultan&eacute;ment sont chers, mais les prix chutent chaque jour,
et ces commutateurs offrent une bande passante autrement plus &eacute;lev&eacute;e
que de simples <span class="foreignphrase"><em class="foreignphrase">hubs</em></span> non commut&eacute;s. Ce qui rend les commutateurs ATM
si on&eacute;reux est la n&eacute;cessit&eacute; de commuter chaque cellule ATM, cellule
relativement courte. Certains commutateurs Ethernet parient sur une
fr&eacute;quence de commutation attendue relativement lente et en tirent
profit en utilisant des techniques aux temps de latence r&eacute;duits &agrave;
l'int&eacute;rieur du commutateur, mais n&eacute;cessitant quelques millisecondes
pour changer de voie. Si l'itin&eacute;raire de votre trafic r&eacute;seau change
fr&eacute;quemment, &eacute;vitez ce type d'&eacute;quipement.
</p><p>
Notez aussi que, comme pour Ethernet, le projet Beowulf
(<a href="http://www.beowulf.org" target="_top">http://www.beowulf.org</a>) de la NASA d&eacute;veloppe des pilotes aux performances sup&eacute;rieures
car utilisant la r&eacute;partition de charge entre plusieurs cartes
Fast Ethernet.
</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10996"></a>3.2.6.&nbsp;Ethernet (Gigabit Ethernet)</h4></div></div></div><p>

<div class="itemizedlist"><ul type="disc"><li><p>
Prise en charge par Linux&nbsp;: <span class="emphasis"><em>pilotes du noyau</em></span>
</p></li><li><p>
Bande passante maximum&nbsp;: <span class="emphasis"><em>1000 Mb/s</em></span>
</p></li><li><p>
Temps de latence minimum&nbsp;: <span class="emphasis"><em>300 microsecondes (?)</em></span>
</p></li><li><p>
Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>diff&eacute;rents fabricants</em></span>
</p></li><li><p>
Port ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>PCI</em></span>
</p></li><li><p>
Structure r&eacute;seau&nbsp;: <span class="emphasis"><em>commutateurs ou FDR</em></span>
</p></li><li><p>
Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>2500 dollars (?)</em></span>
</p></li></ul></div>

</p><p>
Je ne suis pas s&ucirc;r que <a href="http://www.gigabit-ethernet.org/" target="_top">Gigabit Ethernet</a>
ait une raison technologique valable
de s'appeler Ethernet&hellip; mais son nom inspire le fait que
Gigabit Ethernet est con&ccedil;u pour &ecirc;tre une technologie r&eacute;seau
bon march&eacute; et de grande distribution, avec une prise en charge
native de l'IP. En revanche, les prix actuels refl&egrave;tent le
fait que cela reste un produit difficile &agrave; fabriquer.
</p><p>

Contrairement aux autres technologies Ethernet, Gigabit Ethernet apporte 
un contr&ocirc;le du flux, ce qui devrait en faire un r&eacute;seau plus fiable. Les 
FDR, ou &laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Full-Duplex 
Repeaters</em></span></span>&nbsp;&raquo; (&laquo;&nbsp;<span class="quote">r&eacute;p&eacute;teurs bidirectionnels 
simultan&eacute;s</span>&nbsp;&raquo;), se contentent de multiplexer les lignes, en 
utilisant des m&eacute;moires tampons et des contr&ocirc;les de flux localis&eacute;s pour 
am&eacute;liorer les performances. La plupart des commutateurs sont construits 
comme de nouveaux modules pour les diff&eacute;rents mod&egrave;les de commutateurs 
compatible Gigabit d&eacute;j&agrave; existants. Les commutateurs ou FDR sont 
distribu&eacute;s ou annonc&eacute;s par au moins Acacianet, <a href="http://www.baynetworks.com/" target="_top">Bay networks</a>, <a href="http://www.cabletron.com/" target="_top">Cabletron</a> (d&eacute;sormais Enterasys. 
Page fran&ccedil;aise&nbsp;: <a href="http://www.enterasys.com/fr/" target="_top">http://www.enterasys.com/fr/</a>), 
Networks digital, <a href="http://www.extremenetworks.com/homepage_french.asp" target="_top">Extreme 
networks</a>, <a href="http://www.foundrynet.com/" target="_top">Foundry 
networks</a>, Gigalabs.com, Packet engines, <a href="http://www.plaintree.com/" target="_top">Plaintree systems</a>, <a href="http://www.prominet.com/" target="_top">Prominet</a>, <a href="http://fr.sun.com/" target="_top">Sun microsystems</a>, et Xlnt.

</p><p>

Il existe un pilote pour Linux pour les &laquo;&nbsp;<span class="quote">Yellowfin</span>&nbsp;&raquo; G-NIC 
de Packet Engines<sup>[<a href="#ftn.N109FA" name="N109FA">11</a>]</sup>. Les premiers essais sous Linux ont fait &eacute;tat d'un 
taux de transfert environ 2,5 fois sup&eacute;rieur &agrave; la plus rapide des cartes 
Fast Ethernet &agrave; 100 Mbits/s. Avec les r&eacute;seaux Gigabit, une configuration 
soigneuse du bus PCI est un facteur critique. Il reste toujours un doute 
quant &agrave; la poursuite des am&eacute;liorations de ce pilote, et du d&eacute;veloppement 
des pilotes Linux des autres cartes r&eacute;seau.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N109FE"></a>3.2.7.&nbsp;FC (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Fibre Channel</em></span></span>&nbsp;&raquo;)</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>

Prise en charge par Linux&nbsp;: 
<span class="emphasis"><em>non</em></span><sup>[<a href="#ftn.N10A0B" name="N10A0B">12</a>]</sup>

</p></li><li><p>

Bande passante maximum&nbsp;: <span class="emphasis"><em>1062 Mbits/s</em></span>

</p></li><li><p>

Temps de latence minimum&nbsp;: <span class="emphasis"><em>?</em></span>

</p></li><li><p>

Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>diff&eacute;rents fabricants</em></span>

</p></li><li><p>

Interface ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>PCI (?)</em></span>

</p></li><li><p>

Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>?</em></span>

</p></li><li><p>

Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>?</em></span>

</p></li></ul></div><p>

L'objectif du FC (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Fibre 
Channel</em></span></span>&nbsp;&raquo;) est de fournir un m&eacute;dium 
d'entr&eacute;e/sortie de type bloc aux performances &eacute;lev&eacute;es (une trame FC 
transporte un bloc de donn&eacute;es d'une longueur forfaitaire de 2048 
octets), particuli&egrave;rement adapt&eacute; aux partages de disques et autres 
p&eacute;riph&eacute;riques de stockage, qui peuvent alors &ecirc;tre reli&eacute;s directement au 
r&eacute;seau FC plut&ocirc;t qu'&agrave; travers un ordinateur. Niveau bande passante, le 
FC est pr&eacute;sent&eacute; comme &eacute;tant relativement rapide, avec un taux s'&eacute;tendant 
de 133 &agrave; 1062 Mbits/s. Si le FC tend &agrave; devenir populaire en tant que 
solution haut-de-gamme de remplacement du SCSI, il pourrait rapidement 
devenir une technologie tr&egrave;s abordable. Pour le moment, ce n'est pas 
abordable, et ce n'est pas pris en charge par Linux. La Fibre Channel 
Association tient une importante collection de r&eacute;f&eacute;rences au FC, sur 
<a href="http://www.fibrechannel.org" target="_top">http://www.fibrechannel.org</a><sup>[<a href="#ftn.N10A3B" name="N10A3B">13</a>]</sup>.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10A48"></a>3.2.8.&nbsp;FireWire (IEEE 1394)</h4></div></div></div><p>

<div class="itemizedlist"><ul type="disc"><li><p>
Prise en charge par Linux&nbsp;: <span class="emphasis"><em>non</em></span><sup>[<a href="#ftn.N10A53" name="N10A53">14</a>]</sup>
</p></li><li><p>
Bande passante maximum&nbsp;: <span class="emphasis"><em>196,608 Mbits/s</em></span> (bient&ocirc;t, <span class="emphasis"><em>393,216 Mbits/s</em></span>)
</p></li><li><p>
Temps de latence minimum&nbsp;: <span class="emphasis"><em>?</em></span>
</p></li><li><p>
Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>diff&eacute;rents fabricants</em></span>
</p></li><li><p>
Interface ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>PCI</em></span>
</p></li><li><p>
Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>al&eacute;atoire, sans cycles (auto-configur&eacute;)</em></span>
</p></li><li><p>
Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>600 dollars</em></span>
</p></li></ul></div>

</p><p>
FireWire, ou standard IEEE 1394-1995, est vou&eacute; &agrave; &ecirc;tre le r&eacute;seau num&eacute;rique
&agrave; grande vitesse et &agrave; prix r&eacute;duit des appareils &eacute;lectroniques domestiques.
Son application-phare est la connexion des cam&eacute;scopes num&eacute;riques aux
ordinateurs, mais FireWire est destin&eacute; &agrave; &ecirc;tre utilis&eacute; dans des domaines
s'&eacute;tendant de l'alternative au SCSI jusqu'&agrave; l'interconnexion des diff&eacute;rents
composants de votre &laquo;&nbsp;<span class="quote">Home Cin&eacute;ma</span>&nbsp;&raquo;. Il vous permet de relier plus de
64000 p&eacute;riph&eacute;riques dans une topologie utilisant des bus et des ponts
mais ne formant pas de boucle, et d&eacute;tecte automatiquement la configuration
des p&eacute;riph&eacute;riques lorsqu'ils sont ajout&eacute;s ou retir&eacute;s. Les messages courts
(les &laquo;&nbsp;<span class="quote">quadlets</span>&nbsp;&raquo;, longs de quatre octets) sont &eacute;galement pris en charge,
de m&ecirc;me que les transmissions isochrones sur le mod&egrave;le de l'ATM (utilis&eacute;es
pour pr&eacute;server le synchronisme des messages multim&eacute;dia). Adaptec propose
des produits FireWire permettant de relier jusqu'&agrave; 63 p&eacute;riph&eacute;riques
&agrave; une seule carte PCI, et tient aussi un bon site d'information g&eacute;n&eacute;rale
concernant le FireWire sur
<a href="http://www.adaptec.com/worldwide/product/prodtechindex.html?cat=%2fTechnology%2fFireWire-1394&prodkey=1394_summary" target="_top">http://www.adaptec.com</a>.
</p><p>
Bien que le FireWire ne soit pas le r&eacute;seau le plus rapide disponible
actuellement, le march&eacute; de la grande distribution (qui tire les prix
vers le bas) et les temps de latence r&eacute;duits pourraient en faire d'ici
l'an prochain la meilleure interface r&eacute;seau pour le <span class="emphasis"><em><span class="foreignphrase"><em class="foreignphrase">message passing</em></span></em></span> dans
un <span class="foreignphrase"><em class="foreignphrase">cluster</em></span> de PC sous Linux.
</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10A94"></a>3.2.9.&nbsp;HiPPI et Serial HiPPI</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>

Prise en charge par Linux&nbsp;: 
<span class="emphasis"><em>non</em></span><sup>[<a href="#ftn.N10A9D" name="N10A9D">15</a>]</sup>

</p></li><li><p>

Bande passante maximum&nbsp;: <span class="emphasis"><em>1600 Mbits/s</em></span> 
(<span class="emphasis"><em>1200 Mb/s</em></span> pour Serial HiPPI)

</p></li><li><p>

Temps de latence minimum&nbsp;: <span class="emphasis"><em>?</em></span>

</p></li><li><p>

Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>diff&eacute;rents fabricants</em></span>

</p></li><li><p>

Interface ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>EISA, PCI</em></span>

</p></li><li><p>

Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>commutateurs</em></span>

</p></li><li><p>

Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>3500 dollars</em></span> 
(<span class="emphasis"><em>4,500</em></span> dollars pour Serial HiPPI)

</p></li></ul></div><p>

HiPPI (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">High Performance Parallel 
Interface</em></span></span>&nbsp;&raquo;, soit &laquo;&nbsp;<span class="quote">Interface Parall&egrave;le aux 
Performances &Eacute;lev&eacute;es</span>&nbsp;&raquo;) &eacute;tait initialement cens&eacute;e fournir un taux 
de transfert &eacute;lev&eacute; pour l'&eacute;change d'immenses blocs de donn&eacute;es entre un 
supercalculateur et une autre machine (un autre supercalculateur, un 
&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">frame buffer</em></span></span>&nbsp;&raquo;, une batterie 
de disques, et c&aelig;tera), et est devenu le standard dominant dans le monde 
des supercalculateurs. Bien que ce soit un oxymoron, <span class="emphasis"><em>Serial 
HiPPI</em></span> devient &eacute;galement tr&egrave;s populaire en utilisant 
typiquement de la fibre optique &agrave; la place des c&acirc;bles HiPPI standard de 
32 bits de large (donc parall&egrave;les). Ces derni&egrave;res ann&eacute;es, les 
commutateurs HiPPI en croix sont devenus courants et les prix ont 
s&eacute;rieusement chut&eacute;. Malheureusement, les &eacute;quipement HiPPI S&eacute;rie, eux, 
sont encore tr&egrave;s on&eacute;reux, et sont en g&eacute;n&eacute;ral les seuls pris en charge 
par le bus PCI. Pire, Linux ne g&egrave;re pas encore HiPPI. Le CERN tient une 
bonne pr&eacute;sentation d'HiPPI sur <a href="http://www.cern.ch/HSI/hippi/" target="_top">http://www.cern.ch/HSI/hippi/</a>. Ils tiennent aussi une liste 
assez longue de distributeurs proposant le HiPPI sur <a href="http://www.cern.ch/HSI/hippi/procintf/manufact.htm" target="_top">http://www.cern.ch/HSI/hippi/procintf/manufact.htm</a>.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10AE1"></a>3.2.10.&nbsp;IrDA (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Infrared Data Association</em></span></span>&nbsp;&raquo;)</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>

Prise en charge par Linux&nbsp;: <span class="emphasis"><em>non 
(?)</em></span><sup>[<a href="#ftn.N10AEE" name="N10AEE">16</a>]</sup>

</p></li><li><p>

Bande passante maximum&nbsp;: <span class="emphasis"><em>1,15 Mbits/s</em></span> et 
<span class="emphasis"><em>4 Mbits/s</em></span>

</p></li><li><p>

Temps de latence minimum&nbsp;: <span class="emphasis"><em>?</em></span>

</p></li><li><p>

Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>Diff&eacute;rents fabricants</em></span>

</p></li><li><p>

Interface ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>IrDA</em></span>

</p></li><li><p>

Structure r&eacute;seau&nbsp;: <span class="emphasis"><em>Air libre</em></span> ;-)

</p></li><li><p>

Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>0</em></span>

</p></li></ul></div><p>

L'IrDA (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Infrared Data 
Association</em></span></span>&nbsp;&raquo; ou &laquo;&nbsp;<span class="quote">Association de Donn&eacute;es par 
Infrarouges</span>&nbsp;&raquo;, sur <a href="http://www.irda.org" target="_top">http://www.irda.org</a>), c'est ce 
petit appareil &agrave; infrarouges sur le cot&eacute; des ordinateurs portables. Il 
reste assez difficile, par conception, de relier plus de deux 
ordinateurs par ce biais, aussi l'IrDA ne se pr&ecirc;te-t-il gu&egrave;re &agrave; la 
&laquo;&nbsp;<span class="quote">clusterisation</span>&nbsp;&raquo;, ou mise en parall&egrave;le massive de 
nombreuses machines. Don Becker est toutefois l'auteur de quelques 
travaux pr&eacute;liminaires sur l'IrDA.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10B28"></a>3.2.11.&nbsp;Myrinet</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>

Prise en charge par Linux&nbsp;: <span class="emphasis"><em>biblioth&egrave;ques</em></span>

</p></li><li><p>

Bande passante maximum&nbsp;: <span class="emphasis"><em>1280 Mbits/s</em></span>

</p></li><li><p>

Temps de latence minimum&nbsp;: <span class="emphasis"><em>9 microsecondes</em></span>

</p></li><li><p>

Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>mat&eacute;riel propri&eacute;taire.</em></span>

</p></li><li><p>

Interface ou bus utilis&eacute;s&nbsp;: <span class="emphasis"><em>PCI</em></span>

</p></li><li><p>

Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>commutateurs</em></span>

</p></li><li><p>

Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>1800 dollars</em></span>

</p></li></ul></div><p>

<a href="http://www.myri.com" target="_top">Myrinet</a> est un r&eacute;seau local 
(LAN&nbsp;: &laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Local Area 
Network</em></span></span>&nbsp;&raquo;) con&ccedil;u pour servir &eacute;galement de r&eacute;seau 
syst&egrave;me <sup>[<a href="#ftn.N10B60" name="N10B60">17</a>]</sup>. Les versions LAN et SAN utilisent des m&eacute;dias 
physiques distincts et leur caract&eacute;ristiques sont sensiblement 
diff&eacute;rentes. La version SAN est g&eacute;n&eacute;ralement utilis&eacute;e au sein d'un 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span>.

</p><p>

La structure de Myrinet est tr&egrave;s conventionnelle, mais a la r&eacute;putation
d'&ecirc;tre tr&egrave;s bien impl&eacute;ment&eacute;e. Les pilotes pour Linux sont connus pour
donner de tr&egrave;s bons r&eacute;sultats, bien qu'il e&ucirc;t &eacute;t&eacute; fait &eacute;tat de frappantes
diff&eacute;rences de performances d'une impl&eacute;mentation du bus PCI &agrave; l'autre.

</p><p>

Actuellement, Myrinet est assur&eacute;ment le r&eacute;seau favori des responsables 
de <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> n'&eacute;tant pas trop s&eacute;v&egrave;rement 
limit&eacute; au niveau budg&eacute;taire. Si, pour vous, un PC Linux typique est un 
Pentium Pro dernier cri ou un Pentium II avec au moins 256&nbsp;Mo de m&eacute;moire 
vive, et un disque RAID et SCSI, alors le co&ucirc;t de Myrinet appara&icirc;t 
raisonnable. En revanche, avec des machines plus conventionnelles, il 
vous faudra probablement choisir entre relier <span class="emphasis"><em>N</em></span> 
machines avec Myrinet, ou <span class="emphasis"><em>2N</em></span> machines avec 
plusieurs &eacute;quipements de type &laquo;&nbsp;<span class="quote">Fast Ethernet</span>&nbsp;&raquo; ou 
&laquo;&nbsp;<span class="quote">TTL_PAPERS</span>&nbsp;&raquo;. Tout cela d&eacute;pend r&eacute;ellement de votre budget 
et du type de calcul qui vous importe le plus.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10B84"></a>3.2.12.&nbsp;Parastation</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>

Prise en charge par Linux&nbsp;: <span class="emphasis"><em>couches d'abstraction 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">HAL</em></span></span>&nbsp;&raquo;) ou biblioth&egrave;ques 
r&eacute;seau</em></span>

</p></li><li><p>

Bande passante maximum&nbsp;: <span class="emphasis"><em>125 Mbits/s</em></span>

</p></li><li><p>

Temps de latence minimum&nbsp;: <span class="emphasis"><em>2 microsecondes</em></span>

</p></li><li><p>

Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>fabricant exclusif</em></span>

</p></li><li><p>

Interface ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>PCI</em></span>

</p></li><li><p>

Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>maillage, sans concentrateur</em></span>

</p></li><li><p>

Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>plus de 1000 dollars</em></span>

</p></li></ul></div><p>

Le projet ParaStation (<a href="http://wwwipd.ira.uka.de/parastation" target="_top">http://wwwipd.ira.uka.de/parastation</a>) de la section informatique 
de l'Universit&eacute; de Karlsruhe est en train de mettre sur pieds un r&eacute;seau 
&laquo;&nbsp;<span class="quote">maison</span>&nbsp;&raquo; compatible PVM et aux temps de latence r&eacute;duits. 
Ils ont d'abord construit un prototype de ParaPC biprocesseur en 
utilisant une carte EISA con&ccedil;ue sur mesure et des PC fonctionnant sous 
Unix BSD, puis ont b&acirc;ti de plus grands 
<span class="foreignphrase"><em class="foreignphrase">clusters</em></span> compos&eacute;s de machines Alpha DEC. 
Depuis Janvier 1997, Parastation est disponible sous Linux. Les cartes 
PCI sont produites en coop&eacute;ration avec une soci&eacute;t&eacute; nomm&eacute;e <a href="http://www.hitex.com" target="_top">Hitex</a>. Le mat&eacute;riel de Parastation 
impl&eacute;mente &agrave; la fois un syst&egrave;me de transmission de messages rapide et 
fiable, et des barri&egrave;res de synchronisation simples.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10BC5"></a>3.2.13.&nbsp;PLIP</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
Prise en charge par Linux&nbsp;: <span class="emphasis"><em>pilotes du noyau</em></span>
</p></li><li><p>
Bande passante maximum&nbsp;: <span class="emphasis"><em>1,2 Mbits/s</em></span>
</p></li><li><p>
Temps de latence minimum&nbsp;: <span class="emphasis"><em>1000 microsecondes&nbsp;?</em></span>
</p></li><li><p>
Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>grande distribution</em></span>
</p></li><li><p>
Interface ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>SPP</em></span>
</p></li><li><p>
Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>c&acirc;ble entre 2 machines</em></span>
</p></li><li><p>
Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>2 dollars</em></span>
</p></li></ul></div><p>

Pour le seul co&ucirc;t d'un c&acirc;ble &laquo;&nbsp;<span class="quote">LapLink</span>&nbsp;&raquo; (N.D.T.&nbsp;: c&acirc;ble 
parall&egrave;le crois&eacute;), PLIP (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Parallel Line Interface 
Protocol</em></span></span>&nbsp;&raquo;, soit &laquo;&nbsp;<span class="quote">Protocole d'Interface par 
Ligne Parall&egrave;le</span>&nbsp;&raquo;) permet &agrave; deux machines Linux de communiquer par 
le port parall&egrave;le en utilisant les couches logicielles standard bas&eacute;es 
sur la communication par &laquo;&nbsp;<span class="quote">sockets</span>&nbsp;&raquo;. En termes de bande 
passante, de temps de latence et d'&eacute;volutivit&eacute;, il ne s'agit pas d'une 
technologie r&eacute;seau s&eacute;rieuse. En revanche, le co&ucirc;t de revient quasi-nul 
et la compatibilit&eacute; logicielle s'av&egrave;rent &ecirc;tre tr&egrave;s utiles. Le pilote est 
partie int&eacute;grante du noyau Linux standard.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10C02"></a>3.2.14.&nbsp;SCI</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>

Prise en charge par Linux&nbsp;: <span class="emphasis"><em>non</em></span>

</p></li><li><p>

Bande passante maximum&nbsp;: <span class="emphasis"><em>4000 Mbit/s</em></span>

</p></li><li><p>

Temps de latence minimum&nbsp;: <span class="emphasis"><em>2,7 microsecondes</em></span>

</p></li><li><p>

Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>diff&eacute;rents fabricants.</em></span>

</p></li><li><p>

Interface ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>PCI et propri&eacute;taire</em></span>

</p></li><li><p>

Structure r&eacute;seau&nbsp;: <span class="emphasis"><em>?</em></span>

</p></li><li><p>

Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>+ de 1000 dollars</em></span>

</p></li></ul></div><p>

L'objectif de SCI (Scalable Coherent Interconnect, ANSI/IEEE 1596-1992) 
consiste essentiellement &agrave; fournir un m&eacute;canisme de haute performance 
pouvant assurer des acc&egrave;s coh&eacute;rents &agrave; la m&eacute;moire partag&eacute;e au travers 
d'un grand nombre de machines. On peut dire sans se mouiller que la 
bande passante et les temps de latences de SCI sont &laquo;&nbsp;<span class="quote">tr&egrave;s 
impressionnants</span>&nbsp;&raquo; compar&eacute;s &agrave; la plupart des autres technologies 
r&eacute;seau. Le probl&egrave;me est que SCI n'est pas tr&egrave;s r&eacute;pandu et reste donc 
assez on&eacute;reux, et que ce mat&eacute;riel n'est pas pris en charge par Linux.

</p><p>

SCI est principalement utilis&eacute; dans diverses impl&eacute;mentations 
propri&eacute;taires pour des machines &agrave; m&eacute;moire partag&eacute;e logiquement et 
distribu&eacute;e physiquement, comme le HP/Convex Exemplar SPP et le Sequent 
NUMA-Q 2000 (voir <a href="http://www.sequent.com" target="_top">http://www.sequent.com</a><sup>[<a href="#ftn.N10C39" name="N10C39">18</a>]</sup>). Ceci dit, SCI est disponible sous forme de 
carte PCI et de commutateurs quatre ports de Dolphin (on peut relier 
ainsi jusqu'&agrave; 16 machines en montant ces commutateurs en cascade), 
<a href="http://www.dolphinics.com" target="_top">http://www.dolphinics.com</a>, sous la s&eacute;rie "Clustar". Le 
CERN tient &agrave; jour une bonne collection de liens concernant SCI sur 
<a href="http://www.cern.ch/HSI/sci/sci.html" target="_top">http://www.cern.ch/HSI/sci/sci.html</a>.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10C43"></a>3.2.15.&nbsp;SCSI</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>

Prise en charge par Linux&nbsp;: <span class="emphasis"><em>pilotes du noyau</em></span>

</p></li><li><p>

Bande passante maximum&nbsp;: de <span class="emphasis"><em>5 Mbits/s</em></span> &agrave; plus 
de <span class="emphasis"><em>20 Mbits/s</em></span>

</p></li><li><p>

Temps de latence minimum&nbsp;: <span class="emphasis"><em>?</em></span>

</p></li><li><p>

Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>diff&eacute;rents fabricants</em></span>

</p></li><li><p>

Interface ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>cartes PCI, EISA ou 
ISA</em></span>

</p></li><li><p>

Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>bus inter-machines partageant des 
p&eacute;riph&eacute;riques SCSI</em></span>

</p></li><li><p>

Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>?</em></span>

</p></li></ul></div><p>

Le SCSI (Small Computer Systems Interconnect) consiste essentiellement 
en un bus d'entr&eacute;e/sortie utilis&eacute; par les disques durs, les lecteurs de 
CD-ROM, les num&eacute;riseurs 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">scanners</em></span></span>&nbsp;&raquo;), et c&aelig;tera. Il 
existe trois standards distincts&nbsp;: SCSI-1, SCSI-2 et SCSI-3, en 
vitesses "Fast" et "Ultra" et en largeur de bus de 8, 16 ou 32 bits 
(avec compatibilit&eacute; FireWire annonc&eacute;e pour SCSI-3). Tout cela est plut&ocirc;t 
confus, mais nous savons tous qu'un bon SCSI est bien plus rapide que 
l'EIDE, et peut g&eacute;rer plus de p&eacute;riph&eacute;riques, plus efficacement.

</p><p>

Ce que beaucoup de gens ne r&eacute;alisent pas, c'est qu'il est tr&egrave;s simple de 
partager le m&ecirc;me bus SCSI entre deux ordinateurs. Ce type de 
configuration est tr&egrave;s utile pour partager des disques entre deux 
machines et mettre en place un syst&egrave;me de 
<span class="emphasis"><em><span class="foreignphrase"><em class="foreignphrase">fail-over</em></span></em></span>, de fa&ccedil;on 
&agrave; ce qu'une machine prenne &agrave; sa charge les requ&ecirc;tes &agrave; une base de 
donn&eacute;es lorsque l'autre machine tombe en panne. C'est actuellement le 
seul m&eacute;canisme reconnu par le <span class="foreignphrase"><em class="foreignphrase">cluster</em></span> PC 
de Microsoft&nbsp;: WolfPack. En revanche, l'incapacit&eacute; du SCSI &agrave; 
&eacute;voluer vers de plus grands syst&egrave;mes le rend en g&eacute;n&eacute;ral inint&eacute;ressant 
pour le traitement en parall&egrave;le.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10C83"></a>3.2.16.&nbsp;ServerNet</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>

Prise en charge par Linux&nbsp;: <span class="emphasis"><em>non</em></span>

</p></li><li><p>

Maximum bandwidth&nbsp;: <span class="emphasis"><em>400 Mbits/s</em></span>

</p></li><li><p>

Temps de latence minimum&nbsp;: <span class="emphasis"><em>3 microsecondes</em></span>

</p></li><li><p>

Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>fabricant exclusif</em></span>

</p></li><li><p>

Interface ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>PCI</em></span>

</p></li><li><p>

Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>arbre hexagonal / concentrateurs en 
mailles t&eacute;tra&eacute;driques</em></span>

</p></li><li><p>

Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>?</em></span>

</p></li></ul></div><p>

ServerNet est la solution r&eacute;seau de haute performance propos&eacute;e par 
Tandem (<a href="http://www.tandem.com" target="_top">http://www.tandem.com</a>). Dans le monde du 
traitement des transactions en ligne (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">OnLine 
Transation Processing</em></span></span>&nbsp;&raquo;, ou &laquo;&nbsp;<span class="quote">OLTP</span>&nbsp;&raquo;) 
en particulier, Tandem est r&eacute;put&eacute; &ecirc;tre l'un des premiers fabricants de 
syst&egrave;mes de haute fiabilit&eacute;, aussi n'est-il pas surprenant que leurs 
r&eacute;seaux ne revendiquent pas simplement la haute performance, mais aussi 
la &laquo;&nbsp;<span class="quote">haute fiabilit&eacute; et int&eacute;grit&eacute; des donn&eacute;es</span>&nbsp;&raquo;. Une autre 
facette int&eacute;ressante de ServerNet&nbsp;: ce mat&eacute;riel serait capable de 
transf&eacute;rer des donn&eacute;es directement de p&eacute;riph&eacute;rique &agrave; p&eacute;riph&eacute;rique, pas 
simplement entre processeurs, mais &eacute;galement entre disques durs, et 
c&aelig;tera, dans un style unilat&eacute;ral similaire &agrave; ce qui a &eacute;t&eacute; sugg&eacute;r&eacute; pour 
les m&eacute;canismes d'acc&egrave;s &agrave; distance &agrave; la m&eacute;moire du MPI, d&eacute;crits dans la 
section 3.5. Un dernier mot &agrave; propos de Servernet&nbsp;: Bien qu'il n'y 
ait qu'un seul fabricant, celui-ci est suffisamment puissant pour faire 
&eacute;tablir potentiellement Servernet en tant que standard majeur&nbsp;: 
Tandem appartient &agrave; Compaq<sup>[<a href="#ftn.N10CC0" name="N10CC0">19</a>]</sup>.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10CC4"></a>3.2.17.&nbsp;SHRIMP</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>

Prise en charge par Linux&nbsp;: <span class="emphasis"><em>interface utilisateur &agrave; 
m&eacute;moire mapp&eacute;e</em></span>

</p></li><li><p>

Bande passante maximum&nbsp;: <span class="emphasis"><em>180 Mbits/s</em></span>

</p></li><li><p>

Temps de latence minimum&nbsp;: <span class="emphasis"><em>5 microsecondes</em></span>

</p></li><li><p>

Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>prototype exp&eacute;rimental</em></span>

</p></li><li><p>

Interface ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>EISA</em></span>

</p></li><li><p>

Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>Fond de panier en maille (comme 
pour le Paragon d'Intel)</em></span>

</p></li><li><p>

Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>?</em></span>

</p></li></ul></div><p>

Le projet <a href="http://www.cs.princeton.edu/shrimp/" target="_top">SHRIMP</a> de la section 
des sciences des ordinateurs de l'Universit&eacute; de Princeton, met sur pieds 
un ordinateur parall&egrave;le en utilisant dont les &eacute;l&eacute;ments de traitement 
sont des ordinateurs PC sous Linux. Le premier SHRIMP 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Scalable, High-Performance, Really Inexpensive 
Multi-Processor</em></span></span>&nbsp;&raquo;, soit &laquo;&nbsp;<span class="quote">multiprocesseur 
&eacute;volutif et de hautes performances vraiment bon march&eacute;</span>&nbsp;&raquo;) &eacute;tait un 
simple prototype biprocesseur utilisant une m&eacute;moire partag&eacute;e sur une 
carte EISA d&eacute;velopp&eacute;e pour l'occasion. Il existe d&eacute;sormais un prototype 
pouvant &eacute;voluer vers de plus larges configurations en utilisant une 
interface &laquo;&nbsp;<span class="quote">maison</span>&nbsp;&raquo; pour se connecter &agrave; une sorte de 
concentrateur, essentiellement con&ccedil;u comme le r&eacute;seau de routage en 
mailles utilis&eacute; dans le Paragon d'Intel. Des efforts consid&eacute;rables ont 
&eacute;t&eacute; faits pour d&eacute;velopper une &eacute;lectronique de &laquo;&nbsp;<span class="quote">communication 
mapp&eacute;e en m&eacute;moire virtuelle</span>&nbsp;&raquo; aux 
<span class="foreignphrase"><em class="foreignphrase">overheads</em></span> r&eacute;duits, avec sa couche 
logicielle.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10D08"></a>3.2.18.&nbsp;SLIP</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>

Prise en charge par Linux&nbsp;: <span class="emphasis"><em>pilotes du noyau</em></span>

</p></li><li><p>

Bande passante maximum&nbsp;: <span class="emphasis"><em>0,1 Mbits/s</em></span>

</p></li><li><p>

Temps de latence minimum&nbsp;: <span class="emphasis"><em>1000 microsecondes&nbsp;?</em></span>

</p></li><li><p>

Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>grande distribution</em></span>

</p></li><li><p>

Interface ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>RS232C</em></span>

</p></li><li><p>

Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>c&acirc;ble entre deux machines</em></span>

</p></li><li><p>

Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>2 dollars</em></span>

</p></li></ul></div><p>

M&ecirc;me si SLIP (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Serial Line Interface 
Protocol</em></span></span>&nbsp;&raquo;) se situe d&eacute;finitivement au pied de 
l'&eacute;chelle des performances, ce protocole (tout comme CSLIP ou PPP) 
permet &agrave; deux machines de communiquer en utilisant les 
&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">sockets</em></span></span>&nbsp;&raquo; et ce au travers 
d'un c&acirc;ble RS232 ordinaire. Les ports RS232 peuvent &ecirc;tre reli&eacute;s &agrave; l'aide 
d'un c&acirc;ble s&eacute;rie type NULL-MODEM, ou m&ecirc;me au travers d'une ligne 
t&eacute;l&eacute;phonique en utilisant des modems. Dans tous les cas, les temps de 
latence sont &eacute;lev&eacute;s, et la bande passante r&eacute;duite. Aussi, SLIP ne 
devrait &ecirc;tre utilis&eacute; qu'en dernier recours. En revanche, la plupart des 
PC sont dot&eacute;s de deux ports RS232. Il doit donc &ecirc;tre possible de relier 
un groupe de machines sous forme de r&eacute;seau lin&eacute;aire ou d'anneau. Il 
existe m&ecirc;me un logiciel de r&eacute;partition de la charge appel&eacute; EQL.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10D40"></a>3.2.19.&nbsp;TTL_PAPERS</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>

Prise en charge par Linux&nbsp;: <span class="emphasis"><em>biblioth&egrave;que AFAPI</em></span>

</p></li><li><p>

Bande passante maximum&nbsp;: <span class="emphasis"><em>1,6 Mbits/s</em></span>

</p></li><li><p>

Temps de latence minimum&nbsp;: <span class="emphasis"><em>3 microsecondes</em></span>

</p></li><li><p>

Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>conception dans le domaine public, 
fabricant exclusif</em></span>

</p></li><li><p>

Interface ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>SPP (port parall&egrave;le)</em></span>

</p></li><li><p>

Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>arbre de concentrateurs</em></span>

</p></li><li><p>

Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>100 dollars</em></span>

</p></li></ul></div><p>

Le projet PAPERS (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Purdue's Adapter for Parallel 
Execution and Rapid Synchronization</em></span></span>&nbsp;&raquo;, soit 
&laquo;&nbsp;<span class="quote">Adaptateur pour l'Ex&eacute;cution en Parall&egrave;le et la Synchronisation 
Rapide de l'universit&eacute; de Purdue</span>&nbsp;&raquo;), men&eacute; par la Purdue University 
School of Electrical and Computer Engineering (&laquo;&nbsp;<span class="quote">&Eacute;cole Sup&eacute;rieure 
d'&Eacute;lectricit&eacute; et d'Ing&eacute;nierie en Informatique</span>&nbsp;&raquo;), d&eacute;veloppe un 
ensemble logiciel et mat&eacute;riel &eacute;volutif et aux temps de latence r&eacute;duits 
pour les communications des fonctions d'agr&eacute;gation, permettant de mettre 
sur pieds un supercalculateur en parall&egrave;le utilisant comme n&#339;uds 
des PC d'origine, non modifi&eacute;s.

</p><p>

Plus d'une douzaine de versions de cartes &laquo;&nbsp;<span class="quote">PAPERS</span>&nbsp;&raquo;, reli&eacute;es 
au PC &agrave; la station de travail via le port parall&egrave;le standard (SPP&nbsp;: 
&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Standard Parallel Port</em></span></span>&nbsp;&raquo;), 
ont &eacute;t&eacute; construites, en suivant globalement deux grands axes. Les 
versions estampill&eacute;es &laquo;&nbsp;<span class="quote">PAPERS</span>&nbsp;&raquo; visent les hautes 
performances, quelle que soit la technologie la plus indiqu&eacute;e, la 
version actuelle utilisant des FPGA (N.D.T.&nbsp;: famille de r&eacute;seaux 
logiques programmables), et des mod&egrave;les d'interfaces PCI &agrave; haut d&eacute;bit 
sont actuellement &agrave; l'&eacute;tude. Par opposition, les versions nomm&eacute;es 
&laquo;&nbsp;<span class="quote">TTL_PAPERS</span>&nbsp;&raquo; sont con&ccedil;ues pour &ecirc;tre facilement reproduites 
hors de l'universit&eacute; de Purdue, et s'appuient sur des mod&egrave;les du domaine 
public remarquablement simples et qui peuvent &ecirc;tre mis en place en 
utilisant de la logique TTL ordinaire. L'une de ces versions est 
produite commercialement.

</p><p>

Contrairement au mat&eacute;riel sur mesure con&ccedil;u par d'autres universit&eacute;s, des 
<span class="foreignphrase"><em class="foreignphrase">clusters</em></span> TTL_PAPERS ont &eacute;t&eacute; assembl&eacute;s 
dans plusieurs &eacute;coles depuis les &Eacute;tats-Unis jusqu'en Cor&eacute;e du Sud. La 
bande passante est s&eacute;v&egrave;rement limit&eacute;e par la connectivit&eacute; du port 
parall&egrave;le, mais PAPERS met en &#339;uvre des fonctions d'agr&eacute;gation aux 
temps de latence tr&egrave;s r&eacute;duits. M&ecirc;me les syst&egrave;mes orient&eacute;s messages les 
plus rapides ne peuvent offrir de telles performances sur ces fonctions 
d'agr&eacute;gation. Ainsi, PAPERS est particuli&egrave;rement performant dans la 
synchronisation des diff&eacute;rents &eacute;crans d'un mur vid&eacute;o (&agrave; d&eacute;battre dans le 
<span class="foreignphrase"><em class="foreignphrase">Video-Wall-HOWTO</em></span> actuellement en 
pr&eacute;paration), pour planifier les acc&egrave;s &agrave; un r&eacute;seau &agrave; haut d&eacute;bit, pour 
&eacute;valuer les probabilit&eacute;s en recherche g&eacute;n&eacute;tique, et c&aelig;tera. M&ecirc;me si des 
<span class="foreignphrase"><em class="foreignphrase">clusters</em></span> PAPERS ont &eacute;t&eacute; construits en 
utilisant AIX d'IBM sur PowerPC, des DEC Alpha OSF/1, ou HP-UX sur HP 
PA-RISC, le PC sous Linux reste la plate-forme la mieux prise en charge.

</p><p>

Les programmes utilisateur utilisant l'AFAPI de TTL_PAPERS attaquent 
directement les registres mat&eacute;riels du port parall&egrave;le sous Linux, sans 
effectuer d'appel syst&egrave;me &agrave; chaque acc&egrave;s. Pour ce faire, l'AFAPI demande 
d'abord les droits d'acc&egrave;s au port parall&egrave;le en utilisant soit 
<code class="literal">iopl()</code>, soit <code class="literal">ioperm()</code>. Le probl&egrave;me 
est que, l'un comme l'autre, ces appels obligent le programme appelant &agrave; 
&ecirc;tre privil&eacute;gi&eacute;, ce qui introduit une faille de s&eacute;curit&eacute; potentielle. La 
solution r&eacute;side en un correctif optionnel &agrave; appliquer au noyau Linux et 
permettant &agrave; un processus privil&eacute;gi&eacute; de contr&ocirc;ler les permissions 
d'acc&egrave;s aux ports d'entr&eacute;e/sortie pour n'importe quel autre processus.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10D9E"></a>3.2.20.&nbsp;USB (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Universal Serial Bus</em></span></span>&nbsp;&raquo;)</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>

Prise en charge par Linux&nbsp;: <span class="emphasis"><em>pilotes du noyau</em></span>

</p></li><li><p>

Bande passante maximum&nbsp;: <span class="emphasis"><em>12 Mbits/s</em></span>

</p></li><li><p>

Temps de latence minimum&nbsp;: <span class="emphasis"><em>?</em></span>

</p></li><li><p>

Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>dans le commerce</em></span>

</p></li><li><p>

Interface ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>USB</em></span>

</p></li><li><p>

Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>bus</em></span>

</p></li><li><p>

Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>5 dollars</em></span>

</p></li></ul></div><p>

USB (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Universal Serial Bus</em></span></span>&nbsp;&raquo;, 
<a href="http://www.usb.org" target="_top">http://www.usb.org</a>) est un bus fonctionnant &agrave; la vitesse 
de l'Ethernet conventionnel, dont les p&eacute;riph&eacute;riques qui s'y rattachent 
peuvent &ecirc;tre connect&eacute;s &agrave; chaud 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Hot-Plug</em></span></span>&nbsp;&raquo;&nbsp;: sans 
imposer la mise hors tension pr&eacute;alable du bus) et pouvant accueillir simultan&eacute;ment 
jusqu'&agrave; 127 de ces p&eacute;riph&eacute;riques pouvant s'&eacute;tendre du clavier &agrave; la 
cam&eacute;ra de vid&eacute;o-conf&eacute;rence. La mani&egrave;re dont on relie plusieurs 
ordinateurs par le biais de l'USB n'est pas clairement d&eacute;finie. Quoi 
qu'il en soit, les ports USB sont en train de s'&eacute;tablir tr&egrave;s rapidement 
en standard sur les cartes-m&egrave;res, au m&ecirc;me titre que le port s&eacute;rie RS232 
ou le port parall&egrave;le, aussi ne soyez pas surpris si vous voyez 
appara&icirc;tre un ou deux ports USB <sup>[<a href="#ftn.N10DDD" name="N10DDD">20</a>]</sup> sur votre prochain PC.

</p><p>
D'une certaine mani&egrave;re, l'USB est pratiquement la version basse performance
&agrave; prix nul du FireWire que l'on peut se procurer aujourd'hui.
</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10DE3"></a>3.2.21.&nbsp;WAPERS</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>

Prise en charge par Linux&nbsp;: <span class="emphasis"><em>biblioth&egrave;que AFAPI</em></span>

</p></li><li><p>

Bande passante maximum&nbsp;: <span class="emphasis"><em>0,4 Mbits/s</em></span>

</p></li><li><p>

Temps de latence&nbsp;: <span class="emphasis"><em>3 microsecondes</em></span>

</p></li><li><p>

Disponibilit&eacute;&nbsp;: <span class="emphasis"><em>mod&egrave;le dans le domaine public</em></span>

</p></li><li><p>

Interface ou bus utilis&eacute;&nbsp;: <span class="emphasis"><em>SPP (Port Parall&egrave;le Standard)</em></span>

</p></li><li><p>

Structure du r&eacute;seau&nbsp;: <span class="emphasis"><em>mod&egrave;le de c&acirc;blage entre 2 &agrave; 64 machines</em></span>

</p></li><li><p>

Co&ucirc;t par machine connect&eacute;e&nbsp;: <span class="emphasis"><em>5 dollars</em></span>

</p></li></ul></div><p>

WAPERS (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Wired-AND Adapter for Parallel Execution 
and Rapid Synchronization</em></span></span>&nbsp;&raquo;, soit 
&laquo;&nbsp;<span class="quote">Adaptateur par ET C&acirc;bl&eacute; pour l'Ex&eacute;cution en Parall&egrave;le et la 
Synchronisation Rapide</span>&nbsp;&raquo;) est une des facettes du projet PAPERS, 
de la Purdue University School of Electrical and Computer Engineering 
(&laquo;&nbsp;<span class="quote">&Eacute;cole Sup&eacute;rieure d'&Eacute;lectricit&eacute; et d'Ing&eacute;nierie en 
Informatique</span>&nbsp;&raquo;). S'il est construit proprement, le port parall&egrave;le 
poss&egrave;de quatre bits de sortie &agrave; collecteur ouvert qui peuvent &ecirc;tre 
c&acirc;bl&eacute;s entre eux pour former un ET c&acirc;bl&eacute; de 4 bits de large. Ce ET c&acirc;bl&eacute; 
est assez sensible &eacute;lectriquement, et le nombre maximum de machines qui 
peuvent y &ecirc;tre reli&eacute;es d&eacute;pend de fa&ccedil;on critique des propri&eacute;t&eacute;s 
analogiques des ports (les limites maximum des puits de courant et les 
valeurs des r&eacute;sistances de <span class="foreignphrase"><em class="foreignphrase">pull-up</em></span>). On 
peut typiquement relier 7 &agrave; 8 machines en r&eacute;seau de cette fa&ccedil;on, avec 
WAPERS. Bien que les co&ucirc;ts et les temps de latences soient tr&egrave;s r&eacute;duits, 
la bande passante l'est aussi. WAPERS est donc bien plus indiqu&eacute; comme 
r&eacute;seau secondaire d&eacute;di&eacute; aux fonctions d'agr&eacute;gations que comme unique 
r&eacute;seau d'un <span class="foreignphrase"><em class="foreignphrase">cluster</em></span>. Comme pour 
TTL_PAPERS, il existe un correctif noyau visant &agrave; am&eacute;liorer la s&eacute;curit&eacute;, 
recommand&eacute; mais non requis.

</p></div></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N10E23"></a>3.3.&nbsp;Interface Logicielle R&eacute;seau</h3></div></div></div><p>

Avant d'explorer les ressources logicielles existantes en mati&egrave;re de 
traitement en parall&egrave;le, il est utile de couvrir rapidement les bases de 
l'interface logicielle de bas niveau g&eacute;rant l'&eacute;lectronique du r&eacute;seau. Il 
n'existe en r&eacute;alit&eacute; que trois options de base&nbsp;: les 
<span class="foreignphrase"><em class="foreignphrase">sockets</em></span>, les pilotes de p&eacute;riph&eacute;riques et 
les biblioth&egrave;ques utilisateur.

</p><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10E2B"></a>3.3.1.&nbsp;Les <span class="foreignphrase"><em class="foreignphrase">sockets</em></span></h4></div></div></div><p>

Le <span class="foreignphrase"><em class="foreignphrase">socket</em></span> est de loin la plus courante 
des interfaces r&eacute;seau de bas niveau. Les 
<span class="foreignphrase"><em class="foreignphrase">sockets</em></span> sont partie int&eacute;grante d'Unix 
depuis plus d'une d&eacute;cennie et la plupart des standards dans le domaine 
du mat&eacute;riel &eacute;lectronique de r&eacute;seau est con&ccedil;ue pour prendre en charge au 
moins deux types de protocoles de 
<span class="foreignphrase"><em class="foreignphrase">socket</em></span>&nbsp;: TCP et UDP. Ces deux types 
de <span class="foreignphrase"><em class="foreignphrase">sockets</em></span> vous permettent d'envoyer des 
blocs de donn&eacute;es d'une longueur arbitraire d'une machine &agrave; l'autre, mais 
il existe plusieurs diff&eacute;rences importantes. Typiquement, ils engendrent 
tous deux un temps de latence minimum d'environ 1000 microsecondes, m&ecirc;me 
si les performances peuvent bien pires encore en fonction du trafic.

</p><p>

Ces types de <span class="foreignphrase"><em class="foreignphrase">sockets</em></span> constituent 
l'interface logicielle r&eacute;seau de base pour la majorit&eacute; des logiciels de 
traitement en parall&egrave;le portables et de plus haut niveau. Par exemple, 
PVM utilise une combinaison de l'UDP et du TCP, aussi en conna&icirc;tre les 
diff&eacute;rences vous aidera &agrave; affiner les performances de votre syst&egrave;me. Ce 
qui suit n'est qu'un aper&ccedil;u de TCP et UDP. R&eacute;f&eacute;rez-vous aux pages du 
manuel et &agrave; un bon livre de programmation pour plus de d&eacute;tails.

</p><div class="sect4" lang="fr"><div class="titlepage"><div><div><h5 class="title"><a name="N10E43"></a>3.3.1.1.&nbsp;Le protocole UDP (SOCK_DGRAM)</h5></div></div></div><p>

<span class="emphasis"><em>UDP</em></span> signifie &laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">User Datagram 
Protocol</em></span></span>&nbsp;&raquo; ou &laquo;&nbsp;<span class="quote">Protocole de Datagrammes 
Utilisateur</span>&nbsp;&raquo; mais il est plus facile de se souvenir des 
propri&eacute;t&eacute;s d'UDP en tant que &laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Unreliable Datagram 
Processing</em></span></span>&nbsp;&raquo;, ou &laquo;&nbsp;<span class="quote">Traitement des Datagrammes 
Peu fiable</span>&nbsp;&raquo;. En d'autres termes, UDP permet &agrave; chaque bloc d'&ecirc;tre 
&eacute;mis comme un message individuel, mais un message peut &ecirc;tre perdu 
pendant la transmission. De fait, selon l'&eacute;tat du trafic sur le r&eacute;seau, 
certains messages UDP peuvent &ecirc;tre perdus, arriver plusieurs fois, ou 
arriver dans un ordre diff&eacute;rent de celui dans lequel ils ont &eacute;t&eacute; &eacute;mis. 
L'exp&eacute;diteur d'un message UDP ne re&ccedil;oit pas syst&eacute;matiquement d'accus&eacute; de 
r&eacute;ception, et c'est donc au programme &eacute;crit par l'utilisateur qu'il 
appartient de d&eacute;tecter et compenser ces probl&egrave;mes. Heureusement, le 
protocole UDP garantit que si un message arrive, son contenu sera intact 
(c'est-&agrave;-dire que vous ne recevrez jamais un message incomplet).

</p><p>

Le bon cot&eacute; de l'UDP est qu'il tend &agrave; &ecirc;tre le plus rapide des protocoles 
des <span class="foreignphrase"><em class="foreignphrase">socket</em></span>. En outre, UDP est 
&laquo;&nbsp;<span class="quote">orient&eacute; hors connexion</span>&nbsp;&raquo; 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">connectionless</em></span></span>&nbsp;&raquo;), ce qui 
signifie que chaque message est essentiellement ind&eacute;pendant des autres. 
On peut comparer chaque message &agrave; une lettre &agrave; La Poste. Vous pouvez 
envoyer plusieurs lettres &agrave; la m&ecirc;me adresse, mais chacune d'entre elles 
est ind&eacute;pendante des autres, et vous n'&ecirc;tes pas limit&eacute; quant aux nombre 
de personnes &agrave; qui vous pouvez en envoyer.

</p></div><div class="sect4" lang="fr"><div class="titlepage"><div><div><h5 class="title"><a name="N10E65"></a>3.3.1.2.&nbsp;Le protocole TCP (SOCK_STREAM)</h5></div></div></div><p>

Contrairement &agrave; l'UDP, le <span class="emphasis"><em>TCP</em></span> est un protocole 
fiable et orient&eacute; connexion. Chaque bloc est consid&eacute;r&eacute; non pas comme un 
message, mais comme un bloc de donn&eacute;es appartenant &agrave; un flot d'octets 
voyageant au travers d'une connexion &eacute;tablie entre l'exp&eacute;diteur et le 
destinataire. Ce principe est tr&egrave;s diff&eacute;rent du syst&egrave;me de messages de 
l'UDP car chaque bloc n'est qu'une partie du flot d'octets, et il 
appartient au programme utilisateur de trouver le moyen de les isoler 
car il n'y a aucune marque de s&eacute;paration pour les distinguer. De plus, 
les connexions sont plus vuln&eacute;rables aux perturbations du r&eacute;seau, et 
seul un nombre limit&eacute; de connexions simultan&eacute;es peut exister au sein 
d'un m&ecirc;me processus. Parce qu'il est fiable, le TCP engendre souvent des 
<span class="foreignphrase"><em class="foreignphrase">overheads</em></span> plus importants que l'UDP.

</p><p>

Le TCP r&eacute;serve en revanche quelques bonnes surprises. Par exemple, si 
plusieurs messages sont envoy&eacute;s &agrave; travers une connexion, TCP est capable 
de les rassembler dans une m&eacute;moire tampon pour mieux correspondre aux 
tailles standard des paquets de l'&eacute;lectronique du r&eacute;seau, ce qui peut 
donner de meilleurs r&eacute;sultats que l'UDP dans le cas de groupes de 
messages courts ou de taille inhabituelle. Un autre avantage&nbsp;: Les 
r&eacute;seaux b&acirc;tis sur des connexions physiques directes entre deux machines 
peuvent facilement et efficacement &ecirc;tre assimil&eacute;s &agrave; des connexions TCP. 
Ce fut le cas pour la &laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Socket 
Library</em></span></span>&nbsp;&raquo; (&laquo;&nbsp;<span class="quote">biblioth&egrave;que de gestion de 
<span class="foreignphrase"><em class="foreignphrase">Sockets</em></span></span>&nbsp;&raquo;), pr&eacute;sentant une gestion 
compatible TCP au niveau de l'utilisateur qui ne diff&eacute;rait des appels 
syst&egrave;mes TCP standard que par le pr&eacute;fixe <code class="literal">PSS</code>, que 
l'on rajoutait au d&eacute;but du nom des fonctions &agrave; invoquer.

</p></div></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10E7F"></a>3.3.2.&nbsp;Les pilotes de p&eacute;riph&eacute;riques</h4></div></div></div><p>

Lorsque l'on en arrive au stade o&ugrave; il faut effectivement injecter des 
donn&eacute;es sur le r&eacute;seau ou les y en extraire, l'interface logicielle des 
Unix standard fait partie du noyau et s'appelle &laquo;&nbsp;<span class="quote">pilote</span>&nbsp;&raquo; 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">driver</em></span></span>&nbsp;&raquo;). UDP et TCP ne se 
contentent pas de transporter des donn&eacute;es, ils s'accompagnent &eacute;galement 
d'importants <span class="foreignphrase"><em class="foreignphrase">overheads</em></span> dus &agrave; la gestion 
des <span class="foreignphrase"><em class="foreignphrase">sockets</em></span>. Par exemple, il faut que 
quelque chose s'occupe du fait que plusieurs connexions TCP peuvent 
partager la m&ecirc;me interface r&eacute;seau physique. Par opposition, un pilote de 
p&eacute;riph&eacute;rique d&eacute;di&eacute; &agrave; une interface r&eacute;seau n'a besoin de mettre en 
&#339;uvre qu'un petit nombre de fonctions de transport &eacute;l&eacute;mentaires. 
Ces pilotes peuvent alors &ecirc;tre invoqu&eacute;s &agrave; l'aide de l'appel 
<code class="literal">open()</code> pour identifier le p&eacute;riph&eacute;rique ad&eacute;quat, puis 
en utilisant par exemple <code class="literal">read()</code> et 
<code class="literal">write()</code> sur le &laquo;&nbsp;<span class="quote">fichier</span>&nbsp;&raquo; ouvert. Ainsi, 
chaque op&eacute;ration peut transporter un bloc de donn&eacute;es en co&ucirc;tant &agrave; peine 
plus cher qu'un appel syst&egrave;me, ce qui permet d'atteindre des d&eacute;lais de 
l'ordre de quelques dizaines de microsecondes.

</p><p>

&Eacute;crire un pilote de p&eacute;riph&eacute;rique pour Linux n'est pas difficile&hellip; 
pourvu que vous sachiez <span class="emphasis"><em>parfaitement</em></span> comme 
fonctionne votre p&eacute;riph&eacute;rique. Si vous n'en &ecirc;tes pas s&ucirc;r, n'essayez pas 
de le deviner. D&eacute;boguer un pilote de p&eacute;riph&eacute;rique n'est pas une chose 
amusante, et faire des erreurs peut co&ucirc;ter la vie &agrave; votre mat&eacute;riel. En 
revanche, si ces risques ne vous effraient pas, il est possible d'&eacute;crire 
un pilote pour, par exemple, utiliser des cartes Ethernet d&eacute;di&eacute;es comme 
des connexions machine-vers-machine &laquo;&nbsp;<span class="quote">b&ecirc;tes</span>&nbsp;&raquo; mais tr&egrave;s 
rapides car exon&eacute;r&eacute;es du protocole Ethernet habituel. Pour &ecirc;tre exact, 
c'est pratiquement la technique utilis&eacute;e par les premiers 
supercalculateurs Intel. R&eacute;f&eacute;rez-vous au 
<span class="foreignphrase"><em class="foreignphrase">Device-Driver-HOWTO</em></span> pour plus 
d'informations.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N10EAB"></a>3.3.3.&nbsp;Biblioth&egrave;ques utilisateurs</h4></div></div></div><p>

Si vous avez pris des cours de programmation syst&egrave;me, on a d&ugrave; vous y 
apprendre qu'acc&eacute;der directement aux registres mat&eacute;riels des 
p&eacute;riph&eacute;riques &agrave; partir d'un programme utilisateur &eacute;tait l'exemple 
typique de ce qu'il ne faut pas faire, parce que l'un des principes m&ecirc;me 
d'un syst&egrave;me d'exploitation est de contr&ocirc;ler l'acc&egrave;s aux p&eacute;riph&eacute;riques. 
Cependant, le simple fait de passer un appel syst&egrave;me co&ucirc;te au minimum 
quelques dizaines de microsecondes. Dans le cas d'interfaces r&eacute;seau 
b&acirc;ties sur mesure comme TTL_PAPERS, qui peut effectuer des op&eacute;rations de 
base sur un r&eacute;seau en seulement 3 microsecondes, un tel surco&ucirc;t pour un 
appel syst&egrave;me est intol&eacute;rable. Le seul moyen d'&eacute;viter ce temps d'attente 
est de faire en sorte que du code s'ex&eacute;cutant au niveau de 
l'utilisateur, donc une &laquo;&nbsp;<span class="quote">biblioth&egrave;que au niveau de 
l'utilisateur</span>&nbsp;&raquo; <sup>[<a href="#ftn.N10EB3" name="N10EB3">21</a>]</sup>, puisse acc&eacute;der directement au mat&eacute;riel, mais sans 
remettre en cause la souverainet&eacute; du syst&egrave;me d'exploitation sur la 
gestion des droits d'acc&egrave;s aux ressources mat&eacute;rielles.

</p><p>
Sur un syst&egrave;me typique, les seuls moyens, pour une biblioth&egrave;que utilisateur,
d'acc&eacute;der directement aux registres du mat&eacute;riel sont les suivants&nbsp;:
</p><div class="orderedlist"><ol type="1"><li><p>

Au lancement du programme utilisateur, faire un appel syst&egrave;me pour 
mapper l'espace d'adressage qui contient les registres du p&eacute;riph&eacute;rique 
dans le plan m&eacute;moire du processus utilisateur. Sur certains syst&egrave;mes, 
l'appel syst&egrave;me <code class="literal">mmap()</code> (trait&eacute; pour la premi&egrave;re fois 
dans la section 2.6) peut &ecirc;tre utilis&eacute; pour mapper un fichier sp&eacute;cial 
repr&eacute;sentant les adresses de la page de m&eacute;moire physique du 
p&eacute;riph&eacute;rique. Il est en m&ecirc;me temps relativement simple d'&eacute;crire un 
pilote de p&eacute;riph&eacute;rique effectuant cette op&eacute;ration. De plus, ce pilote 
peut obtenir l'acc&egrave;s en ne mappant que la ou les pages qui contiennent 
les registres n&eacute;cessaires, en maintenant ainsi le contr&ocirc;le des droits 
d'acc&egrave;s sous la coupe du syst&egrave;me d'exploitation.

</p></li><li><p>

Acc&eacute;der ensuite aux registres du p&eacute;riph&eacute;rique sans passer par un appel 
syst&egrave;me en se contentant de charger ou de ranger des valeurs sur la 
plage d'adressage mapp&eacute;e. Par exemple, un

<code class="literal">*((char *) 0x1234) = 5;</code>

d&eacute;posera un octet de valeur 5 &agrave; l'adresse m&eacute;moire 1234 en hexad&eacute;cimal.

</p></li></ol></div><p>
Par bonheur, il se trouve que Linux pour Intel 386 et compatibles
offre une solution meilleure encore&nbsp;:
</p><div class="orderedlist"><ol type="1"><li><p>

En invoquant l'appel syst&egrave;me <code class="literal">ioperm()</code>
depuis un processus privil&eacute;gi&eacute;, obtenir la permission d'acc&eacute;der
aux ports d'entr&eacute;e/sortie correspondant pr&eacute;cis&eacute;ment aux registres
du p&eacute;riph&eacute;rique. Parall&egrave;lement, ces permissions peuvent &ecirc;tre g&eacute;r&eacute;es
par un processus utilisateur privil&eacute;gi&eacute; et ind&eacute;pendant (autrement
dit&nbsp;: un &laquo;&nbsp;<span class="quote">m&eacute;ta-syst&egrave;me d'exploitation</span>&nbsp;&raquo;) en utilisant l'appel
 syst&egrave;me <span class="emphasis"><em>giveioperm()</em></span>, disponible sous la
forme d'un correctif &agrave; appliquer au noyau
Linux.

</p></li><li><p>

Acc&eacute;der aux registres du p&eacute;riph&eacute;rique sans appel syst&egrave;me en
utilisant les instructions assembleur d'acc&egrave;s aux ports
d'entr&eacute;e/sortie du 386.

</p></li></ol></div><p>
Cette seconde solution est pr&eacute;f&eacute;rable car il arrive souvent que
les registres de plusieurs p&eacute;riph&eacute;riques soient r&eacute;unis sur une
m&ecirc;me page, auquel cas la premi&egrave;re m&eacute;thode ne pourrait offrir
de protection contre l'acc&egrave;s aux autres registres r&eacute;sidant dans
la m&ecirc;me page que ceux appartenant au p&eacute;riph&eacute;rique concern&eacute;.
L'inconv&eacute;nient est que ces instructions ne peuvent bien s&ucirc;r pas
&ecirc;tre &eacute;crites en langage C. Il vous faudra &agrave; la place utiliser
un peu d'assembleur. La fonction utilisant l'assembleur en ligne
int&eacute;gr&eacute; &agrave; GCC (donc utilisable dans les programmes C) permettant
de lire un octet depuis un port est la suivante&nbsp;:
</p><pre class="programlisting">
extern inline unsigned char
inb(unsigned short port)
{
    unsigned char _v;
__asm__ __volatile__ ("inb %w1,%b0"
                      :"=a" (_v)
                      :"d" (port), "0" (0));
    return _v;
}
</pre><p>
La fonction sym&eacute;trique permettant l'&eacute;mission d'un octet est&nbsp;:
</p><p>

<pre class="programlisting">
extern inline void
outb(unsigned char value,
unsigned short port)
{
__asm__ __volatile__ ("outb %b0,%w1"
                      :/* pas de valeur retourn&eacute;e */
                      :"a" (value), "d" (port));
}
</pre>

</p></div></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N10EEF"></a>3.4.&nbsp;PVM (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Parallel Virtual Machine</em></span></span>&nbsp;&raquo;)</h3></div></div></div><p>

PVM (pour &laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Parallel Virtual 
Machine</em></span></span>&nbsp;&raquo;, soit &laquo;&nbsp;<span class="quote">Machine Virtuelle en 
Parall&egrave;le</span>&nbsp;&raquo;) est une biblioth&egrave;que de 
<span class="foreignphrase"><em class="foreignphrase">message-passing</em></span> portable et disponible 
gratuitement, s'appuyant g&eacute;n&eacute;ralement directement sur les 
<span class="foreignphrase"><em class="foreignphrase">sockets</em></span>. Cette biblioth&egrave;que s'est 
incontestablement &eacute;tablie comme le standard <span class="foreignphrase"><em class="foreignphrase">de 
facto</em></span> dans le domaine du traitement en parall&egrave;le &agrave; 
l'aide de <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> &agrave; transmission de 
messages.

</p><p>

PVM prend en charge les machines Linux monoprocesseur et SMP, comme les 
<span class="foreignphrase"><em class="foreignphrase">clusters</em></span> de machines Linux reli&eacute;es entre 
elles &agrave; l'aide par des r&eacute;seaux reconnaissant les 
<span class="foreignphrase"><em class="foreignphrase">sockets</em></span> (donc SLIP, PLIP, Ethernet, ATM). 
En fait, PVM fonctionnera m&ecirc;me &agrave; travers un groupe de machines utilisant 
diff&eacute;rents types de processeurs, de configurations et de r&eacute;seaux 
physiques &mdash; Un <span class="emphasis"><em>cluster h&eacute;t&eacute;rog&egrave;ne</em></span> &mdash; 
m&ecirc;me si l'envergure de ce <span class="foreignphrase"><em class="foreignphrase">cluster</em></span> est de 
l'ordre de la mise en parall&egrave;le de machines en utilisant Internet pour 
les relier entre elles. PVM offre m&ecirc;me des facilit&eacute;s de contr&ocirc;les de 
t&acirc;ches (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">jobs</em></span></span>&nbsp;&raquo;) en parall&egrave;le 
au travers d'un <span class="foreignphrase"><em class="foreignphrase">cluster</em></span>. Cerise sur le 
g&acirc;teau, PVM est disponible gratuitement et depuis longtemps 
(actuellement sur <a href="http://www.epm.ornl.gov/pvm/pvm_home.html" target="_top">http://www.epm.ornl.gov/pvm/pvm_home.html</a>), ce qui a conduit bon 
nombre de langages de programmation, de compilateurs, et d'outils de 
d&eacute;bogage ou autres &agrave; l'adopter comme leur &laquo;&nbsp;<span class="quote">biblioth&egrave;que cible 
portable de <span class="foreignphrase"><em class="foreignphrase">message-passing</em></span></span>&nbsp;&raquo;. Il 
existe &eacute;galement un groupe de discussion&nbsp;: <a href="news:comp.parallel.pvm" target="_top">news:comp.parallel.pvm</a>.

</p><p>

Il est important de remarquer, en revanche, que les appels PVM ajoutent 
g&eacute;n&eacute;ralement aux op&eacute;rations <span class="foreignphrase"><em class="foreignphrase">socket</em></span> un 
<span class="foreignphrase"><em class="foreignphrase">overhead</em></span> non n&eacute;gligeable alors que les 
temps de latence de celles-ci sont d&eacute;j&agrave; importants. En outre, les appels 
eux-m&ecirc;mes ne sont pas ais&eacute;s &agrave; manipuler.

</p><p>
Appliqu&eacute;e au m&ecirc;me exemple de calcul de Pi d&eacute;crit en section 1.3,
la version PVM du programme en langage C est la suivante&nbsp;:
</p><pre class="programlisting">
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;pvm3.h&gt;

#define NPROC	4

main(int argc, char **argv)
{
  register double sommelocale, largeur;
  double somme;
  register int intervalles, i;
  int mytid, iproc, msgtag = 4;
  int tids[NPROC];  /* Tableau des num&eacute;ros des t&acirc;ches */

  /* D&eacute;but du traitement avec PVM */
  mytid = pvm_mytid();

  /* &laquo; Je rejoins le groupe et, si je suis la premi&egrave;re instance,
     iproc=0, je cr&eacute;e plusieurs copies de moi-m&ecirc;me. &raquo;
  */
  iproc = pvm_joingroup("pi");

  if (iproc == 0) {
    tids[0] = pvm_mytid();
    pvm_spawn("pvm_pi", &amp;argv[1], 0, NULL, NPROC-1, &amp;tids[1]);
  }
  /* On s'assure que tous les processus sont pr&ecirc;ts  */
  pvm_barrier("pi", NPROC);

  /* R&eacute;cup&egrave;re le nombre d'intervalles */
  intervalles = atoi(argv[1]);
  largeur = 1.0 / intervalles;

  sommelocale = 0.0;
  for (i = iproc; i&lt;intervalles; i+=NPROC) {
    register double x = (i + 0.5) * largeur;
    sommelocale += 4.0 / (1.0 + x * x);
  }

  /* On ajuste les r&eacute;sultats locaux en fonction de la largeur */
  somme = sommlocale * largeur;
  pvm_reduce(PvmSum, &amp;sum, 1, PVM_DOUBLE, msgtag, "pi", 0);

  /* Seul le processus rattach&eacute; &agrave; la console renvoie le r&eacute;sultat */
  if (iproc == 0) {
    printf("Estimation de la valeur de pi: %f\n", somme);
  }

  /* On attend que le programme soit termin&eacute;,
     on quitte le groupe et
	 on sort de PVM. */
  pvm_barrier("pi", NPROC);
  pvm_lvgroup("pi");
  pvm_exit();
  return(0);
}
</pre></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N10F38"></a>3.5.&nbsp;MPI (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Message Passing Interface</em></span></span>&nbsp;&raquo;)</h3></div></div></div><p>

Bien que PVM soit le standard de fait en mati&egrave;re de biblioth&egrave;que de 
<span class="foreignphrase"><em class="foreignphrase">message-passing</em></span>, MPI 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Message Passing 
Interface</em></span></span>&nbsp;&raquo;) tend &agrave; devenir le nouveau standard 
officiel. Le site du standard MPI se trouve sur <a href="http://www.mcs.anl.gov:80/mpi/" target="_top">http://www.mcs.anl.gov:80/mpi/</a> et le groupe de discussion 
correspondant sur <a href="news:comp.parallel.mpi" target="_top">news:comp.parallel.mpi</a>.

</p><p>
En revanche, avant d'explorer MPI, je me sens oblig&eacute; de parler
rapidement de la guerre de religion qui oppose PVM &agrave; MPI et qui
dure depuis quelques ann&eacute;es. Je ne penche ni pour l'un ni pour
l'autre. Voici un r&eacute;sum&eacute; aussi impartial que possible des
diff&eacute;rences entre les deux interfaces&nbsp;:
</p><div class="variablelist"><dl><dt><span class="term">Environnement de contr&ocirc;le de l'ex&eacute;cution</span></dt><dd><p>
Pour faire simple, PVM en a un, et MPI ne pr&eacute;cise pas
s'il existe, ni comment il doit &ecirc;tre impl&eacute;ment&eacute;. Cela
signifie que certaines choses comme lancer l'ex&eacute;cution
d'un programme PVM se fait de la m&ecirc;me mani&egrave;re partout,
alors que pour MPI, cela d&eacute;pend de l'impl&eacute;mentation
utilis&eacute;e.
</p></dd><dt><span class="term">Prise en charge des <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> h&eacute;t&eacute;rog&egrave;nes.</span></dt><dd><p>
PVM a grandi dans le monde de la collecte des cycles machines
inutilis&eacute;s sur les stations de travail, et sait donc g&eacute;rer donc
directement les m&eacute;langes h&eacute;t&eacute;rog&egrave;nes de machines et de syst&egrave;mes
d'exploitation. A contrario, MPI part du principe g&eacute;n&eacute;ral que
la cible est un MPP (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Massively Parallel Processor</em></span></span>&nbsp;&raquo;, soit
&laquo;&nbsp;<span class="quote">Processeur Massivement Parall&egrave;le</span>&nbsp;&raquo;) ou un <span class="foreignphrase"><em class="foreignphrase">cluster</em></span> d&eacute;di&eacute;
de stations de travail pratiquement toutes identiques.
</p></dd><dt><span class="term">Syndrome de l'&eacute;vier.</span></dt><dd><p>
PVM se r&eacute;v&egrave;le &ecirc;tre con&ccedil;u pour une cat&eacute;gorie d'utilisation bien
d&eacute;finie, ce que MPI&nbsp;2.0 ne fait pas. Le nouveau standard MPI&nbsp;2.0
inclut une vari&eacute;t&eacute; de fonctionnalit&eacute;s qui s'&eacute;tendent bien au del&agrave;
du simple mod&egrave;le de <span class="foreignphrase"><em class="foreignphrase">message-passing</em></span>, comme le RMA
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Remote Memory Access</em></span></span>&nbsp;&raquo;, soit &laquo;&nbsp;<span class="quote">Acc&egrave;s M&eacute;moire &agrave; Distance</span>&nbsp;&raquo;) ou les
op&eacute;rations d'entr&eacute;e/sortie en parall&egrave;le sur les fichiers. Toutes
ces choses sont-elles bien utiles&nbsp;? Assur&eacute;ment&hellip; mais assimiler
MPI 2.0 est comparable &agrave; r&eacute;apprendre depuis z&eacute;ro un langage de
programmation totalement nouveau.
</p></dd><dt><span class="term">Conception de l'interface utilisateur.</span></dt><dd><p>
MPI a &eacute;t&eacute; con&ccedil;u apr&egrave;s PVM, et en a incontestablement tir&eacute; les le&ccedil;ons.
MPI offre une gestion des tampons plus simple et plus efficace et
une couche d'abstraction de haut-niveau permettant de transmettre
des donn&eacute;es d&eacute;finies par l'utilisateur comme des messages.
</p></dd><dt><span class="term">Force de loi.</span></dt><dd><p>
Pour ce que j'ai pu en voir, il existe toujours plus d'applications
con&ccedil;ues autour de PVM qu'autour de MPI. N&eacute;anmoins, porter celles-ci
vers MPI est chose facile, et le fait que MPI soit soutenu par un
standard formel tr&egrave;s r&eacute;pandu signifie que MPI est, pour un certain nombre
d'institutions, une question de vision des choses.
</p></dd></dl></div><p>
Conclusion&nbsp;? Disons qu'il existe au moins trois versions de MPI
d&eacute;velopp&eacute;es de fa&ccedil;on ind&eacute;pendante et disponibles gratuitement pouvant
fonctionner sur des <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> de machines Linux (et j'ai &eacute;crit l'un
d'eux)&nbsp;:
</p><div class="itemizedlist"><ul type="disc"><li><p>
LAM (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Local Area Multicomputer</em></span></span>&nbsp;&raquo;, soit &laquo;&nbsp;<span class="quote">MultiOrdinateur Local</span>&nbsp;&raquo;)
est une mise en &#339;uvre compl&egrave;te du standard 1.1. Il permet aux programmes
MPI de s'ex&eacute;cuter sur un syst&egrave;me Linux individuel ou au travers d'un
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span> de syst&egrave;mes Linux communiquant par le biais de <span class="foreignphrase"><em class="foreignphrase">sockets</em></span> TCP/UDP.
Le syst&egrave;me inclut des facilit&eacute;s de base de contr&ocirc;le de l'ex&eacute;cution, ainsi que
toute une gamme d'outils de d&eacute;veloppement et de d&eacute;bogage de programmes.
</p></li><li><p>

MPICH (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">MPI CHameleon</em></span></span>&nbsp;&raquo;) est 
con&ccedil;u pour &ecirc;tre une impl&eacute;mentation compl&egrave;te et hautement portable du 
standard MPI 1.1. Tout comme LAM, il permet aux programmes MPI d'&ecirc;tre 
ex&eacute;cut&eacute;s sur des syst&egrave;mes Linux individuels ou en 
<span class="foreignphrase"><em class="foreignphrase">clusters</em></span> via une communication par 
<span class="foreignphrase"><em class="foreignphrase">socket</em></span> TCP/UDP. En revanche, l'accent est 
port&eacute; sur la promotion de MPI en fournissant une impl&eacute;mentation efficace 
et facilement repositionnable. Pour porter cette impl&eacute;mentation, il faut 
r&eacute;impl&eacute;menter soit les cinq fonctions de la &laquo;&nbsp;<span class="quote">channel 
interface</span>&nbsp;&raquo;, soit, pour de meilleures performances, la totalit&eacute; de 
l'ADI (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Abstract Device 
Interface</em></span></span>&nbsp;&raquo;, soit &laquo;&nbsp;<span class="quote">Interface P&eacute;riph&eacute;rique 
Abstraite</span>&nbsp;&raquo;). MPICH, et beaucoup d'informations concernant ce 
sujet et la fa&ccedil;on de le porter, sont disponibles sur <a href="http://www.mcs.anl.gov/mpi/mpich/" target="_top">http://www.mcs.anl.gov/mpi/mpich/</a>.

</p></li><li><p>

AFMPI (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Aggregate Function 
MPI</em></span></span>&nbsp;&raquo;) est une sous-impl&eacute;mentation du standard MPI 
2.0. C'est celle que j'ai &eacute;crite. S'appuyant sur AFAPI, elle est con&ccedil;ue 
pour &ecirc;tre la vitrine des RMA et des fonctions de communications 
collectives, et n'offre donc qu'un soutien minimal des types MPI, de ses 
syst&egrave;mes de communication, et c&aelig;tera. Elle permet &agrave; des programmes C 
utilisant MPI d'&ecirc;tre ex&eacute;cut&eacute;s sur un syst&egrave;me Linux individuel ou au 
travers d'un <span class="foreignphrase"><em class="foreignphrase">cluster</em></span> mis en r&eacute;seau par du 
mat&eacute;riel pouvant prendre en charge l'AFAPI.

</p></li></ul></div><p>
Quelque soit l'impl&eacute;mentation MPI utilis&eacute;e, il est toujours tr&egrave;s simple
d'effectuer la plupart des types de communication.
</p><p>
En revanche, MPI 2.0 incorpore plusieurs paradigmes de communication
suffisamment diff&eacute;rents entre eux fondamentalement pour qu'un programmeur
utilisant l'un d'entre eux puisse ne m&ecirc;me pas reconna&icirc;tre les autres
comme &eacute;tant des styles de programmation MPI. Aussi, plut&ocirc;t que d'explorer
un seul exemple de programme, il est utile de passer en revue un exemple de chacun
des (diff&eacute;rents) paradigmes de communication de MPI. Tous les programmes
qui suivent emploient le m&ecirc;me algorithme (celui de la section 1.3)
utilis&eacute; pour calculer Pi.
</p><p>
Le premier programme MPI utilise les appels de <span class="foreignphrase"><em class="foreignphrase">message-passing</em></span> MPI sur
chaque processeur pour que celui-ci renvoie son r&eacute;sultat partiel au
processeur 0, qui fait la somme de tous ces r&eacute;sultats et la renvoie &agrave;
l'&eacute;cran&nbsp;:
</p><p>

<pre class="programlisting">
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;mpi.h&gt;

main(int argc, char **argv)
{
  register double largeur;
  double somme, sommelocale;
  register int intervalles, i;
  int nproc, iproc;
  MPI_Status status;

  if (MPI_Init(&amp;argc, &amp;argv) != MPI_SUCCESS) exit(1);
  MPI_Comm_size(MPI_COMM_WORLD, &amp;nproc);
  MPI_Comm_rank(MPI_COMM_WORLD, &amp;iproc);
  intervalles = atoi(argv[1]);
  largeur = 1.0 / intervalles;
  sommelocale = 0;
  for (i=iproc; i&lt;intervalles; i+=nproc) {
    register double x = (i + 0.5) * largeur;
    sommelocale += 4.0 / (1.0 + x * x);
  }
  sommelocale *= largeur;
  if (iproc != 0) {
    MPI_Send(&amp;lbuf, 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD);
  } else {
    somme = sommelocale;
    for (i=1; i&lt;nproc; ++i) {
      MPI_Recv(&amp;lbuf, 1, MPI_DOUBLE, MPI_ANY_SOURCE,
               MPI_ANY_TAG, MPI_COMM_WORLD, &amp;status);
      somme += sommelocale;
    }
    printf("Estimation de la valeur de pi: %f\n", somme);
  }
  MPI_Finalize();
  return(0);
}
</pre>

</p><p>
Le second programme MPI utilise les communications collectives (qui,
pour ce cas pr&eacute;cis, sont incontestablement les plus appropri&eacute;es)&nbsp;:
</p><p>

<pre class="programlisting">
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;mpi.h&gt;

main(int argc, char **argv)
{
  register double largeur;
  double somme, sommelocale;
  register int intervalles, i;
  int nproc, iproc;

  if (MPI_Init(&amp;argc, &amp;argv) != MPI_SUCCESS) exit(1);
  MPI_Comm_size(MPI_COMM_WORLD, &amp;nproc);
  MPI_Comm_rank(MPI_COMM_WORLD, &amp;iproc);
  intervalles = atoi(argv[1]);
  largeur = 1.0 / intervalles;
  sommelocale = 0;
  for (i=iproc; i&lt;intervalles; i+=nproc) {
    register double x = (i + 0.5) * largeur;
    sommelocale += 4.0 / (1.0 + x * x);
  }
  sommelocale *= largeur;
  MPI_Reduce(&amp;sommelocale, &amp;somme, 1, MPI_DOUBLE,
             MPI_SUM, 0, MPI_COMM_WORLD);
  if (iproc == 0) {
    printf("Estimation de la valeur de pi: %f\n", somme);
  }
  MPI_Finalize();
  return(0);
}
</pre>

</p><p>
La troisi&egrave;me version MPI utilise le m&eacute;canisme RMA de MPI&nbsp;2.0 sur chaque processeur
pour ajouter la valeur locale de la variable <code class="literal">sommelocale</code> de ce dernier
&agrave; la variable <code class="literal">somme</code> du processeur 0&nbsp;:
</p><p>

<pre class="programlisting">
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;mpi.h&gt;

main(int argc, char **argv)
{
  register double largeur;
  double somme = 0, sommelocale;
  register int intervalles, i;
  int nproc, iproc;
  MPI_Win somme_fen;

  if (MPI_Init(&amp;argc, &amp;argv) != MPI_SUCCESS) exit(1);
  MPI_Comm_size(MPI_COMM_WORLD, &amp;nproc);
  MPI_Comm_rank(MPI_COMM_WORLD, &amp;iproc);
  MPI_Win_create(&amp;somme, sizeof(somme), sizeof(somme),
                 0, MPI_COMM_WORLD, &amp;somme_fen);
  MPI_Win_fence(0, somme_fen);
  intervalles = atoi(argv[1]);
  largeur = 1.0 / intervalles;
  sommelocale = 0;
  for (i=iproc; i&lt;intervalles; i+=nproc) {
    register double x = (i + 0.5) * largeur;
    sommelocale += 4.0 / (1.0 + x * x);
  }
  sommelocale *= largeur;
  MPI_Accumulate(&amp;sommelocale, 1, MPI_DOUBLE, 0, 0,
                 1, MPI_DOUBLE, MPI_SUM, somme_fen);
  MPI_Win_fence(0, somme_fen);
  if (iproc == 0) {
    printf("Estimation de la valeur de pi: %f\n", somme);
  }
  MPI_Finalize();
  return(0);
}
</pre>

</p><p>
Il est utile de pr&eacute;ciser que le m&eacute;canisme RMA de MPI 2.0 pr&eacute;vient
de fa&ccedil;on remarquable tout probl&egrave;me de structures de donn&eacute;es se trouvant
&agrave; des adresses m&eacute;moires diff&eacute;rentes selon les processeurs, en se r&eacute;f&eacute;rant
&agrave; une "fen&ecirc;tre" incluant l'adresse de base, une protection contre les
acc&egrave;s m&eacute;moire hors de port&eacute;e, et m&ecirc;me le r&eacute;&eacute;chelonnement d'adresse. &Agrave; une
impl&eacute;mentation efficace, s'ajoute le fait qu'un traitement RMA peut-&ecirc;tre
report&eacute; jusqu'&agrave; la prochaine <code class="literal">MPI__Win_fence</code>.
Pour faire simple, le m&eacute;canisme RMA est un &eacute;trange croisement entre
m&eacute;moire partag&eacute;e distribu&eacute;e et <span class="foreignphrase"><em class="foreignphrase">message passing</em></span>,
mais reste une interface tr&egrave;s propre pouvant g&eacute;n&eacute;rer des communications tr&egrave;s efficaces.
</p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N10FF0"></a>3.6.&nbsp;AFAPI (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Aggregate Function API</em></span></span>&nbsp;&raquo;)</h3></div></div></div><p>

Contrairement &agrave; PVM, MPI, et c&aelig;tera, l'interface AFAPI 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Aggregate Function API</em></span></span>&nbsp;&raquo;, 
ou &laquo;&nbsp;<span class="quote">Interface &agrave; Fonctions d'Agr&eacute;gation</span>&nbsp;&raquo;) n'a pas d&eacute;but&eacute; sa 
vie en tant que couche d'abstraction portable s'appuyant sur un r&eacute;seau 
mat&eacute;riel ou logiciel existant. AFAPI &eacute;tait plut&ocirc;t la biblioth&egrave;que de 
gestion bas niveau d'un mat&eacute;riel sp&eacute;cifique pour PAPERS 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Purdue's Adapter for Parallel Execution and Rapid 
Synchronization</em></span></span>&nbsp;&raquo;, soit &laquo;&nbsp;<span class="quote">Adaptateur pour 
l'Ex&eacute;cution en Parall&egrave;le et la Synchronisation Rapide de l'universit&eacute; de 
Purdue</span>&nbsp;&raquo;).

</p><p>
PAPERS a &eacute;t&eacute; rapidement pr&eacute;sent&eacute; dans la section 3.2. Il s'agit d'un
r&eacute;seau &agrave; fonction d'agr&eacute;gations con&ccedil;u sur mesure dont le mod&egrave;le est dans
domaine public et qui pr&eacute;sente des temps de latence inf&eacute;rieurs &agrave; quelques
microsecondes. Mais surtout, il s'agit de la tentative de construction
d'un supercalculateur formant une meilleure cible pour la technologie des
compilateurs que les supercalculateurs d&eacute;j&agrave; existants. Il se distingue
en qualit&eacute; de la plupart des efforts en mati&egrave;re de <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> Linux et de
PVM/MPI, qui s'attachent g&eacute;n&eacute;ralement &agrave; essayer d'exploiter les r&eacute;seaux
standard au profit des rares applications en parall&egrave;le pr&eacute;sentant une
granularit&eacute; suffisante. Le fait que les &eacute;l&eacute;ments de PAPERS soient des
machines PC sous Linux ne sert qu'&agrave; permettre l'impl&eacute;mentation de
prototypes &agrave; des co&ucirc;ts les plus avantageux possibles.
</p><p>
La n&eacute;cessit&eacute; d'avoir une interface logicielle de bas niveau commune &agrave;
plus d'une douzaine d'impl&eacute;mentations diff&eacute;rentes d'un prototype a
conduit la biblioth&egrave;que PAPERS &agrave; &ecirc;tre standardis&eacute;e sous le nom d'AFAPI.
Mais le mod&egrave;le utilis&eacute; par AFAPI est simple en lui-m&ecirc;me et bien plus
adapt&eacute; aux interactions &agrave; la granularit&eacute; plus fine, typiquement du code
compil&eacute; par des compilateurs parall&eacute;lis&eacute;s, ou &eacute;crit pour des architectures
SIMD. Non seulement la simplicit&eacute; du mod&egrave;le rend les machines PAPERS
ais&eacute;es &agrave; construire, mais elle apporte &eacute;galement une efficacit&eacute; surprenante
aux ports d'AFAPI sur diff&eacute;rents types de syst&egrave;me, tels que les SMP.
</p><p>
AFAPI fonctionne actuellement sur des <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> Linux utilisant TTL_PAPERS,
CAPERS ou WAPERS. Elle fonctionne &eacute;galement (sans appel syst&egrave;me ni m&ecirc;me
instruction de verrouillage de bus, voir la section 2.2) sur les machines
SMP utilisant une biblioth&egrave;que de gestion de m&eacute;moire partag&eacute;e type System V
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">System V Shared Memory</em></span></span>&nbsp;&raquo;) appel&eacute;e SHMAPERS. Une version fonctionnant sur
des <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> Linux utilisant la diffusion UDP sur des r&eacute;seaux conventionnels
(Ex&nbsp;: Ethernet) est en cours de d&eacute;veloppement. Toutes les versions d'AFAPI sont &eacute;crites
pour &ecirc;tre appel&eacute;es &agrave; partir des langages C ou C++.
</p><p>
L'exemple suivant est la version AFAPI du programme de calcul de
Pi d&eacute;crit dans la section 1.3.
</p><p>

<pre class="programlisting">
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include "afapi.h"

main(int argc, char **argv)
{
  register double largeur, somme;
  register int intervalles, i;

  if (p_init()) exit(1);

  intervalles = atoi(argv[1]);
  largeur = 1.0 / intervalles;

  sum = 0;
  for (i=IPROC; i&lt;intervalles; i+=NPROC) {
    register double x = (i + 0.5) * largeur;
    somme += 4.0 / (1.0 + x * x);
  }

  somme = p_reduceAdd64f(somme) * largeur;

  if (IPROC == CPROC) {
    printf("Estimation de la valeur de pi: %f\n", somme);
  }

  p_exit();
  return(0);
}
</pre>

</p></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N11022"></a>3.7.&nbsp;Autres biblioth&egrave;ques de gestion de <span class="foreignphrase"><em class="foreignphrase">clusters</em></span></h3></div></div></div><p>

Outre PVM, MPI et AFAPI, les biblioth&egrave;ques suivantes proposent des 
services qui peuvent s'av&eacute;rer utiles au travers de grappes de machines 
Linux. Ces syst&egrave;mes sont trait&eacute;s ici de mani&egrave;re moins approfondie 
simplement parce que, contrairement &agrave; PVM, MPI et AFAPI, je n'ai que 
peu, voire aucune exp&eacute;rience pratique de l'utilisation de ceux-ci sur 
des <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> Linux. Si l'une de ces 
biblioth&egrave;ques (ou m&ecirc;me d'autres) vous est particuli&egrave;rement utile, merci 
de m'envoyer un courrier &eacute;lectronique en anglais &agrave;

<code class="email">&lt;<a href="mailto:hankd CHEZ engr POINT uky POINT edu">hankd CHEZ engr POINT uky POINT edu</a>&gt;</code>

en me d&eacute;taillant vos d&eacute;couvertes. J'envisagerai alors d'ajouter une 
section plus compl&egrave;te &agrave; son sujet.

</p><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N1102F"></a>3.7.1.&nbsp;Condor (migration de processus)</h4></div></div></div><p>

Condor est un syst&egrave;me de gestion de ressources distribu&eacute;es qui peut 
diriger de vastes <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> de stations de 
travail h&eacute;t&eacute;rog&egrave;nes. Sa conception a &eacute;t&eacute; motiv&eacute;e par les besoins des 
utilisateurs souhaitant utiliser la puissance inexploit&eacute;e de tels 
<span class="foreignphrase"><em class="foreignphrase">clusters</em></span> au profit de leurs t&acirc;ches aux 
temps d'ex&eacute;cution prolong&eacute;s et aux calculs intensifs. Condor reproduit 
dans une large mesure l'environnement de la machine initiale sur celle 
qui ex&eacute;cute le processus, m&ecirc;me si ces deux machines ne partagent pas un 
syst&egrave;me de fichier ou un m&eacute;canisme de mot de passe communs. Les t&acirc;ches 
sous Condor qui se r&eacute;sument &agrave; un processus unique sont automatiquement 
intercept&eacute;es et d&eacute;plac&eacute;es entre les diff&eacute;rentes stations en fonctions 
des besoins pour les mener &agrave; terme.

</p><p>

Condor est disponible sur <a href="http://www.cs.wisc.edu/condor/" target="_top">http://www.cs.wisc.edu/condor/</a>. 
Une version Linux existe &eacute;galement. Contactez l'administrateur du site,

<code class="email">&lt;<a href="mailto:condor TIRET admin CHEZ cs POINT wisc POINT edu">condor TIRET admin CHEZ cs POINT wisc POINT edu</a>&gt;</code>,

pour plus de d&eacute;tails.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N11042"></a>3.7.2.&nbsp;DFN-RPC (R&eacute;seau Allemand de la Recherche &mdash; &laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Remote Procedure Call</em></span></span>&nbsp;&raquo;)</h4></div></div></div><p>

Le DFN-RPC (un outil du R&eacute;seau Allemand de la Recherche &mdash; 
&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Remote Procedure Call</em></span></span>&nbsp;&raquo;) a 
&eacute;t&eacute; d&eacute;velopp&eacute; pour distribuer et parall&eacute;liser des applications d'int&eacute;ret 
scientifique ou technique entre une station de travail et un serveur de 
calcul ou un <span class="foreignphrase"><em class="foreignphrase">cluster</em></span>. L'interface est 
optimis&eacute;e pour les applications &eacute;crites en Fortran, mais le DFN-RPC peut 
aussi &ecirc;tre utilis&eacute; dans un environnement de langage C. Une version Linux 
a &eacute;t&eacute; &eacute;crite. Plus d'information sur <a href="ftp://ftp.uni-stuttgart.de/pub/rus/dfn_rpc/README_dfnrpc.html" target="_top">ftp://ftp.uni-stuttgart.de/pub/rus/dfn_rpc/README_dfnrpc.html</a>.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N11055"></a>3.7.3.&nbsp;DQS (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Distributed Queueing System</em></span></span>&nbsp;&raquo;)</h4></div></div></div><p>

Pas vraiment une biblioth&egrave;que, DQS 3.0 (&laquo;&nbsp;<span class="quote">Distributed Queueing 
System</span>&nbsp;&raquo;, soit &laquo;&nbsp;<span class="quote">Syst&egrave;me de Files d'attente 
Distribu&eacute;es</span>&nbsp;&raquo;) est un syst&egrave;me de mise en file d'attente des t&acirc;ches 
qui a &eacute;t&eacute; d&eacute;velopp&eacute; et test&eacute; sous Linux. Ce syst&egrave;me a &eacute;t&eacute; con&ccedil;u pour 
permettre &agrave; la fois l'utilisation et l'administration d'un 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span> de machines h&eacute;t&eacute;rog&egrave;nes comme une 
seule entit&eacute;. Disponible sur <a href="http://www.scri.fsu.edu/~pasko/dqs.html" target="_top">http://www.scri.fsu.edu/~pasko/dqs.html</a>.

</p><p>
Il existe aussi une version commerciale nomm&eacute;e CODINE 4.1.1 (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">COmputing in
DIstributed Network Environments</em></span></span>&nbsp;&raquo;, soit &laquo;&nbsp;<span class="quote">CAlcul en Environnement R&eacute;seau Distribu&eacute;</span>&nbsp;&raquo;).
</p></div></div><div class="sect2" lang="fr"><div class="titlepage"><div><div><h3 class="title"><a name="N11073"></a>3.8.&nbsp;R&eacute;f&eacute;rences g&eacute;n&eacute;rales aux <span class="foreignphrase"><em class="foreignphrase">clusters</em></span></h3></div></div></div><p>
Les <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> peuvent &ecirc;tre construits et utilis&eacute;s de tellement
de mani&egrave;res diff&eacute;rentes que certains groupes ont apport&eacute; des
contributions particuli&egrave;rement int&eacute;ressantes. Ce qui suit fait r&eacute;f&eacute;rence aux
diff&eacute;rents projets li&eacute;s &agrave; la mise en place de <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> pouvant
avoir un int&eacute;r&ecirc;t d'ordre g&eacute;n&eacute;ral. Ceci inclut un m&eacute;lange de
r&eacute;f&eacute;rences &agrave; des <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> sp&eacute;cifiques &agrave; Linux et &agrave; des <span class="foreignphrase"><em class="foreignphrase">clusters</em></span>
g&eacute;n&eacute;riques. Cette liste est pr&eacute;sent&eacute;e dans l'ordre alphab&eacute;tique.
</p><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N11086"></a>3.8.1.&nbsp;Beowulf</h4></div></div></div><p>

Le projet <a href="http://www.beowulf.org/" target="_top">Beowulf</a>, se 
focalise sur la production de logiciels pour une utilisation de stations 
de travail imm&eacute;diatement disponibles bas&eacute;e sur du mat&eacute;riel PC de grande 
distribution, un r&eacute;seau &agrave; haut d&eacute;bit interne au 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span>, et le syst&egrave;me d'exploitation 
Linux.

</p><p>
Thomas Sterling a &eacute;t&eacute; le principal acteur de Beowulf, et continue
d'&ecirc;tre un promoteur franc et &eacute;loquent de l'utilisation de <span class="foreignphrase"><em class="foreignphrase">clusters</em></span>
Linux dans le domaine du calcul scientifique en g&eacute;n&eacute;ral. &Agrave; vrai dire,
plusieurs groupes parlent &agrave; pr&eacute;sent de leur <span class="foreignphrase"><em class="foreignphrase">cluster</em></span> comme de syst&egrave;me
de &laquo;&nbsp;<span class="quote">classe Beowulf</span>&nbsp;&raquo;, et ce m&ecirc;me si la conception de ce <span class="foreignphrase"><em class="foreignphrase">cluster</em></span>
s'&eacute;loigne du mod&egrave;le Beowulf officiel.
</p><p>
Don Becker, apportant son appui au projet Beowulf, a produit nombre
des pilotes r&eacute;seau utilis&eacute;s par Linux en g&eacute;n&eacute;ral. Plusieurs de ces
pilotes ont m&ecirc;me &eacute;t&eacute; adapt&eacute;s pour &ecirc;tre utilis&eacute;s sous BSD. C'est
&eacute;galement &agrave; Don que l'on doit la possibilit&eacute;, pour certains pilotes,
de r&eacute;partir le trafic r&eacute;seau &agrave; travers plusieurs connexions parall&egrave;les
pour augmenter les taux de transfert sans utiliser d'on&eacute;reux commutateurs.
Ce type de r&eacute;partition de la charge r&eacute;seau &eacute;tait le principal atout des
<span class="foreignphrase"><em class="foreignphrase">clusters</em></span> Beowulf.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N110A5"></a>3.8.2.&nbsp;Linux/AP+</h4></div></div></div><p>

Le projet <a href="http://cap.anu.edu.au/cap/projects/linux" target="_top">Linux/AP+</a> ne 
concerne pas exactement le <span class="emphasis"><em>clustering</em></span> sous Linux, 
mais s'attache &agrave; faire fonctionner Linux sur l'AP1000+ de Fujitsu, et &agrave; 
y apporter les am&eacute;liorations appropri&eacute;es en mati&egrave;re de traitement en 
parall&egrave;le. L'AP1000+ est une machine en parall&egrave;le &agrave; base de SPARC et 
disponible dans le commerce, utilisant un r&eacute;seau sp&eacute;cifique avec une 
topologie en tore, un taux de transfert de 25Mo/s et un temps de latence 
de 10 microsecondes&hellip; Pour faire court, cela ressemble beaucoup &agrave; 
un <span class="foreignphrase"><em class="foreignphrase">cluster</em></span> Linux SPARC.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N110B4"></a>3.8.3.&nbsp;Locust</h4></div></div></div><p>
Le projet Locust est en train de mettre au point un syst&egrave;me de m&eacute;moire partag&eacute;e
virtuelle qui utilise les informations obtenues &agrave; la compilation pour
masquer les temps de latence des messages et r&eacute;duire le trafic r&eacute;seau
lors de l'ex&eacute;cution. &laquo;&nbsp;<span class="quote">Pupa</span>&nbsp;&raquo; forme la base du syst&egrave;me de communication de
Locust, et est impl&eacute;ment&eacute; &agrave; l'aide d'un r&eacute;seau Ethernet reliant des
machines PC 486 sous FreeBSD. Et Linux&nbsp;?
</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N110BC"></a>3.8.4.&nbsp;Midway DSM (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Distributed Shared Memory</em></span></span>&nbsp;&raquo;)</h4></div></div></div><p>
<a href="http://www.cs.cmu.edu/afs/cs.cmu.edu/project/midway/WWW/HomePage.html" target="_top">Midway</a> est une DSM (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Distributed Shared Memory</em></span></span>&nbsp;&raquo;,
soit &laquo;&nbsp;<span class="quote">M&eacute;moire Partag&eacute;e Distribu&eacute;e</span>&nbsp;&raquo;) logicielle, similaire &agrave; TreadMarks.
Le bon cot&eacute; r&eacute;side en l'utilisation d'indications &agrave; la compilation plut&ocirc;t que de relativement
lents m&eacute;canismes d'erreur de page, et en sa gratuit&eacute;. Le mauvais cot&eacute; est cela ne fonctionne
pas sur des <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> Linux.
</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N110D3"></a>3.8.5.&nbsp;Mosix</h4></div></div></div><p>

MOSIX apporte des modifications au syst&egrave;me d'exploitation BSD 
&laquo;&nbsp;<span class="quote">BSDI</span>&nbsp;&raquo; pour proposer une r&eacute;partition de charge r&eacute;seau 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">load balancing</em></span></span>&nbsp;&raquo;) dynamique 
et une migration de processus pr&eacute;emptive au travers d'un groupe de PC 
mis en r&eacute;seau. C'est un syst&egrave;me tr&egrave;s utile non seulement pour le 
traitement en parall&egrave;le, mais d'une mani&egrave;re g&eacute;n&eacute;rale pour utiliser un 
<span class="foreignphrase"><em class="foreignphrase">cluster</em></span> comme une machine SMP &eacute;volutive. 
Y aura-t-il une version Linux&nbsp;? Voyez <a href="http://www.mosix.org" target="_top">http://www.mosix.org</a> pour plus d'informations<sup>[<a href="#ftn.N110E5" name="N110E5">22</a>]</sup>.

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N110E9"></a>3.8.6.&nbsp;NOW (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Network Of Workstations</em></span></span>&nbsp;&raquo;)</h4></div></div></div><p>
Le projet NOW (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Network Of Workstations</em></span></span>&nbsp;&raquo;, ou &laquo;&nbsp;<span class="quote">R&eacute;seau de Stations de Travail</span>&nbsp;&raquo;) de l'universit&eacute; de Berkeley (<a href="http://now.cs.berkeley.edu/" target="_top">http://now.cs.berkeley.edu</a>) a conduit dans une large mesure l'effort pour le calcul en
parall&egrave;le en utilisant des r&eacute;seaux de stations de travail. Bon
nombre de travaux sont men&eacute;s l&agrave;-bas, tous tourn&eacute;s vers la
&laquo;&nbsp;<span class="quote">d&eacute;monstration en pratique d'un syst&egrave;me &agrave; 100 processeurs dans
les prochaines ann&eacute;es</span>&nbsp;&raquo;. H&eacute;las, ils n'utilisent pas Linux.
</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N11100"></a>3.8.7.&nbsp;Traitement en parall&egrave;le avec Linux</h4></div></div></div><p>
Le site web du &laquo;&nbsp;<span class="quote">Traitement en parall&egrave;le avec Linux</span>&nbsp;&raquo;
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Parallel processing using Linux</em></span></span>&nbsp;&raquo;), sur <a href="http://yara.ecn.purdue.edu/~pplinux" target="_top">http://yara.ecn.purdue.edu/~pplinux</a>&gt;, est le site officiel
de ce guide pratique et de plusieurs documents en rapport avec ce th&egrave;me,
y compris des pr&eacute;sentations en ligne.
Parall&egrave;lement aux travaux du projet PAPERS, l'&Eacute;cole Sup&eacute;rieure
d'&Eacute;lectricit&eacute; et d'Informatique de Purdue (&laquo;&nbsp;<span class="quote">Purdue
University School of Electrical and Computer Engineering</span>&nbsp;&raquo;) reste
un leader en mati&egrave;re de traitement en parall&egrave;le. Ce site a &eacute;t&eacute;
mis en place pour aider les autres &agrave; utiliser des PC sous Linux
pour faire du traitement en parall&egrave;le.
</p><p>
Depuis l'assemblage du premier <span class="foreignphrase"><em class="foreignphrase">cluster</em></span> de PC Linux en f&eacute;vrier 1994,
bien d'autres furent &eacute;galement assembl&eacute;s &agrave; Purdue, dont plusieurs
&eacute;quip&eacute;s de murs vid&eacute;os. Bien que ces <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> s'appuyaient sur des
machines &agrave; base de microprocesseurs 386, 486 ou Pentium (mais pas de
Pentium Pro), Intel a r&eacute;cemment accord&eacute; &agrave; Purdue une donation qui lui
permettra de construire plusieurs grands <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> de syst&egrave;mes &agrave;
Pentium II (avec pas moins de 165 machines par <span class="foreignphrase"><em class="foreignphrase">cluster</em></span>). M&ecirc;me si
tous ces <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> sont ou seront &eacute;quip&eacute;s de r&eacute;seaux PAPERS, la plupart
sont &eacute;galement dot&eacute;s de r&eacute;seaux conventionnels.
</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N11124"></a>3.8.8.&nbsp;Pentium Pro Cluster Workshop</h4></div></div></div><p>
Les 10 et 11 avril 1997, le laboratoire AMES a tenu &agrave; Des Moines,
dans l'&eacute;tat de l'Iowa aux &Eacute;tats-Unis, le &laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Pentium Pro Cluster
Workshop</em></span></span>&nbsp;&raquo; (&laquo;&nbsp;<span class="quote">Atelier de <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> Pentium Pro</span>&nbsp;&raquo;). Le site web
de cet atelier, <a href="http://www.scl.ameslab.gov" target="_top">http://www.scl.ameslab.gov</a>, renferme une mine d'informations concernant les <span class="foreignphrase"><em class="foreignphrase">clusters</em></span> PC,
glan&eacute;es aupr&egrave;s de tous les participants.
</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N1113A"></a>3.8.9.&nbsp;TreadMarks DSM (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Distributed Shared Memory</em></span></span>&nbsp;&raquo;)</h4></div></div></div><p>

La DSM (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Distributed Shared 
Memory</em></span></span>&nbsp;&raquo;, ou &laquo;&nbsp;<span class="quote">M&eacute;moire Partag&eacute;e 
Distribu&eacute;e</span>&nbsp;&raquo;) est une technique avec laquelle un syst&egrave;me de 
<span class="foreignphrase"><em class="foreignphrase">message-passing</em></span> peut se pr&eacute;senter et agir 
comme un SMP. Il existe quelques syst&egrave;mes de ce genre, la plupart 
utilisant les m&eacute;canismes d'erreur de page du syst&egrave;me d'exploitation pour 
d&eacute;clencher la transmission des messages. <a href="http://www.cs.rice.edu/~willy/TreadMarks/overview.html" target="_top">TreadMarks</a> 
est l'un des plus efficaces, et fonctionne sur les 
<span class="foreignphrase"><em class="foreignphrase">clusters</em></span> Linux. La mauvaise nouvelle est 
que &laquo;&nbsp;<span class="quote">TreadMarks est distribu&eacute; &agrave; un co&ucirc;t r&eacute;duit aux universit&eacute;s et 
organisations &agrave; but non lucratif</span>&nbsp;&raquo;. Pour plus d'informations 
concernant le logiciel, prenez contact (en anglais) avec

<code class="email">&lt;<a href="mailto:tmk CHEZ cs POINT rice POINT edu">tmk CHEZ cs POINT rice POINT edu</a>&gt;</code>.
</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N1115A"></a>3.8.10.&nbsp;U-Net (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">User-level NETwork interface architecture</em></span></span>&nbsp;&raquo;)</h4></div></div></div><p>

Le projet U-Net (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">User-level NETwork interface 
architecture</em></span></span>&nbsp;&raquo;, ou &laquo;&nbsp;<span class="quote">Architecture d'interface 
R&eacute;seau au Niveau Utilisateur</span>&nbsp;&raquo;), accessible sur <a href="http://www.eecs.harvard.edu/~mdw/proj/old/unet" target="_top">http://www.eecs.harvard.edu/~mdw/proj/old/unet</a>, tente d'apporter 
temps de latence r&eacute;duits et taux de transfert &eacute;lev&eacute;s sur du mat&eacute;riel 
r&eacute;seau du commerce en virtualisant les interfaces r&eacute;seau de mani&egrave;re &agrave; ce 
que les applications puissent envoyer et recevoir des messages sans 
passer par un appel syst&egrave;me. U-Net fonctionne sur des PC Linux en 
utilisant du mat&eacute;riel Fast Ethernet bas&eacute; sur une puce DEC DC21140, ou 
une carte ATM Fore Systems PCA-200 (mais pas PCA-200E).

</p></div><div class="sect3" lang="fr"><div class="titlepage"><div><div><h4 class="title"><a name="N1116D"></a>3.8.11.&nbsp;WWT (&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Wisconsin Wind Tunnel</em></span></span>&nbsp;&raquo;)</h4></div></div></div><p>

On trouve bon nombre de projets relatifs &agrave; l'utilisation de 
<span class="foreignphrase"><em class="foreignphrase">clusters</em></span> dans le Wisconsin. Le projet WWT 
(&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Wisconsin Wind Tunnel</em></span></span>&nbsp;&raquo;, ou 
&laquo;&nbsp;<span class="quote">Soufflerie du Wisconsin</span>&nbsp;&raquo;), sur <a href="http://www.cs.wisc.edu/~wwt/" target="_top">http://www.cs.wisc.edu/~wwt/</a>, m&egrave;ne toutes sortes de travaux 
orient&eacute;s vers le d&eacute;veloppement d'une interface &laquo;&nbsp;<span class="quote">standard</span>&nbsp;&raquo; 
entre les compilateurs et le mat&eacute;riel r&eacute;seau sur lequel ils s'appuient. 
Il existe le &laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Wisconsin COW</em></span></span>&nbsp;&raquo; 
(pour &laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Cluster Of 
Workstation</em></span></span>&nbsp;&raquo;), &laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Cooperative 
Shared Memory</em></span></span>&nbsp;&raquo; et 
&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Tempest</em></span></span>&nbsp;&raquo;, le 
&laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Paradyn Parallel Performance 
Tools</em></span></span>&nbsp;&raquo;, et c&aelig;tera. Malheureusement, il n'y a pas 
grand chose concernant Linux.

</p></div></div><div class="footnotes"><br><hr align="left" width="100"><div class="footnote"><p><sup>[<a href="#N107AC" name="ftn.N107AC">10</a>] </sup>

N.D.T.&nbsp;: il semble que ce panel ne soit plus mis &agrave; jour depuis un 
certain temps. Le site sugg&eacute;r&eacute; proposait &agrave; la date de r&eacute;daction de la 
version fran&ccedil;aise le bulletin le plus r&eacute;cent, mais n'est pas officiel.

</p></div><div class="footnote"><p><sup>[<a href="#N109FA" name="ftn.N109FA">11</a>] </sup>

N.D.T.&nbsp;: d&eacute;sormais int&eacute;gr&eacute; aux sources du noyau.

</p></div><div class="footnote"><p><sup>[<a href="#N10A0B" name="ftn.N10A0B">12</a>] </sup>

N.D.T.&nbsp;: les pilotes FC pour le noyau Linux ont en fait &eacute;t&eacute; &eacute;crits 
en 1999.

</p></div><div class="footnote"><p><sup>[<a href="#N10A3B" name="ftn.N10A3B">13</a>] </sup>

N.D.T.&nbsp;: La <span class="foreignphrase"><em class="foreignphrase">Fibre Channel 
Association</em></span> (FCA) et la <span class="foreignphrase"><em class="foreignphrase">Fibre Channel 
Loop Community</em></span> (FCLC) ont fusionn&eacute; en 2000 pour former 
la <span class="foreignphrase"><em class="foreignphrase">Fibre Channel Industry Association</em></span>.

</p></div><div class="footnote"><p><sup>[<a href="#N10A53" name="ftn.N10A53">14</a>] </sup>

N.D.T.&nbsp;: les premiers pilotes FireWire pour Linux ont &eacute;t&eacute; &eacute;crits en 
1999 mais, bien que disponibles en standard, sont toujours consid&eacute;r&eacute;s 
comme exp&eacute;rimentaux.

</p></div><div class="footnote"><p><sup>[<a href="#N10A9D" name="ftn.N10A9D">15</a>] </sup>

N.D.T.&nbsp;: HiPPI est aujourd'hui pris en charge par Linux, mais de 
fa&ccedil;on restreinte et exp&eacute;rimentale.

</p></div><div class="footnote"><p><sup>[<a href="#N10AEE" name="ftn.N10AEE">16</a>] </sup>

N.D.T.&nbsp;: l'IrDA est pris en charge par le noyau depuis 2000.

</p></div><div class="footnote"><p><sup>[<a href="#N10B60" name="ftn.N10B60">17</a>] </sup>

SAN&nbsp;: &laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">System Area 
Network</em></span></span>&nbsp;&raquo;.

</p><p>

N.D.T.&nbsp;: &agrave; ne pas confondre avec &laquo;&nbsp;<span class="quote"><span class="foreignphrase"><em class="foreignphrase">Storage Area 
Network</em></span></span>&nbsp;&raquo;, qui partage le m&ecirc;me acronyme.

</p></div><div class="footnote"><p><sup>[<a href="#N10C39" name="ftn.N10C39">18</a>] </sup>

N.D.T.&nbsp;: Sequent a &eacute;t&eacute; absorb&eacute; par IBM en septembre 1999.

</p></div><div class="footnote"><p><sup>[<a href="#N10CC0" name="ftn.N10CC0">19</a>] </sup>

N.D.T.&nbsp;: et donc d&eacute;sormais &agrave; Hewlett-Packard.

</p></div><div class="footnote"><p><sup>[<a href="#N10DDD" name="ftn.N10DDD">20</a>] </sup>

N.D.T.&nbsp;: les ports et le standard USB sont aujourd'hui parfaitement 
reconnus par Linux.

</p></div><div class="footnote"><p><sup>[<a href="#N10EB3" name="ftn.N10EB3">21</a>] </sup>

N.D.T.&nbsp;: par opposition &agrave; un &laquo;&nbsp;<span class="quote">appel syst&egrave;me</span>&nbsp;&raquo;, donc sans franchir
la barri&egrave;re du passage en mode noyau.

</p></div><div class="footnote"><p><sup>[<a href="#N110E5" name="ftn.N110E5">22</a>] </sup>

N.D.T.&nbsp;: MOSIX fonctionne aujourd'hui sous Linux.

</p></div></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ar01s02.html">Pr&eacute;c&eacute;dent</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ar01s04.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">2.&nbsp;Linux sur SMP&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%">&nbsp;4.&nbsp;SIMD <span class="foreignphrase"><em class="foreignphrase">Within A Register</em></span>&nbsp;: SWAR (Ex&nbsp;: utilisation de MMX)</td></tr></table></div></body></html>