Noticias

Princont II ScStr - Historia

Princont II ScStr - Historia

Princeton II

(ScStr: dp. 1370; 1. 177'6 ", b. 32'8"; dr. 25'9 "; s. 8 k., A. 4 8"
58 quilates. Sg., 6 32 pdr. coche.)

El segundo Princeton, un barco construido por clipper, fue depositado en junio de 1851 en Boston Navy Yard; launehel en octubre de 1851

patrocinado por el teniente Edward R. Thompson y el comisionado el 18 de mayo de 1852 en Boston, Comdr. Sidney Smith Lee al mando.

Algunas de las maderas utilizables del primer Princeton se incorporaron al nuevo casco del segundo Princeton. Una vez completado el casco en Boston, Princeton procedió el 1 de mayo de 1852 a Baltimore, donde se instaló su maquinaria en Vulcan Iron Works. Se agregaron nuevas calderas y hélices, pero se conservaron los motores originales del diseño "Ericsson semi eyelinder". Permaneció en Baltimore hasta el 18 de noviembre cuando partió hacia Norfolk y llegó el mismo día.

Princeton fue equipado para el servicio con el escuadrón del comodoro Perry en el Lejano Oriente y zarpó el 18 de noviembre de 1852 desde Baltimore para reunirse con Mississippi frente a Annapolis. En el camino por la bahía de Chesapeake, desarrolló problemas con la caldera y permaneció en Norfolk mientras Mississippi continuaba sin ella. Fue dada de baja el 1 de enero de 1853 en Norfolk.

De julio a septiembre de 1853, Princeton sirvió como buque insignia del Escuadrón del Este bajo el mando del comodoro Shubriek, que era responsable de proteger las pesquerías de la costa de Nova Seotia. Luego, Princeton regresó a Nueva York después de completar esta asignación, donde permaneció hasta el 31 de octubre de 1854 y luego se puso en marcha para el servicio en el Golfo de México y las Indias Occidentales. Regresó a Norfolk el 10 de junio de 1855 y fue colocada en ordinario.

En 1857, Princeton fue llevada a Filadelfia, donde estuvo estacionada como barco receptor hasta el 9 de octubre de 1866 y luego fue vendida.


Princont II ScStr - Historia

Una constelación ubicada entre Piscis y Tauro y representada como un carnero. En la mitología griega, Aries era un carnero. vellón de oro regalado por Hermes a Nephele, la esposa abandonada del rey Tesalia, para que pudiera salvar a sus dos hijos de la ira de Ino, su madrastra. Con la hija de Nephele, Helle, y su hijo, Phrysux, en su espalda, Aries voló por los aires y se dirigió hacia el reino de Colchis en la costa este del Mar Negro. Mientras el carnero pasaba por el estrecho que separaba Europa de Asia, Helle cayó al agua y se ahogó. A partir de entonces, en la antigüedad, el estrecho se conocía como el Helesponto y ahora se llama Dardanelos.

Con Phryxus todavía a bordo, Aries continuó su vuelo iluminado hacia el este. Cuando finalmente estuvo a salvo en Colchis, Phryxus mató a Aries como sacrificio a Júpiter. El vellón dorado del carnero se colocó luego en una arboleda sagrada custodiada por un dragón insomne.

La palabra del destino de Aries llegó a Tesalia y finalmente impulsó la expedición de Jason en busca del vellocino de oro. En consecuencia, el joven héroe contrató al maestro constructor de barcos, Argos, para que construyera una embarcación adecuada para el viaje. Nombrado Argo en honor a su constructor, el barco resultante llevó a Jason y sus compañeros, los Argonautas, en uno de los viajes más aventureros y conocidos de la antigüedad, rivalizando con la emoción de la prolongada lucha de Ulises por regresar a Ítaca y el suspenso de Noé. s 40 días en el Arca. De hecho, algunos estudiosos de la literatura antigua han llegado a la conclusión de la similitud de los nombres de los dos barcos y de incidentes paralelos en sus historias, que la saga de Argo se inspiró en el relato del Arca de Génesis.

(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 pdr. R.)

El primer Aries se colocó en 1861 en Sunderland, Inglaterra, en el patio de Deptford de James Laing. Construido durante la Guerra Civil Estadounidense con la esperanza de que fuera comprado por personas que planeaban romper el bloqueo del sur de la Armada de la Unión, este vapor de tornillo con casco de hierro se completó en 1862 y se vendió ese mismo año a Frederic Peter Obicino de Londres. Inglaterra. Fue revendida, aparentemente en algún momento de 1863, a la firma cubana V. Mala & amp Fie. de La Habana.
Casi ningún registro de su carrera como corredora del bloqueo parece haber sobrevivido, pero sabemos que Aries entró en ese negocio arriesgado, ya que un informe de la Confederación sobre las exportaciones de algodón entre el 1 de noviembre de 1862 y el 31 de mayo de 1863 afirma que sacó 740 toneladas de algodón. de Wilmington, Carolina del Norte, o de Charleston, Carolina del Sur. Se desconoce el número de sus viajes al sur y, en un caso, sus esfuerzos para abastecer a la Confederación terminaron el 28 de marzo de 1863.

Poco después de la medianoche, los vigías del barco de vapor Stettinhers, un antiguo corredor de bloqueo ahora, luego de la captura, convirtieron a Aries con un bloqueador en Bull's Bay, Carolina del Sur, tratando de atravesar el bloqueo con un cargamento de licor. La cañonera sinfín Union inmediatamente levó anclas y la persiguió. Cuando el corredor estuvo dentro del alcance, Stettin abrió fuego contra Aries y continuó la persecución hasta que el agua del banco la obligó a anclar. Al amanecer, el oficial al mando de Stettin, el maestro en funciones Edward F. Devens, vio que su presa había desembarcado en el extremo sur de Petrel Bank. Inmediatamente bajó dos botes y "... tomó el mando en persona. Subió a bordo y tomó posesión de ella como premio para el gobierno de los Estados Unidos". Dado que el corredor de bloqueo estaba encallado en la popa, Devens hizo que su cargamento se desplazara hacia adelante y el vapor varado flotó libremente con la marea creciente.

Devens llevó a Aries vía Charleston a Port Royal, donde el contralmirante Samuel Francis Du Pont declaró que ella "... es el ejemplo más perfecto de una corredora de bloqueo que hemos visto hasta ahora: sus mástiles bajan en una onda peculiar inventada para este mismo propósito". Ordenó que se dirigiera al norte para su adjudicación en la corte del almirantazgo y, como Devens estaba enfermo, lo separó de Stettin y lo puso a cargo del premio para el viaje a Boston, donde fue condenada y comprada allí por la Marina el 20 de mayo de 1863.

Mientras Aries se preparaba para el servicio en la Marina de la Unión, el teniente Charles W. Read, CSN, en el premio Clarence, capturó la barca que Tacony le cambió a su tripulación como un mejor barco y ser un crucero hacia el norte y hacia el Nuevo Costa de Inglaterra en la que aterrorizó a los barcos de la Unión y asustó a las ciudades costeras del norte. Para calmar el clamor de los ciudadanos asustados por protección de este "pirata rebelde", el secretario de Marina Gideon Welles envió varios buques de guerra en busca del asaltante comercial y prometió que Aries pronto se uniría a ellos. Sin embargo, antes de que Aries estuviera listo para el mar, otros buques de guerra de la Unión se acercaron a Read y lo obligaron a entregar su fuerza. Aries fue puesto en comisión en el Boston Navy Yard el 25 de julio de 1863, Vol. Interino. Teniente Edward F. Devens al mando.

El día de su puesta en servicio, el vapor de hélice zarpó hacia Port Royal, Carolina del Sur, con 200 hombres, marines para ayudar al contralmirante John A. Dahlgren a reunir sus fuerzas para un nuevo ataque a Fort Wagner, que protegía los accesos hacia el mar a Charleston. Después de desembarcar a sus pasajeros, se puso en marcha de nuevo hacia la Fortaleza Monroe, Virginia, con la noticia de que el carbón de Dahlgren se había agotado y que "... no se puede enviar un suministro demasiado pronto". Desde Hampton Roads, Aries se dirigió a Nueva York, donde subió a bordo de 200 hombres más para el Escuadrón de Bloqueo del Atlántico Sur, antes de dirigirse hacia el sur una vez más.

Después de entregar estos reemplazos en Port Royal, embarcó a unos 100 pasajeros, en su mayoría marineros que estaban demasiado enfermos para permanecer en una zona de combate u hombres cuyos períodos de alistamiento habían expirado. Sin embargo, durante su viaje hacia el norte, se encontró con una terrible tormenta frente a Cape Lookout, Carolina del Norte, el 27 de agosto y sufrió una falla en el motor mientras luchaba contra las olas. El viento era tan fuerte que Comdr. John J. Almy, el oficial al mando de Connecticut que se topó por casualidad con el discapacitado Aries el 1 de septiembre, describió el clima como peor "... de lo que recuerdo haberlo visto en el transcurso de mi servicio marítimo de más de veintiún años. años. "El oficial al mando de otro buque de guerra de la Unión, Pocahantas declaró que" ... si el huracán. hubiera continuado con fuerza incesante durante mucho más tiempo, este barco [Pocahontas] no podría haberlo sobrevivido. Connecticut llevó a Aries a remolque y procedió a través de Beaufort a Hampton Carreteras a las que llegaron el día 6. Dos días después, llegó el vapor de tornillo sinfín Daylight y remolcó a Aries a Baltimore para su reparación.

A principios de noviembre, cuando el trabajo de jardinería en Aries se acercaba a su finalización, el secretario de la Marina, Gideon Welles, ordenó a Devens que se dirigiera con ella a las aguas de Wilmington, Carolina del Norte, para servir en el Escuadrón de Bloqueo del Atlántico Norte. Su primera acción en esta nueva asignación comenzó al amanecer del 6 de diciembre cuando uno de sus vigías vio un vapor encallado en Western Bar cerca de Smith's Island, Carolina del Norte.

Aries se puso en marcha de inmediato y se dirigió hacia el corredor de bloqueo varado que pronto resultó ser el nuevo vapor británico, con casco de hierro y propulsión a tornillo, Ceres, que había salido de las Bermudas el 3 y había tocado fondo al intentar deslizarse hacia el río Cape Fear en algún momento en el noche del 5 y 6. Cuando el bajío de agua obligó a Aries a levantarse, Devens lanzó dos botes que continuaron hacia Ceres en llamas.

Al abordar el premio, los grupos en bote se pusieron a trabajar con cubos de fuego para apagar las llamas y se mantuvieron firmes a pesar del fuego de las baterías del sur en tierra. Mientras tanto, los oficiales a cargo de las embarcaciones irrumpieron en la cabina del capitán y encontraron una que contenía inteligencia de gran valor.
Esa noche, la marea creciente reflotó a Ceres y, temprano a la mañana siguiente, los observadores de los bloqueadores pudieron verla a la deriva hacia el mar. La tripulación de un barco de Maratango abordó el premio, la ancló en agua potable y, con hombres de Aries,

Violet y Connecticut, apagaron los incendios restantes. Luego, Aries remolcó al otrora corredor de bloqueo a Beaufort, la primera parada del premio en un viaje a través de Hampton Roads a Washington para una serie de papeles.Finalmente, después de la reunión con el manejador de bluejackets, las fiestas en bote
regresó a la adjudicación.

Después de entregar a Ceres a Beaufort, Aries volvió al deber de bloqueo frente a Wilmington. Al amanecer del 20 de diciembre, los hombres a bordo del barco avistaron vapor saliendo de un barco extraño, a unas cuatro millas al este, sureste. Poco después, apareció el gobernador Buckingham, bloqueador de la Unión, cerrando el premio potencial mientras Aries se unía a la persecución. A medida que se acercaba a los bajíos, Aries ancló en cuatro brazas de agua y envió un bote armado con un grupo de abordaje al corredor del bloqueo.

