Tipos de paralelismo. Clasificación de sistemas de procesamiento de datos paralelos.

Ministerio de Educación y Ciencia de la Federación de Rusia

FSBEI HPE "Ingeniería y tecnología del estado de Bryansk

academia"

Departamento de Tecnologías de la Información

Procesamiento secuencial y paralelo de la información.

Trabajo de cálculo y gráfico No. 1.

por disciplina

"Tecnologías de procesamiento de la información"

Opción No. 16

RGR-02068025.230400.084

Briansk 2015

Introducción 3

Procesamiento de información en paralelo 4

Sistemas de memoria compartida 6

Procesamiento SQL paralelo 7

Procesamiento secuencial de información 9

10 sistemas por lotes simples

Referencias 13

Introducción

Este estudio computacional y gráfico examina el procesamiento de información secuencial y paralelo. Se dan ejemplos para cada uno de ellos.

El procesamiento secuencial de información es el paso secuencial de información de entrada a salida a través de una serie de transformaciones (etapas), de modo que en cada período de tiempo (específico de un bloque determinado), la transformación se realiza en un solo bloque funcional, y la información Se llega a él sólo desde el bloque anterior.

El procesamiento de información en paralelo es un modelo de procesamiento de información, según el cual la información sufre una serie de transformaciones en determinados bloques funcionales, de modo que en un momento dado se procesa simultáneamente (en paralelo) en varios bloques.

Procesamiento de información en paralelo

El procesamiento de datos paralelo, que incorpora la idea de ejecutar varias acciones simultáneamente, tiene dos variedades: canalización y paralelismo.

Procesamiento en paralelo. Si un determinado dispositivo realiza una operación por unidad de tiempo, realizará mil operaciones en mil unidades. Si asumimos que hay cinco dispositivos independientes idénticos capaces de funcionar simultáneamente, entonces un sistema de cinco dispositivos puede realizar las mismas mil operaciones no en mil, sino en doscientas unidades de tiempo. De manera similar, un sistema de N dispositivos realizará el mismo trabajo en 1000/N unidades de tiempo. Se pueden encontrar analogías similares en la vida: si un soldado excava un jardín en 10 horas, entonces una compañía de cincuenta soldados con las mismas habilidades, trabajando simultáneamente, hará el mismo trabajo en 12 minutos: ¡el principio de paralelismo en acción!

Procesamiento del transportador. ¿Qué se necesita para sumar dos números reales representados en forma de punto flotante? Un montón de pequeñas operaciones como comparar pedidos, alinear pedidos, añadir mantisas, normalizar, etc. Los procesadores de las primeras computadoras realizaban todas estas “microoperaciones” para cada par de argumentos, uno tras otro, hasta llegar al resultado final, y solo entonces procedían a procesar el siguiente par de términos.

La idea del procesamiento de canalizaciones es aislar las etapas individuales de la realización de una operación general, y cada etapa, una vez completado su trabajo, pasaría el resultado a la siguiente, al mismo tiempo que recibiría una nueva porción de datos de entrada. Obtenemos una ganancia obvia en la velocidad de procesamiento al combinar operaciones previamente espaciadas. Supongamos que hay cinco microoperaciones en una operación, cada una de las cuales se realiza en una unidad de tiempo. Si hay un dispositivo serie indivisible, procesará 100 pares de argumentos en 500 unidades. Si cada microoperación se divide en una etapa separada (o también llamada etapa) de un dispositivo transportador, entonces en la quinta unidad de tiempo, en diferentes etapas de procesamiento de dicho dispositivo, se ubicarán los primeros cinco pares de argumentos. , y el conjunto completo de cien pares se procesará en 5 + 99 = 104 unidades de tiempo: la aceleración en comparación con un dispositivo en serie es casi cinco veces (según el número de etapas del transportador).

Parecería que el procesamiento de la tubería se puede reemplazar con éxito por el paralelismo ordinario, para lo cual duplicamos el dispositivo principal tantas veces como se supone que se asignan el número de etapas de la tubería. De hecho, los cinco dispositivos del ejemplo anterior procesarán 100 pares de argumentos en 100 unidades de tiempo, ¡lo que es más rápido que el tiempo de funcionamiento del dispositivo transportador! Así, al quintuplicar el número de dispositivos, aumentamos significativamente tanto el volumen de equipos como su costo. Imaginemos que una planta de automóviles decidiera eliminar la línea de montaje manteniendo el ritmo de producción de automóviles. Si anteriormente había mil automóviles en la línea de montaje al mismo tiempo, entonces, actuando por analogía con el ejemplo anterior, es necesario reclutar mil equipos, cada uno de los cuales sea capaz de ensamblar completamente el automóvil de principio a fin. realizando cientos de tipos diferentes de operaciones, y hacerlo al mismo tiempo que el automóvil estaba anteriormente en la línea de montaje.

Hoy en día, el paralelismo en la arquitectura informática sorprenderá a pocas personas. Todos los microprocesadores modernos utilizan alguna forma de procesamiento paralelo. En el núcleo Pentium 4 se pueden realizar hasta 126 microoperaciones simultáneamente en diferentes etapas de ejecución. Al mismo tiempo, estas ideas aparecieron hace mucho tiempo. Inicialmente, se implementaron en las computadoras más avanzadas y, por lo tanto, únicas de su época. Luego, tras un desarrollo adecuado de la tecnología y una producción más barata, se pasó a los ordenadores de clase media y, finalmente, hoy todo esto se materializa plenamente en las estaciones de trabajo y los ordenadores personales.

El rendimiento de muchas aplicaciones que se ejecutan en sistemas informáticos con un solo procesador se puede mejorar significativamente mediante el uso de herramientas de procesamiento paralelo. A continuación se presentan los conceptos básicos del procesamiento paralelo y la arquitectura de computadora multiprocesador.

Cuando varias aplicaciones solicitan que sus trabajos se procesen en una computadora con un solo procesador, su único procesador tiene que hacer todo el trabajo. El propósito del procesamiento paralelo suele ser mejorar el rendimiento de la aplicación. Cuando una aplicación envía una solicitud de trabajo a una computadora multiprocesador, la computadora divide el trabajo en subtareas lógicas y luego las procesa usando múltiples procesadores en paralelo, lo que reduce el tiempo necesario para completar el trabajo. El número de subtareas resultantes de dividir una tarea grande se llama grado de paralelismo. . La reducción del tiempo de procesamiento de información necesario para completar una tarea es directamente proporcional al grado de paralelismo. Intentan aumentar el rendimiento de los sistemas con procesamiento paralelo de tal manera que garanticen el máximo rendimiento de cada procesador del sistema.


