Nouvelles

Princont II ScStr - Historique

Princont II ScStr - Historique

Princeton II

(ScStr: dp. 1370; 1. 177'6", b. 32'8"; dr. 25'9"; s. 8 k., a. 4 8"
58 quintaux. Sg., 6 32 livres auto.)

Le deuxième Princeton, un navire construit par clipper a été posé en juin 1851 à Boston Navy Yard; launehel en octobre 1851

parrainé par le lieutenant Edward R. Thompson, et eommissionel 18 mai 1852 à Boston, Comdr. Sidney Smith Lee aux commandes.

Certains des bois utilisables du premier Princeton ont été incorporés dans la nouvelle coque du deuxième Princeton. Après l'achèvement de la coque à Boston, Princeton a procédé le 1P mai 1852 à Baltimore où ses machines ont été installées à Vulcan Iron Works. De nouvelles chaudières et hélices ont été ajoutées, mais les moteurs d'origine de conception "Ericsson semi eyelinder" ont été conservés. Elle est restée à Baltimore jusqu'au 18 novembre quand elle est partie pour Norfolk en arrivant le même jour.

Princeton a été équipé pour le service avec l'escadron du commodore Perry en Extrême-Orient et a navigué le 18 novembre 1852 de Baltimore rendez-vous avec le Mississippi au large d'Annapolis. En descendant la baie de Chesapeake, elle a développé des problèmes de chaudière et est restée à Norfolk pendant que le Mississippi continuait sans elle. Elle a désarmé le 1 janvier 1853 à Norfolk.

De juillet à septembre 1853, Princeton a servi comme navire amiral de l'escadron de l'Est sous le commandement du commodore Shubriek, qui était responsable de la protection des pêches au large des côtes de la Nouvelle-Séotie. Princeton est revenu ensuite à New York à la fin de cette mission où elle est restée jusqu'au 31 octobre 1854 et est devenue alors en route pour le devoir dans le Golfe du Mexique et les Antilles. Elle est revenue à Norfolk le 10 juin 1855 et a été placée dans l'ordinaire.

En 1857, le Princeton est emmené à Philadelphie où il est stationné comme navire de réception jusqu'au 9 octobre 1866, puis vendu.


Princont II ScStr - Historique

Une constellation située entre les Poissons et le Taureau et représentée comme un bélier. Dans la mythologie grecque, le Bélier était un bélier avec. toison d'or offerte par Hermès à Néphélé, l'épouse abandonnée d'un roi de Thessalie, afin qu'elle puisse sauver ses deux enfants de la colère d'Ino, leur belle-mère. Avec la fille de Nephele, Helle, et son fils, Phrysux, sur son dos, Bélier s'envola dans les airs et se dirigea vers le royaume de Colchide sur la rive orientale de la mer Noire. Alors que le bélier franchissait le détroit séparant l'Europe de l'Asie, Helle tomba dans l'eau en contrebas et se noya. Par la suite, dans l'Antiquité, le détroit était connu sous le nom d'Hellespont et il s'appelle maintenant les Dardanelles.

Avec Phryxus toujours à bord, Bélier a continué son vol éclairé vers l'est. Quand il fut enfin en sécurité à Colchide, Phryxus tua Bélier en sacrifice à Jupiter. La toison d'or du bélier a ensuite été placée dans un bosquet sacré gardé par un dragon sans sommeil.

La nouvelle du destin du Bélier a atteint la Thessalie et a finalement incité l'expédition de Jason à la recherche de la toison d'or. En conséquence, le jeune héros engagea le maître constructeur naval, Argos, pour construire un navire adapté au voyage. Nommé Argo d'après son constructeur, le navire résultant a transporté Jason et ses compagnons, les Argonautes, dans l'un des voyages les plus aventureux et les plus connus de l'Antiquité, rivalisant avec l'excitation de la lutte prolongée d'Ulysse pour retourner à Ithaque et le suspense de Noé ' s 40 jours dans l'Arche. En effet, certains étudiants en littérature ancienne ont conclu de la similitude des noms des deux navires et d'incidents parallèles dans leurs histoires, que la saga d'Argo a été inspirée par le récit de l'Arche de la Genèse.