Se enteraron de que la desconocida era la corredora del bloqueo confederada Antonica, que anteriormente había ganado un renombre considerable bajo los nombres de Lamar y Herald jugando al gato y el ratón con los bloqueadores federales mientras llevaba carga de contrabando a los puertos del sur y escapaba al mar, cargada cada vez. con entre 1.000 y 1.200 fardos de algodón. La noche anterior había estado tomando el papel del ratón cuando encalló mientras intentaba deslizarse en el río Cape Fear con un cargamento que consistía principalmente en bebidas alcohólicas. Después de que los breves esfuerzos para hacer juegos de palabras libres resultaron inútiles, el capitán W. F. Adair, el comandante del vapor, ordenó a su tripulación que abandonara el barco y se dirigiera a la tierra más cercana en botes, con la esperanza de llegar a la costa antes del amanecer. Sin embargo, fueron descubiertos por el gobernador de Buckingham, bloqueador de la Unión, y capturados por ese vapor y el remolcador federal Violet.

Los hombres de Aries y de varios otros barcos de la Unión permanecieron a bordo de Antonia durante los días siguientes trabajando en vano para reflotar el premio. Cuando la crecida del agua en el casco del vapor en tierra y dañado dejó en claro que el esfuerzo no podría tener éxito, los marineros federales finalmente abandonaron el barco en la víspera de Navidad.

La siguiente aventura de Aries llegó a fines de la primera semana de 1864. Poco después del amanecer del 7 de enero, mientras su barco se encontraba en la entrada de Little River, NC, Devens "... descubrió un extraño vapor de pie junto al ESE, con el USS Montgomery persiguiéndola ... "Aries se puso en marcha de inmediato para unirse a la persecución y se adelantó al extraño. El tiempo era malo y, alrededor de las 8:20 a.m., una densa niebla se asentó y ocultó el vapor que huía. Cuando se levantó un poco más de una hora más tarde, la persecución estaba considerablemente más cerca de lo que había estado la última vez que la vio. Aries abrió fuego y su disparo cayó cerca del objetivo. Esta precisión llevó al corredor de bloqueo a arrastrar "... hacia el oeste ..."
Nunca, el vapor encalló cerca de North Inlet, cerca de Georgetown, Carolina del Sur y su tripulación escapó a la costa. Cerrándose rápidamente, Aries llegó a anclar para evitar quedarse varada y "... inmediatamente envió dos botes armados para abordar el vapor y sacarlo." incendiado y regresó a Aries con la noticia de que el corredor del bloqueo era el vapor confederado Dare. Desafortunadamente, el segundo cúter de Aries se hundió en las olas durante la expedición, lo que resultó en la captura de dos de sus oficiales y siete hombres alistados por las fuerzas confederadas. Un barco de Montgomery también zozobró con la pérdida de 2 oficiales y 14 hombres que fueron encarcelados.

En la noche del 10 de enero, el teniente Devens recibió órdenes de enviar sus botes para ayudar a la Edad de Hierro, que había encallado esa mañana mientras intentaba reflotar el corredor de bloqueo Bendigo cerca de Lockwood's Folly Inlet. Alrededor de la medianoche, sus botes, junto con algunos de Minnesota, Daylight y el gobernador Buckingham, recibieron a los oficiales y hombres del condenado vapor sinfín de la Unión.

A la mañana siguiente, el 11 de enero, Aries se unió a Minnesota, Daylight y al gobernador Buckingham en la persecución del corredor de bloqueo Ranger que intentaba ingresar al río Cape Fear con un cargamento de Newcastle upon Tyne, Inglaterra. Los barcos del Norte hicieron varar el vapor donde fue abandonado por su tripulación. Sin embargo, sus esfuerzos por reflotar al Ranger como premio fueron detenidos por los francotiradores sureños "... cuyo fuego dominaba completamente sus cubiertas [Ranger]". Como era imposible tomar posesión de Ranger, los marineros de la Unión la quemaron.

Mientras se llevaban a cabo estas acciones, se divisó humo negro en dirección a la ensenada de Shallotte. Aries, que había sido retirada de su puesto en ese trimestre la noche anterior, fue enviada a investigar. Pronto se encontró con "... un corredor de bloqueo de doble hélice de buen aspecto, parecido a Ceres, varado y en llamas entre Tubb's y Little River Inlets ...". Una vez más, los francotiradores sureños impidieron que los partidos de la Unión subieran al vapor, apagaran las llamas y tomaran posesión del premio.

Al día siguiente, después de que los fusileros se retiraron, Devens logró abordar el barco y se enteró de que era Vista, un barco hermano de Ceres. Sin embargo, los graves daños a su casco hicieron imposible reflotar el corredor de bloqueo, y sus dos anclas eran su único botín.

La siguiente acción animada de Aries llegó dos meses después. El 14 de marzo, ella y el estado de Georgia condujeron un barco de vapor de ruedas laterales grande, largo y bajo a tierra en el punto oeste de Oak Island, cerca de Western Bar, frente a Wilmington. Su acercamiento al premio potencial no identificado, que se parecía al corredor de bloqueo de Carolina del Norte recientemente capturado A. D. Vance, terminó con los bombardeos de las baterías de la costa sur.

Gran parte de la primavera y el verano, Aries estuvo fuera de acción y se sometió a reparaciones, pero regresó al servicio en Wilmington en septiembre. El 28 de octubre, ayudó a Eolus y Calypso a capturar al vapor inglés Lady Sterling. Nuevamente en la noche del 6 de noviembre, Aries "... descubrió un extraño vapor ..., inmediatamente lo persiguió, abrió fuego contra el extraño y arrojó cohetes hacia el este, indicando su rumbo. Sin embargo, a pesar de la ayuda en la persecución de Marantanza y Eolus y el corredor del bloqueo quedaron varados brevemente, una marea creciente y una habilidad marítima inteligente permitieron al vapor escapar a un lugar seguro en Wilmington.

El 3 de diciembre, Aries se unió a otros cinco barcos en el bombardeo del barco de vapor Ala que el bloqueador de la Unión Emma había encallado en Marshall Shoal, Smith's Island, NC, "... colocándola en una condición que hacía imposible sacarla. .. "

Años de trabajo y la resistencia del tedio de los marineros que tripulaban los buques de guerra de la Unión en servicio de bloqueo estaban finalmente estrangulando a la Confederación. No solo se destruían y capturaban más y más corredores de bloqueo, sino que las operaciones conjuntas del Ejército y la Armada estaban arrebatando un puerto tras otro desde el sur. Cuando el año 1864 se acercaba a su fin, solo un puerto importante permanecía en manos confederadas, Wilmington, donde Aries había servido casi exclusivamente desde que ingresó a la Union Navy. Y, en ese momento, los planes estaban muy avanzados para un ataque anfibio contra Fort Fisher, que custodiaba ese último centro de actividad marítima del sur.

Aries estaba en la división de reserva de un gran grupo de trabajo que partió de Beaufort el 18 de diciembre y se dirigió a la desembocadura del río Cape Fear. Las tropas desembarcaron en la víspera de Navidad y amenazaron seriamente a Fort Fisher, pero el comandante del ejército, el general de división Benjamin F. Butler, temía que sus tropas no pudieran hacer frente a las fuerzas del sur que defendían las obras confederadas. Como resultado, ordenó a sus hombres que volvieran a embarcar.

Insatisfecho con la falta de resolución de Butler, el contralmirante David Dixon Porter, el comandante de las fuerzas navales en la operación, presionó a Washington para un nuevo ataque. A principios de enero de 1865, se reunió una fuerza poderosa para un nuevo esfuerzo contra Fort Fisher. Aries, aunque nuevamente asignado a la división de reserva, ayudó a desembarcar tropas el día 13 y, una vez que estuvieron en tierra, apoyó a las tropas durante los dos días siguientes. Los defensores finalmente capitularon el día 15, cerrando al Sur de toda ayuda exterior. La Confederación ahora estaba condenada.

Después de apoyar las operaciones de limpieza en las cercanías de Wilmington durante el resto de enero y todo febrero, Aries partió de Hampton Roads en la mañana del 5 de marzo y se dirigió a Key West, Florida, para unirse al Escuadrón de Bloqueo del Este del Golfo. Sin embargo, cuando llegó a aguas de Florida, su maquinaria requirió que permaneciera en el puerto para ser reparada hasta mayo. Luego fue enviada al mar para cruzar La Habana, Cuba, para interceptar Stonewall en caso de que el asaltante confederado intentara escapar al mar. Después de que el oficial al mando de Stonewall, el capitán Thomas Jefferson Page, se enteró del final de la guerra y entregó su barco a las autoridades españolas, Aries regresó a Key West. El 1 de junio, se le ordenó ir a Boston, donde fue dada de baja en el Boston Navy Yard el 14 de ese mes.

Vendido en una subasta pública en Boston el 1 de agosto de 1865 a Sprague, Soule & amp Co., el vapor fue documentado el 12 de agosto de 1865 como SS Aries. Conservó su nombre original a lo largo de una larga carrera en el servicio comercial transportando carga entre los puertos de Filadelfia y Nueva Inglaterra. Fue vendida en 1908 para desguace.


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

El mejor desatascador de inodoro que he usado. Antes de comprar esto, estaba usando el modelo estándar. Siempre que teníamos una obstrucción (que era a menudo), me tomaba entre 2 horas y toda la noche desatascarla. En el peor de los casos, tendría que dejarlo reposar durante la noche e intentarlo de nuevo a la mañana siguiente. No con este desatascador. Cuando se usa correctamente, puedo desatascar el inodoro en entre 5 y 10 minutos en lugar de varias horas debido a la poderosa presión de aire / agua y la fuerza de succión del desatascador del inodoro Korky Beehive Max. Recomiendo encarecidamente este desatascador y obtiene 5 estrellas perfectas de mi parte. ¡No te decepcionará!

El mejor desatascador de inodoro del mercado

El mejor desatascador de inodoro que he usado. Antes de comprar esto, estaba usando el modelo estándar. Siempre que teníamos una obstrucción (que era a menudo), me tomaba entre 2 horas y toda la noche desatascarla. En el peor de los casos, tendría que dejarlo reposar durante la noche y volver a intentarlo a la mañana siguiente. No con este desatascador. Cuando se usa correctamente, puedo desatascar el inodoro en entre 5 y 10 minutos en lugar de varias horas debido a la poderosa presión de aire / agua y la fuerza de succión del desatascador del inodoro Korky Beehive Max. Recomiendo encarecidamente este desatascador de inodoro y obtiene 5 estrellas perfectas de mi parte. ¡No te decepcionará!

Compra este estilo y marca para sanitarios.

Durante años utilicé el desatascador de fondo plano y muchas veces tuve problemas para desconectar un inodoro. Luego investigué y descubrí que estaba usando el estilo equivocado. Este modelo funciona muy bien.

Parece de muy buena calidad, seguro que funcionará bien, no he tenido que usarlo todavía, no hay prisa porque todo está funcionando bien. Supera el émbolo de tipo redondo que no funcionará en la forma de ojo de cerradura del cuenco actual. Este Korky debería hacer el trabajo cuando sea necesario.

Проверенная покупка: Да | Состояние товара: новые | Продавец: max_warehouse


Princont II ScStr - Historia

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

hex3_hex0 [14: 8] // asignar HEX2 =

hex3_hex0 [22:16] // asignar HEX3 =

hex3_hex0 [30:24] asignar HEX4 = 7'b1111111 asignar HEX5 = 7'b1111111 asignar HEX3 = 7'b1111111 asignar HEX2 = 7'b1111111 asignar HEX1 = 7'b1111111 asignar HEX0 = 7'b1111111 // ====== =============================================== / / Controlador de audio para AVALON bus-master // ====================================== =============== // calcula DDS para la onda sinusoidal y llena el audio FIFO // lee audio FIFO y lo repite // DEBE configurar (en Qsys) el módulo de configuración de audio: // - - Entrada de línea a ADC // - Desmarque ambas opciones de bypass // La señal audio_input_ready sube por un // ciclo cuando hay nuevos datos de entrada de audio // - // Los datos de 32 bits están en // right_audio_input, left_audio_input / / Cada escritura requiere datos de 32 bits en // right_audio_output, left_audio_output reg [31: 0] bus_addr // Dirección de Avalon // ver // ftp://ftp.altera.com/up/pub/Altera_Material/15.1/University_Program_IP_Cores/ Audio_Video / Audio.pdf // para direcciones cable [31: 0] audio_base_address = 32'h00003040 // dirección Avalon cable [31: 0] au dio_fifo_address = 32'h00003044 // Dirección Avalon +4 offset wire [31: 0] audio_data_left_address = 32'h00003048 // Dirección Avalon +8 wire [31: 0] audio_data_right_address = 32'h0000304c // Dirección Avalon +12 reg [3: 0] bus_byte_enable // máscara de lectura / escritura de bytes de cuatro bits reg bus_read // alto cuando se solicitan datos reg bus_write // alto cuando se escriben datos reg [31: 0] bus_write_data // datos para enviar al cable del bus Avalog bus_ack // El bus Avalon sube esto cuando se hace cable [31: 0] bus_read_data // datos de Avalon bus reg [30: 0] timer reg [3: 0] state wire state_clock wire reset // SW [9] deshabilita la máquina de estado para que // HPS se haya completado control de la interfaz de audio asignar reset =