4º año, 1º y 2º corrientes, 7º semestre

conferencias (34 horas), prueba

Departamento responsable del curso.: ASVK

Compilador de programas: miembro-corr. RAS, Doctor en Física y Matemáticas. Ciencias Voevodin Vl.V.,

Profesores: miembro-corr. RAS, Doctor en Física y Matemáticas. Ciencias Voevodin Vl.V.

anotación

El curso analiza cuestiones generales de la organización de la computación paralela. Se consideran las características de las arquitecturas de los sistemas informáticos paralelos modernos, se estudian los métodos básicos y paradigmas de programación en entornos paralelos.

Para las corrientes 1 y 2, se discuten enfoques para armonizar la arquitectura de sistemas paralelos y la estructura de algoritmos, cuestiones de la teoría del análisis de la estructura de programas y algoritmos y modelos en computación paralela.

Programa

1. Grandes tareas y supercomputadores. Procesamiento de datos en paralelo y en canalización. Paralelismo y canalización en la arquitectura de las computadoras modernas de alto rendimiento. Comandos escalares y vectoriales. Dispositivos escalares, de canalización y vectoriales. La jerarquía de memoria en las computadoras como medio para aumentar la velocidad de ejecución del programa, la localidad de los cálculos y la localidad de uso de los datos. Ley de Amdahl y sus consecuencias, aceleración superlineal.

2. Principales clases de sistemas informáticos paralelos modernos. Computadoras con memoria compartida, ejemplos, motivos de disminución del rendimiento en programas reales. Arquitecturas SMP, NUMA, ccNUMA. Conmutación de procesadores y módulos de memoria, bus, matriz switch, red omega. Sistemas informáticos de canalización vectorial, ejemplos, motivos de la disminución del rendimiento. Computadoras con memoria distribuida, ejemplos, motivos de la disminución del rendimiento. Topología de comunicación entre procesadores: estrella, celosía, toro tridimensional, hipercubo binario, sus propiedades. Clústeres informáticos, ejemplos, latencia y rendimiento de diversas tecnologías de comunicación. Arquitecturas con paralelismo a nivel de instrucciones máquina, VLIW, superescalaridad.

3. Tecnologías de programación paralela. Lenguajes secuenciales tradicionales y compiladores paralelizantes, problemas. Comentarios y directivas especiales para el compilador, extensiones de lenguajes existentes. Lenguajes especiales de programación paralela. Programación utilizando bibliotecas e interfaces de paso de mensajes. Bibliotecas de materias paralelas, paquetes especializados y sistemas de software de alto nivel. Tecnologías de programación paralela MPI, OpenMP, Linda.

4. Rendimiento de sistemas informáticos paralelos. La versatilidad y especialización de las computadoras, el rendimiento de los procesadores especiales. Ley de Moore. Métodos de evaluación del desempeño. Introducción de un único parámetro numérico, Mflops, MIPS. Rendimiento máximo y real de la computadora. Prueba Linpack y sus variantes. Conjuntos de programas de prueba complementarios, STREAM y NPB.

5. Modelos gráficos de programas. Gráfico de control y gráfico de información del programa. Información e historial operativo de la implementación del programa. Gráfico de algoritmo como forma paramétrica compacta de representar el historial de información. Independencia informativa de las operaciones y posibilidad de su ejecución paralela. La longitud de la ruta crítica de un gráfico de algoritmo como medida del grado de paralelismo. Paralelismo finito y masivo, paralelismo coordinado y sesgado. Transformaciones de programas equivalentes, transformaciones de ciclo elemental.

6. Sistemas informáticos distribuidos heterogéneos. Metacomputadoras y metacomputación, proyectos de metacomputación existentes. Propiedades distintivas de las metacomputadoras. El concepto de GRID, componentes y servicios básicos, proyectos existentes de segmentos GRID, el concepto de organización virtual.

Literatura

1. Voevodin V.V., Voevodin Vl.V. Computación paralela. – San Petersburgo: BHV San Petersburgo, 2002. - 608 p.

2. Korolev L.N. Arquitectura de procesadores informáticos electrónicos. – M.: Editorial. Facultad de Matemática Computacional y Matemáticas de la Universidad Estatal de Moscú, 2003.

3. V.V.Korneev. Sistemas de computación paralelos. – M.: Editorial Conocimiento, 1999. – 320 p.

4. Materiales del centro de información y análisis de computación paralela Parallel.ru.

literatura adicional

1. Antónov A.S. Programación paralela usando tecnología.

MPI: Tutorial. – M.: Editorial de la Universidad Estatal de Moscú, 2004. - 71 p.

bajo el término procesamiento en paralelo entenderemos la ejecución simultánea de tareas, pasos de tareas (elementos), programas, subrutinas, bucles, operadores y comandos. El procesamiento de información en paralelo se puede utilizar para dos propósitos principales:

1. Incrementar la productividad de las computadoras y los aviones no mejorando la base de elementos, sino mediante la organización efectiva de los procesos informáticos.

2. Asegurar una alta confiabilidad de las aeronaves mediante la duplicación de equipos informáticos.

Arroz. 5.1. Niveles de paralelismo

Aumentar el rendimiento de las computadoras y los ordenadores es el principal objetivo del uso del procesamiento paralelo, por esta razón, los ordenadores como los servidores multiprocesador, mainframes y supercomputadores tienen una arquitectura paralela;

El procesamiento de información paralelo se puede realizar en varios niveles (Fig. 5.1).

Evidentemente, cuanto más bajo es el nivel, más fina es la fragmentación de los procesos de software, más fina, como suele decirse, “ grano de paralelismo" En general, es posible implementar el paralelismo tanto en un solo nivel como en varios simultáneamente. El procesamiento independiente de un solo procesador implementa el paralelismo en el nivel 1. El procesamiento vectorial consiste en la ejecución paralela de bucles en el nivel 2 y se puede realizar en uno o varios procesadores. Los niveles 3 y 4 corresponden a computadoras multiprocesador. El paralelismo de nivel 5 es típico de los sistemas informáticos de varias máquinas.