(ScStr: t. 820 1. 201' b. 27'10" dph. 15'8" dr. 16' s. 12 k. cpl. 90 a. 4 8" sb., 1 30-pdr. Pr, I 12 livres à droite)

Le premier Bélier a été posé en 1861 à Sunderland, en Angleterre, dans le chantier de James Laing à Deptford. Construit pendant la guerre de Sécession dans l'espoir qu'il soit acheté par des personnes prévoyant de briser le blocus du Sud par la marine de l'Union, ce vapeur à vis à coque en fer a été achevé en 1862 et vendu plus tard cette année-là à Frederic Peter Obicino de Londres, Angleterre. Elle a été revendue, apparemment dans le courant de 1863, à la firme cubaine V. Mala & Fie. de La Havane.
Presque aucun enregistrement de sa carrière en tant que coureur de blocus ne semble avoir survécu, mais nous savons qu'Aries est entré dans cette affaire hasardeuse, car un rapport confédéré sur les exportations de coton entre le 1er novembre 1862 et le 31 mai 1863 déclare qu'elle a transporté 740 tonnes de coton. de Wilmington, Caroline du Nord, ou Charleston, SC Le nombre de ses voyages vers le sud est inconnu et, dans un cas, ses efforts pour approvisionner la Confédération ont pris fin le 28 mars 1863.

Peu après minuit, des guetteurs sur le vapeur à vis Stettinelle-même un ancien coureur de blocus maintenant, après la capture, ont tourné le Bélier repéré par un bloqueur au large de Bull's Bay, en Caroline du Sud, tentant de se faufiler à travers le blocus avec une cargaison d'alcool. La canonnière à vis Union a immédiatement levé l'ancre et a donné la chasse. Quand le coureur était à portée, Stettin a ouvert le feu sur Aries et a continué la poursuite jusqu'à ce que les hauts-fonds l'obligent à jeter l'ancre. À l'aube, le commandant de Stettin, le capitaine par intérim Edward F. Devens, a vu que sa proie s'était échouée à l'extrémité sud du banc Petrel. Il a immédiatement abaissé deux bateaux, et, "... prenant le commandement en personne... est monté à bord et en a pris possession comme un prix pour le gouvernement des États-Unis." Depuis que le coureur de blocus était échoué à l'arrière, Devens a fait avancer sa cargaison et le vapeur échoué a flotté librement avec la marée montante.

Devens a emmené Aries via Charleston à Port Royal où le contre-amiral Samuel Francis Du Pont a déclaré qu'elle "... Il l'ordonna au nord pour être jugée par un tribunal d'amirauté et, comme Devens était malade, le détacha de Stettin et le plaça en charge du prix pour le voyage à Boston où elle fut condamnée et achetée là-bas par la marine le 20 mai 1863.

Alors qu'Aries était en train d'être équipé pour le service dans la marine de l'Union, le lieutenant Charles W. Read, CSN, dans le prix Clarence, a capturé l'écorce Tacony a déplacé son équipage vers elle comme un meilleur navire et une croisière au nord et au large de la Nouvelle R ive d'Angleterre sur laquelle il terrorisait les navires de l'Union et effrayait les villes côtières du nord. Pour calmer la clameur des citoyens effrayés pour une protection contre ce « pirate rebelle », le secrétaire à la Marine Gideon Welles a envoyé un certain nombre de navires de guerre à la poursuite du pilleur de commerce et a promis qu'Aries les rejoindrait bientôt. Cependant, avant qu'Aries ne soit prêt à prendre la mer, d'autres navires de guerre de l'Union se sont rapprochés de Read et l'ont contraint à abandonner ses forces. Aries a été mis en service au Boston Navy Yard le 25 juillet 1863, Acting Vol. Le lieutenant Edward F. Devens aux commandes.

Le jour de sa mise en service, le vapeur à vis a navigué vers Port Royal, en Caroline du Sud, transportant 200 hommes, des marines pour aider le contre-amiral John A. Dahlgren à renforcer ses forces pour une nouvelle attaque sur Fort Wagner qui gardait les approches maritimes de Charleston. Après avoir débarqué ses passagers, il reprit la route pour la forteresse Monroe, en Virginie, portant la nouvelle que le charbon de Dahlgren avait été épuisé et que "... un approvisionnement ne peut pas être acheminé trop tôt." De Hampton Roads, Aries s'est rendue à New York où elle a embarqué 200 hommes supplémentaires pour le South Atlantic Blockading Squadron, avant de se diriger à nouveau vers le sud.

Après avoir livré ces remplacements à Port Royal, il embarqua une centaine de passagers, pour la plupart soit des marins trop malades pour rester dans une zone de combat, soit des hommes dont les périodes d'enrôlement avaient expiré. Cependant, au cours de son voyage vers le nord, il a rencontré une terrible tempête au large de Cape Lookout, N.C., le 27 août et a subi une panne de moteur en combattant ses vagues. Le vent était si violent que le Comdr. John J. Almy, le commandant du Connecticut qui a rencontré par hasard le Bélier handicapé le 1er septembre, a décrit le temps comme pire "... que je ne me souviens jamais l'avoir vu au cours de mon service en mer de plus de vingt et un ans. " Le commandant d'un autre navire de guerre de l'Union, Pocahantas a déclaré que "... si l'ouragan... avait continué avec une force sans relâche beaucoup plus longtemps, ce navire [Pocahontas] n'aurait pas pu survivre. Le Connecticut a pris Aries en remorque et a procédé via Beaufort à Hampton Routes où ils sont arrivés le 6. Deux jours plus tard, le bateau à vapeur Daylight est arrivé et a remorqué Aries jusqu'à Baltimore pour des réparations.

Au début de novembre, alors que les travaux de triage sur Aries approchaient de la fin, le secrétaire à la Marine Gideon Welles ordonna à Devens de se rendre dans les eaux au large de Wilmington, en Caroline du Nord, pour servir dans l'escadron de blocage de l'Atlantique Nord. Sa première action dans cette nouvelle affectation a commencé à l'aube du 6 décembre lorsqu'un de ses guetteurs a repéré un bateau à vapeur échoué à Western Bar près de Smith's Island, N.C.

Le Bélier s'est immédiatement mis en route et s'est dirigé vers le coureur de blocus échoué qui s'est rapidement avéré être le nouveau vapeur britannique à coque en fer Ceres qui avait quitté les Bermudes le 3 et avait touché le fond en tentant de se glisser dans la rivière Cape Fear à un moment donné le nuit du 5 au 6. Lorsque les hauts-fonds ont obligé Aries à se hisser, Devens a lancé deux bateaux qui ont continué vers le flamboyant Cérès.

Dès l'embarquement sur le prix, les groupes de bateaux se sont mis au travail avec des seaux à incendie pour éteindre les flammes et se sont tenus à la tâche malgré les tirs des batteries du Sud à terre. Pendant ce temps, les officiers en charge des bateaux ont fait irruption dans la cabine du capitaine et ont trouvé un qui contenait des renseignements très précieux.
Cette nuit-là, la marée montante a remis à flot Ceres et, tôt le lendemain matin, les observateurs des bloqueurs ont pu le voir dériver vers le large. L'équipage d'un bateau de Maratango a embarqué sur le prix et l'a ancré dans une eau sûre, et avec des hommes d'Aries,

Violet et Connecticut-éteignez les feux restants. Aries a ensuite remorqué l'ancien coureur de blocus jusqu'à Beaufort, la première étape du prix lors d'un voyage via Hampton Roads jusqu'à Washington pour un certain nombre de papiers.
retourné à l'arbitrage.

Après avoir livré Cérès à Beaufort, Aries retourna au blocus de Wilmington. À l'aube du 20 décembre, des hommes à bord du navire ont aperçu de la vapeur s'élevant d'un navire étrange, à environ quatre milles à l'est, au sud-est. Peu de temps après, le gouverneur Buckingham, bloqueur de l'Union, est apparu, clôturant le prix potentiel tandis qu'Aries se joignait à la poursuite. Alors qu'elle approchait des hauts-fonds, Aries jeta l'ancre dans quatre brasses d'eau et envoya un bateau armé portant une équipe d'arraisonnement au coureur de blocus.

Ils ont appris que l'étranger était le coureur de blocus confédéré Antonica, qui avait auparavant acquis une renommée considérable sous les noms de Lamar et Herald en jouant au chat et à la souris avec les bloqueurs fédéraux alors qu'elle transportait des marchandises de contrebande dans les ports du Sud et s'échappait en mer, chargée à chaque fois. avec entre 1 000 et 1 200 balles de coton. La nuit précédente, elle avait joué le rôle de la souris alors qu'elle s'échouait en tentant de se glisser dans la rivière Cape Fear avec une cargaison composée principalement d'alcool à boire. Après de brefs efforts pour libérer le jeu de mots se sont avérés vains, le capitaine W. F. Adair, le commandant du vapeur, a ordonné à son équipage d'abandonner leur navire et de se diriger vers la terre la plus proche en bateaux, dans l'espoir d'atteindre le rivage avant l'aube. Cependant, ils ont été repérés par le bloqueur de l'Union, le gouverneur Buckingham, et capturés par ce vapeur et le remorqueur fédéral Violet.

Des hommes d'Aries et de plusieurs autres navires de l'Union restèrent à bord de l'Antonia pendant les jours suivants, travaillant en vain pour renflouer la prise. Lorsque la montée des eaux dans la coque du bateau à vapeur échoué et endommagé a clairement indiqué que l'effort ne pouvait pas réussir, les marins fédéraux ont finalement quitté le navire la veille de Noël.

L'aventure suivante d'Aries eut lieu à la fin de la première semaine de 1864. Peu de temps après l'aube du 7 janvier, alors que son navire se trouvait à l'entrée de Little River, Caroline du Nord, Devens "... découvrit un étrange vapeur se tenant à l'ESE, avec l'USS Montgomery à sa poursuite... " Aries s'est immédiatement mis en route pour se joindre à la poursuite et a gagné sur l'étranger. Le temps était mauvais et, vers 8 h 20, un épais brouillard s'installa et cacha le vapeur en fuite. Quand il s'est levé un peu plus d'une heure plus tard, la poursuite était considérablement plus proche qu'elle ne l'avait été la dernière fois. Aries a ouvert le feu et son tir est tombé près de la cible. Cette précision a incité le coureur de blocus à tirer " . . vers l'ouest . . . ."
jamais, le vapeur s'est échoué près de North Inlet, près de Georgetown, S.C. et son équipage s'est échappé vers le rivage. En se rapprochant rapidement, Aries est venu mouiller pour éviter d'être lui-même échoué et « . . . a immédiatement envoyé deux bateaux armés pour embarquer sur le vapeur et le faire descendre. en feu et est retourné à Aries avec le mot que le coureur de blocus était le vapeur confédéré Dare. Malheureusement, le deuxième cotre Aries a été submergé par les vagues pendant l'expédition, entraînant la capture de deux de ses officiers et de sept hommes enrôlés par les forces confédérées. Un bateau de Montgomery a également chaviré avec la perte de 2 officiers et 14 hommes qui ont été emprisonnés.

Dans la soirée du 10 janvier, des ordres parvinrent au lieutenant Devens d'envoyer ses bateaux pour aider Iron Age qui s'était échoué ce matin-là alors qu'il tentait de renflouer le coureur de blocus échoué Bendigo près de Lockwood's Folly Inlet. Vers minuit, ses bateaux - ainsi que certains du Minnesota, Daylight et le gouverneur Buckingham - ont reçu les officiers et les hommes du bateau à vapeur à vis de l'Union.

Le matin suivant, le 11 janvier, Aries rejoignit le Minnesota, Daylight et le gouverneur Buckingham pour chasser le coureur de blocus Ranger qui tentait d'entrer dans la rivière Cape Fear avec une cargaison en provenance de Newcastle upon Tyne, en Angleterre. Les navires du Nord ont échoué le vapeur où il a été abandonné par son équipage. Cependant, leurs efforts pour renflouer Ranger en tant que prise ont été arrêtés par des tireurs d'élite du Sud "... dont le feu commandait complètement ses ponts [Ranger)". Comme il était impossible de prendre possession de Ranger, les marins de l'Union l'ont brûlée.

Pendant que ces actions se déroulaient, de la fumée noire a été repérée en direction de Shallotte Inlet. Aries, qui avait été retiré de sa station dans ce quartier la nuit précédente, a été envoyé pour enquêter. Elle tomba bientôt sur « . . . un beau patin de blocage à double hélice, ressemblant à Cérès, échoué et en feu entre Tubb's et Little River Inlets . . . ». Une fois de plus, des tireurs d'élite du Sud empêchèrent les partis de l'Union de monter à bord du bateau à vapeur, d'éteindre les flammes et de prendre possession de la prise.

Le lendemain, après le retrait des fusiliers, Devens réussit à monter à bord du navire et apprit qu'il s'agissait du Vista, un navire jumeau du Ceres. Cependant, de graves dommages à sa coque ont rendu impossible le renflouement du coureur de blocus, et ses deux ancres étaient son seul butin.

La prochaine action animée du Bélier est arrivée deux mois plus tard. Le 14 mars, elle et l'État de Géorgie ont conduit un grand, long et bas bateau à vapeur à roues latérales à terre sur la pointe ouest d'Oak Island, près de Western Bar, au large de Wilmington. Leur approche du prix potentiel non identifié - qui ressemblait au coureur de blocus de Caroline du Nord récemment capturé A. D. Vance - a été interrompue par des bombardements à partir de batteries de la côte sud.

Une grande partie du printemps et de l'été, Aries était hors de combat pour des réparations, mais elle reprit du service au large de Wilmington en septembre. Le 28 octobre, elle a aidé Eolus et Calypso dans la capture du vapeur anglais Lady Sterling. De nouveau dans la nuit du 6 novembre, le Bélier "... découvrit un étrange vapeur..., le poursuivit immédiatement, ouvrit le feu sur l'étranger et lança des roquettes vers l'est, indiquant sa route. Néanmoins, malgré l'aide apportée à la poursuite par Marantanza et Eolus et le coureur du blocus étant brièvement bloqués, une marée montante et un matelotage intelligent ont permis au vapeur de s'échapper en sécurité à Wilmington.

Le 3 décembre, Aries s'est joint à cinq autres navires pour bombarder le bateau à vapeur Ala que le bloqueur de l'Union Emma avait forcé à s'échouer sur Marshall Shoal, Smith's Island, Caroline du Nord, « . . . . . "

Des années de travail et l'endurance de l'ennui par les marins qui équipaient les navires de guerre de l'Union en service de blocus étranglaient finalement la Confédération. Non seulement de plus en plus de coureurs de blocus étaient détruits et capturés, mais des opérations conjointes Armée-Marine arrachaient un port maritime après l'autre au Sud. Alors que l'année 1864 touchait à sa fin, un seul port majeur restait aux mains des confédérés, Wilmington, où Aries avait servi presque exclusivement depuis son entrée dans la marine de l'Union. Et, à cette époque, les plans étaient bien avancés pour une attaque amphibie contre le fort Fisher qui gardait ce dernier centre d'activité maritime du Sud.

Aries faisait partie de la division de réserve d'une vaste force opérationnelle qui quitta Beaufort le 18 décembre et se dirigea vers l'embouchure de la rivière Cape Fear. Les troupes débarquèrent la veille de Noël et menacèrent sérieusement le fort Fisher, mais le commandant de l'armée, le major-général Benjamin F. Butler, craignait que ses troupes ne puissent faire face aux forces du Sud qui défendaient les ouvrages confédérés. En conséquence, il ordonna à ses hommes de rembarquer.

Insatisfait du manque de résolution de Butler, le contre-amiral David Dixon Porter, le commandant des forces navales de l'opération, presse Washington pour une nouvelle attaque. Au début de janvier 1865, une puissante force fut rassemblée pour un nouvel effort contre Fort Fisher. Aries, bien que de nouveau affecté à la division de réserve, a aidé à débarquer des troupes le 13 et, une fois à terre, a soutenu les troupes pendant les deux jours suivants. Les défenseurs capitulent finalement le 15, coupant le Sud de toute aide étrangère. La Confédération était désormais condamnée.

Après avoir soutenu les opérations de nettoyage dans les environs de Wilmington pendant le reste du mois de janvier et tout le mois de février, Aries a quitté Hampton Roads le matin du 5 mars et s'est dirigé vers Key West, en Floride, pour rejoindre l'escadron de blocage du golfe est. Cependant, quand elle a atteint les eaux de Floride, ses machines l'ont obligée à rester dans le port en cours de réparation jusqu'en mai. Elle a ensuite été envoyée en mer pour croiser au large de La Havane, à Cuba, pour intercepter Stonewall si ce raider confédéré tentait de s'échapper en mer. Après que le commandant de Stonewall, le capitaine Thomas Jefferson Page, eut appris la fin de la guerre et remis son navire aux autorités espagnoles, Aries retourna à Key West. Le 1er juin, il est envoyé à Boston où il est désarmé au Boston Navy Yard le 14 de ce mois.

Vendu aux enchères publiques à Boston le 1er août 1865 à Sprague, Soule & Co., le vapeur a été documenté le 12 août 1865 sous le nom de SS Aries. Elle a conservé son nom d'origine tout au long d'une longue carrière dans le service marchand transportant du fret entre les ports de Philadelphie et de la Nouvelle-Angleterre. Elle a été vendue en 1908 pour mise au rebut.


Одробные сведения о Korky 99-4A оршень, 6 в, резиновый - ез перевода

Le meilleur piston de toilette que j'ai jamais utilisé. Avant de l'acheter, j'utilisais le modèle standard. Chaque fois que nous avions un sabot (ce qui était souvent le cas), il me fallait de 2 heures à toute la nuit pour le déboucher. Dans le pire des cas, je devrais le laisser reposer toute la nuit et réessayer le lendemain matin. Pas avec ce piston de toilette. Lorsqu'il est utilisé correctement, je suis capable de déboucher les toilettes en 5 à 10 minutes au lieu de plusieurs heures en raison de la puissante pression air / eau et de la force d'aspiration du piston de toilette Korky Beehive Max. Je recommande fortement ce piston de toilette et il obtient un parfait 5 étoiles de ma part. Vous ne serez pas déçu !

Meilleur piston de toilette sur le marché

Le meilleur piston de toilette que j'ai jamais utilisé. Avant de l'acheter, j'utilisais le modèle standard. Chaque fois que nous avions un sabot (ce qui était souvent le cas), il me fallait de 2 heures à toute la nuit pour le déboucher. Dans le pire des cas, je devrais le laisser reposer toute la nuit et réessayer le lendemain matin. Pas avec ce piston de toilette. Lorsqu'il est utilisé correctement, je suis capable de déboucher les toilettes en 5 à 10 minutes au lieu de plusieurs heures en raison de la puissante pression air / eau et de la force d'aspiration du piston de toilette Korky Beehive Max. Je recommande fortement ce piston de toilette et il obtient un parfait 5 étoiles de ma part. Vous ne serez pas déçu !

Achetez ce style et cette marque pour les toilettes.

Pendant des années, j'ai utilisé le piston à fond plat et j'ai souvent eu des problèmes pour débrancher les toilettes. Ensuite, j'ai fait des recherches et j'ai découvert que j'utilisais le mauvais style. Ce modèle fonctionne très bien.

A l'air de très bonne qualité, bien sûr que cela fonctionnera bien, je n'ai pas encore eu à l'utiliser, ne vous pressez pas car tout fonctionne bien. Bat le piston de type rond qui ne fonctionnera pas dans la forme actuelle du trou de serrure du bol. Ce Korky devrait faire le travail en cas de besoin.

роверенная окупка: а | остояние товара: новые | Application : max_warehouse


Princont II ScStr - Historique

hex3_hex0[ 6: 0] // hex3_hex0[ 6: 0] // assigner HEX1 =

hex3_hex0[14: 8] //affecter HEX2 =

hex3_hex0[22:16] //affecter HEX3 =

hex3_hex0[30:24] affecter HEX4 = 7'b1111111 affecter HEX5 = 7'b1111111 affecter HEX3 = 7'b1111111 affecter HEX2 = 7'b1111111 affecter HEX1 = 7'b1111111 affecter HEX0 = 7'b1111111 //====== =================================================/ / Contrôleur audio pour bus-master AVALON //======================================== =============== // calcule le DDS pour l'onde sinusoïdale et remplit le FIFO audio // lit le FIFO audio et le reboucle // DOIT configurer (dans Qsys) le module de configuration audio : // - - Line in to ADC // -- décochez les deux options de contournement // Le signal audio_input_ready monte pendant un // cycle lorsqu'il y a de nouvelles données d'entrée audio // -- // les données 32 bits sont activées // right_audio_input, left_audio_input / / Chaque écriture nécessite des données 32 bits sur // right_audio_output, left_audio_output reg [31:0] bus_addr // Avalon address // see // ftp://ftp.altera.com/up/pub/Altera_Material/15.1/University_Program_IP_Cores/ Audio_Video/Audio.pdf // pour les adresses fil [31:0] audio_base_address = 32'h00003040 // Adresse Avalon fil [31:0] au dio_fifo_address = 32'h00003044 // Adresse Avalon +4 fils offset [31:0] audio_data_left_address = 32'h00003048 // Adresse Avalon +8 fils [31:0] audio_data_right_address = 32'h0000304c // Adresse Avalon +12 reg [3: 0] bus_byte_enable // masque de lecture/écriture sur quatre octets reg bus_read // élevé lors de la demande de données reg bus_write // élevé lors de l'écriture de données reg [31:0] bus_write_data // données à envoyer au câble de bus Avalog bus_ack // le bus Avalon augmente ceci une fois terminé, câblez [31:0] bus_read_data // données de Avalon bus reg [30:0] timer reg [3:0] state wire state_clock wire reset // SW[9] désactive la machine d'état de sorte que // HPS soit terminé contrôle de l'interface audio assign reset =

CLÉ[0] | SW[9] // mots libres actuels dans l'interface audio reg [7:0] fifo_space // vérification de débogage de l'espace assigné LEDR = fifo_space // entrée/sortie audio du module audio FIFO reg [15:0] right_audio_input, left_audio_input reg audio_input_ready wire [15:0] right_audio_output, left_audio_output // Pour le bouclage audio ou le filtrage, assignez right_audio_output = SW[1]? right_filter_output : right_audio_input assigner left_audio_output = SW[0]? decimated_filter_300_out : left_audio_input // Signal de mise à jour DDS pour tester reg [31:0] dds_accum // Fil DDS LUT [15:0] sine_out // accumulateur de phase de mise à jour // synchronisation avec le débit de données audio (48 kHz) en utilisant le signal audio_input_ready toujours @(posedge CLOCK_50) begin //CLOCK_50 // Fout = (sample_rate)/(2^32)* // then Fout=48000/(2^32)*(2^25) = 375 Hz if (audio_input_ready) dds_accum >24) // fin de la lecture bus_read 8'd2) début // état 8'd0) début // état =0 fprintf(' .b%1d (18''sd%d), ', i,fix(2^16*b(i)) ) else fprintf(' .b%1d (-18'' sd%d), ', i, fix(-2^16*b(i)) ) end end for i=2:length(a) if a(i)>=0 fprintf(' .a%1d (18''sd%d), ', i, fix(2^16*a(i)) ) else fprintf(' .a%1d (-18''sd%d), ', i , fix(-2^16*a(i)) ) end end fprintf(' .state_clk(CLOCK_50), ') fprintf(' .audio_input_ready(audio_input_ready), ') fprintf(' .reset(reset) ') fprintf(') //fin du filtre ') disp(' ') */ // === end ===================== ================


Plateforme en ligne MBI® comme stratégie de partage des connaissances entre l'industrie biosourcée et l'université en Colombie

Enquêteurs Icesi : Nelson Caicedo (CoI), María Francisca Villegas (CoI)

Cette proposition s'appuie sur des collaborations de recherche antérieures entre l'ICESI, qui est un pionnier de la formation en génie biochimique en Colombie, et l'UCL Biochemical Engineering au Royaume-Uni, le plus grand groupe universitaire de bioprocédés au monde. Il utilisera la formation modulaire post-expérience établie de l'UCL pour le programme des industries de bioprocédés (MBI®) pour créer, partager et mettre en œuvre un nouveau module eMBI en biotechnologie industrielle (IB) testé et consulté aux étapes critiques du développement de matériaux avec Levepan, un Entreprise basée à IB. Avec ce module eMBI, nous prévoyons de consolider les capacités de recherche actuellement en cours de développement par la subvention Newton-Caldas Institutional Links, attribuée en début d'année, car les connaissances et la formation technologique des générations futures sont nécessaires en la matière.

IB est considéré comme le moteur économique de la santé, des biocarburants et des produits chimiques renouvelables et dans les secteurs alimentaire et agricole par l'exploitation de sources renouvelables. Les pays dotés de grandes ressources naturelles et biologiques, comme la Colombie, ont un énorme potentiel pour les exploiter de manière durable. Ainsi, un travail synergique entre l'industrie, les universités et le gouvernement est nécessaire pour renforcer la capacité nationale de recherche, le développement technologique et l'innovation. L'UCL et l'ICESI ont entamé des travaux de recherche en collaboration, que nous visons à élargir à travers cette proposition vers le partage des connaissances et le renforcement d'une capacité de formation soutenue par le secteur industriel. Le projet a été conçu de telle sorte qu'il puisse s'auto-entretenir et couvrir d'autres sujets d'ingénierie à moyen et long terme.

Colaborateurs : UCL - Levapan

Financier : RAE – Minciencias

Fechas : marzo 2017 - marzo 2019

Esta dirección de correo electrónico está protegida contra spambots. Nécessite d'activer JavaScript pour visualiser.

Esta dirección de correo electrónico está protegida contra spambots. Nécessite d'activer JavaScript pour visualiser.


Bphs Santhanam Vol 2

Ce document a été téléchargé par l'utilisateur et ils ont confirmé qu'ils ont la permission de le partager. Si vous êtes l'auteur ou possédez les droits d'auteur de ce livre, veuillez nous le signaler en utilisant ce formulaire de rapport DMCA. Signaler DMCA

Aperçu

Plus de détails

16. DaSAS(FER.I]ODSIOF PLANÈTES '

Vimsottari, Attottsrl' Shodasottari, Paochottari, Dwiraptatisama, Shasti' lhbbdt&r, Chaturshitisama, bayani, Shotttlslr$igaoa'Kalachakra,Chara,Sthira, KCndts,BrahmgrahaMandook, Yogardigha,Shoola," odhyr, Alhtavargpr Pachaka, Tara Das88 et des illustrations et des tableaux descriptifs montrant le Dase Psrlodr.

Principes généraux, cffoctgo du Darer du Soleil' thc Lune, Mrn, Rahu, Jupiter, Saturn' Mcrcury' Kctu rad Vonus dans thc Yimsottari Dasa System' of efrectsaccorAuspiclousncsncsrand inaurpiciousness andphccmcntr otrenth of inditgnitia, dinitniath Planet. .48, LES EFFETS DISTINCTIFS DU NAKSHATRA DASA OU LE DASAS DES SEIGNEURS DE (YIMSHOTTARIDASA'OF YARIOUSHOASES Jto ,t

Effets des dasas des seigneurs de la 2e, de la 3e, de la 4e, de la 5e, de la 6e, de la 7e, de la 8e, de la 5e, de la 10e, de la 11e et de la 12e. Commentaires spéciaux sur les mauvais augures et les bons augures des Dasas des seigneurs du 6e, du 8e et du 12e - les trois mauvaises maisons d'un thème natal.

selon les dignités et les indignités, la force et la disposition des seigneurs Antardas avec référence à l'Ascendant et au seigneur du Dasa. Mesures correctives pour conjurer les effets pervers de l'Antar. dasas.

gI. EFFETS DES ANTARDAS DANS LE DAS.4 DE SATURNE 691 le seigneur du Dasa. Remède pour conjurer les effets pervers des dasas Antarmeasures. 58.EFFETS DU MERCURE

Effets des Antardas de Mercure, Ketu, Vénus. le Soleil, la Lune, Mars, Rahu, Jupiter et Saturrr selon les dignités, les indignités, la force et la disposition des seigneurs Antardas en référence à l'Ascendant et au seigneur du Dasa. Mesures correctives pour conjurer les effets néfastes de l'Antar. dasas. 59. EFFETS DE L'ANTARDASAS DANS LE DAS.7 DE KETA 717 référence à l'Asccndant et seigneur du Dasa, Mesures correctives pour écarter les effets pervers de l'Antardasa.

492 49. EFFETS DU KALACHAKRA DASA Effets du Dasa de rasisowned par le Soleil, la Lune, Mars, Mercure, Jupiter, Vénus et Saturne. Les effets de Dasason la base du Navamsa de chaquerasi.

50. EFFETS DE TIIE CHARA ETC, DASAS

Principes généraux concernant le jugement des effets du Dasa rasis en fonction de la force de leurs seigneurs, de la disposition des maléfiques et des bénéfiques par rapport au Dasa rasi à la naissance et au moment du commencement du Dasa, les maisons Badhaka pour les rasis mobiles, fixes et doubles et leur influence sur les effets du Dasa. Effets du Dasa d'une planète dans un rasi hostile, effets du Dasa rasis selon leurs conditions. 51. TRAVAIL DES ANTARDASAS DES PLANÈTES . ET RI.S/S DANS VIMSOTTARI ET'C. SYSTÈMES DASA

Méthode de calcul des Antardas des planètes sous les Vimsottari, Chara et Kendra Dasa etc. le système Kala Chakra Dasa. 52. EFFETS DE L'ANTARDASAS DANS LE DASA DU SOLEIL SELON LE SYSTÈME VIMSOTTARI DASA 627 référence à l'Ascendant et au seigneur du Dasa.

493 Rcmedialmeasuresto conjurer le mal cffiier:$ de ths Antardasas.

53.EFFETS DES ANTARDASAS DANS LE DASA DU TR,IOON

Effets des Antardas de la Lune, U"r.. iutru, Jupiter, Saturne, Mercure, Ketu, Vénus et le Soleil selon les dignités et les indignités, la force et les dispositions du seigneur Antardasa en référence à l'Ascendant et au seigneur du Dasa. Mesures correctives pour obtenir un soulagement de les effets maléfiques des Antardasas.

54. EFFETS DE L'ANTARDAS SUR LE DASA DE MARS

Effets des Antardas de Mars, Rahu, Jupiter, Saturne, Mercure, Ketu, Vénus, du Soleil et de la Lune selon les dignités et les indignités, la longueur et la disposition des Antardasalords en référence à l'Ascendant et au seigneur du Dasa. soulagement des effets de l'eil des Antardasas. .55. EFFETS DANS L'ANTARDASA^SOF RAHU

Effets des Antardasas de Rahu, Jupiter, Saturne, Mercure, Ketu, Vénus, le Soleil, la Lune et Mars selon la dignité et les indignités, la force et les dispositions, des seigneurs Antardasa en référence à l'Aec€ndant et au seigneur du Dasa. Mesures correctives pour obtenir un soulagement des effets néfastes d'Antardasas. 56. EFFETS DES ANTARDAS DE JUPITER Effets des Antrdas de Jupiter, Saturne, Mercure' Ketu, Vénus, le Soleil, la Lune, Mars et Rahu dans

@, EFFETS DE TTTEANTARDASAS DANS LE DASA DE''ENAS NO Ascendant et le seigneur du Dasa. Mesures correctives pour conjurer les effets néfastes de l'Antar. dasas. 61, EFFETS DE PRATYANTAR ANTARDASAS DES PLANÈTES

Méthode de calcul du Pratyantar Dasa avec un exemple. Effets du Pratyantar Dasa des neuf planètes des Antardas du Soleil, de la Lune, de Mars, de Rahu, de Jupiter, de Saturne, de Mercure, de Ketu et de Vénus. Tableaux montrant les périodes de tous les Pratyantar Dasas pour une référence facile.

62, EFFETS DU SOOKSHMANTAR DASAS DANS LE PRATYANTARDASAS DES PLANÈTES THÉTIAIRES 770 Méthode de calcul du Sookshma Dasa dans le Pratyantar Dasa des planètes avec un exemple. Effets du SookshmaDasa dans le Pratyantar Dasa du Soleil, de la Lune, de Mars, de Rahu, de Jupiter, de Saturne, de Mercure, de Ketu et de Vénus.

63, EFFETSOF PRANA DASAS DANS LE SOOKSHMA' DASA DES VARTOUSPLINETS ?85 Méthode de calcul du prana Dasa des planètes avec un exemple. Effets du prana Dasasin le SookshmaDasas du Soleil, de la Lune, de Mars, de Rahu Jupiter, de Saturne, de Mercure, de Ketu et de Vénus.

64. EFFETS DES ANTARDASAS DANS LE KALACHAKRA DASA

Méthode de calcul de l'Antardasasof rasis dans le Dasaof a rasi sous le système Kala Chakra Dasa avec un exemple et des tableaux montrant le ,

65. EFFETS DE DASASOF R. SISIN ARIESAMSA 835 Effets de Dasas de rasisin Bélier, Taureau, Gémeaux, Cancer, Lion, Vierge, Balance, Scorpion, Sagittaire, Capricorne, Verseauaud PoissonsAmsas' 66. ,4SHTAKAVARGA

L'importance, la signification et l'utilité de l'Ashtaka' les effets d'un schéma de naissance varga pour évaluer correctement le graphique dans le but de faire des prédictions. Définition de Karana et Stana. r '(points) des lieux propices marqués par bindus Vénus, le Soleil, la Lune, Mars, Mercure, Jupiter, Saturne et l'Ascendant. Vénus, Saturne et l'Ascendant.Illustrativechartsfor all the planets' 67. TNKONA SODHANA (RECTIFICATION) DANS LE SCHÉMA D'ASHTAKAVARCA 867 Nécessité pour Trikona rectification' Méthode de rloingthe rcctification.Illustrativechartsof Ashtaka, rurgut de toutes les huit planètes (y compris l'endant) Asc avec des bindui (points) et des rekhas (lignes) marqués en eux selon l'illustration des règles prescrites (avec un tableau d'illustration) pour effectuer la trikona rectificatio[ dans tbe Ashtakavargas du Sunetc.

PindaSadhana' Effets de l'Aslttakavarga de Mars-Indications des effets à peu près favorables ou défavorables Chakra Sodhana Eka :fq


La conception et l'analyse d'algorithmes parallèles

Ce document a été téléchargé par l'utilisateur et ils ont confirmé qu'ils ont la permission de le partager. Si vous êtes l'auteur ou possédez les droits d'auteur de ce livre, veuillez nous le signaler en utilisant ce formulaire de rapport DMCA. Signaler DMCA

Aperçu

Plus de détails

La conception et l'analyse d'algorithmes parallèles Selim G . Université Akl Queen's Kingston, Ontario, Canada

Prentice Hall, Englewood Cliffs, New Jersey 07632

BIBLIOTHÈQUE ff C O h K i E S S Données de catalogage avant publication de la Bibliothèque du Congrès

'Moi, Akl. S e l i m G. T h e d e s i g n et an a l y s l s de p a r a l l e l a l g o r i t h m s / par S e l l m G. A k l . p. cm. B i b l i o g r a p h y : p. Index incl u d e s. I S B N 0-13-200056-3 1 . P r a l l e l p r o g r a m i n g ( C o m p u t e r s i e n c e ) 2. A l g o r i t h m s . I. Titre. OA76.6.A38 1989 004'.35--dci9

Supervision éditoriale/production, Ann Mohan Conception de la couverture : Lundgren Graphics Ltd. Acheteur fabrication : Mary Noonan

01989 par Prentice-Hall, Inc. Une division de Simon & Schuster Englewood Cliffs, New Jersey 07632

Tous les droits sont réservés. Aucune partie de ce livre ne peut être reproduite, sous quelque forme ou par quelque moyen que ce soit, sans l'autorisation écrite de l'éditeur.

Imprimé aux États-Unis d'Amérique 1 0 9 8 7 6 5 4 3 2 1

ISBN 0-33-23005b-3 Prentice-Hall International (UK) Limited, Londres Prentice-Hall of Australia Pty.Limited, Sydney Prentice-Hall Canada Inc., Toronto Prentice-Hall Hispanoamericana, S.A., Mexique Prentice-Hall of India Private Limited, New Delhi Prentice-Hall of Japan, Inc., Tokyo Simon & Schuster Asia Pte. Ltd., Singapour Editora Prentice-Hall do Brazil, Ltda., Rio de Janeiro

À Théo, pour avoir rendu ça utile.

PRÉFACE xi INTRODUCTION 1

1 .I Le besoin d'ordinateurs parallèles, 1 1.2 Modèles de calcul, 3 1.2.1 Ordinateurs SISD, 3 1.2.2 Ordinateurs MISD, 4 1.2.3 Ordinateurs SIMD, 5 1.2.3.1 Ordinateurs SIMD à mémoire partagée (SM), 7 1.2.3.2 Calculateurs SIMD d'interconnexion-réseau, 12 1.2.4 Calculateurs MIMD, 17 1.2.4.1 Programmation de calculateurs MIMD, 19 1.2.4.2 Architectures spécialisées, 20 1.3 Algorithmes d'analyse, 21 1.3.1 Temps d'exécution, 21 1.3.1.1 Comptage Étapes, 22 1.3.1.2 Limites inférieures et supérieures, 22 1.3.1.3 Accélération, 24 1.3.2 Nombre de processeurs, 25 1.3.3 Coût, 26 1.3.4 Autres mesures, 27 1.3.4.1 Zone, 27 1.3.4.2 Longueur, 28 1.3.4.3 Période, 28 1.4 Algorithmes d'expression, 29 1.5 Oranisation du livre, 30 1.6 Problèmes, 30 1.7 Remarques bibliographiques, 33 1.8 Références, 33

2.1 Introduction, 39 2.2 Le problème et une borne inférieure, 39 2.2.1 Ordre linéaire, 39 2.2.2 Rang, 40 2.2.3 Sélection, 40 2.2.4 Complexité, 40 2.3 Un algorithme séquentiel, 41 2.4 Propriétés souhaitables pour les algorithmes parallèles , 43 2.4.1 Nombre de processeurs, 43 2.4.2 Durée d'exécution, 44 2.4.3 Coût, 44 2.5 Deux procédures utiles, 45 2.5.1 Diffusion d'une donnée, 45 2.5.2 Calcul de toutes les sommes, 46 2.6 Un algorithme pour le parallèle Sélection, 49 2.7 Problèmes, 53 2.8 Remarques bibliographiques, 54 2.9 Références, 56

3.1 Introduction, 59 3.2 Un réseau pour la fusion, 60 3.3 Fusion sur le modèle CREW, 64 3.3.1 Fusion séquentielle, 64 3.3.2 Fusion parallèle, 65 3.4 Fusion sur le modèle EREW, 69 3.5 Un meilleur algorithme pour le modèle EREW, 73 3.5.1 Trouver la médiane de deux séquences triées, 74 3.5.2 Fusion rapide sur le modèle EREW, 76 3.6 Problèmes, 78 3.7 Remarques bibliographiques, 82 3.8 Références, 82

TRI 4,1 4,2 4,3 4,4 4,5 4,6

Introduction, 85 Un réseau de tri, 87 Tri sur un réseau linéaire, 89 Tri sur le modèle CRCW, 93 Tri sur le modèle CREW, 96 Tri sur le modèle EREW, 98 4.6.1 Procédure de simulation CREW SORT, 98 4.6.2 Tri par fusion sans conflit, 99 4.6.3 Tri par sélection, 99

4.8 Remarques bibliographiques, 107 4.9 Références, 108

5.1 Introduction, 1 1 2 5.2 Recherche d'une séquence triée, 11 3

5.2.1 Recherche EREW, 113 5.2.2 Recherche CREW, 114 5.2.3 Recherche CRCW, 118 5.3 Recherche d'une séquence aléatoire, 11 9

5.3.1 Recherche sur les ordinateurs SM SIMD, 119 5.3.1.1 EREW 120 5.3.1.2 ERCW 120 5.3.1.3 CREW 120 5.3.1.4 CRCW 120 5.3.2 Recherche sur un arbre, 121 5.3.2.1 Interrogation, 121 5.3.2.2 Maintenance, 125 5.3.3 Recherche sur un maillage, 128 5.3.3.1 Interrogation, 128 5.3.3.2 Maintenance, 132 5.4 Problèmes, 132 5.5 Remarques bibliographiques, 135 5.6 Références, 136

GÉNÉRER DES PERMUTATIONS ET DES COMBINAISONS 141 6.1 Introduction, 141 6.2 Algorithmes séquentiels, 142

Génération de permutations lexicographiquement, 143 Permutations de numérotation, 145 Génération de combinaisons lexicographiquement, 147 Combinaisons de numérotation, 148 Génération de permutations en parallèle, 150 6.3.1 Adapter un algorithme séquentiel, 150 6.3.2 Un générateur de permutation adaptatif, 156 6.3.3 Générateur de permutations parallèles pour Peu de processeurs, 157 Génération de combinaisons en parallèle, 158 6.4.1 Un générateur de combinaison rapide, 158 6.4.2 Un générateur de combinaison adaptatif, 162 Problèmes, 163 Remarques bibliographiques, 166 Références, 167

7.1 Introduction, 170 7.2 Transposition, 170 7.2.1 Transposition de maillage, 171 7.2.2 Transposition aléatoire, 175 7.2.3 Transposition EREW, 177 7.3 Multiplication matrice par matrice, 178 7.3.1 Multiplication de maillage, 179 7.3.2 Multiplication de cube , 181 7.3.3 Multiplication CRCW, 187 7.4 Multiplication matrice par vecteur, 188 7.4.1 Multiplication de matrice linéaire, 188 7.4.2 Multiplication arborescente, 190 7.4.3 Convolution, 191 7.5 Problèmes, 193 7.6 Remarques bibliographiques, 194 7.7 Références , 195

8.1 Introduction, 200 8.2 Résolution de systèmes d'équations linéaires, 201 8.2.1 Un algorithme SIMD, 201 8.2.2 Un algorithme MIMD, 203 8.3 Recherche de racines d'équations non linéaires, 206 8.3.1 Un algorithme SIMD, 206 8.3.2 Un algorithme MIMD , 209 8.4 Résolution d'équations aux dérivées partielles, 21 2 8.5 Calcul des valeurs propres, 21 5 8.6 Problèmes, 221 8.7 Remarques bibliographiques, 225 8.8 Références, 226

CALCUL DES TRANSFORMES DE FOURIER 231 9.1 Introduction, 231 9.1.1 La transformée de Fourier rapide, 231 9.1.2 Une application de la FFT, 232 9.1.3 Calcul de la DFT en parallèle, 233 9.2 Calcul direct de la DFT, 233 9.2.1 Calcul de la Matrice W 234 9.2.2 Calcul de la DFT, 235 9.3 Un algorithme FFT parallèle, 238 9.4 Problèmes, 242 9.5 Remarques bibliographiques, 246 9.6 Références, 246

10.1 Introduction, 251 10.2 Définitions, 251 10.3 Calcul de la matrice de connectivité, 254 10.4 Recherche de composants connectés, 256 10.5 All-Pairs Shortest Paths, 257 10.6 Calcul de l'arbre couvrant minimum, 261 10.7 Problèmes, 266 10.8 Remarques bibliographiques, 271 10.9 Références, 272

1 1 .I Introduction, 278 11.2 Un problème d'inclusion, 279 11.2.1 Point dans un polygone, 280 11.2.2 Point dans une subdivision planaire, 283 11.3 Un problème d'intersection, 285 11.4 Un problème de proximité, 287 11.5 Un problème de construction, 288 11.5. 1 Borne inférieure, 289 11.5.2 Solution séquentielle, 291 11.5.3 Solution de maillage d'arbres, 292 11.5.4 Solution optimale, 296 11,6 Problèmes, 302 11.7 Remarques bibliographiques, 306 11,8 Références, 306

TRAVERSER LES ESPACES COMBINATOIRES 310

12.1 Introduction, 31 0 12.2 Parcours d'arbre séquentiel, 31 2 12.3 Principes de conception de base, 31 7 12.3.1 L'arbre alpha-bêta minimal, 318 12.3.2 Modèle de calcul, 319 12.3.3 Objectifs et méthodes, 320 12.4 L'algorithme, 323 12.4.1 Procédures et processus, 323 12.4.2 Sémaphores, 323 12.4.3 Tableaux de scores, 324 12.5 Analyses et exemples, 327 12.5.1 Seuils parallèles, 327 12.5.2 Exigences de stockage, 33 1 12.6 Problèmes, 336 12.7 Remarques bibliographiques , 337 12,8 Références, 338

DÉCISION ET OPTIMISATION

13.1 Introduction, 341 13.2 Calcul des sommes de préfixes, 341

13.2.1 Un réseau spécialisé, 342 13.2.2 Utilisation de la connexion non aléatoire, 343 13.2.3 Sommes de préfixes sur un arbre, 346 13.2.4 Sommes de préfixes sur un maillage, 349 Applications, 351 13.3.1 Séquençage des tâches avec échéances, 351 13.3 .2 Le problème du sac à dos, 352 13.3.3 Solutions de maillage, 354 Problèmes, 355 Remarques bibliographiques, 356 Références, 357

LA COMPLEXITÉ EN BITS DES CALCULS PARALLÈLES 14.1 Introduction, 361 14.2 Ajout de deux nombres entiers, 363 14.3 Ajout de n nombres entiers, 364

14.3.1 Arbre d'addition, 364 14.3.2 Maillage d'addition, 366 14.4 Multiplication de deux nombres entiers, 366 14.4.1 Arbre de multiplication, 368 14.4.2 Maillage de multiplication, 369 14.5 Calcul des sommes de préfixes, 373 14.5.1 Fan-out variable, 373 14.5 .2 Fan-out constant, 374 14,6 Multiplication matricielle, 374 14,7 Sélection, 376 14,8 Tri, 381 14,9 Problèmes, 382 14,1 0 Remarques bibliographiques, 384 14,11 Références, 386 INDEX D'AUTEUR

Le besoin d'ordinateurs toujours plus rapides n'a pas cessé depuis le début de l'ère informatique. Chaque nouvelle application semble pousser les ordinateurs existants à leur limite. Jusqu'à présent, les fabricants d'ordinateurs ont admirablement bien répondu à la demande. En 1948, les composants électroniques utilisés pour construire les ordinateurs pouvaient passer d'un état à un autre environ 10 000 fois par seconde. Le temps de commutation des composants de cette année est d'environ 1/10 000 000 000e de seconde. Ces chiffres signifient que le nombre d'opérations qu'un ordinateur peut effectuer en une seconde a doublé, environ tous les deux ans, au cours des quarante dernières années. C'est très impressionnant, mais combien de temps cela peut-il durer ? On pense généralement que la tendance se maintiendra jusqu'à la fin de ce siècle. Il peut même être possible de le maintenir un peu plus longtemps en utilisant des composants à base optique ou même à base biologique. Que se passe-t-il après ça ? Si les applications actuelles et envisagées des ordinateurs en sont une indication, nos exigences en termes de vitesse de calcul se maintiendront, au moins au même rythme que par le passé, bien au-delà de l'an 2000. Déjà, des ordinateurs plus rapides que ceux disponibles aujourd'hui sont nécessaires pour effectuer le nombre énorme de calculs impliqués dans le développement de remèdes à des maladies mystérieuses. Ils sont essentiels aux applications où la capacité humaine à reconnaître des schémas visuels et auditifs complexes doit être simulée en temps réel. Et ils sont indispensables si nous voulons réaliser de nombreux rêves de l'humanité, allant des prévisions météorologiques fiables à long terme aux voyages interplanétaires et à l'exploration de l'espace. Il apparaît maintenant que le traitement parallèle est le moyen d'atteindre ces vitesses de calcul souhaitées. L'écrasante majorité des ordinateurs qui existent aujourd'hui, du plus simple au plus puissant, sont conceptuellement très similaires les uns aux autres. Leur architecture et leur mode de fonctionnement suivent, plus ou moins, les mêmes principes de conception de base formulés à la fin des années 40 et attribués à John von Neumann. Le scénario ingénieux est très simple et se déroule essentiellement comme suit : une unité de contrôle récupère une instruction et ses opérandes dans une unité de mémoire et les envoie à une unité de traitement où l'instruction est exécutée et le résultat renvoyé en mémoire. Cette séquence d'événements est répétée pour chaque instruction. Il n'y a qu'une unité de chaque sorte et une seule instruction peut être exécutée à la fois.

Avec le traitement parallèle, la situation est entièrement différente. Un ordinateur parallèle est constitué d'un ensemble d'unités de traitement, ou processeurs, qui coopèrent pour résoudre un problème en travaillant simultanément sur différentes parties de ce problème. Le nombre de processeurs utilisés peut aller de quelques dizaines à plusieurs millions. En conséquence, le temps requis pour résoudre le problème par un ordinateur monoprocesseur traditionnel est considérablement réduit. Cette approche est intéressante pour plusieurs raisons. Premièrement, pour de nombreux problèmes de calcul, la solution naturelle est une solution parallèle. Deuxièmement, le coût et la taille des composants informatiques ont tellement diminué ces dernières années que des ordinateurs parallèles avec un grand nombre de processeurs sont devenus réalisables. Et, troisièmement, il est possible dans le traitement parallèle de sélectionner l'architecture parallèle la mieux adaptée pour résoudre le problème ou la classe de problèmes considérés. En effet, les architectes d'ordinateurs parallèles ont la liberté de décider combien de processeurs doivent être utilisés, quelle doit être leur puissance, quel réseau d'interconnexion les relie les uns aux autres, s'ils partagent une mémoire commune, dans quelle mesure leurs opérations doivent être effectuées. de manière synchrone, et une foule d'autres problèmes. Ce large éventail de choix a été reflété par les nombreux modèles théoriques de calcul parallèle proposés ainsi que par les nombreux ordinateurs parallèles qui ont été réellement construits. Le parallélisme va certainement changer notre façon de penser et d'utiliser les ordinateurs. Il promet de mettre à notre portée des solutions à des problèmes et des frontières de la connaissance dont on n'avait jamais rêvé auparavant. La riche variété d'architectures conduira à la découverte de solutions nouvelles et plus efficaces aux problèmes anciens et nouveaux. Il est donc important de se demander : Comment résolvons-nous des problèmes sur un ordinateur parallèle ? L'ingrédient principal dans la résolution d'un problème de calcul sur n'importe quel ordinateur est la méthode de résolution, ou algorithme. Ce livre traite des algorithmes pour les ordinateurs parallèles. Il décrit comment s'y prendre pour concevoir des algorithmes qui exploitent à la fois le parallélisme inhérent au problème et celui disponible sur l'ordinateur. Il montre également comment analyser ces algorithmes afin d'évaluer leur vitesse et leur coût. Les problèmes de calcul étudiés dans ce livre sont regroupés en trois classes : (1) les problèmes de tri, de recherche et connexes (2) les problèmes combinatoires et numériques et (3) les problèmes survenant dans un certain nombre de domaines d'application. Ces problèmes ont été choisis en raison de leur caractère fondamental. Il est montré comment un algorithme parallèle est conçu et analysé pour résoudre chaque problème. Dans certains cas, plusieurs algorithmes sont présentés qui effectuent le même travail, chacun sur un modèle différent de calcul parallèle. Des exemples sont utilisés aussi souvent que possible pour illustrer les algorithmes. Si nécessaire, un algorithme séquentiel est décrit pour le problème à résoudre. Des algorithmes supplémentaires sont brièvement décrits dans les sections Problèmes et Remarques bibliographiques. Une liste de références à d'autres publications, où sont traités des problèmes et des algorithmes connexes, est fournie à la fin de chaque chapitre. Le livre peut servir de texte pour un cours d'études supérieures sur les algorithmes parallèles. Il a été utilisé à cette fin à l'Université Queen's au cours du trimestre d'automne 1987. La classe s'est réunie quatre heures par semaine sur une période de douze semaines. L'une des quatre heures a été consacrée aux présentations par les étudiants de matériel supplémentaire, dont la référence a été trouvée dans les sections Remarques bibliographiques. Le livre devrait également être utile aux informaticiens, ingénieurs et mathématiciens qui souhaitent en savoir plus sur le parallèle

modèles de calcul et la conception et l'analyse d'algorithmes parallèles. On suppose que le lecteur possède la formation normalement fournie par un cours d'introduction de premier cycle sur la conception et l'analyse d'algorithmes. La partie la plus agréable de l'écriture d'un livre, c'est quand on a enfin la chance de remercier ceux qui ont contribué à rendre la tâche agréable. Quatre personnes méritent un crédit spécial : Mme Irene LaFleche a préparé la version électronique du manuscrit avec sa gaieté naturelle et son talent indéniable. Les diagrammes sont le résultat de l'expertise, de l'enthousiasme et de la compétence de M. Mark Attisha. Le Dr Bruce Chalmers a offert de nombreux commentaires perspicaces et perspicaces sur une première ébauche. M. Thomas Bradshaw a généreusement fourni des conseils et de l'aide sur des questions grandes et petites. Je tiens également à souligner les nombreuses suggestions utiles faites par les étudiants de ma classe CISC-867 à Queen's. Le soutien apporté par le personnel de Prentice Hall à chaque étape est grandement apprécié. Enfin, je suis redevable à ma femme, Karolina, et à mes deux enfants, Sophia et Theo, qui ont participé à ce projet de plus de façons que je ne peux en citer. Théo, en particulier, a passé la première année de sa vie à examiner, d'un point de vue, chaque mot tel qu'il apparaissait sur mon bloc-notes. Sélim G. Akl Kingston, Ontario

1.1 LE BESOIN D'ORDINATEURS PARALLÈLES

Une batterie de satellites dans l'espace collecte des données à une vitesse de 101° bits par seconde. Les données représentent des informations sur la météo de la terre, la pollution, l'agriculture et les ressources naturelles. Pour que ces informations soient utilisées à temps, elles doivent être traitées à une vitesse d'au moins 1013 opérations par seconde. De retour sur terre, une équipe de chirurgiens souhaite afficher sur un écran spécial une image tridimensionnelle reconstruite du corps d'un patient en préparation pour la chirurgie. Ils doivent pouvoir faire pivoter l'image à volonté, obtenir une vue en coupe transversale d'un organe, l'observer dans les moindres détails, puis effectuer une chirurgie simulée tout en observant son effet, le tout sans toucher le patient. Une vitesse de traitement minimale de 1015 opérations par seconde rendrait cette approche intéressante. Les deux exemples précédents sont représentatifs d'applications où des ordinateurs extrêmement rapides sont nécessaires pour traiter de grandes quantités de données ou pour effectuer un grand nombre de calculs rapidement (ou du moins dans un délai raisonnable). D'autres applications de ce type incluent les tests d'avions, le développement de nouveaux médicaments, l'exploration pétrolière, la modélisation des réacteurs à fusion, la planification économique, la cryptanalyse, la gestion de grandes bases de données, l'astronomie, l'analyse biomédicale, la reconnaissance vocale en temps réel, la robotique et la solution de grands systèmes de contrôle partiel. équations différentielles issues de simulations numériques dans des disciplines aussi diverses que la sismologie, l'aérodynamique et la physique atomique, nucléaire et des plasmas. Il n'existe aujourd'hui aucun ordinateur capable de fournir les vitesses de traitement requises par ces applications. Même les soi-disant supercalculateurs culminent à quelques milliards d'opérations par seconde. Au cours des quarante dernières années, des augmentations spectaculaires de la vitesse de calcul ont été réalisées. La plupart d'entre eux étaient dus en grande partie à l'utilisation de composants électroniques intrinsèquement plus rapides par les fabricants d'ordinateurs. Alors que nous passions des relais aux tubes à vide en passant par les transistors et du smaH à l'intégration moyenne à grande, puis à très grande échelle, nous avons été témoins souvent avec étonnement de la croissance en taille et en étendue des problèmes de calcul que nous pouvions résoudre. Malheureusement, il est évident que cette tendance va bientôt prendre fin. Le facteur limitant est une simple loi de la physique qui donne la vitesse de la lumière dans le vide. Cette vitesse est

environ égal à 3 x lo8 mètres par seconde. Maintenant, supposons qu'un appareil électronique puisse effectuer 1012 opérations par seconde. Ensuite, il faut plus de temps pour qu'un signal voyage entre deux de ces appareils distants d'un demi-millimètre qu'il n'en faut à l'un d'eux pour le traiter. En d'autres termes, tous les gains de vitesse obtenus en construisant des composants électroniques ultrarapides sont perdus pendant qu'un composant attend de recevoir une entrée d'un autre. Pourquoi alors (est-on obligé de se demander) ne pas rapprocher encore plus les deux composants communicants ? Encore une fois, la physique nous dit que la réduction de la distance entre les appareils électroniques atteint un point au-delà duquel ils commencent à interagir, réduisant ainsi non seulement leur vitesse mais aussi leur fiabilité. Il semble que la seule façon de contourner ce problème est d'utiliser le parallélisme. L'idée ici est que si plusieurs opérations sont effectuées simultanément, le temps pris par un calcul peut être considérablement réduit. C'est une notion assez intuitive, et à laquelle nous sommes habitués dans toute société organisée. Nous savons que plusieurs personnes aux compétences comparables peuvent généralement terminer un travail en une fraction du temps pris par une seule personne. De la distribution du courrier à la récolte et du travail de bureau à l'usine, notre quotidien offre de nombreux exemples de parallélisme à travers le partage des tâches. Même dans le domaine de l'informatique, l'idée de parallélisme n'est pas entièrement nouvelle et a pris de nombreuses formes. Depuis les premiers jours du traitement de l'information, les gens se sont rendu compte qu'il était très avantageux de faire en sorte que les divers composants d'un ordinateur fassent des choses différentes en même temps. Typiquement, pendant que l'unité centrale de traitement effectue des calculs, l'entrée peut être lue à partir d'une bande magnétique et la sortie produite sur une imprimante ligne. Dans les machines plus avancées, il existe plusieurs processeurs simples spécialisés chacun dans une tâche de calcul donnée, comme des opérations sur des nombres à virgule flottante par exemple. Certains des ordinateurs les plus puissants d'aujourd'hui contiennent deux unités de traitement ou plus qui partagent entre elles les travaux soumis pour traitement. Dans chacun des exemples qui viennent d'être mentionnés, le parallélisme est exploité avec profit, mais loin de sa puissance promise. À proprement parler, aucune des machines discutées n'est vraiment un ordinateur parallèle. Dans le paradigme moderne que nous sommes sur le point de décrire, cependant, l'idée de l'informatique parallèle peut réaliser tout son potentiel. Ici, notre outil de calcul est un ordinateur parallèle, c'est-à-dire un ordinateur avec de nombreuses unités de traitement, ou processeurs. Étant donné un problème à résoudre, il est divisé en un certain nombre de sous-problèmes.Tous ces sous-problèmes sont désormais résolus simultanément, chacun sur un processeur différent. Les résultats sont ensuite combinés pour produire une réponse au problème initial. Il s'agit d'un changement radical par rapport au modèle de calcul adopté depuis quarante ans dans la construction d'ordinateurs, à savoir la machine séquentielle monoprocesseur. Ce n'est qu'au cours des dix dernières années que le parallélisme est devenu vraiment attrayant et une approche viable pour atteindre des vitesses de calcul très élevées. La baisse du coût du matériel informatique a permis d'assembler des machines parallèles avec des millions de processeurs. Inspirés par le défi, les informaticiens ont commencé à étudier les ordinateurs parallèles à la fois en théorie et en pratique. Les preuves empiriques fournies par des prototypes locaux venaient souvent à l'appui d'un grand nombre d'études théoriques. Et très récemment, un certain nombre d'ordinateurs parallèles commerciaux ont fait leur apparition sur le marché.

Avec la disponibilité du matériel, la question la plus urgente en informatique parallèle aujourd'hui est la suivante : comment programmer des ordinateurs parallèles pour résoudre les problèmes de manière efficace et d'une manière pratique et économiquement faisable ? Comme c'est le cas dans le monde séquentiel, le calcul parallèle nécessite des algorithmes, des langages de programmation et des compilateurs, ainsi que des systèmes d'exploitation afin d'effectuer réellement un calcul sur le matériel parallèle. Tous ces ingrédients du calcul parallèle reçoivent actuellement une attention bien méritée de la part des chercheurs. Ce livre traite d'un aspect (et peut-être le plus fondamental) du parallélisme, à savoir les algorithmes parallèles. Un algorithme parallèle est une méthode de résolution d'un problème donné destinée à être exécutée sur un ordinateur parallèle. Afin de concevoir correctement de tels algorithmes, il faut avoir une compréhension claire du modèle de calcul sous-jacent à l'ordinateur parallèle.

Tout ordinateur, qu'il soit séquentiel ou parallèle, fonctionne en exécutant des instructions sur des données. Un flux d'instructions (l'algorithme) indique à l'ordinateur ce qu'il doit faire à chaque étape. Un flux de données (l'entrée de l'algorithme) est affecté par ces instructions. Selon qu'il existe un ou plusieurs de ces flux, on peut distinguer quatre classes d'ordinateurs :

Flux d'instructions unique, flux de données unique (SISD) Flux d'instructions multiples, flux de données unique (MISD) Flux d'instructions unique, flux de données multiples (SIMD) Flux d'instructions multiples, flux de données multiples (MIMD).

Examinons maintenant chacune de ces classes en détail. Dans la discussion qui suit, nous ne nous intéresserons pas aux unités d'entrée, de sortie ou périphériques qui sont disponibles sur chaque ordinateur. 1.2.1 Ordinateurs SISD

Un ordinateur de cette classe se compose d'une seule unité de traitement recevant un seul flux d'instructions qui fonctionnent sur un seul flux de données, comme le montre la figure 1.1. A chaque étape du calcul l'unité de contrôle émet une instruction qui opère sur une donnée issue de l'unité mémoire. Une telle instruction peut indiquer au processeur, par

exemple, pour effectuer une opération arithmétique ou logique sur la donnée puis la remettre en mémoire. L'écrasante majorité des ordinateurs adhèrent aujourd'hui à ce modèle inventé par John von Neumann et ses collaborateurs à la fin des années 40. Un algorithme pour un ordinateur de cette classe est dit séquentiel (ou série). Exemple 1.1

Pour calculer la somme de n nombres, le processeur doit accéder à la mémoire n fois consécutives et recevoir à chaque fois un nombre. Il y a aussi n - 1 ajouts impliqués qui sont exécutés en séquence. Par conséquent, ce calcul nécessite de l'ordre de n opérations au total. Cet exemple montre que les algorithmes pour les ordinateurs SISD ne contiennent aucun parallélisme. La raison est évidente, il n'y a qu'un seul processeur ! Afin d'obtenir d'un ordinateur le type de fonctionnement parallèle défini précédemment, il devra disposer de plusieurs processeurs. Ceci est fourni par les trois prochaines classes d'ordinateurs, les classes d'intérêt dans ce livre. Dans chacune de ces classes, un ordinateur possède N processeurs, où N > 1. 1.2.2 Ordinateurs MISD

Ici, N processeurs, chacun avec sa propre unité de contrôle, partagent une unité de mémoire commune où résident les données, comme le montre la figure 1.2. Il existe N flux d'instructions et un flux de données. A chaque étape, une donnée reçue de la mémoire est exploitée par tous les processeurs simultanément, chacun selon l'instruction qu'il reçoit de sa commande. Ainsi, le parallélisme est obtenu en laissant les processeurs faire différentes choses en même temps sur la même donnée. Cette classe d'ordinateurs se prête naturellement aux calculs nécessitant qu'une entrée soit soumise à plusieurs opérations, chacune recevant l'entrée sous sa forme originale. Deux de ces calculs sont maintenant illustrés. PROCESSEUR 1

Exemple 1.2 Il est nécessaire de déterminer si un entier positif donné z n'a pas de diviseurs sauf 1 et lui-même. La solution évidente à ce problème est d'essayer tous les diviseurs possibles de z : si aucun d'entre eux ne réussit à diviser z, alors z est dit premier, sinon z est dit composite. Nous pouvons implémenter cette solution en tant qu'algorithme parallèle sur un ordinateur MISD. L'idée est de répartir le travail de test des diviseurs potentiels entre les processeurs. Supposons qu'il y ait autant de processeurs sur l'ordinateur parallèle qu'il y a de diviseurs potentiels de z. Tous les processeurs prennent z en entrée, puis chacun essaie de le diviser par son diviseur potentiel associé et émet une sortie appropriée en fonction du résultat. Ainsi, il est possible de déterminer en une seule étape si z est premier. De manière plus réaliste, s'il y a moins de processeurs que de diviseurs potentiels, alors chaque processeur peut se voir confier la tâche de tester un sous-ensemble différent de ces diviseurs. Dans les deux cas, une accélération substantielle est obtenue sur une implémentation purement séquentielle. Bien qu'il existe des solutions plus efficaces au problème des tests de primalité, nous avons choisi la plus simple car elle illustre le point sans avoir besoin de beaucoup de sophistication mathématique.

Exemple 1.3 Dans de nombreuses applications, nous avons souvent besoin de déterminer à laquelle parmi un certain nombre de classes appartient un objet donné. L'objet peut être un objet mathématique, où il est nécessaire d'associer un nombre à l'un de plusieurs ensembles, chacun avec ses propres propriétés. Ou cela peut être physique : un robot scannant les fonds marins « voit » différents objets qu'il doit reconnaître afin de distinguer les poissons, les rochers, les algues, etc. Typiquement, l'appartenance de l'objet est déterminée en le soumettant à un certain nombre de tests différents. Le processus de classification peut se faire très rapidement sur un ordinateur MISD avec autant de processeurs qu'il y a de classes. Chaque processeur est associé à une classe et peut reconnaître les membres de cette classe grâce à un test informatique. Etant donné un objet à classer, il est envoyé simultanément à tous les processeurs où il est testé en parallèle. L'objet appartient à la classe associée à ce processeur qui rapporte le succès de son test. (Bien sûr, il se peut que l'objet n'appartienne à aucune des classes testées, auquel cas tous les processeurs signalent un échec.) Comme dans l'exemple 1.2, lorsque moins de processeurs que de classes sont disponibles, plusieurs tests sont effectués par chaque processeur ici, cependant, en signalant un succès, un processeur doit également fournir la classe à laquelle appartient l'objet. Les exemples précédents montrent que la classe des ordinateurs MISD pourrait être extrêmement utile dans de nombreuses applications. Il est également évident que le type de calculs qui peuvent être effectués efficacement sur ces ordinateurs sont de nature plutôt spécialisée. Pour la plupart des applications, les ordinateurs MISD seraient plutôt difficiles à utiliser. Les ordinateurs parallèles qui sont plus flexibles, et donc adaptés à un large éventail de problèmes, sont décrits dans les deux sections suivantes.

1.2.3 Ordinateurs SlM D Dans cette classe, un ordinateur parallèle se compose de N processeurs identiques, comme le montre la Fig.

1.3. Chacun des N processeurs possède sa propre mémoire locale où il peut stocker à la fois

RÉSEAU D'INTERCONNEXION 0R

programmes et données. Tous les processeurs fonctionnent sous le contrôle d'un seul flux d'instructions émis par une unité centrale de contrôle. De manière équivalente, les N processeurs peuvent être supposés détenir des copies identiques d'un même programme, la copie de chaque processeur étant stockée dans sa mémoire locale. Il existe N flux de données, un par processeur. Les processeurs fonctionnent de manière synchrone : A chaque étape, tous les processeurs exécutent la même instruction, chacun sur une donnée différente. L'instruction peut être simple (comme ajouter ou comparer deux nombres) ou complexe (comme fusionner deux listes de nombres). De même, la donnée peut être simple (un nombre) ou complexe (plusieurs nombres). Parfois, il peut être nécessaire que seul un sous-ensemble de processeurs exécute une instruction. Cette information peut être codée dans l'instruction elle-même, indiquant ainsi à un processeur s'il doit être actif (et exécuter l'instruction) ou inactif (et attendre l'instruction suivante). Il existe un mécanisme, tel qu'une horloge globale, qui assure un fonctionnement à pas de verrouillage. Ainsi, les processeurs qui sont inactifs pendant une instruction ou ceux qui terminent l'exécution de l'instruction avant les autres peuvent rester inactifs jusqu'à ce que l'instruction suivante soit émise. L'intervalle de temps entre deux instructions peut être fixe ou peut dépendre de l'instruction en cours d'exécution. Dans la plupart des problèmes intéressants que l'on souhaite résoudre sur un calculateur SIMD, il est souhaitable que les processeurs puissent communiquer entre eux lors du calcul afin d'échanger des données ou des résultats intermédiaires. Ceci peut être réalisé de deux manières, donnant lieu à deux sous-classes : les ordinateurs SIMD où la communication se fait au travers d'une mémoire partagée et ceux où elle se fait via un réseau d'interconnexion.

1.2.3.1 Ordinateurs SIMD à mémoire partagée ( S M ). Cette classe est également connue dans la littérature sous le nom de modèle de machine à accès aléatoire parallèle (PRAM). Ici, les processeurs N partagent une mémoire commune qu'ils utilisent de la même manière qu'un groupe de personnes peut utiliser un tableau d'affichage. Lorsque deux processeurs souhaitent communiquer, ils le font via la mémoire partagée. Supposons que le processeur i souhaite transmettre un numéro au processeur j. C'est fait en deux étapes. Premièrement, le processeur i écrit le nombre dans la mémoire partagée à un emplacement donné connu du processeur j. Ensuite, le processeur j lit le nombre à partir de cet emplacement. Lors de l'exécution d'un algorithme parallèle, les N processeurs accèdent à la mémoire partagée pour la lecture des données d'entrée, la lecture ou l'écriture des résultats intermédiaires et l'écriture des résultats finaux. Le modèle de base permet à tous les processeurs d'accéder simultanément à la mémoire partagée si les emplacements de mémoire à partir desquels ils essaient de lire ou d'écrire sont différents. Cependant, la classe des ordinateurs SIMD à mémoire partagée peut être divisée en quatre sous-classes, selon que deux processeurs ou plus peuvent accéder simultanément au même emplacement mémoire :

(i) Ordinateurs SM SIMD à lecture exclusive, écriture exclusive (EREW). L'accès aux emplacements mémoire est exclusif. En d'autres termes, deux processeurs ne sont pas autorisés à lire ou à écrire simultanément dans le même emplacement mémoire. (ii) Ordinateurs SM SIMD à lecture simultanée, écriture exclusive (CREW). Plusieurs processeurs sont autorisés à lire à partir du même emplacement mémoire, mais le droit d'écriture est toujours exclusif : deux processeurs ne sont pas autorisés à écrire simultanément dans le même emplacement. (iii) Ordinateurs SM SIMD à lecture exclusive et écriture simultanée (ERCW). Plusieurs processeurs sont autorisés à écrire dans le même emplacement mémoire mais les accès en lecture restent exclusifs. (iv) Ordinateurs SM SIMD à lecture et écriture simultanées (CRCW). Les privilèges de lecture multiple et d'écriture multiple sont accordés. Autoriser des accès en lecture multiple à la même adresse en mémoire ne devrait en principe poser aucun problème (sauf peut-être quelques problèmes technologiques dont nous parlerons plus loin). Conceptuellement, chacun des nombreux processeurs lisant à partir de cet emplacement fait une copie du contenu de l'emplacement et le stocke dans sa propre mémoire locale. Cependant, avec les accès en écriture multiple, des difficultés surviennent. Si plusieurs processeurs tentent de stocker simultanément des données (potentiellement différentes) à une adresse donnée, lequel d'entre eux devrait réussir ? En d'autres termes, il devrait y avoir un moyen déterministe de spécifier le contenu de cette adresse après l'opération d'écriture. Plusieurs politiques ont été proposées pour résoudre de tels conflits d'écriture, subdivisant ainsi davantage les classes (iii) et (iv). Certaines de ces politiques sont

(a) le processeur le plus petit est autorisé à écrire, et l'accès est refusé à tous les autres processeurs (b) tous les processeurs sont autorisés à écrire à condition que les quantités qu'ils tentent de stocker soient égales, sinon l'accès est refusé à tous les processeurs et (c) la somme de toutes les quantités que les processeurs tentent d'écrire est stockée.

Un représentant typique de la classe de problèmes pouvant être résolus sur des ordinateurs parallèles de la famille SM SIMD est donné dans l'exemple suivant. Exemple 1.4 Considérons un très gros fichier informatique composé de n entrées distinctes. Nous supposerons par souci de simplicité que le fichier n'est trié dans aucun ordre. (En fait, il se peut que garder le fichier trié à tout moment soit impossible ou simplement inefficace.) Supposons maintenant qu'il soit nécessaire de déterminer si un élément donné x est présent dans le fichier afin d'effectuer une opération de base de données standard , comme lire, mettre à jour ou supprimer. Sur un ordinateur conventionnel (c'est-à-dire SISD), la récupération de x nécessite n étapes dans le pire des cas où chaque étape est une comparaison entre x et une entrée de fichier. Le pire des cas se produit clairement lorsque x est égal à la dernière entrée ou n'est égal à aucune entrée. En moyenne, bien sûr, nous nous attendons à faire un peu mieux : si les entrées du fichier sont réparties uniformément sur une plage donnée, il faut alors deux fois moins d'étapes pour récupérer x. Le travail peut être fait beaucoup plus rapidement sur un ordinateur EREW SM SIMD avec N processeurs, où N R. Nous discutons maintenant d'un certain nombre de caractéristiques de ce modèle. (i) Prix. La première question à se poser est : quel est le prix à payer pour interconnecter entièrement N processeurs ? Il y a N - 1 lignes quittant chaque processeur pour un total de N(N - 1)/2 lignes. Clairement, un tel réseau est trop cher, surtout pour de grandes valeurs de N. Ceci est particulièrement vrai si l'on constate qu'avec N processeurs le mieux que l'on puisse espérer est une réduction N fois du nombre d'étapes requises par un algorithme séquentiel, comme indiqué dans la section 1.3.1.3. (ii) Faisabilité. Même si nous pouvions nous permettre un prix aussi élevé, le modèle est irréaliste en pratique, encore une fois pour de grandes valeurs de N. En effet, il y a une limite sur le nombre de lignes qui peuvent être connectées à un processeur, et cette limite est dictée par le taille physique réelle du processeur lui-même. (iii) Relation avec SM SIMD. Enfin, il convient de noter que le modèle entièrement interconnecté tel que décrit est plus faible qu'un ordinateur à mémoire partagée pour la même raison que la mémoire partagée R-block : pas plus d'un processeur ne peut accéder simultanément au bloc mémoire associé à un autre processeur . Autoriser ce dernier donnerait un coût de NZ xf (MIN), qui est à peu près le même que pour le SM SIMD (sans compter le coût quadratique des lignes bidirectionnelles) : cela irait clairement à l'encontre de notre objectif initial d'obtenir un machine! Réseaux simples pour les ordinateurs SZMD. Il est heureux que dans la plupart des applications, un petit sous-ensemble de toutes les connexions par paires soit généralement suffisant pour obtenir de bonnes performances. Les plus populaires de ces réseaux sont brièvement décrits dans ce qui suit. Gardez à l'esprit que puisque deux processeurs peuvent communiquer en un nombre constant d'étapes sur un ordinateur SM SIMD, tout algorithme pour un ordinateur SIMD d'interconnexion-réseau peut être simulé sur le premier modèle en pas plus d'étapes que nécessaire pour l'exécuter par ce dernier.

(i) Réseau linéaire. La façon la plus simple d'interconnecter N processeurs est sous la forme d'un tableau à une dimension, comme le montre la figure 1.6 pour N = 6. Ici, le processeur Pi est lié à ses deux voisins Pi- et Pi+, via une communication bidirectionnelle ligne. Chacun des processeurs finaux, à savoir P et P, n'a qu'un seul voisin. (ii) Réseau à deux dimensions. Un réseau à deux dimensions est obtenu en organisant les N processeurs dans un tableau mxm, où m = Nli2, comme le montre la figure 1.7 pour m = 4. Le processeur de la ligne j et de la colonne k est noté P(j, k) , où 0 N. Nous observons maintenant que tout algorithme parallèle peut être simulé sur un ordinateur séquentiel. La simulation s'effectue de la manière suivante : Le (seul) processeur du calculateur séquentiel exécute les étapes parallèles en série en prétendant que c'est PI, puis que c'est P , , et ainsi de suite. Le temps mis par la simulation est la somme des temps mis pour imiter l'ensemble des N processeurs, soit au plus N fois T,. Mais NT, k alors (le kième élément de S doit être dans S,) appelle récursivement SEQUENTIAL SELECT pour trouver le kième élément de S, sinon si IS,I+ IS,l>k alors retourne m sinon appelle SEQUENTIAL SELECT récursivement pour trouver le (k -- IS,J- IS,l)ième élément de S, fin si fin si.

Notez que l'instruction précédente de la procédure SEQUENTIAL SELECT ne spécifie pas comment le kième plus petit élément de S est réellement renvoyé. Une façon de le faire serait d'avoir un paramètre supplémentaire, disons, x, dans l'en-tête de la procédure (en plus

S et k) et renvoient le kième plus petit élément de x. Une autre façon serait de simplement renvoyer le kième plus petit comme premier élément de la séquence S. Analyse. Une analyse étape par étape de t(n), le temps d'exécution de SEQUENTIAL SELECT, est maintenant fournie.

Étape 1 : Puisque Q est une constante, trier S quand IS1 k puis PARALLEL SELECT ( L , k) sinon si ILI + IE l 2 k puis retourner m sinon PARALLEL SELECT (G, k - 1 LJ- IEJ) fin si fin si .

Notez que le mécanisme précis utilisé par la procédure PARALLEL SELECT pour retourner le kième plus petit élément de S n'est pas spécifié dans l'instruction précédente. Cependant, n'importe laquelle des manières suggérées dans la section 2.3 en relation avec la procédure SEQUENTIAL SELECT peut être utilisée ici.

Une analyse. Nous avons délibérément donné une description de haut niveau de PARALLEL SELECT pour éviter d'obscurcir les idées principales de l'algorithme. Afin d'obtenir une analyse précise du temps d'exécution de la procédure, cependant, divers détails de mise en œuvre doivent être spécifiés. Comme d'habitude, on note t(n) le temps requis par PARALLEL SELECT pour une entrée de taille n. Une fonction décrivant t(n) est maintenant obtenue en analysant chaque étape de la procédure.

Étape 1 : Pour effectuer cette étape, chaque processeur a besoin de l'adresse de début A de la séquence Sin de la mémoire partagée, de sa taille JSI et de la valeur de k. Ces quantités peuvent être diffusées à tous les processeurs en utilisant la procédure BROADCAST : Cela nécessite un temps O(1og nl-"). Si IS( 4. Puisque p(n) = nl-", nous avons Ce coût est optimal compte tenu du R( n) borne inférieure dérivée à la section 2.2. Notez, cependant, que nx est asymptotiquement plus grand que log n pour tout x.(En effet, nous avons utilisé ce fait dans notre analyse de PARALLEL SELECT.) Puisque N = n' -" et n/nx c npog n, il s'ensuit que PARALLEL SELECT est optimal en termes de coût à condition que N 0. Il est montré dans [Aggarwal] comment une accélération supplémentaire peut être obtenue pour le cas où les éléments de S sont pris dans un champ de taille O(nl+?) pour une constante y > 0 : la sélection peut maintenant être effectuée en un temps O(log2n). étudier un algorithme de sélection sur l'arbre qui a d'abord été proposé dans [Cooper]. Cet algorithme prend le temps d'opérer sur deux bits (plutôt que deux nombres entiers) comme unité de temps. Le problème de sélection a également été abordé sur des variantes de modèles de base. Un algorithme est proposé dans [Stout 23 qui s'exécute sur un ordinateur connecté à un maillage avec une capacité de diffusion. Le modèle dans [Chandran] est un ordinateur connecté à un cube où chaque communication entre deux processeurs compte comme une étape de routage, quelle que soit la façon dont de nombreux éléments sont échangés. Des variations sur le problème de la sélection lui-même ont également été s étudié. Des algorithmes pour trouver le plus grand élément d'une séquence (un cas particulier de sélection) apparaissent dans [Bokhari], [Shiloach] et [Valiant]. Une architecture spéciale pour sélectionner le k le plus petit des n éléments est décrite dans w a h ] . Enfin, tous les résultats discutés jusqu'à présent ont été obtenus par des analyses du pire des cas. Parfois, il est utile de calculer en moyenne le temps requis par un algorithme parallèle. Ici, les éléments de l'entrée sont supposés obéir à une distribution de probabilité donnée, et le temps d'exécution attendu est obtenu. Les algorithmes spécifiquement conçus pour atteindre un bon temps d'exécution en moyenne sont dits probabilistes. Des exemples de tels algorithmes probabilistes sont fournis dans [Greenberg] pour le modèle SIMD arborescent et dans [Reischuck] pour le modèle de comparaison.

2.9 RÉFÉRENCES [AGGARWAL] Aggarwal, A., A comparative study of X-tree, pyramid and related machines, Actes du 25e Symposium annuel de l'IEEE sur les fondements de l'informatique, Singer Island, Floride, octobre 1984, pp. 89-99, IEEE Computer Society, Washington, DC, 1984. [AJTAI] Ajtai, M., Komlos, J., Steiger, WL et SzemerCdi, E., Sélection déterministe en temps parallèle O(log log N), Actes du 18e congrès annuel Symposium ACM sur la théorie de l'informatique, Berkeley, Californie, mai 1986, pp. 188-195, Association for Computing Machinery, New York, NY, 1986. [AKL 11 Akl, SG, An optimal algorithm for parallel selection, Information Processing Letters, Vol. 19, n° 1, juillet 1984, pp. 47-50. [AKL 21 Akl, SG, Parallel Sorting Algorithms, Academic, Orlando, FI., 1985. [AKL 33 Akl, SG, Parallel selection in O(log log n) time using O(n/log log n) processors, Technical Report No. 88-221, Department of Computing and Information Science, Queen's University, Kingston, Ontario, mars 1988. [BLUM] Blum, M., Floyd, RW, Pratt, V., Rivest, RL, et Tarjan, RE, Time limites de sélection, Journal of Computer and System Sciences, Vol. 7, n° 4, 1972, pp. 448-461. [BOKHARI] Bokhari, S. H., Trouver le maximum sur un processeur matriciel avec bus global, IEEE Transactions on Computers, Vol. C-33, n° 2, février 1984, p. 133-139. [CHANDRAN] Chandran, S., et Rosenfeld, A., Order statistics on a hypercube, Center for Automation Research, University of Maryland, College Park, Md., 1986. [COLE 11 Cole, R., et Yap, CK, Un algorithme médian parallèle, Information Processing Letters, Vol. 20, n° 3, avril 1985, pp. 137-139. [COLE 23 Cole, R., et Vishkin, U., Deterministic coin tossing and accelerating cascades: Micro and macro techniques for designing parallel algorithms, Actes du 18e Symposium annuel de l'ACM sur la théorie de l'informatique, Berkeley, Californie, mai 1986, p. 206-219, Association for Computing Machinery, New York, NY, 1986. [COOPER] Cooper, J., et Akl, SG, Efficient selection on a binary tree, Information Processing ktters, Vol. 23, n° 3, octobre 1986, pp. 123-126. [FICH] Fich, FE, New bounds for parallel prefix circuits, Actes du 15e Symposium annuel de l'ACM sur la théorie de l'informatique, Boston, Massachusetts, mai 1983, pp. 100-109, Association for Computing Machinery, New York, NY, 1983 [GREENBERG] Greenberg, AG, et Manber, U., Un algorithme de pipeline probabiliste pour la sélection de k sur la machine arborescente, IEEE Transactions on Computers, Vol. C-36, n° 3, mars 1987, pp. 359-362.

[KNUTH] Knuth, D. E., L'art de la programmation informatique, vol. 3, Tri et recherche, AddisonWesley, Reading, Mass., 1973. [K

GGE11 Kogge, P. M., Solution parallèle des problèmes de récurrence, IBM Journal of Research and Development, mars 1974, pp. 138-148. [K

GGE 21 Kogge, P. M. et Stone, H. S., Un algorithme parallèle pour la solution efficace d'une classe générale d'équations de récurrence, IEEE Transactions on Computers, Vol. C-22, n° 8, août 1973, p. 786-792. [KRUSKAL] Kruskal, C. P., Rudolph, L. et Snir, M., The power of parallel prefix, IEEE Pansactions on Computers, Vol. C-34, n° 10, octobre 1985, p. 965-968. [LADNER] Ladner, R. E., et Fischer, M. J., Calcul de préfixe parallèle, Journal of the ACM, Vol. 27, n° 4, octobre 1980, pp. 831-838. [MEGIDDO] Megiddo, N., Application d'algorithmes de calcul parallèle dans la conception d'algorithmes sériels, Journal of the ACM, Vol. 30, n° 4, octobre 1983, pp. 852-865. [REIF] Reif, JH, Calcul probabiliste de préfixes parallèles, Actes de la conférence internationale de 1984 sur le traitement parallèle, Bellaire, Michigan, août 1984, pp. 291-298, IEEE Computer Society, Washington, DC, 1984. [REISCHUK] Reischuk, R., Un algorithme de tri parallèle probabiliste rapide, Actes du 22e Symposium annuel de l'IEEE sur les fondements de l'informatique, Nashville, Tennessee, octobre 1981, pp. 212-219, IEEE Computer Society, Washington, DC, 1981. [SHILOACH] Shiloach , Y. et Vishkin, U., Trouver le maximum, fusionner et trier dans un modèle de calcul parallèle, Journal of Algorithms, Vol. 2, 1981, p. 88-102. [STONE] Stone, HS, Ed., Introduction to Computer Architecture, Science Research Associates, Chicago, 1980. [STOUT 11 Stout, QF, Sorting, merging, selection, and filtering on tree and pyramid machines, Actes de la conférence internationale de 1983 sur le traitement parallèle, Bella

re, Michigan, août 1983, pp. 214-221, IEEE Computer Society, Washington, D.C., 1983. [STOUT 21 Stout, Q. F., Mesh-connected computer with broadcast, IEEE Transactions on Computers, Vol. C-32, n° 9, septembre 1983, p. 826-830. [TANIMOTO] Tanimoto, SL, Tri, histogramming, and other statistics operations on a pyramid machine, Technical Report 82-08-02, Department of Computer Science, University of Washington, Seattle, 1982. [VALIANT] Valiant, LG, Parallelism in problèmes de comparaison, SIAM Journal on Computing, Vol. 4, n° 3, septembre 1975, pp. 348-355.

[VISHKIN] Vishkin, U., An optimal parallel algorithm for selection, Department of Computer Science, Courant Institute of Mathematical Sciences, New York, 1983. CWAHI Wah, BW, et Chen, K.-L., A partitioning approach to the conception de réseaux de sélection, IEEE Transactions on Computers, Vol. C-33, n° 3, mars 1984, p. 261-268.

Nous avons mentionné au chapitre 2 que la sélection appartient à une classe de problèmes appelés problèmes de comparaison. Le deuxième problème à étudier dans ce livre est celui de la fusion. Il est défini comme suit : Soit A = (a,, a,, . . .,a,) et B = (b,, b,, . . ., b,) deux suites de nombres triées par ordre non décroissant il est nécessaire de fusionner A et B, c'est-à-dire de former une troisième séquence C = (c,, c,, . . . , c. ), également triée par ordre non décroissant, de telle sorte que chaque ciin C appartienne à A ou B et chaque ai et chaque bi apparaissent exactement une fois en C. En informatique, la fusion se produit dans une variété de contextes, y compris les applications de bases de données en particulier et la gestion de fichiers en général. Beaucoup de ces applications, bien sûr, impliquent la fusion de données non numériques. De plus, une fois la fusion terminée, il est souvent nécessaire de supprimer les entrées en double de la séquence résultante. Un exemple typique est la fusion de deux listes de diffusion triées chacune par ordre alphabétique. Ces variantes n'offrent aucune nouvelle idée et peuvent être traitées assez facilement une fois le problème de base énoncé ci-dessus résolu. La fusion est très bien comprise dans le modèle de calcul séquentiel et un algorithme simple existe pour sa résolution. Dans le pire des cas, lorsque r = s := n, disons, l'algorithme s'exécute en un temps O(n). Ceci est optimal puisque chaque élément de A et B doit être examiné au moins une fois, rendant ainsi R(n) étapes nécessaires pour fusionner. Notre objectif dans ce chapitre est de montrer comment le problème peut être résolu sur une variété de modèles de calcul parallèles. Compte tenu de la borne inférieure qui vient d'être mentionnée, il convient de noter que le temps R ( n / N ) est nécessaire à tout algorithme de fusion parallèle utilisant N processeurs. Nous commençons dans la section 3.2 en décrivant une architecture parallèle spécialisée pour la fusion. Un algorithme parallèle pour le modèle CREW SM SIMD est présenté dans la section 3.3 qui est adaptatif et optimal en termes de coût. Puisque l'algorithme invoque une procédure séquentielle pour la fusion, cette procédure est également décrite dans la section 3.3. 11 : est montré dans la section 3.4 comment les opérations de lecture simultanée peuvent être supprimées de l'algorithme parallèle de la section 3.3 en le simulant sur un ordinateur EREW. Enfin, un algorithme adaptatif et optimal pour le modèle EREW SM SIMD est présenté dans la section 3.5 dont le temps d'exécution est plus petit que celui de la simulation dans la section 3.4. L'algorithme

est basé sur une procédure séquentielle pour trouver la médiane de deux séquences triées, également décrite dans la section 3.5.

3.2 A N E T O R K POUR M E R G I N G

Dans le chapitre 1, nous avons vu que des architectures parallèles spécialisées peuvent être obtenues de l'une des manières suivantes :

(i) en utilisant des processeurs spécialisés avec un réseau d'interconnexion conventionnel, (ii) en utilisant un réseau d'interconnexion conçu sur mesure pour relier des processeurs standard, ou (iii) en utilisant une combinaison de (i) et (ii). Dans cette section, nous adopterons la troisième de ces approches. La fusion sera réalisée par un ensemble de processeurs très simples communiquant via un réseau spécialisé. Cette architecture parallèle spécialisée est connue sous le nom de réseau de fusion (r, s). Tous les processeurs à utiliser sont identiques et sont appelés comparateurs. Comme illustré par la figure 3.1, un comparateur reçoit deux entrées et produit deux sorties. La seule opération qu'un comparateur est capable d'effectuer est de comparer les valeurs de ses deux entrées, puis de placer la plus petite et la plus grande des deux sur ses lignes de sortie supérieure et inférieure, respectivement. A l'aide de ces comparateurs, nous procédons à la construction d'un réseau qui prend en entrée les deux séquences triées A = et B = et produit en sortie une seule séquence triée C = . La présentation suivante est grandement simplifiée en faisant deux hypothèses : 1. les deux séquences d'entrée sont de même taille, c'est-à-dire r = s = n >, 1, et 2. n est une puissance de 2.

Nous commençons par considérer la fusion des réseaux pour les trois premières valeurs de n. Lorsque n = 1, un seul comparateur suffit clairement : Il produit en sortie ses deux entrées en

Seconde. 3.2 Un réseau pour fusionner

ordre trié. Lorsque n = 2, les deux séquences A = et B = sont correctement fusionnés par le réseau de la Fig. 3.2. Cela se vérifie facilement. Le processeur P compare le plus petit élément de A au plus petit élément de B. Sa sortie supérieure doit être le plus petit élément de C, c'est-à-dire c. De même, la sortie inférieure de P , doit être c,. Une comparaison supplémentaire est effectuée par P, pour produire les deux éléments du milieu de C. Lorsque n = 4, nous pouvons utiliser deux copies du réseau de la Fig. 3.2 suivies de trois comparateurs, comme le montre la Fig. 3.3 pour A = <3 ,5,7,9>et B = <2,4,6,8>. En général, un réseau (n, n)-fusion est obtenu par la construction récursive suivante. Premièrement, les éléments impairs de A et B, c'est-à-dire et , sont également fusionnés à l'aide d'un réseau de fusion (n/2,n/2) pour produire :une séquence .La séquence finale est maintenant obtenu à partir de CI = dl,

c2, = en, czi= min(di+ l, ei), et

c,,+ = max(d,+ ,, e,) pour i = I,! . n - 1.

Les comparaisons finales sont effectuées par un rang de n - 1 comparateurs comme illustré sur la figure 3.4. Notons que chacun des réseaux fusionnants (n/2, n/2) est construit en appliquant la même règle de manière récursive, c'est-à-dire en utilisant deux réseaux fusionnants (44, n/4) suivis d'un rang de (n/ 2) - 1 comparateurs. Le réseau de fusion de la figure 3.4 est basé sur une méthode connue sous le nom de fusion impair-pair. Que cette méthode fonctionne en général est montré comme suit. Notez d'abord que dl = min(a,, b,) et en = max(a,, b,), ce qui signifie que c, et c,, sont calculés correctement. Observez maintenant que dans la séquence , i éléments sont inférieurs ou égaux à d. Chacun de ces éléments est un élément impair de A ou de B. Par conséquent, les éléments 2i de A et B sont inférieurs ou égaux à d,, ,. En d'autres termes,

Figure 3.2 Fusion de deux séquences de deux éléments chacune.

Figure 3.3 Fusion de deux séquences de quatre éléments chacune.

1 (voir Fig. 3A), dont la solution est facilement considérée comme t(2n)= 1 + log n. C'est nettement plus rapide que le meilleur, à savoir, O(n), temps d'exécution réalisable sur un ordinateur séquentiel. (ii) Nombre de processeurs. Ici, nous sommes intéressés à compter le nombre de comparateurs nécessaires pour fusionner impair-pair. Soit p(2n) le nombre de


Voir la vidéo: #168. Finish of 6- u0026 10-Day Race New York May 2, 2018 (Janvier 2022).