CLAVE [0] | SW [9] // palabras libres actuales en la interfaz de audio reg [7: 0] fifo_space // verificación de depuración de espacio asignar LEDR = FIFO_space // entrada / salida de audio del módulo de audio FIFO reg [15: 0] right_audio_input, left_audio_input reg audio_input_ready wire [15: 0] right_audio_output, left_audio_output // Para bucle de retorno de audio o filtrado, asigne right_audio_output = SW [1]? right_filter_output: right_audio_input asignar left_audio_output = SW [0]? diezmated_filter_300_out: left_audio_input // señal de actualización DDS para probar reg [31: 0] dds_accum // DDS LUT wire [15: 0] sine_out // actualizar el acumulador de fase // sincronizar con la velocidad de datos de audio (48kHz) usando la señal audio_input_ready siempre @ (posedge CLOCK_50) comenzar // CLOCK_50 // Fout = (sample_rate) / (2 ^ 32) * // luego Fout = 48000 / (2 ^ 32) * (2 ^ 25) = 375 Hz if (audio_input_ready) dds_accum> 24) // finaliza la lectura bus_read 8'd2) begin // state 8'd0) begin // estado = 0 fprintf ('.b% 1d (18''sd% d), n', i, fix (2 ^ 16 * b (i))) else fprintf ('.b% 1d (-18' ' sd% d), n ', i, fix (-2 ^ 16 * b (i))) end end for i = 2: length (a) if a (i)> = 0 fprintf (' .a% 1d (18''sd% d), n ', i, fix (2 ^ 16 * a (i))) else fprintf (' .a% 1d (-18''sd% d), n ', i , arreglar (-2 ^ 16 * a (i))) end end fprintf ('.state_clk (CLOCK_50), n') fprintf ('.audio_input_ready (audio_input_ready), n') fprintf ('.reset (restablecer) n ') fprintf (') // fin del filtro n ') disp (' ') * / // === fin ===================== ===============


Plataforma MBI® en línea como estrategia de intercambio de conocimiento entre la bioindustria y la universidad en Colombia

Investigadores Icesi: Nelson Caicedo (CoI), María Francisca Villegas (CoI)

Esta propuesta se basa en colaboraciones de investigación previas entre ICESI, que es pionero en la formación de Ingeniería Bioquímica en Colombia, y UCL Biochemical Engineering en el Reino Unido, el grupo académico de bioprocesamiento más grande del mundo. Utilizará la capacitación modular posterior a la experiencia establecida por UCL para el programa de industrias de bioprocesos (MBI®) para crear, compartir e implementar un nuevo módulo eMBI en biotecnología industrial (IB) probado y consultado en etapas críticas durante el desarrollo de materiales con Levepan, una empresa reconocida a nivel nacional Empresa con sede en IB. Con este módulo eMBI pretendemos consolidar las capacidades de investigación actualmente en desarrollo por la beca Newton-Caldas Institutional Links, otorgada a principios de este año, ya que para esta materia se requiere tanto el conocimiento como la formación tecnológica de las generaciones futuras.

IB se considera el motor económico en salud, biocombustibles y productos químicos renovables y en los sectores alimentario y agrícola mediante la explotación de fuentes renovables. Los países con grandes recursos naturales y biológicos, como Colombia, tienen un enorme potencial para explotarlos de manera sostenible. Por lo tanto, se requiere un trabajo sinérgico entre la industria, la academia y el gobierno para fortalecer la capacidad nacional de investigación, desarrollo tecnológico e innovación. UCL e ICESI iniciaron un trabajo de investigación colaborativo, que buscamos expandir a través de esta propuesta hacia el intercambio de conocimientos y la construcción de una capacidad de formación que sea apoyada por el sector industrial. El proyecto ha sido diseñado de tal manera que puede ser autosustentable y cubrir otros temas de ingeniería a mediano y largo plazo.

Colaboradores: UCL - Levapan

Financiador: RAE - Minciencias

Fechas: marzo 2017 - marzo 2019

Esta dirección de correo electrónico está protegida contra spambots. Necesita activar JavaScript para visualizarla.

Esta dirección de correo electrónico está protegida contra spambots. Necesita activar JavaScript para visualizarla.


Bphs Santhanam Vol 2

Este documento fue subido por el usuario y confirmaron que tienen permiso para compartirlo. Si es el autor o el propietario de los derechos de autor de este libro, infórmenos mediante este formulario de informe de la DMCA. Informar DMCA

Visión general

Más detalles

16. DaSAS (FEr.I) ODSIOF PLANETS '

Vimsottari, Attottsrl 'Shodasottari, Paochottari, Dwiraptatisama, Shasti' lhbbdt & r, Chaturshitisama, bayani, Shotttlslr $ igaoa'Kalachakra, Chara, Sthira, KCndts, BrahmgrahaMandook, Yogra, Yogragardha odhyr, Alhtavargpr Pachaka, Tara Das88 e ilustraciones y gráficos interactivos que muestran el Dase Psrlodr.

Principios generales, efecto del Temerario del Sol, la Luna, Mrn, Rahu, Júpiter, Saturno 'Mcrcurio' Kctu rad Vonus en el Sistema Yimsottari Dasa 'del ciclousuario de los acontecimientos y la falta de agudeza y la falta de agudeza y la falta de agudeza, el nacimiento de los indivíduos de la energía, el nacimiento de la platinitis. .48, EFECTOS DISTINTIVOS DEL NAKSHATRA DASA O EL DASAS DE LOS SEÑORES DE (YIMSHOTTARIDASA'OF YARIOSHOASES Jto, t

Efectos de los Dasas de los señores de la 2ª, 3ª, 4ª, 5ª, 6ª, 7ª, 8ª, 5ª, 4ª, 1ª y 12ª casas. Comentarios sobre lo desfavorable y auspicioso de las Dasas de los señores del sexto, octavo y decimosegundo, los tbreebad bouses de una carta natal.

de acuerdo con las dignidades e indignidades, la fuerza y ​​disposición de los Antarda, señores con referencia al Ascendente y al señor de Dasa. Medidas correctivas para protegerse de los efectos malignos del Antar. dasas.

soldado americano. EFECTOS DE LAS ANTARDASAS EN EL DAS.4 DE SATURNO 691 Efectos de las Antardas como de Saturno, Mercurio, Ketu, Yenus, el Sol, la Luna, Marte y Júpiter según dignidades e indignidades, fuerza y ​​disposición de los señores Antardasa con referencia al Ascendente y el señor de la Dasa. Remedio para protegerse de los efectos malignos de las dasas de Antarmeasures. 58 EFECTOS DEL MERCURIO

Efectos de la Antártida como de Mercurio, Ketu, Venus. el Sol, la Luna, Marte, Rahu, Júpiter y Saturno de acuerdo con las dignidades, indignidades, fuerza y ​​disposición de los señores de Antarda con referencia al Ascendente y el señor de Dasa. Medidas correctivas para protegerse de los efectos malignos del Antar. dasas. 59. EFECTOS DE LAS ANTARDASAS EN EL DAS.7 DE KETA 717 Efectos de las Antardasas de Ketu, Venus, el Sol, la Luna, Marte, Rahu, Júpiter, Saturno y Mercur-v de acuerdo con las dignidades, indignidades, fuerza y ​​disposición de los Antardas. referencia al Asccndantand señor de la Dasa, Medidas correctivas para evitar los efectos malignos de la Antardasa.

492 49. EFECTOS DEL KALACHAKRA DASA Efectos del Dasa de rasis poseído por el Sol, la Luna, Marte, Mercurio, Júpiter, Venus y Saturno. Los efectos de Dasason son la base del Navamsa de eachrasi.

50. EFECTOS DE TIIE CHARA ETC, DASAS

Principios generales con respecto al juicio de los efectos del Dasa rasis de acuerdo con la fuerza de sus señores, la disposición de los maléficos y benéficos con referencia al Dasa rasi al nacer y en el momento del comienzo del Dasa, las casas Badhaka para los rasis Movible, Fijo y Dual y sus influencia sobre los efectos del Dasa. Efectos del Dasa de un planeta en un rasi enemigo, efectos del Dasa rasis dependiendo de sus condiciones. 51. EJERCICIO DE ANTARDASAS DE PLANETAS. Y RI.S / S EN VIMSOTTARI ET'C. SISTEMAS DASA

Método de cálculo de Antardasas de planetas bajo Vimsottari, Chara y Kendra Dasa, etc. el sistema Kala Chakra Dasa. 52. EFECTOS DE LAS ANTARDASAS EN LA DASA DEL SOL SEGÚN EL SISTEMA VIMSOTTARI DASA 627 Efectos de las Antardas como del Sol, la Luna, Marte Rahu, Júpiter, Saturno, Mercurio, Ketu y Venus, efectos auspiciosos e inapropiados de acuerdo a la fuerza y ​​disposición de las indignidades, referencia al Ascendente y al señor del Dasa.

493 Rcmedialesmedidaspara protegerse del malvado cffier: $ de ths Antardasas.

53 EFECTOS DE LAS ANTARDASAS EN LA DASA DEL TR, IOON

Efectos del Antardas como de la Luna, U "r .. iutru, Júpiter, Saturno, Mercurio, Ketu, Venus y el Sol según dignidades e indignidades, fuerza y ​​disposición del Antardas un señor con referencia al Ascendente y el señor del Dasa. Medidas correctivas para obtener alivio de los efectos malignos de las Antardasas.

54. EFECTOS DEL ANTARDAS EN LA DASA DE MARTE

Efectos de las Antardasas de Marte, Rahu, Júpiter, Saturno, Mercurio, Ketu, Venus, el Sol y la Luna según dignidades e indignidades, longitud y disposición de los Antardasalords con referencias al Ascendente y al señor de la Dasa. Medidas intermedias para obtener alivio de los efectos de los ojos de las Antardasas. .55. EFECTOS EN ANTARDASA ^ SOF RAHU

Efectos de las Antardasas como de Rahu, Júpiter, Saturno, Mercurio, Ketu, Venus, el Sol, la Luna y Marte según dignidad e indignidades, fuerza y ​​disposición de los señores Antardasa con referencia al Aecóndante y al señor de la Dasa. Medidas correctivas para obtener alivio de los efectos malignos de Antardasas. 56. EFECTOS DE LAS ANTARDASAS DE JÚPITER Efectos de las Antrdas como de Júpiter, Saturno, Mercurio, Ketu, Venus, el Sol, la Luna, Marte y Rahu en

@, EFECTOS DE LAS TTTEANTARDASAS EN LA DASA DE''ENAS NO Efectos de las Antardas como de Venus, el Sol, la Luna, Marte, Rahu, Júpiter, Saturno, Meniury y Ketu de acuerdo a dignidades e indignidades, fuerza y ​​disposición de los Antardasalord con refcrence a la Ascendente y el señor de la Dasa. Medidas correctivas para protegerse de los efectos malignos del Antar. dasas. 61, EFECTOS DE PRATYANTAR ANTARDASAS DE PLANETAS

Método de cálculo del Pratyantar Dasa con un ejemplo. Efectos del Pratyantar Dasa de los nueve planetas en el Antardasas del Sol, la Luna, Marte, Rahu, Júpiter, Saturno, Mercurio, Ketu y Venus. Tablas que muestran los períodos de todos los Pratyantar Dasas para una referencia rápida.