Hay dos formas principales de organizar el procesamiento paralelo:

· combinación temporal de etapas de resolución de diferentes problemas;

· solución simultánea de varias tareas o partes de una tarea;

primera manera- combinar en el tiempo las etapas de resolución de diferentes problemas es procesamiento multiprograma información. El procesamiento multiprograma se ha utilizado ampliamente durante mucho tiempo para mejorar el rendimiento de las computadoras y las computadoras. Una discusión detallada del procesamiento multiprograma se relaciona con el tema "Sistemas operativos" y está más allá del alcance de este libro de texto.

Segunda forma- la solución simultánea de varias tareas o partes de una tarea - sólo es posible si hay varios dispositivos de procesamiento. En este caso se utilizan ciertas características de las tareas o flujos de tareas, lo que permite la paralelización.

Se pueden distinguir los siguientes tipos de paralelismo, que permiten la implementación de características algorítmicas de tareas individuales y sus subprocesos.

1. Paralelismo natural de tareas independientes.

2. Paralelismo de objetos o datos.

3. Paralelismo de ramas de tareas o programas.

Veamos estos tipos de paralelismo.

1. Paralelismo natural de tareas independientes. radica en el hecho de que en la entrada del sistema informático se recibe un flujo continuo de tareas no relacionadas, es decir la solución a cualquier problema no depende de los resultados de resolver otros problemas. En este caso, el uso de varios dispositivos de procesamiento con cualquier método de integración (integración en un sistema) aumenta el rendimiento del sistema.

Un ejemplo típico de paralelismo natural es la llegada de solicitudes de usuarios a un sitio web de información. Cada solicitud genera un procedimiento independiente para su ejecución, que no depende de otros procedimientos similares.

2. Paralelismo de objetos o datos Ocurre cuando el mismo (o casi el mismo) programa debe procesar un determinado conjunto de datos que ingresan al sistema simultáneamente.

Podría tratarse, por ejemplo, de tareas de procesamiento de señales de una estación de radar: todas las señales se procesan con el mismo programa. Otro ejemplo es el procesamiento de información de sensores que miden simultáneamente el mismo parámetro y están instalados en varios objetos similares.

Los programas de este tipo pueden ser de diferente tamaño y complejidad, desde programas muy simples que contienen varias operaciones hasta programas grandes que contienen cientos y miles de operaciones. En este caso, la ejecución paralela de operaciones se logra aumentando el número de dispositivos de procesamiento, cada uno de los cuales es capaz de ejecutar de forma autónoma una secuencia de comandos en un conjunto de datos separado. A menudo, la característica principal de tales programas (en particular, programas para procesar vectores y matrices) es que el mismo comando debe ejecutarse en una gran colección de datos elementales interconectados de alguna manera, y la operación correspondiente se puede realizar en todos los datos simultáneamente. En este caso, el tiempo para resolver el problema se reduce en proporción al número de dispositivos de procesamiento.

3. Paralelismo de ramas de tareas o programas.- uno de los tipos más comunes de paralelismo en el procesamiento de información. Consiste en el hecho de que al resolver un problema, sus partes individuales se pueden separar: ramas que, en presencia de varios dispositivos de procesamiento, se pueden ejecutar en paralelo. En este caso, sólo sucursales independientes tareas, es decir aquellas partes del mismo para las cuales se cumplan las siguientes condiciones:

· ninguno de los valores de salida de estas ramas del problema es un valor de entrada para otra rama similar (falta de conexiones funcionales);

· las condiciones para la ejecución de una rama no dependen de los resultados o características obtenidas durante la ejecución de otras ramas (independencia de control).

Una buena idea del paralelismo de las ramas la da la forma paralela de niveles (LPF) del programa, cuyo ejemplo se muestra en la Fig. 5.2.

El programa se presenta como un conjunto de sucursales ubicadas en varios niveles: niveles. Los círculos con números dentro indican ramas. La longitud de una rama está representada por un número al lado de un círculo e indica cuántas unidades de tiempo se ejecuta esta rama. Las flechas muestran los datos de entrada y los resultados del procesamiento. Los datos de entrada se indican con el símbolo X, los datos de salida con el símbolo Y. Los símbolos X tienen índices digitales inferiores que indican los números de las cantidades de entrada; Los símbolos Y tienen índices digitales tanto en la parte inferior como en la superior; el número en la parte superior corresponde al número de la rama durante la cual se obtuvo el resultado dado, y el número en la parte inferior significa el número de serie del resultado obtenido durante la implementación de esta rama del programa. Las ramas de tareas independientes que no están relacionadas entre sí se colocan en un nivel, es decir Los resultados de resolver cualquier rama de un nivel determinado no son datos de entrada para otra rama del mismo nivel.

Arroz. 5.2. Un ejemplo de un formulario de programa paralelo por niveles

Mostrado en la Fig. 5.2 el programa contiene 9 sucursales ubicadas en 3 niveles. Usando como ejemplo este programa generalmente bastante simple, se pueden identificar las ventajas de un sistema informático que incluye varios dispositivos de procesamiento y los problemas que surgen.

Supongamos que la longitud i la décima rama está representada por el número de unidades de tiempo yo que son necesarios para su ejecución. Entonces es fácil calcular que llevará tiempo ejecutar todo el programa en 1 procesador. T 1:

T 1=S(10+20+15+30+55+10+15+25+15)=195

Si imaginamos que el programa es ejecutado por dos dispositivos de procesamiento (procesadores) que funcionan independientemente uno del otro, entonces se reducirá el tiempo necesario para resolver el problema. Sin embargo, este tiempo, como es fácil ver, variará dependiendo de la secuencia de ejecución de las ramas independientes.

Consideremos, por ejemplo, esta versión del programa que se muestra en la Fig. 5.2. Deje que el procesador 1 ejecute las ramas 1-3-4-6-7-9 y el procesador 2 ejecute las ramas 2-5-8. En la Fig. La Figura 5.3 muestra diagramas de tiempo de ejecución del procesador de ramas del programa.

Arroz. 5.3. Descomposición de ramas de programa en 2 procesadores.

Es fácil calcular que el procesador 1 gasta 105 y el procesador 2, 100 unidades de tiempo. En este caso, hay dos períodos de tiempo en los que uno de los procesadores se ve obligado a estar inactivo: P1 con una duración de 10 unidades y P2 con una duración de 5 unidades de tiempo. El intervalo P1, durante el cual solo funciona el procesador 2, se formó debido al hecho de que la rama 7 depende de la rama 5 (cuando se completa la rama 6, los datos Y 5 1 aún no están listos). El intervalo P1, durante el cual solo funciona el procesador 1, se formó debido al final del conteo del procesador 2.

Así, en un sistema de dos procesadores, nuestro programa se ejecutará íntegramente en nada menos que 105 unidades de tiempo. El valor que caracteriza la reducción del tiempo necesario para resolver un problema en varios procesadores en comparación con el uso de un solo procesador se denomina aceleración del conteo S y calcular como

El coeficiente de paralelización varía de 0 a 1 (de 0 a 100%) y refleja la eficiencia en el uso de los recursos informáticos. En nuestro ejemplo es fácil calcular que la aceleración S= 195/105 = 1,86, y el factor de paralelización kp= 0,93. Como podemos ver, debido al tiempo de inactividad de uno de los procesadores, la aceleración de cálculo es significativamente menor que 2, es decir número de procesadores utilizados. Tenga en cuenta que en nuestro ejemplo, no se tuvieron en cuenta los retrasos asociados con el cambio de contexto del programa (cambio de ramas) y la transferencia de datos de una rama a otra. Sin embargo, debido a las características algorítmicas del programa, parte de los cálculos en los intervalos P1 y P2 los realiza un solo procesador, es decir realmente secuencial.

Consideremos el caso generalizado de un programa en el que, algorítmicamente, la proporción de cálculos secuenciales (la relación entre el tiempo de los cálculos secuenciales y el tiempo total de cálculo del programa) es un valor determinado. F. En este caso, el tiempo de ejecución del programa en el sistema es de pag procesadores no pueden ser inferiores a

Esta relación se llama ley de amdahl. Usando el ejemplo del programa en la Fig. 5.2 podemos ver que la proporción de cálculos secuenciales es F= 15/195. Sustituyendo este valor en la fórmula de la ley de Amdahl, obtenemos para un sistema de dos procesadores una aceleración máxima de 1,86 veces, que corresponde al valor calculado previamente.

Para ilustrar el funcionamiento de la ley de Amdahl, damos el siguiente ejemplo. Dejemos que la proporción de cálculos secuenciales en algún programa sea del 10%. Entonces, la aceleración de cálculo máxima en 100 procesadores no excederá 9,2. El coeficiente de paralelización será sólo del 9,2%. En 10 procesadores, la aceleración será 5,3 y el coeficiente de paralelización será del 53%. Es fácil ver que incluso una fracción tan pequeña de cálculos secuenciales, ya a nivel teórico, sin tener en cuenta los retrasos inevitables en una computadora real, limita seriamente la capacidad de escalar el programa.

Determinemos cuál debería ser la participación máxima. F Cálculos secuenciales en el programa para que sea posible obtener una aceleración de cálculo predeterminada. S con coeficiente de paralelización máximo kp. Para ello, expresamos la proporción de cálculos secuenciales de la ley de Amdahl:

La relación (5.6) determina una muy importante consecuencia de la ley de Amdahl. Para acelerar el programa enq veces, es necesario acelerar no menos deq veces no menos que () ª parte del programa. Por ejemplo, para obtener una aceleración de 100x, es necesario paralelizar el 99,99% de todo el programa.

Además de la paralelización algorítmica, para resolver un problema con ramas paralelas utilizando varios dispositivos de procesamiento, es necesaria una organización adecuada del proceso, que determine las formas de resolver el problema y genere la información necesaria sobre la preparación de cada rama. Sin embargo, todo esto es relativamente fácil de implementar cuando se conoce con bastante precisión la duración de la ejecución de cada rama. En la práctica, esto ocurre muy raramente: en el mejor de los casos, existe una u otra estimación temporal. Por tanto, organizar un horario de trabajo óptimo o cercano al óptimo es una tarea bastante difícil.

También cabe señalar que existen ciertas dificultades asociadas con el aislamiento de sucursales independientes al desarrollar programas. Al mismo tiempo, al resolver muchos problemas complejos, sólo la programación con la selección de ramas independientes puede reducir significativamente el tiempo de solución. En particular, los problemas de álgebra matricial, programación lineal, procesamiento de señales espectrales, transformadas de Fourier directa e inversa, etc. se prestan bien al procesamiento paralelo de este tipo.

Cálculos simples muestran que las configuraciones de tales sistemas pueden costar más de un millón de dólares estadounidenses; solo por diversión, averigüe cuánto cuestan, digamos, solo 4 TB de RAM. Surgen una serie de preguntas naturales: ¿Qué tareas son tan importantes que requieren computadoras multimillonarias? ¿O qué tareas son tan complejas que un buen Pentium no es suficiente? Me gustaría encontrar respuestas razonables a estas y otras preguntas similares.

Para evaluar la complejidad de los problemas resueltos en la práctica, tomemos un área temática específica, por ejemplo, la optimización del proceso de producción de petróleo. Tenemos un yacimiento de petróleo subterráneo con un cierto número de pozos perforados: uno bombea petróleo a la superficie y el otro bombea agua de regreso. Es necesario simular la situación en un yacimiento determinado para estimar las reservas de petróleo o comprender la necesidad de pozos adicionales.

Aceptaremos un esquema simplificado en el que el área modelada se mapea en un cubo; sin embargo, será suficiente estimar el número de operaciones aritméticas necesarias. Los tamaños de cubo razonables con los que se pueden obtener resultados plausibles son 100*100*100 puntos. En cada punto del cubo, es necesario calcular de 5 a 20 funciones: tres componentes: velocidad, presión, temperatura, concentración de componentes (agua, gas y petróleo; este es el conjunto mínimo de componentes; en modelos más realistas, por ejemplo, se consideran diferentes fracciones de petróleo). Además, los valores de las funciones se encuentran resolviendo ecuaciones no lineales, lo que requiere de 200 a 1000 operaciones aritméticas. Y finalmente, si se está estudiando un proceso no estacionario, es decir es necesario comprender cómo se comporta este sistema en el tiempo, luego se toman entre 100 y 1000 pasos de tiempo. Qué pasó:

10 6 (puntos de cuadrícula)*10(funciones)*500(operaciones)*500(pasos de tiempo) = 2,5*10 12

2500 mil millones¡Operaciones aritméticas para realizar un solo cálculo! ¿Qué pasa con el cambio de parámetros del modelo? ¿Qué pasa con el seguimiento de la situación actual cuando cambian los datos de entrada? Estos cálculos deben realizarse muchas veces, lo que impone requisitos muy estrictos en cuanto al rendimiento de los sistemas informáticos utilizados.

Se pueden encontrar ejemplos del uso de supercomputadores no sólo en la industria petrolera. Aquí hay sólo una pequeña lista de áreas de la actividad humana donde el uso de supercomputadoras es realmente necesario:

  • industria automotriz
  • producción de petróleo y gas
  • farmacología
  • predicción del tiempo y modelización del cambio climático
  • estudio sísmico
  • diseño de dispositivos electrónicos
  • síntesis de nuevos materiales
  • y muchos, muchos otros

En 1995, la carrocería del Nissan Maxima se hizo un 10% más resistente gracias al uso de una supercomputadora Cray (The Atlanta Journal, 28 de mayo de 1995). Con su ayuda se encontraron no sólo los puntos débiles del cuerpo, sino también la forma más eficaz de eliminarlos.

Según Mark Miller (Ford Motor Company), para realizar pruebas de choque, en las que coches reales chocan contra una pared de hormigón y al mismo tiempo miden los parámetros necesarios, filman y luego procesan los resultados, Ford necesitaría de 10 a 150 prototipos de nuevos modelos con Los costos totales oscilan entre $ 4 millones y $ 60 millones. El uso de superordenadores ha reducido en un tercio el número de prototipos.

Un ejemplo muy reciente es el desarrollo de uno de los mayores sistemas de reservas del mundo, Amadeus, utilizado por miles de agencias con 180.000 terminales en más de cien países. La instalación de dos servidores Hewlett-Packard T600 con 12 procesadores cada uno permitió aumentar la disponibilidad operativa del sistema central al 99,85% con una carga actual de alrededor de 60 millones de solicitudes por día.

Y se pueden encontrar ejemplos similares en todas partes. Hubo un tiempo en que los investigadores de DuPont buscaban un sustituto del clorofluorocarbono. Era necesario encontrar un material que tuviera las mismas cualidades positivas: no inflamabilidad, resistencia a la corrosión y baja toxicidad, pero sin efectos nocivos para la capa de ozono de la Tierra. En una semana se realizaron los cálculos necesarios en un superordenador con un coste total de unos 5 mil dólares. Según los expertos de DuPont, el uso de métodos tradicionales de investigación experimental requeriría unos tres meses y 50 mil dólares, sin tener en cuenta el tiempo necesario para sintetizar y purificar la cantidad necesaria de la sustancia.

¿Aumento del rendimiento de la computadora debido a qué?

¿Por qué las supercomputadoras calculan tan rápido? Puede haber varias opciones de respuesta, entre las cuales dos tienen una clara ventaja: el desarrollo de la base de elementos y el uso de nuevas soluciones en arquitectura informática.

Intentemos averiguar cuál de estos factores es decisivo para lograr un rendimiento récord. Pasemos a hechos históricos conocidos. En una de las primeras computadoras del mundo, EDSAC, que apareció en 1949 en Cambridge y tenía un tiempo de reloj de 2 microsegundos (2 * 10-6 segundos), era posible realizar 2 * n operaciones aritméticas en 18 * n milisegundos. , es decir, una media de 100 operaciones aritméticas por segundo. Comparémoslo con un nodo informático de una supercomputadora moderna Hewlett-Packard V2600: el tiempo de reloj es de aproximadamente 1,8 nanosegundos (1,8 * 10-9 segundos) y el rendimiento máximo es de aproximadamente 77 mil millones de operaciones aritméticas por segundo.

¿Lo que sucede? Durante medio siglo, el rendimiento de las computadoras ha aumentado en más de setecientos millones una vez. Al mismo tiempo, la ganancia de rendimiento asociada con la reducción del tiempo del ciclo del reloj de 2 microsegundos a 1,8 nanosegundos es sólo unas 1.000 veces. ¿De dónde vino el resto? La respuesta es obvia: el uso de nuevas soluciones en la arquitectura informática. El lugar principal entre ellos lo ocupa el principio de procesamiento de datos paralelo, que encarna la idea de ejecución simultánea (paralela) de varias acciones.

Procesamiento de datos en paralelo en una computadora.

El procesamiento de datos paralelo, que incorpora la idea de ejecutar varias acciones simultáneamente, tiene dos variedades: canalización y paralelismo real. Ambos tipos de procesamiento paralelo son intuitivos, por lo que sólo haremos pequeñas explicaciones.

Procesamiento en paralelo. Si un determinado dispositivo realiza una operación por unidad de tiempo, realizará mil operaciones en mil unidades. Si asumimos que hay cinco dispositivos independientes idénticos capaces de funcionar simultáneamente, entonces un sistema de cinco dispositivos puede realizar las mismas mil operaciones no en mil, sino en doscientas unidades de tiempo. De manera similar, un sistema de N dispositivos realizará el mismo trabajo en 1000/N unidades de tiempo. Se pueden encontrar analogías similares en la vida: si un soldado excava un jardín en 10 horas, entonces una compañía de cincuenta soldados con las mismas habilidades, trabajando simultáneamente, hará el mismo trabajo en 12 minutos: ¡el principio de paralelismo en acción!

Por cierto, el pionero en el procesamiento paralelo de flujos de datos fue el académico A.A. Samarsky, quien a principios de los años 50 realizó los cálculos necesarios para simular explosiones nucleares. Samarsky resolvió este problema sentando en las mesas a varias docenas de señoritas con máquinas de sumar. Las jóvenes se transfirieron datos entre sí simplemente con palabras y anotaron los números necesarios en máquinas calculadoras. Así se calculó en particular la evolución de la onda expansiva. Había mucho trabajo, las jóvenes estaban cansadas y Alexander Andreevich caminaba entre ellas y las animaba. Éste, podría decirse, fue el primer sistema paralelo. Aunque los cálculos para la bomba de hidrógeno se llevaron a cabo con maestría, su precisión fue muy baja, porque se utilizaron pocos nodos en la red y el tiempo de cálculo fue demasiado largo.