62, EFECTOS DEL SOOKSHMANTAR DASAS EN LAS PRATYANTARDASAS DE LOS TIARIOS PLANETAS 770 Método de cálculo del Sookshma Dasa en el Pratyantar Dasa de los planetas con un ejemplo. Efectos del SookshmaDasa en el Pratyantar Dasa del Sol, la Luna, Marte, Rahu, Júpiter, Saturno, Mercurio, Ketu y Venus.

63, ¿EFECTOS DE PRANA DASAS EN EL SOOKSHMA 'DASA DE LAS VARTOUSPLINETS? 85 Método de cálculo de prana Dasa de planetas con un ejemplo. Efectos del prana Dasasin el Sookshma Dasas del Sol, la Luna, Marte, Rahu Júpiter, Saturno, Mercurio, Ketu y Venus.

64 EFECTOS DE LAS ANTARDASAS EN EL KALACHAKRA DASA

Método de cálculo del Antardasasof rasis en el Dasaof a rasi bajo el sistema Kala Chakra Dasa con un ejemplo y tablas que muestran el,

65. EFECTOS DE DASAS DE R. SISIN ARIESAMSA 835 Efectos de Dasas de rasis en Aries, Tauro, Géminis, Cáncer, Leo, Virgo, Libra, Escorpio, Sagitario, Capricornio, Acuario y Piscis 66 de Amsas., 4SHTAKAVARGA

Importancia, significación y utilidad del Ashtaka: los efectos de un esquema varga de nacimiento para evaluar correctamente la tabla con el propósito de hacer predicciones. Definición de Karana y Sthana. r '(puntos) de lugares poco propicios marcados por Venus, el Sol, la Luna, Marte, Mercurio, Júpiter, Saturno y el Ascendente. Los lugares propicios el Sol, la Luna, marcados por rekhas (líneas) de' Marte, Mercurio, Júpiter, Venus, Saturno y el Ascendente. Gráficos ilustrativos para todos los planetas '67. TNKONA SODHANA (RECTIFICACIÓN) EN EL ESQUEMA DE ASHTAKAVARCA 867 Necesidad de rectificación de Trikona' Método de rloing the rcctification. con bindui (puntos) y rekhas (líneas) marcados en ellos de acuerdo con la ilustración de las reglas prescritas (con un cuadro de ilustración) de cómo llevar a cabo la trikona rectificatio [en las Ashtakavargas de la Sunetc.

PindaSadhana 'Efectos del Aslttakavarga de Marte - Indicaciones para los efectos favorables o favorables Chakra Sodhana Eka: fq


El diseño y análisis de algoritmos paralelos

Este documento fue subido por el usuario y confirmaron que tienen permiso para compartirlo. Si es el autor o el propietario de los derechos de autor de este libro, infórmenos mediante este formulario de informe de la DMCA. Informar DMCA

Visión general

Más detalles

El diseño y análisis de algoritmos paralelos Selim G. Akl Queen's U nioersity Kingston, Ontario, Canadá

Prentice Hall, Englewood Cliffs, Nueva Jersey 07632

BIBLIOTECA ff C O h K i E S S Biblioteca de C0ngres.s Catalogación- Datos de publicación

Yo, Akl. S e l i m G. T h e d e s i n y n d a n a l y s l s de p a r a l e l a l g o r i t h m s / por S e l m G. A k l. pag. cm. B i b l i o g r a p h y: p. Índice de inc l u d e s. I S B N 0-13-200056-3 1. P a r a l e l p r o r a m m i n g (C o m p u t e r s c i e n c e) 2. A l g o r i t h m s. I. Título. OA76.6.A38 1989 004'.35 - dci9

Supervisión editorial / de producción, Ann Mohan Diseño de portada: Lundgren Graphics Ltd. Comprador de fabricación: Mary Noonan

01989 por Prentice-Hall, Inc. Una división de Simon & Schuster Englewood Cliffs, Nueva Jersey 07632

Reservados todos los derechos. Ninguna parte de este libro puede reproducirse, de ninguna forma ni por ningún medio, sin el permiso por escrito del editor.

Impreso en los Estados Unidos de América 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., México Prentice-Hall of India Private Limited, Nueva Delhi Prentice-Hall of Japan, Inc., Tokio Simon & Schuster Asia Pte. Ltd., Singapur Editora Prentice-Hall do Brazil, Ltda., Rio de Janeiro

A Theo, por hacer que valga la pena.

PREFACIO xi INTRODUCCIÓN 1

1 .I La necesidad de computadoras paralelas, 1 1.2 Modelos de computación, 3 1.2.1 Computadoras SISD, 3 1.2.2 Computadoras MISD, 4 1.2.3 Computadoras SIMD, 5 1.2.3.1 Computadoras SIMD de memoria compartida (SM), 7 1.2.3.2 Computadoras SIMD de interconexión de red, 12 1.2.4 Computadoras MIMD, 17 1.2.4.1 Programación de computadoras MIMD, 19 1.2.4.2 Arquitecturas para propósitos especiales, 20 1.3 Análisis de algoritmos, 21 1.3.1 Tiempo de ejecución, 21 1.3.1.1 Recuento Pasos, 22 1.3.1.2 Límites inferior y superior, 22 1.3.1.3 Aceleración, 24 1.3.2 Número de procesadores, 25 1.3.3 Costo, 26 1.3.4 Otras medidas, 27 1.3.4.1 Área, 27 1.3.4.2 Longitud, 28 1.3.4.3 Periodo, 28 1.4 Expresar algoritmos, 29 1.5 Oranización del libro, 30 1.6 Problemas, 30 1.7 Observaciones bibliográficas, 33 1.8 Referencias, 33

2.1 Introducción, 39 2.2 El problema y un límite inferior, 39 2.2.1 Orden lineal, 39 2.2.2 Rango, 40 2.2.3 Selección, 40 2.2.4 Complejidad, 40 2.3 Un algoritmo secuencial, 41 2.4 Propiedades deseables para algoritmos paralelos , 43 2.4.1 Número de procesadores, 43 2.4.2 Tiempo de ejecución, 44 2.4.3 Costo, 44 ​​2.5 Dos procedimientos útiles, 45 2.5.1 Difusión de un dato, 45 2.5.2 Calcular todas las sumas, 46 2.6 Un algoritmo para paralelo Selección, 49 2.7 Problemas, 53 2.8 Observaciones bibliográficas, 54 2.9 Referencias, 56

3.1 Introducción, 59 3.2 Una red para la fusión, 60 3.3 Fusión en el modelo CREW, 64 3.3.1 Fusión secuencial, 64 3.3.2 Fusión paralela, 65 3.4 Fusión en el modelo EREW, 69 3.5 Un mejor algoritmo para el modelo EREW, 73 3.5.1 Encontrar la mediana de dos secuencias ordenadas, 74 3.5.2 Fusión rápida en el modelo EREW, 76 3.6 Problemas, 78 3.7 Comentarios bibliográficos, 82 3.8 Referencias, 82

CLASIFICACIÓN 4.1 4.2 4.3 4.4 4.5 4.6

Introducción, 85 Una red para la clasificación, 87 Clasificación en una matriz lineal, 89 Clasificación en el modelo CRCW, 93 Clasificación en el modelo CREW, 96 Clasificación en el modelo EREW, 98 4.6.1 Procedimiento de simulación CREW SORT, 98 4.6.2 Clasificación por fusión libre de conflictos, 99 4.6.3 Ordenar por selección, 99

4.8 Comentarios bibliográficos, 107 4.9 Referencias, 108

5.1 Introducción, 1 1 2 5.2 Búsqueda de una secuencia ordenada, 11 3

5.2.1 Búsqueda EREW, 113 5.2.2 Búsqueda CREW, 114 5.2.3 Búsqueda CRCW, 118 5.3 Búsqueda de una secuencia aleatoria, 11 9

5.3.1 Búsqueda en computadoras 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 Búsqueda en un árbol, 121 5.3.2.1 Consulta, 121 5.3.2.2 Mantenimiento, 125 5.3.3 Búsqueda en una malla, 128 5.3.3.1 Consulta, 128 5.3.3.2 Mantenimiento, 132 5.4 Problemas, 132 5.5 Observaciones bibliográficas, 135 5.6 Referencias, 136

GENERACIÓN DE PERMUTACIONES Y COMBINACIONES 141 6.1 Introducción, 141 6.2 Algoritmos secuenciales, 142

Generación de permutaciones lexicográficamente, 143 Permutaciones de numeración, 145 Generación de combinaciones lexicográficamente, 147 Combinaciones de numeración, 148 Generación de permutaciones en paralelo, 150 6.3.1 Adaptación de un algoritmo secuencial, 150 6.3.2 Un generador de permutación adaptativa, 156 6.3.3 Generador de permutación en paralelo para Pocos procesadores, 157 Generación de combinaciones en paralelo, 158 6.4.1 Un generador de combinación rápida, 158 6.4.2 Un generador de combinación adaptable, 162 Problemas, 163 Comentarios bibliográficos, 166 Referencias, 167

7.1 Introducción, 170 7.2 Transposición, 170 7.2.1 Transposición de malla, 171 7.2.2 Transposición aleatoria, 175 7.2.3 Transposición EREW, 177 7.3 Multiplicación matriz por matriz, 178 7.3.1 Multiplicación de malla, 179 7.3.2 Multiplicación de cubo , 181 7.3.3 Multiplicación CRCW, 187 7.4 Multiplicación matriz por vector, 188 7.4.1 Multiplicación de matriz lineal, 188 7.4.2 Multiplicación de árboles, 190 7.4.3 Convolución, 191 7.5 Problemas, 193 7.6 Observaciones bibliográficas, 194 7.7 Referencias , 195

8.1 Introducción, 200 8.2 Resolución de sistemas de ecuaciones lineales, 201 8.2.1 Un algoritmo SIMD, 201 8.2.2 Un algoritmo MIMD, 203 8.3 Encontrar raíces de ecuaciones no lineales, 206 8.3.1 Un algoritmo SIMD, 206 8.3.2 Un algoritmo MIMD , 209 8.4 Resolución de ecuaciones diferenciales parciales, 21 2 8.5 Cálculo de valores propios, 21 5 8.6 Problemas, 221 8.7 Observaciones bibliográficas, 225 8.8 Referencias, 226

CÁLCULO DE TRANSFORMAS DE FOURIER 231 9.1 Introducción, 231 9.1.1 La transformada rápida de Fourier, 231 9.1.2 Una aplicación de la FFT, 232 9.1.3 Cálculo de la DFT en paralelo, 233 9.2 Cálculo directo de la DFT, 233 9.2.1 Cálculo de la Matriz W 234 9.2.2 Cálculo de la DFT, 235 9.3 Un algoritmo FFT paralelo, 238 9.4 Problemas, 242 9.5 Observaciones bibliográficas, 246 9.6 Referencias, 246

10.1 Introducción, 251 10.2 Definiciones, 251 10.3 Calcular la matriz de conectividad, 254 10.4 Encontrar componentes conectados, 256 10.5 Rutas más cortas de todos los pares, 257 10.6 Calcular el árbol de expansión mínimo, 261 10.7 Problemas, 266 10.8 Observaciones bibliográficas, 271 10.9 Referencias, 272

1 1 .I Introducción, 278 11.2 Un problema de inclusión, 279 11.2.1 Punto en polígono, 280 11.2.2 Punto en subdivisión plana, 283 11.3 Un problema de intersección, 285 11.4 Un problema de proximidad, 287 11.5 Un problema de construcción, 288 11.5. 1 Límite inferior, 289 11.5.2 Solución secuencial, 291 11.5.3 Solución de malla de árboles, 292 11.5.4 Solución óptima, 296 11.6 Problemas, 302 11.7 Observaciones bibliográficas, 306 11.8 Referencias, 306

RECORRER ESPACIOS COMBINATORIALES 310

12.1 Introducción, 31 0 12.2 Recorrido secuencial del árbol, 31 2 12.3 Principios básicos de diseño, 31 7 12.3.1 El árbol alfa-beta mínimo, 318 12.3.2 Modelo de cálculo, 319 12.3.3 Objetivos y métodos, 320 12.4 El algoritmo, 323 12.4.1 Procedimientos y procesos, 323 12.4.2 Semáforos, 323 12.4.3 Tablas de puntuación, 324 12.5 Análisis y ejemplos, 327 12.5.1 Puntos de corte paralelos, 327 12.5.2 Requisitos de almacenamiento, 33 1 12.6 Problemas, 336 12.7 Comentarios bibliográficos , 337 12.8 Referencias, 338

DECISIÓN Y OPTIMIZACIÓN

13.1 Introducción, 341 13.2 Cálculo de sumas de prefijos, 341

13.2.1 Una red especializada, 342 13.2.2 Uso de la conexión de desorganización, 343 13.2.3 Sumas de prefijos en un árbol, 346 13.2.4 Sumas de prefijos en una malla, 349 Aplicaciones, 351 13.3.1 Secuenciación de trabajos con fechas límite, 351 13.3 .2 El problema de la mochila, 352 13.3.3 Soluciones de malla, 354 Problemas, 355 Observaciones bibliográficas, 356 Referencias, 357

LA COMPLEJIDAD DE BITS DE LOS CÁLCULOS PARALELOS 14.1 Introducción, 361 14.2 Sumar dos enteros, 363 14.3 Sumar n enteros, 364

14.3.1 Árbol de suma, 364 14.3.2 Malla de suma, 366 14.4 Multiplicación de dos enteros, 366 14.4.1 Árbol de multiplicación, 368 14.4.2 Malla de multiplicación, 369 14.5 Cálculo de sumas de prefijos, 373 14.5.1 Variable en abanico, 373 14.5 .2 Fan-out constante, 374 14.6 Multiplicación de matrices, 374 14.7 Selección, 376 14.8 Clasificación, 381 14.9 Problemas, 382 14.1 0 Observaciones bibliográficas, 384 14.11 Referencias, 386 ÍNDICE DE AUTOR

La necesidad de computadoras cada vez más rápidas no ha cesado desde el comienzo de la era de las computadoras. Cada nueva aplicación parece llevar las computadoras existentes al límite. Hasta ahora, los fabricantes de computadoras han respondido admirablemente bien a la demanda. En 1948, los componentes electrónicos utilizados para construir computadoras podían cambiar de un estado a otro unas 10.000 veces por segundo. El tiempo de conmutación de los componentes de este año es de aproximadamente 1 / 10,000,000,000 de segundo. Estas cifras significan que el número de operaciones que puede realizar una computadora en un segundo se ha duplicado, aproximadamente cada dos años, durante los últimos cuarenta años. Esto es muy impresionante, pero ¿cuánto tiempo puede durar? En general, se cree que la tendencia se mantendrá hasta finales de este siglo. Incluso puede ser posible mantenerlo un poco más mediante el uso de componentes de base óptica o incluso de base biológica. ¿Qué pasa después de eso? Si las aplicaciones actuales y contempladas de las computadoras son una indicación, nuestros requisitos en términos de velocidad de computación continuarán, al menos al mismo ritmo que en el pasado, mucho más allá del año 2000. Ya se necesitan computadoras más rápidas que las disponibles en la actualidad para realizar la enorme cantidad de cálculos necesarios para desarrollar curas para enfermedades misteriosas. Son esenciales para aplicaciones en las que la capacidad humana para reconocer patrones visuales y auditivos complejos debe simularse en tiempo real. Y son indispensables si queremos hacer realidad muchos de los sueños de la humanidad, que van desde la previsión meteorológica fiable a largo plazo hasta los viajes interplanetarios y la exploración del espacio exterior. Ahora parece que el procesamiento paralelo es la forma de lograr estas velocidades de cálculo deseadas. La inmensa mayoría de las computadoras que existen hoy en día, desde las más simples hasta las más poderosas, son conceptualmente muy similares entre sí. Su arquitectura y modo de funcionamiento siguen, más o menos, los mismos principios básicos de diseño formulados a finales de la década de 1940 y atribuidos a John von Neumann. El ingenioso escenario es muy simple y básicamente es el siguiente: una unidad de control obtiene una instrucción y sus operandos de una unidad de memoria y los envía a una unidad de procesamiento, donde se ejecuta la instrucción y el resultado se envía de vuelta a la memoria. Esta secuencia de eventos se repite para cada instrucción. Solo hay una unidad de cada tipo y solo se puede ejecutar una instrucción a la vez.

Con el procesamiento en paralelo, la situación es completamente diferente. Una computadora paralela es aquella que consiste en una colección de unidades de procesamiento, o procesadores, que cooperan para resolver un problema trabajando simultáneamente en diferentes partes de ese problema. El número de procesadores utilizados puede variar desde unas pocas decenas hasta varios millones. Como resultado, el tiempo requerido para resolver el problema por una computadora monoprocesador tradicional se reduce significativamente. Este enfoque es atractivo por varias razones. Primero, para muchos problemas computacionales, la solución natural es paralela. En segundo lugar, el costo y el tamaño de los componentes de la computadora han disminuido tan drásticamente en los últimos años que las computadoras en paralelo con una gran cantidad de procesadores se han vuelto factibles. Y, en tercer lugar, en el procesamiento en paralelo es posible seleccionar la arquitectura paralela que mejor se adapte a resolver el problema o la clase de problemas que se están considerando. De hecho, los arquitectos de computadoras paralelas tienen la libertad de decidir cuántos procesadores se van a utilizar, qué tan poderosos deben ser, qué red de interconexión los une entre sí, si comparten una memoria común, hasta qué punto sus operaciones deben llevarse a cabo. sincrónicamente, y una serie de otros problemas. Esta amplia gama de opciones se ha visto reflejada en los numerosos modelos teóricos de computación paralela propuestos, así como en las diversas computadoras paralelas que se construyeron realmente. El paralelismo seguramente cambiará la forma en que pensamos y usamos las computadoras. Promete poner a nuestro alcance soluciones a problemas y fronteras del conocimiento nunca antes soñadas. La rica variedad de arquitecturas conducirá al descubrimiento de soluciones novedosas y más eficientes para problemas nuevos y antiguos. Por lo tanto, es importante preguntarse: ¿Cómo resolvemos problemas en una computadora paralela? El ingrediente principal para resolver un problema computacional en cualquier computadora es el método de solución o algoritmo. Este libro trata sobre algoritmos para computadoras paralelas. Describe cómo diseñar algoritmos que exploten tanto el paralelismo inherente al problema como el disponible en la computadora. También muestra cómo analizar estos algoritmos para evaluar su velocidad y costo. Los problemas de cálculo estudiados en este libro se agrupan en tres clases: (1) clasificación, búsqueda y problemas relacionados (2) problemas combinatorios y numéricos y (3) problemas que surgen en una serie de áreas de aplicación. naturaleza fundamental. Se muestra cómo se diseña y analiza un algoritmo paralelo para resolver cada problema. En algunos casos, se presentan varios algoritmos que realizan el mismo trabajo, cada uno en un modelo diferente de cálculo paralelo. Los ejemplos se utilizan con la mayor frecuencia posible para ilustrar los algoritmos. Cuando sea necesario, se describe un algoritmo secuencial para el problema en cuestión. Los algoritmos adicionales se describen brevemente en las secciones Problemas y Comentarios bibliográficos. Al final de cada capítulo se proporciona una lista de referencias a otras publicaciones, donde se tratan problemas y algoritmos relacionados. El libro puede servir como texto para un curso de posgrado sobre algoritmos paralelos. Se utilizó en la Queen's University para ese propósito durante el período de otoño de 1987. La clase se reunió durante cuatro horas a la semana durante un período de doce semanas. Una de las cuatro horas se dedicó a las presentaciones de los estudiantes de material adicional, cuya referencia se encuentra en las secciones de Comentarios Bibliográficos. El libro también debería ser útil para los científicos de la computación, ingenieros y matemáticos que deseen aprender sobre paralelismos.

modelos de computación y diseño y análisis de algoritmos paralelos. Se supone que el lector posee los antecedentes que normalmente proporciona un curso introductorio de pregrado sobre el diseño y análisis de algoritmos. La parte más agradable de escribir un libro es cuando uno finalmente tiene la oportunidad de agradecer a aquellos que ayudaron a que la tarea fuera agradable. Cuatro personas merecen un reconocimiento especial: la Sra. Irene LaFleche preparó la versión electrónica del manuscrito con su natural alegría y su inconfundible talento. Los diagramas son el resultado de la experiencia, el entusiasmo y la habilidad del Sr. Mark Attisha. El Dr. Bruce Chalmers ofreció numerosos comentarios mordaces y perspicaces sobre un borrador inicial. El Sr. Thomas Bradshaw proporcionó generosamente asesoramiento y asistencia en asuntos grandes y pequeños. También deseo agradecer las varias sugerencias útiles hechas por los estudiantes en mi clase CISC-867 en Queen's. El apoyo brindado por el personal de Prentice Hall en cada etapa es muy apreciado. Finalmente, estoy en deuda con mi esposa, Karolina, y con mis dos hijos, Sophia y Theo, quienes participaron en este proyecto en más formas de las que puedo mencionar. Theo, en particular, pasó el primer año de su vida examinando, desde un punto de vista ventajoso, cada palabra tal como aparecía en mi bloc de notas. Selim G. Akl Kingston, Ontario

1.1 LA NECESIDAD DE COMPUTADORAS PARALELAS

Una batería de satélites en el espacio exterior está recopilando datos a una velocidad de 101 ° bits por segundo. Los datos representan información sobre el clima, la contaminación, la agricultura y los recursos naturales de la Tierra. Para que esta información se utilice de manera oportuna, debe procesarse a una velocidad de al menos 1013 operaciones por segundo. De vuelta en la tierra, un equipo de cirujanos desea ver en una pantalla especial una imagen tridimensional reconstruida del cuerpo de un paciente en preparación para la cirugía. Necesitan poder rotar la imagen a voluntad, obtener una vista transversal de un órgano, observarlo en vivo detalle y luego realizar una cirugía simulada mientras observan su efecto, todo sin tocar al paciente. Una velocidad de procesamiento mínima de 1015 operaciones por segundo haría que este enfoque valiera la pena. Los dos ejemplos anteriores son representativos de aplicaciones en las que se necesitan computadoras tremendamente rápidas para procesar grandes cantidades de datos o realizar una gran cantidad de cálculos rápidamente (o al menos dentro de un período de tiempo razonable). Otras aplicaciones de este tipo incluyen pruebas de aeronaves, desarrollo de nuevos fármacos, exploración de petróleo, modelado de reactores de fusión, planificación económica, criptoanálisis, gestión de grandes bases de datos, astronomía, análisis biomédico, reconocimiento de voz en tiempo real, robótica y la solución de grandes sistemas de análisis parcial. ecuaciones diferenciales que surgen de simulaciones numéricas en disciplinas tan diversas como la sismología, la aerodinámica y la física atómica, nuclear y del plasma. En la actualidad, no existe una computadora que pueda ofrecer las velocidades de procesamiento requeridas por estas aplicaciones. Incluso las llamadas supercomputadoras alcanzan un máximo de unos pocos miles de millones de operaciones por segundo. Durante los últimos cuarenta años se lograron aumentos drásticos en la velocidad de la computación. La mayoría de estos se debieron en gran parte al uso de componentes electrónicos intrínsecamente más rápidos por parte de los fabricantes de computadoras. A medida que pasamos de los relés a los tubos de vacío a los transistores y de la integración pequeña a la mediana a grande y luego a la muy grande, a menudo presenciamos con asombro el crecimiento en tamaño y rango de los problemas computacionales que podíamos resolver. Desafortunadamente, es evidente que esta tendencia pronto llegará a su fin. El factor limitante es una simple ley de la física que da la velocidad de la luz en el vacío. Esta velocidad es

aproximadamente igual a 3 x lo8 metros por segundo. Ahora, suponga que un dispositivo electrónico puede realizar 1012 operaciones por segundo. Entonces, una señal tarda más en viajar entre dos de estos dispositivos con medio milímetro de distancia de lo que tarda cualquiera de ellos en procesarla. En otras palabras, todas las ganancias de velocidad obtenidas al construir componentes electrónicos ultrarrápidos se pierden mientras un componente espera recibir alguna entrada de otro. ¿Por qué entonces (uno se ve obligado a preguntar) no acercar aún más los dos componentes comunicantes? Nuevamente, la física nos dice que la reducción de la distancia entre los dispositivos electrónicos llega a un punto más allá del cual comienzan a interactuar, reduciendo así no solo su velocidad sino también su confiabilidad. Parece que la única forma de solucionar este problema es utilizar el paralelismo. La idea aquí es que si se realizan varias operaciones simultáneamente, entonces el tiempo que toma un cálculo se puede reducir significativamente. Ésta es una noción bastante intuitiva a la que estamos acostumbrados en cualquier sociedad organizada. Sabemos que varias personas con habilidades comparables generalmente pueden terminar un trabajo en una fracción del tiempo que le toma a una persona. Desde la distribución de correo hasta la cosecha y desde la oficina hasta el trabajo en la fábrica, nuestra vida cotidiana ofrece numerosos ejemplos de paralelismo a través del intercambio de tareas. Incluso en el campo de la informática, la idea de paralelismo no es del todo nueva y ha adoptado muchas formas. Desde los primeros días del procesamiento de la información, la gente se dio cuenta de que es muy ventajoso que los distintos componentes de una computadora hagan cosas diferentes al mismo tiempo. Normalmente, mientras la unidad central de procesamiento realiza cálculos, la entrada se puede leer desde una cinta magnética y la salida se puede producir en una impresora de línea. En máquinas más avanzadas, hay varios procesadores simples, cada uno de los cuales se especializa en una tarea computacional determinada, como operaciones con números de punto flotante, por ejemplo. Algunas de las computadoras más poderosas de la actualidad contienen dos o más unidades de procesamiento que comparten entre sí los trabajos enviados para su procesamiento. En cada uno de los ejemplos que acabamos de mencionar, el paralelismo se explota de manera rentable, pero no se acerca al poder prometido. Estrictamente hablando, ninguna de las máquinas discutidas es realmente una computadora paralela. Sin embargo, en el paradigma moderno que estamos a punto de describir, la idea de la computación paralela puede realizar todo su potencial. Aquí, nuestra herramienta computacional es una computadora paralela, es decir, una computadora con muchas unidades de procesamiento o procesadores. Dado un problema por resolver, se divide en varios subproblemas.Todos estos subproblemas ahora se resuelven simultáneamente, cada uno en un procesador diferente. Luego, los resultados se combinan para producir una respuesta al problema original. Esta es una desviación radical del modelo de computación adoptado durante los últimos cuarenta años en la construcción de computadoras, a saber, la máquina secuencial monoprocesador. Solo durante los últimos diez años el paralelismo se ha vuelto realmente atractivo y un enfoque viable para la consecución de velocidades computacionales muy altas. El costo decreciente del hardware de computadora ha hecho posible ensamblar máquinas paralelas con millones de procesadores. Inspirados por el desafío, los informáticos comenzaron a estudiar computadoras paralelas tanto en la teoría como en la práctica. La evidencia empírica proporcionada por los prototipos de cosecha propia a menudo llegó a respaldar una gran cantidad de estudios teóricos. Y muy recientemente, han aparecido en el mercado una serie de ordenadores paralelos comerciales.

Con la disponibilidad del hardware, la pregunta más urgente en la computación paralela hoy en día es: ¿Cómo programar computadoras en paralelo para resolver problemas de manera eficiente y de una manera práctica y económicamente factible? Como es el caso en el mundo secuencial, la computación paralela requiere algoritmos, lenguajes de programación y compiladores, así como sistemas operativos para poder realizar realmente una computación en el hardware paralelo. Todos estos ingredientes de la computación paralela están recibiendo actualmente una buena y merecida atención por parte de los investigadores. Este libro trata sobre un aspecto (y quizás el más fundamental) del paralelismo, a saber, los algoritmos paralelos. Un algoritmo paralelo es un método de solución para un problema dado destinado a ser realizado en una computadora paralela. Para diseñar correctamente dichos algoritmos, es necesario tener una comprensión clara del modelo de cálculo subyacente a la computadora paralela.

Cualquier computadora, ya sea secuencial o paralela, opera ejecutando instrucciones sobre los datos. Un flujo de instrucciones (el algoritmo) le dice a la computadora qué hacer en cada paso. Un flujo de datos (la entrada al algoritmo) se ve afectado por estas instrucciones. Dependiendo de si hay uno o varios de estos flujos, podemos distinguir entre cuatro clases de computadoras:

Secuencia de instrucciones única, secuencia de datos única (SISD) secuencia de instrucciones múltiples, secuencia de datos única (MISD) secuencia de instrucciones única, secuencia de datos múltiples (SIMD) secuencia de instrucciones múltiples, secuencia de datos múltiples (MIMD).

Ahora examinamos cada una de estas clases con cierto detalle. En la discusión que sigue no nos ocuparemos de las unidades de entrada, salida o periféricos que están disponibles en todas las computadoras. 1.2.1 Computadoras del SISD

Una computadora de esta clase consta de una sola unidad de procesamiento que recibe un solo flujo de instrucciones que operan en un solo flujo de datos, como se muestra en la figura 1.1. En cada paso durante el cálculo, la unidad de control emite una instrucción que opera sobre un dato obtenido de la unidad de memoria. Tal instrucción puede decirle al procesador, por

Por ejemplo, para realizar alguna operación aritmética o lógica en el datum y luego volver a ponerlo en la memoria. La inmensa mayoría de las computadoras actuales se adhieren a este modelo inventado por John von Neumann y sus colaboradores a fines de la década de 1940. Se dice que un algoritmo para una computadora en esta clase es secuencial (o serial). Ejemplo 1.1

Para calcular la suma de n números, el procesador necesita obtener acceso a la memoria n veces consecutivas y cada vez recibir un número. También hay n - 1 adiciones involucradas que se ejecutan en secuencia. Por lo tanto, este cálculo requiere del orden de n operaciones en total. Este ejemplo muestra que los algoritmos para computadoras SISD no contienen ningún paralelismo. La razón es obvia, ¡solo hay un procesador! Para obtener de una computadora el tipo de operación en paralelo definida anteriormente, necesitará varios procesadores. Esto lo proporcionan las siguientes tres clases de computadoras, las clases de interés en este libro. En cada una de estas clases, una computadora posee N procesadores, donde N> 1. 1.2.2 Computadoras MISD

Aquí, N procesadores, cada uno con su propia unidad de control, comparten una unidad de memoria común donde residen los datos, como se muestra en la figura 1.2. Hay N flujos de instrucciones y un flujo de datos. En cada paso, todos los procesadores operan simultáneamente un dato recibido de la memoria, cada uno de acuerdo con la instrucción que recibe de su control. Por lo tanto, el paralelismo se logra al permitir que los procesadores hagan diferentes cosas al mismo tiempo en el mismo dato. Esta clase de computadoras se presta naturalmente a aquellos cálculos que requieren que una entrada se someta a varias operaciones, cada una de las cuales recibe la entrada en su forma original. Ahora se ilustran dos de estos cálculos. PROCESADOR 1

Ejemplo 1.2 Se requiere determinar si un entero positivo dado z no tiene divisores excepto 1 y él mismo. La solución obvia a este problema es probar todos los posibles divisores de z: si ninguno de estos logra dividir z, entonces se dice que z es primo; de lo contrario, se dice que z es compuesto. Podemos implementar esta solución como un algoritmo paralelo en una computadora MISD. La idea es dividir el trabajo de probar divisores potenciales entre procesadores. Suponga que hay tantos procesadores en la computadora paralela como divisores potenciales de z. Todos los procesadores toman z como entrada, luego cada uno intenta dividirlo por su divisor potencial asociado y emite una salida apropiada basada en el resultado. Por tanto, es posible determinar en un paso si z es primo. De manera más realista, si hay menos procesadores que divisores potenciales, entonces a cada procesador se le puede dar la tarea de probar un subconjunto diferente de estos divisores. En cualquier caso, se obtiene una aceleración sustancial sobre una implementación puramente secuencial. Aunque existen soluciones más eficientes para el problema de las pruebas de primalidad, hemos elegido la simple ya que ilustra el punto sin necesidad de mucha sofisticación matemática.

Ejemplo 1.3 En muchas aplicaciones, a menudo necesitamos determinar a cuál de varias clases pertenece un objeto dado. El objeto puede ser matemático, donde se requiere asociar un número con uno de varios conjuntos, cada uno con sus propias propiedades. O puede ser físico: un robot que escanea el fondo del mar profundo "ve" diferentes objetos que tiene que reconocer para distinguir entre peces, rocas, algas, etc. Normalmente, la pertenencia al objeto se determina sometiéndolo a una serie de pruebas diferentes. El proceso de clasificación se puede hacer muy rápidamente en una computadora de MISD con tantos procesadores como clases. Cada procesador está asociado con una clase y puede reconocer a los miembros de esa clase a través de una prueba computacional. Dado un objeto a clasificar, se envía simultáneamente a todos los procesadores donde se prueba en paralelo. El objeto pertenece a la clase asociada con ese procesador que informa el éxito de su prueba. (Por supuesto, puede ser que el objeto no pertenezca a ninguna de las clases probadas, en cuyo caso todos los procesadores notifican fallas). Como en el ejemplo 1.2, cuando hay menos procesadores que clases disponibles, cada procesador realiza varias pruebas aquí, sin embargo, al informar el éxito, un procesador también debe proporcionar la clase a la que pertenece el objeto. Los ejemplos anteriores muestran que la clase de computadoras MISD podría ser extremadamente útil en muchas aplicaciones. También es evidente que el tipo de cálculos que se pueden realizar de manera eficiente en estas computadoras son de naturaleza bastante especializada. Para la mayoría de las aplicaciones, las computadoras de MISD serían bastante incómodas de usar. Las computadoras paralelas que son más flexibles y, por lo tanto, adecuadas para una amplia gama de problemas, se describen en las dos secciones siguientes.

1.2.3 Computadoras SlM D En esta clase, una computadora paralela consta de N procesadores idénticos, como se muestra en la Fig.

1.3. Cada uno de los N procesadores posee su propia memoria local donde puede almacenar tanto

RED DE INTERCONEXIÓN 0R

programas y datos. Todos los procesadores operan bajo el control de un único flujo de instrucciones emitido por una unidad de control central. De manera equivalente, se puede suponer que los N procesadores contienen copias idénticas de un solo programa, y ​​la copia de cada procesador se almacena en su memoria local. Hay N flujos de datos, uno por procesador. Los procesadores funcionan sincrónicamente: en cada paso, todos los procesadores ejecutan la misma instrucción, cada uno en un dato diferente. La instrucción puede ser simple (como sumar o comparar dos números) o compleja (como fusionar dos listas de números). De manera similar, el dato puede ser simple (un número) o complejo (varios números). A veces, puede ser necesario que solo un subconjunto de procesadores ejecute una instrucción. Esta información se puede codificar en la propia instrucción, lo que le dice al procesador si debe estar activo (y ejecutar la instrucción) o inactivo (y esperar la siguiente instrucción). Existe un mecanismo, como un reloj global, que garantiza la operación de paso de bloqueo. Por tanto, los procesadores que están inactivos durante una instrucción o aquellos que completan la ejecución de la instrucción antes que otros pueden permanecer inactivos hasta que se emita la siguiente instrucción. El intervalo de tiempo entre dos instrucciones puede ser fijo o puede depender de la instrucción que se esté ejecutando. En los problemas más interesantes que deseamos resolver en una computadora SIMD, es deseable que los procesadores puedan comunicarse entre sí durante el cálculo para intercambiar datos o resultados intermedios. Esto se puede conseguir de dos formas, dando lugar a dos subclases: ordenadores SIMD donde la comunicación es a través de una memoria compartida y aquellos donde se realiza a través de una red de interconexión.

1.2.3.1 Computadoras SIMD de memoria compartida (SM). Esta clase también se conoce en la literatura como el modelo de máquina paralela de acceso aleatorio (PRAM). Aquí, los procesadores N comparten una memoria común que usan de la misma manera que un grupo de personas puede usar un tablero de anuncios. Cuando dos procesadores desean comunicarse, lo hacen a través de la memoria compartida. Digamos que el procesador deseo pasar un número al procesador j. Esto se hace en dos pasos. Primero, el procesador i escribe el número en la memoria compartida en una ubicación determinada conocida por el procesador j. Luego, el procesador j lee el número de esa ubicación. Durante la ejecución de un algoritmo paralelo, los N procesadores obtienen acceso a la memoria compartida para leer datos de entrada, leer o escribir resultados intermedios y escribir resultados finales. El modelo básico permite que todos los procesadores obtengan acceso a la memoria compartida simultáneamente si las ubicaciones de memoria desde las que intentan leer o escribir son diferentes. Sin embargo, la clase de computadoras SIMD de memoria compartida se puede dividir en cuatro subclases, de acuerdo con si dos o más procesadores pueden obtener acceso a la misma ubicación de memoria simultáneamente:

(i) Computadoras SM SIMD de lectura exclusiva, escritura exclusiva (EREW). El acceso a las ubicaciones de la memoria es exclusivo. En otras palabras, no se permite que dos procesadores lean o escriban simultáneamente en la misma ubicación de memoria. (ii) Computadoras SM SIMD de lectura simultánea y escritura exclusiva (CREW). Múltiples procesadores pueden leer desde la misma ubicación de memoria, pero el derecho a escribir sigue siendo exclusivo: no se permite que dos procesadores escriban en la misma ubicación simultáneamente. (iii) Computadoras SM SIMD de lectura exclusiva y escritura simultánea (ERCW). Se permite que varios procesadores escriban en la misma ubicación de memoria, pero los accesos de lectura siguen siendo exclusivos. (iv) Computadoras SM SIMD de lectura y escritura simultáneas (CRCW). Se otorgan privilegios de lectura y escritura múltiples. Permitir accesos de lectura múltiple a la misma dirección en la memoria, en principio, no debería plantear problemas (excepto quizás algunos tecnológicos que se discutirán más adelante). Conceptualmente, cada uno de los varios procesadores que leen desde esa ubicación hace una copia del contenido de la ubicación y la almacena en su propia memoria local. Sin embargo, con accesos de escritura múltiple, surgen dificultades. Si varios procesadores intentan almacenar simultáneamente datos (potencialmente diferentes) en una dirección determinada, ¿cuál de ellos debería tener éxito? En otras palabras, debería haber una forma determinista de especificar el contenido de esa dirección después de la operación de escritura. Se han propuesto varias políticas para resolver tales conflictos de escritura, subdividiendo así las clases (iii) y (iv). Algunas de estas políticas son

(a) se permite escribir al procesador con el número más pequeño y se niega el acceso a todos los demás procesadores (b) se permite que todos los procesadores escriban siempre que las cantidades que están intentando almacenar sean iguales; de lo contrario, se niega el acceso a todos los procesadores y (c) se almacena la suma de todas las cantidades que los procesadores están intentando escribir.

En el siguiente ejemplo se da un representante típico de la clase de problemas que pueden resolverse en computadoras paralelas de la familia SM SIMD. Ejemplo 1.4 Considere un archivo de computadora muy grande que consta de n entradas distintas. Asumiremos, por simplicidad, que el archivo no está ordenado en ningún orden. (De hecho, puede darse el caso de que mantener el archivo ordenado en todo momento sea imposible o simplemente ineficaz). Ahora suponga que es necesario determinar si un elemento x dado está presente en el archivo para realizar una operación estándar de la base de datos. , como leer, actualizar o eliminar. En una computadora convencional (es decir, SISD), recuperar x requiere n pasos en el peor de los casos, donde cada paso es una comparación entre xy una entrada de archivo. El peor de los casos ocurre claramente cuando x es igual a la última entrada o no es igual a ninguna entrada. En promedio, por supuesto, esperamos hacerlo un poco mejor: si las entradas del archivo se distribuyen uniformemente en un rango dado, entonces se requieren la mitad de los pasos para recuperar x. El trabajo se puede hacer mucho más rápido en una computadora EREW SM SIMD con procesadores N, donde N R. Ahora discutimos una serie de características de este modelo. (i) Precio. La primera pregunta que debe hacerse es: ¿Cuál es el precio que se paga para interconectar N procesadores por completo? Hay N - 1 líneas que salen de cada procesador para un total de N (N - 1) / 2 líneas. Claramente, una red de este tipo es demasiado cara, especialmente para valores grandes de N. Esto es particularmente cierto si observamos que con N procesadores lo mejor que podemos esperar es una reducción de N veces en el número de pasos requeridos por un algoritmo secuencial. como se muestra en la sección 1.3.1.3. (ii) Viabilidad. Incluso si pudiéramos pagar un precio tan alto, el modelo no es realista en la práctica, nuevamente para valores grandes de N.De hecho, hay un límite en el número de líneas que se pueden conectar a un procesador, y ese límite lo dicta el tamaño físico real del propio procesador. (iii) Relación con SM SIMD. Finalmente, debe tenerse en cuenta que el modelo completamente interconectado como se describe es más débil que una computadora con memoria compartida por la misma razón que la memoria compartida del bloque R: no más de un procesador puede obtener acceso simultáneamente al bloque de memoria asociado con otro procesador . Permitir esto último produciría un costo de NZ xf (MIN), que es aproximadamente el mismo que para el SM SIMD (sin contar el costo cuadrático de las líneas bidireccionales): esto claramente frustraría nuestro propósito original de obtener un sistema más factible ¡máquina! Redes simples para computadoras SZMD. Es una suerte que en la mayoría de las aplicaciones un pequeño subconjunto de todas las conexiones por pares suele ser suficiente para obtener un buen rendimiento. Las más populares de estas redes se describen brevemente a continuación. Tenga en cuenta que dado que dos procesadores pueden comunicarse en un número constante de pasos en una computadora SM SIMD, cualquier algoritmo para una computadora SIMD de red de interconexión se puede simular en el primer modelo en no más pasos de los requeridos para ejecutarlo por el segundo.

(i) Matriz lineal. La forma más sencilla de interconectar N procesadores es en forma de una matriz unidimensional, como se muestra en la figura 1.6 para N = 6. Aquí, el procesador Pi está vinculado a sus dos vecinos Pi- y Pi +, a través de una comunicación bidireccional. línea. Cada uno de los procesadores finales, a saber, P y P ,, tiene solo un vecino. (ii) Matriz bidimensional. Una red bidimensional se obtiene organizando los N procesadores en una matriz mxm, donde m = Nli2, como se muestra en la figura 1.7 para m = 4. El procesador en la fila j y la columna k se denota por P (j, k) , donde 0 N. Ahora observamos que cualquier algoritmo paralelo se puede simular en una computadora secuencial. La simulación se lleva a cabo de la siguiente manera: El (único) procesador en la computadora secuencial ejecuta los pasos paralelos en serie simulando que es PI, luego que es P, y así sucesivamente. El tiempo necesario para la simulación es la suma de los tiempos necesarios para imitar todos los N procesadores, que es como máximo N veces T ,. Pero NT, k entonces (el k-ésimo elemento de S debe estar en S,) llame a SEQUENTIAL SELECT recursivamente para encontrar el k-ésimo elemento de S, de lo contrario si IS, I + IS, l> k entonces devuelva m de lo contrario llame a SEQUENTIAL SELECT recursivamente para encontrar el (k - IS, J- IS, l) th elemento de S, end if end if.

Tenga en cuenta que la instrucción anterior del procedimiento SEQUENTIAL SELECT no especifica cómo se devuelve realmente el k-ésimo elemento más pequeño de S. Una forma de hacer esto sería tener un parámetro adicional, digamos, x, en el encabezado del procedimiento (además de

S y k) y devuelve el k-ésimo elemento más pequeño en x. Otra forma sería simplemente devolver el k-ésimo más pequeño como el primer elemento de la secuencia S. Análisis. Ahora se proporciona un análisis paso a paso de t (n), el tiempo de ejecución de SEQUENTIAL SELECT.

Paso 1: Dado que Q es una constante, ordenando S cuando IS1 k luego PARALLEL SELECT (L, k) else if ILI + IE l 2 k then return m else PARALLEL SELECT (G, k - 1 LJ- IEJ) end if end if .

Tenga en cuenta que el mecanismo preciso utilizado por el procedimiento PARALLEL SELECT para devolver el k-ésimo elemento más pequeño de S no está especificado en la declaración anterior. Sin embargo, aquí se puede utilizar cualquiera de las formas sugeridas en la sección 2.3 en relación con el procedimiento SELECCIÓN SECUENCIAL.

Análisis. Hemos dado deliberadamente una descripción de alto nivel de PARALLEL SELECT para evitar oscurecer las ideas principales del algoritmo. Sin embargo, para obtener un análisis preciso del tiempo de ejecución del procedimiento, se deben especificar varios detalles de implementación. Como de costumbre, denotamos por t (n) el tiempo requerido por PARALLEL SELECT para una entrada de tamaño n. Ahora se obtiene una función que describe t (n) analizando cada paso del procedimiento.

Paso 1: Para realizar este paso, cada procesador necesita la dirección inicial A de la secuencia Sin la memoria compartida, su tamaño JSI y el valor de k. Estas cantidades pueden transmitirse a todos los procesadores mediante el procedimiento BROADCAST: Esto requiere un tiempo O (1og nl- "). Si IS (4. Dado que p (n) = nl-", tenemos Este costo es óptimo en vista de R ( n) límite inferior derivado en la sección 2.2 Sin embargo, tenga en cuenta que nx es asintóticamente mayor que log n para cualquier x.(De hecho, hemos utilizado este hecho en nuestro análisis de SELECCIÓN PARALELA.) Dado que N = n '- "y n / nx c npog n, se deduce que SELECCIÓN PARALELA es el costo óptimo siempre que N 0. Se muestra en [Aggarwal] cómo se puede lograr una aceleración adicional para el caso en el que los elementos de S se toman de un campo de tamaño O (nl +?) para una constante y> 0: la selección ahora se puede realizar en tiempo O (log2n). estudiar un algoritmo para la selección en el árbol que se propuso por primera vez en [Cooper]. Este algoritmo toma el tiempo para operar en dos bits (en lugar de dos números enteros) como su unidad de tiempo. El problema de selección también se ha abordado en variantes de modelos básicos. En [Stout 23 se propone un algoritmo que se ejecuta en una computadora conectada en malla con capacidad de transmisión. El modelo en [Chandran] es una computadora conectada en cubos donde cada comunicación entre dos procesadores cuenta como un paso de enrutamiento independientemente de cómo Se intercambian muchos elementos. También se han producido variaciones sobre el problema de la selección en sí. estudiado. Los algoritmos para encontrar el elemento más grande de una secuencia (un caso especial de selección) aparecen en [Bokhari], [Shiloach] y [Valiant]. En w a h] se describe una arquitectura de propósito especial para seleccionar los k más pequeños de n elementos. Finalmente, todos los resultados discutidos hasta ahora se obtuvieron mediante análisis del peor de los casos. A veces es útil derivar el tiempo requerido por un algoritmo paralelo en promedio. Aquí, se supone que los elementos de la entrada obedecen a una distribución de probabilidad dada y se obtiene el tiempo de ejecución esperado. Se dice que los algoritmos diseñados específicamente para lograr un buen tiempo de ejecución en promedio son probabilísticos. Se proporcionan ejemplos de tales algoritmos probabilísticos en [Greenberg] para el modelo SIMD conectado en árbol y en [Reischuck] para el modelo de comparación.

2.9 REFERENCIAS [AGGARWAL] Aggarwal, A., A comparative study of X-tree, pyramid and related machines, Proceedings of the 25th Annual IEEE Symposium on Foundations of Computer Science, Singer Island, Florida, octubre de 1984, págs. 89-99, IEEE Computer Society, Washington, DC, 1984. [AJTAI] Ajtai, M., Komlos, J., Steiger, WL y SzemerCdi, E., Selección determinista en tiempo paralelo O (log log N), Actas de la 18a. Simposio ACM sobre Teoría de la Computación, Berkeley, California, mayo de 1986, págs. 188-195, Association for Computing Machinery, Nueva York, NY, 1986. [AKL 11 Akl, SG, Un algoritmo óptimo para la selección paralela, Cartas de procesamiento de información, Vol. 19, núm. 1, julio de 1984, págs. 47-50. [AKL 21 Akl, SG, Algoritmos de clasificación en paralelo, Academic, Orlando, FI., 1985. [AKL 33 Akl, SG, Selección en paralelo en el tiempo O (log log n) usando procesadores O (n / log log n), Informe técnico No. 88-221, Departamento de Computación y Ciencias de la Información, Queen's University, Kingston, Ontario, marzo de 1988. [BLUM] Blum, M., Floyd, RW, Pratt, V., Rivest, RL, y Tarjan, RE, Time límites para la selección, Journal of Computer and System Sciences, vol. 7, núm. 4, 1972, págs. 448-461. [BOKHARI] Bokhari, S. H., Encontrar el máximo en un procesador de matriz con bus global, IEEE Transactions on Computers, vol. C-33, No. 2, febrero de 1984, págs. 133-139. [CHANDRAN] Chandran, S., y Rosenfeld, A., Order statistics on a hypercube, Center for Automation Research, University of Maryland, College Park, Md., 1986. [COLE 11 Cole, R., y Yap, CK, Un algoritmo de mediana paralelo, Information Processing Letters, vol. 20, núm. 3, abril de 1985, págs. 137-139. [COLE 23 Cole, R., y Vishkin, U., lanzamiento de moneda determinista y cascadas aceleradas: técnicas micro y macro para diseñar algoritmos paralelos, actas del 18o Simposio Anual de ACM sobre Teoría de la Computación, Berkeley, California, mayo de 1986, págs. 206-219, Association for Computing Machinery, Nueva York, NY, 1986. [COOPER] Cooper, J., y Akl, SG, Selección eficiente en un árbol binario, Information Processing ktters, vol. 23, núm. 3, octubre de 1986, págs. 123-126. [FICH] Fich, FE, Nuevos límites para circuitos de prefijos paralelos, Actas del 15º Simposio Anual de ACM sobre Teoría de la Computación, Boston, Massachusetts, mayo de 1983, págs. 100-109, Association for Computing Machinery, Nueva York, NY, 1983 [GREENBERG] Greenberg, AG, y Manber, U., Un algoritmo de tubería probabilística para la selección k en la máquina de árbol, IEEE Transactions on Computers, vol. C-36, No. 3, marzo de 1987, págs. 359-362.

[KNUTH] Knuth, D. E., El arte de la programación informática, vol. 3, Clasificación y búsqueda, Addison Wesley, Reading, Mass., 1973. [K

GGE11 Kogge, P. M., Solución paralela de problemas de recurrencia, IBM Journal of Research and Development, marzo de 1974, págs. 138-148. [K

GGE 21 Kogge, P. M. y Stone, H. S., Un algoritmo paralelo para la solución eficiente de una clase general de ecuaciones de recurrencia, IEEE Transactions on Computers, vol. C-22, No. 8, agosto de 1973, págs. 786-792. [KRUSKAL] Kruskal, C. P., Rudolph, L. y Snir, M., El poder del prefijo paralelo, IEEE Pansactions on Computers, vol. C-34, No. 10, octubre de 1985, págs. 965-968. [LADNER] Ladner, R. E. y Fischer, M. J., Cálculo de prefijos en paralelo, Journal of the ACM, vol. 27, núm. 4, octubre de 1980, págs. 831-838. [MEGIDDO] Megiddo, N., Aplicación de algoritmos de cálculo paralelo en el diseño de algoritmos seriales, Revista de la ACM, Vol. 30, núm. 4, octubre de 1983, págs. 852-865. [REIF] Reif, JH, Cálculo probabilístico de prefijos paralelos, Actas de la Conferencia internacional de 1984 sobre procesamiento paralelo, Bellaire, Michigan, agosto de 1984, págs. 291-298, IEEE Computer Society, Washington, DC, 1984. [REISCHUK] Reischuk, R., Un algoritmo rápido de clasificación probabilística paralela, Actas del 22º Simposio anual de IEEE sobre fundamentos de la informática, Nashville, Tennessee, octubre de 1981, págs. 212-219, IEEE Computer Society, Washington, DC, 1981. [SHILOACH] Shiloach , Y., y Vishkin, U., Encontrar el máximo, fusionar y ordenar en un modelo de cálculo paralelo, Journal of Algorithms, vol. 2, 1981, págs. 88-102. [STONE] Stone, HS, Ed., Introducción a la Arquitectura de Computadoras, Science Research Associates, Chicago, 1980. [STOUT 11 Stout, QF, Clasificación, fusión, selección y filtrado en máquinas de árboles y pirámides, Actas de la Conferencia Internacional de 1983 sobre procesamiento paralelo, Bella

re, Michigan, agosto de 1983, págs. 214-221, IEEE Computer Society, Washington, D.C., 1983. [STOUT 21 Stout, Q. F., Computadoras conectadas en malla con radiodifusión, IEEE Transactions on Computers, vol. C-32, No. 9, septiembre de 1983, págs. 826-830. [TANIMOTO] Tanimoto, SL, Clasificación, histograma y otras operaciones estadísticas en una máquina piramidal, Informe técnico 82-08-02, Departamento de Ciencias de la Computación, Universidad de Washington, Seattle, 1982. [VALIANT] Valiant, LG, Paralelismo en problemas de comparación, SIAM Journal on Computing, vol. 4, núm. 3, septiembre de 1975, págs. 348-355.

[VISHKIN] Vishkin, U., Un algoritmo paralelo óptimo para la selección, Departamento de Ciencias de la Computación, Instituto Courant de Ciencias Matemáticas, Nueva York, 1983. CWAHI Wah, BW, y Chen, K.-L., Un enfoque de partición para el diseño de redes de selección, IEEE Transactions on Computers, vol. C-33, No. 3, marzo de 1984, págs. 261-268.

En el capítulo 2 mencionamos que la selección pertenece a una clase de problemas conocidos como problemas de comparación. El segundo problema de este tipo que se estudiará en este libro es el de la fusión. Se define como sigue: Sean A = (a ,, a ,,..., A,) y B = (b ,, b ,,..., B,) dos secuencias de números ordenados en orden no decreciente. Se requiere fusionar A y B, es decir, para formar una tercera secuencia C = (c ,, c ,,..., c.), también ordenada en orden no decreciente, de modo que cada ci en C pertenece a A o B y cada ai y cada bi aparece exactamente una vez en C. En informática, la fusión surge en una variedad de contextos, incluidas las aplicaciones de bases de datos en particular y la administración de archivos en general. Muchas de estas aplicaciones, por supuesto, implican la fusión de datos no numéricos. Además, a menudo es necesario una vez completada la fusión eliminar las entradas duplicadas de la secuencia resultante. Un ejemplo típico es la fusión de dos listas de correo, cada una ordenada alfabéticamente. Estas variantes no ofrecen nuevos conocimientos y pueden manejarse con bastante facilidad una vez que se haya resuelto el problema básico mencionado anteriormente. La fusión se comprende muy bien en el modelo secuencial de cálculo y existe un algoritmo simple para su solución. En el peor de los casos, cuando r = s: = n, digamos, el algoritmo se ejecuta en tiempo O (n). Esto es óptimo ya que todos los elementos de A y B deben examinarse al menos una vez, por lo que R (n) pasos necesarios para fusionarse. Nuestro propósito en este capítulo es mostrar cómo se puede resolver el problema en una variedad de modelos computacionales paralelos. En vista del límite inferior que se acaba de establecer, debe tenerse en cuenta que cualquier algoritmo de fusión en paralelo que utilice N procesadores necesita un tiempo R (n / N). Comenzamos en la sección 3.2 describiendo una arquitectura paralela de propósito especial para la fusión. En la sección 3.3 se presenta un algoritmo paralelo para el modelo CREW SM SIMD que es adaptable y rentable. Dado que el algoritmo invoca un procedimiento secuencial para la fusión, ese procedimiento también se describe en la sección 3.3. 11: se muestra en la sección 3.4 cómo las operaciones de lectura concurrente se pueden eliminar del algoritmo paralelo de la sección 3.3 simulándolo en una computadora EREW. Finalmente, en la sección 3.5 se presenta un algoritmo adaptativo y óptimo para el modelo EREW SM SIMD cuyo tiempo de ejecución es menor que el de la simulación en la sección 3.4. El algoritmo

se basa en un procedimiento secuencial para encontrar la mediana de dos secuencias ordenadas, también descrito en la sección 3.5.

3.2 A N E T W O R K PARA M E R G I N G

En el capítulo 1 vimos que las arquitecturas paralelas de propósito especial se pueden obtener de cualquiera de las siguientes formas:

(i) usar procesadores especializados junto con una red de interconexión convencional, (ii) usar una red de interconexión diseñada a la medida para vincular procesadores estándar, o (iii) usar una combinación de (i) y (ii). En esta sección tomaremos el tercero de estos enfoques. La fusión se logrará mediante una colección de procesadores muy simples que se comunicarán a través de una red de propósito especial. Esta arquitectura paralela de propósito especial se conoce como red emergente (r, s). Todos los procesadores que se utilizarán son idénticos y se denominan comparadores. Como se ilustra en la figura 3.1, un comparador recibe dos entradas y produce dos salidas. La única operación que puede realizar un comparador es comparar los valores de sus dos entradas y luego colocar la menor y la mayor de las dos en sus líneas de salida superior e inferior, respectivamente. Usando estos comparadores, procedemos a construir una red que toma como entrada las dos secuencias ordenadas A = y B = y produce como salida una única secuencia ordenada C = . La siguiente presentación se simplifica enormemente al hacer dos suposiciones: 1. las dos secuencias de entrada son del mismo tamaño, es decir, r = s = n>, 1 y 2. n es una potencia de 2.

Comenzamos considerando la fusión de redes para los primeros tres valores de n. Cuando n = 1, un solo comparador es claramente suficiente: produce como salida sus dos entradas en

Segundo. 3.2 Una red para la fusión

orden ordenado. Cuando n = 2, las dos secuencias A = y B = están correctamente fusionados por la red en la Fig. 3.2. Esto se verifica fácilmente. El procesador P compara el elemento más pequeño de A con el elemento más pequeño de B. Su salida superior debe ser el elemento más pequeño de C, es decir, c ,. De manera similar, la salida inferior de P, debe ser c ,. P realiza una comparación adicional para producir los dos elementos intermedios de C.Cuando n = 4, podemos usar dos copias de la red en la figura 3.2 seguidas de tres comparadores, como se muestra en la figura 3.3 para A = <3 , 5,7,9> y B = <2,4,6,8>. En general, una red emergente (n, n) se obtiene mediante la siguiente construcción recursiva. Primero, los elementos impares de A y B, es decir, y , también se fusionan usando una red emergente (n / 2, n / 2) para producir: una secuencia .La secuencia final ahora se obtiene de CI = dl,

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

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

Las comparaciones finales se logran mediante un rango de n - 1 comparadores, como se ilustra en la figura 3.4. Tenga en cuenta que cada una de las redes emergentes (n / 2, n / 2) se construye aplicando la misma regla de forma recursiva, es decir, utilizando dos redes emergentes (44, n / 4) seguidas de un rango de (n / 2) - 1 comparadores. La red de fusión de la figura 3.4 se basa en un método conocido como fusión de pares pares. Que este método funciona en general se muestra a continuación. En primer lugar, observe que dl = min (a ,, b,) y en = max (a ,, b,), lo que significa que c, y c ,, se calculan correctamente. Ahora observe que en la secuencia , los elementos i son menores o iguales que d. Cada uno de estos es un elemento impar de A o B. Por lo tanto, 2i elementos de A y B son menores o iguales que d ,,,. En otras palabras,

Figura 3.2 Fusionando dos secuencias de dos elementos cada una.

Figura 3.3 Fusionando dos secuencias de cuatro elementos cada una.

1 (ver Fig. 3A), cuya solución se ve fácilmente como t (2n) = 1 + log n. Esto es significativamente más rápido que el mejor, es decir, O (n), el tiempo de ejecución que se puede lograr en una computadora secuencial. (ii) Número de procesadores. Aquí estamos interesados ​​en contar el número de comparadores necesarios para fusionar pares pares. Sea p (2n) el número de parámetros de maíz


Ver el vídeo: Match CSTR MU18AAA vs Lachine 45-90 12 (Diciembre 2021).