Procesamiento del transportador. ¿Qué se necesita para sumar dos números reales representados en forma de punto flotante? Un montón de pequeñas operaciones como comparar pedidos, alinear pedidos, añadir mantisas, normalizar, etc. Los procesadores de las primeras computadoras realizaban todas estas “microoperaciones” para cada par de argumentos, uno tras otro, hasta llegar al resultado final, y solo entonces procedían a procesar el siguiente par de términos.

La idea del procesamiento de canalizaciones es aislar las etapas individuales de la realización de una operación general, y cada etapa, una vez completado su trabajo, pasaría el resultado a la siguiente, al mismo tiempo que recibiría una nueva porción de datos de entrada. Obtenemos una ganancia obvia en la velocidad de procesamiento al combinar operaciones previamente espaciadas. Supongamos que hay cinco microoperaciones en una operación, cada una de las cuales se realiza en una unidad de tiempo. Si hay un dispositivo serie indivisible, procesará 100 pares de argumentos en 500 unidades. Si cada microoperación se divide en una etapa separada (o también llamada etapa) de un dispositivo transportador, entonces en la quinta unidad de tiempo, en diferentes etapas de procesamiento de dicho dispositivo, se ubicarán los primeros cinco pares de argumentos. , y el conjunto completo de cien pares se procesará en 5 + 99 = 104 unidades de tiempo: la aceleración en comparación con un dispositivo en serie es casi cinco veces (según el número de etapas del transportador).

Parecería que el procesamiento de la tubería se puede reemplazar con éxito por el paralelismo ordinario, para lo cual duplicamos el dispositivo principal tantas veces como se supone que se asignan el número de etapas de la tubería. De hecho, los cinco dispositivos del ejemplo anterior procesarán 100 pares de argumentos en 100 unidades de tiempo, ¡lo que es más rápido que el tiempo de funcionamiento del dispositivo transportador! ¿Qué pasa? La respuesta es simple: al quintuplicar el número de dispositivos, aumentamos significativamente tanto el volumen del equipo como su costo. Imaginemos que una planta de automóviles decidiera eliminar la línea de montaje manteniendo el ritmo de producción de automóviles. Si antes había mil coches en la línea de montaje al mismo tiempo, entonces, actuando por analogía con el ejemplo anterior, es necesario reclutar mil equipos, cada uno de los cuales (1) es capaz de montar completamente el coche desde el principio. para terminar, realizando cientos de tipos diferentes de operaciones, y (2) hacer esto en el mismo tiempo que el automóvil estuvo previamente en la línea de ensamblaje. ¿Te imaginas el coste de un coche así? ¿No? Estoy de acuerdo, es difícil, a menos que me venga a la mente Lamborghini, pero por eso surgió el procesamiento en línea de montaje...

Una breve historia del surgimiento del paralelismo en la arquitectura informática

Hoy en día, el paralelismo en la arquitectura informática sorprenderá a pocas personas. Todos los microprocesadores modernos, ya sea Pentium III o PA-8700, MIPS R14000, E2K o Power3, utilizan uno u otro tipo de procesamiento paralelo. En el núcleo Pentium 4 se pueden realizar hasta 126 microoperaciones simultáneamente en diferentes etapas de ejecución. En las presentaciones de nuevos chips y en los comunicados de prensa de las corporaciones, esto se presenta como la última palabra en tecnología y la vanguardia de la ciencia, y este es de hecho el caso si consideramos la implementación de estos principios en los confines miniatura de un solo chip. .

Al mismo tiempo, estas ideas aparecieron hace mucho tiempo. Inicialmente, se implementaron en las computadoras más avanzadas y, por lo tanto, únicas de su época. Luego, tras un desarrollo adecuado de la tecnología y una producción más barata, se pasó a los ordenadores de clase media y, finalmente, hoy todo esto se materializa plenamente en las estaciones de trabajo y los ordenadores personales.

Para asegurarnos de que todas las principales innovaciones en la arquitectura de los procesadores modernos se hayan utilizado realmente desde aquellos tiempos en los que no existían ni los microprocesadores ni el concepto de supercomputadoras, hagamos una breve excursión a la historia, comenzando casi desde el nacimiento de las primeras computadoras. .

IBM 701 (1953), IBM 704 (1955): memoria de bits paralelos, aritmética de bits paralelos.
Todas las primeras computadoras (EDSAC, EDVAC, UNIVAC) tenían memoria secuencial de bits, desde la cual las palabras se leían secuencialmente bit a bit. La primera computadora disponible comercialmente que utilizó memoria de bits paralelos (en CRT) y aritmética de bits paralelos fue la IBM 701, y el modelo más popular fue la IBM 704 (se vendieron 150 copias), que, además de lo anterior, fue la primera. para utilizar núcleos de ferrita y amplificador de punto flotante de hardware.

IBM 709 (1958): procesadores de E/S independientes.
Los procesadores de los primeros ordenadores gestionaban ellos mismos la entrada/salida. Sin embargo, la velocidad del dispositivo externo más rápido, que en ese momento era una cinta magnética, era 1000 veces menor que la velocidad del procesador, por lo que el procesador estaba esencialmente inactivo durante las operaciones de E/S. En 1958 Se conectaron 6 procesadores de entrada/salida independientes a la computadora IBM 704, que, después de recibir comandos, podían funcionar en paralelo con el procesador principal, y la computadora en sí pasó a llamarse IBM 709. Este modelo resultó ser sorprendentemente exitoso, ya que alrededor de 400 Se vendieron copias junto con modificaciones, la última se cerró en 1975: ¡20 años de existencia!

ESTIRAMIENTO DE IBM (1961): anticipación, análisis de memoria.
En 1956, IBM firma un contrato con el Laboratorio Científico de Los Alamos para desarrollar la computadora STRETCH, que tiene dos características fundamentalmente importantes: anticipación para la búsqueda de instrucciones y división de la memoria en dos bancos para adaptarse a una baja velocidad de recuperación de memoria y de ejecución.

ATLAS (1963): canalización de comando.
El principio transportador de ejecución de comandos se utilizó por primera vez en la máquina ATLAS, desarrollada en la Universidad de Manchester. La ejecución del comando se divide en 4 etapas: búsqueda de instrucciones, cálculo de la dirección del operando, búsqueda de operandos y ejecución de la operación. La canalización permitió reducir el tiempo de ejecución del comando de 6 μs a 1,6 μs. Esta computadora tuvo un gran impacto tanto en la arquitectura como en el software: fue la primera en utilizar un sistema operativo multiprograma basado en el uso de memoria virtual y un sistema de interrupción.

CDC 6600 (1964): dispositivos funcionales independientes.
Control Data Corporation (CDC), con la participación directa de uno de sus fundadores, Seymour R. Cray, produce la computadora CDC-6600, la primera computadora que utilizó varios dispositivos funcionales independientes. A modo de comparación con la actualidad, aquí hay algunos parámetros de la computadora:

  • tiempo del reloj 100ns,
  • rendimiento de 2 a 3 millones de operaciones por segundo,
  • La RAM se divide en 32 bancos de 4096 palabras de 60 bits,
  • ciclo de memoria 1 µs,
  • 10 unidades funcionales independientes.
La máquina fue un gran éxito en el mercado científico, desplazando activamente a las máquinas de IBM.

CDC 7600 (1969): Dispositivos funcionales independientes del transportador..
CDC lanza la computadora CDC-7600 con ocho unidades funcionales canalizadas independientes: una combinación de procesamiento paralelo y canalizado. Parámetros principales:

  • reloj 27,5 ns,
  • 10-15 millones de operaciones/seg.,
  • 8 unidades transportadoras,
  • Memoria de 2 niveles.

ILÍACO IV (1974): procesadores matriciales.

Proyecto: 256 elementos de procesador (PE) = 4 cuadrantes de 64PE, reconfigurabilidad: 2 cuadrantes de 128PE o 1 cuadrante de 256PE, ciclo de reloj 40ns, rendimiento 1Gflop;

Las obras se iniciaron en 1967, a finales de 1971 se fabricó un sistema de 1 cuadrante, en 1974. se puso en funcionamiento, el desarrollo se llevó a cabo hasta 1975;

parte central: dispositivo de control (CU) + matriz de 64 PE;

  • La unidad de control es una computadora simple de bajo rendimiento que controla la matriz PE; todas las matrices PE trabajaron en modo síncrono, ejecutando en cada momento el mismo comando recibido de la central, pero sobre sus propios datos;
  • PE tenía su propia ALU con un conjunto completo de instrucciones, OP - 2Kpalabras de 64 bits, ciclo de memoria 350ns, cada PE tenía acceso directo solo a su OP;
  • red de reenvío de datos: toro bidimensional con un desplazamiento horizontal de 1 a lo largo del límite;

A pesar del resultado en comparación con el proyecto: el costo es 4 veces mayor, solo se fabrica 1 cuadrante, el ciclo de reloj es de 80 ns, la productividad real es de hasta 50 Mflop; este proyecto tuvo un gran impacto en la arquitectura de las máquinas posteriores construidas sobre un principio similar, en particular: PEPE, BSP, ICL DAP.

Jerarquía de la memoria.
La jerarquía de la memoria no está directamente relacionada con el paralelismo, sin embargo, ciertamente se refiere a aquellas características de la arquitectura de la computadora que son de gran importancia para aumentar su rendimiento (suavizando la diferencia entre la velocidad del procesador y el tiempo de acceso a la memoria). Niveles principales: registros, memoria caché, RAM, memoria de disco. El tiempo de muestreo de los niveles de memoria desde la memoria del disco hasta los registros disminuye, el costo por 1 palabra (byte) aumenta. Actualmente, esta jerarquía se admite incluso en ordenadores personales.

¿Qué se está utilizando en el mundo ahora?

¿En qué direcciones se está desarrollando actualmente la tecnología informática de alto rendimiento? Hay cuatro direcciones principales.

Suponga que en su programa la fracción de operaciones que deben ejecutarse secuencialmente es f, donde 0

Si 9/10 del programa se ejecuta en paralelo y 1/10 sigue siendo secuencial, entonces, en principio, es imposible lograr aceleraciones de más de 10 veces, independientemente de la calidad de la implementación de la parte paralela del código y el número de procesadores utilizados (está claro que 10 se obtiene solo si el tiempo de ejecución de la parte paralela es 0).

Veamos el problema desde el otro lado: ¿qué parte del código necesita acelerarse (y por lo tanto examinarse preliminarmente) para obtener la aceleración especificada? La respuesta se puede encontrar en un corolario de la ley de Amdahl: para acelerar la ejecución de un programa en q veces es necesario acelerar no menos de q veces no menos de (1-1/ q)ª parte del programa. Por lo tanto, si desea acelerar un programa 100 veces en comparación con su versión secuencial, entonces necesita obtener una aceleración no menor en al menos el 99,99% del código, que casi siempre constituye una parte importante del programa.

De ahí la primera conclusión: antes de reelaborar a fondo el código para cambiar a una computadora paralela (y cualquier supercomputadora, en particular, lo es), debe pensar detenidamente. Si, después de evaluar el algoritmo integrado en el programa, se dio cuenta de que la proporción de operaciones secuenciales es grande, entonces claramente no puede contar con una aceleración significativa y debe pensar en reemplazar los componentes individuales del algoritmo.

En algunos casos, la naturaleza secuencial del algoritmo no es tan difícil de cambiar. Digamos que el programa tiene el siguiente fragmento para calcular la suma de n números:

S = 0 Do i = 1, n s = s + a(i) EndDo (lo mismo se puede hacer en cualquier otro idioma)

Por su naturaleza, es estrictamente secuencial, ya que en la i-ésima iteración del ciclo se requiere el resultado de la (i-1)ésima y todas las iteraciones se realizan una tras otra. Tenemos operaciones 100% secuenciales, lo que significa que no hay ningún efecto por el uso de computadoras paralelas. Al mismo tiempo, la salida es obvia. Dado que en la mayoría de los programas reales (pregunta: ¿por qué en la mayoría y no en todos?) no hay una diferencia significativa en el orden en que se suman los números, elegiremos un esquema de suma diferente. Primero, encontramos la suma de pares de elementos vecinos: a(1)+a(2), a(3)+a(4), a(5)+a(6), etc. Tenga en cuenta que con este esquema, ¡todos los pares se pueden agregar simultáneamente! En los siguientes pasos actuaremos exactamente de la misma manera, obteniendo una versión del algoritmo paralelo.

Parecería que en este caso se resolvieron todos los problemas. Pero imagine que los procesadores disponibles son heterogéneos en su rendimiento. Esto significa que habrá un momento en que algunos de ellos todavía estén trabajando, mientras que otros ya lo han hecho todo y se quedan esperando inútilmente. Si la dispersión en el rendimiento de la computadora es grande, entonces la eficiencia de todo el sistema con una carga uniforme del procesador será extremadamente baja.

Pero vayamos más allá y supongamos que todos los procesadores son iguales. ¿Se acabaron los problemas? ¡No otra vez! Los procesadores han completado su trabajo, pero el resultado debe ser transferido a otro para continuar con el proceso de sumatoria... y la transferencia toma tiempo... y en este momento los procesadores están inactivos nuevamente...

En una palabra, hacer que un sistema informático paralelo o una supercomputadora funcione con la máxima eficiencia en un programa específico no es, francamente, una tarea fácil, ya que es necesario coordinar cuidadosamente la estructura de los programas y algoritmos con las características de la arquitectura paralela. sistemas computacionales.

Pregunta final. ¿Crees que la afirmación es cierta: cuanto más potente es una computadora, más rápido puede resolver un problema determinado?

Respuesta final. No, eso no es verdad. Esto se puede explicar con un ejemplo sencillo y cotidiano. Si un excavador cava un hoyo de 1m*1m*1m en 1 hora, entonces dos excavadores similares lo harán en 30 minutos; puedes creerlo. ¿Cuánto tiempo les tomará a 60 excavadores hacer este trabajo? ¿En 1 minuto? ¡Por supuesto que no! A partir de cierto punto, simplemente interferirán entre sí, sin acelerar, sino ralentizar el proceso. En los ordenadores ocurre lo mismo: si la tarea es demasiado pequeña, dedicaremos más tiempo a distribuir el trabajo, sincronizar procesos, reunir resultados, etc., que al trabajo directamente útil.

Está absolutamente claro que no todo es tan sencillo...

Laboratorio de Tecnologías de la Información Paralela, Centro de Computación de Investigación MSU

Procesamiento en paralelo

Procesamiento en paralelo

El procesamiento paralelo es un modelo para ejecutar un proceso de aplicación simultáneamente por parte de un grupo de procesadores. Hay tres formas de implementar el paralelismo:
-1- Método SIMD para trabajar con un flujo de comandos y varios flujos de datos, en el que todos los procesadores que trabajan bajo el mismo programa procesan sus propios conjuntos de datos bajo el control del procesador maestro;
-2- Método MIMD para trabajar con múltiples flujos de comandos y múltiples flujos de datos, en el que los procesadores trabajan según sus programas independientemente unos de otros, comunicándose solo ocasionalmente entre sí;
-3- Forma MISD de trabajar con múltiples flujos de comandos y un flujo de datos.

En Inglés: Procesamiento en paralelo

Diccionario financiero Finam.


Vea qué es "Procesamiento paralelo" en otros diccionarios:

    Procesamiento en paralelo- Uno de los tipos de procesamiento de información cuando se pueden realizar varias operaciones simultáneamente. A diferencia del procesamiento consciente, que suele ocurrir de forma secuencial, este tipo de procesamiento ocurre sin esfuerzo consciente. Por ejemplo, leyendo estos... ...

    - (procesamiento paralelo) Un método de trabajo en una computadora en el que dos o más partes de un programa se ejecutan no secuencialmente, sino en paralelo. Estrictamente hablando, este método sólo se puede utilizar en computadoras que tengan dos o más... Diccionario de términos comerciales.

    procesamiento en paralelo- - Temas de telecomunicaciones, conceptos básicos de procesamiento paralelo...

    procesamiento en paralelo- lygiagretusis apdorojimas statusas T sritis automatika atitikmenys: engl. procesamiento paralelo vok. Parallelverarbeitung rus. procesamiento paralelo, f pranc. Trato en paralelo, m … Automatikos terminų žodynas

    procesamiento de información paralelo- un modelo de procesamiento de información en el cerebro, según el cual la información sufre una serie de transformaciones en ciertos "bloques funcionales" del cerebro de modo que en un momento dado se procesa simultáneamente (en paralelo) en varios... ... Gran enciclopedia psicológica.

    PROCESAMIENTO PARALELO DE INFORMACIÓN- Ver procesamiento de información, paralelo...

    Un método para el procesamiento de datos en paralelo por una gran cantidad de procesadores, que implementa el método MIMD para organizar el paralelismo. En inglés: Procesamiento masivo paralelo Sinónimos en inglés: MPP Ver también: Procesamiento paralelo Diccionario financiero Finam... Diccionario financiero

    PROCESAMIENTO EN PARALELO- Procesamiento de información en el que se realiza más de una secuencia de operaciones de procesamiento simultáneamente, o en paralelo. El procesamiento puede involucrar componentes no simbólicos de nivel extremadamente bajo, como los utilizados en... ... Diccionario explicativo de psicología.

    tubería paralela- lygiagretusis konvejerinis apdorojimas statusas T sritis radioelektronika atitikmenys: engl. canalización paralela vok. Parallel Pipelineverarbeitung, f rus. canalización paralela, f pranc. Trato de tubería paralela, m... Terminų žodynas radioelektronikos

    procesamiento simultáneo- procesamiento paralelo - [L.G.Sumenko. Diccionario inglés-ruso sobre tecnologías de la información. M.: State Enterprise TsNIIS, 2003.] Temas tecnología de la información en general Sinónimos procesamiento paralelo EN procesamiento simultáneo ... Guía del traductor técnico

Libros

  • Procesamiento de datos en paralelo
  • Procesamiento de datos paralelo, A. O. Latsis. El tutorial proporciona una descripción general sistemática en profundidad de las tecnologías de procesamiento de datos paralelos. La atención principal se presta a las tecnologías de software tradicionales de programación paralela...



Arriba