Sei sulla pagina 1di 7

En teoría, el paralelismo es así de simple: aplicar varias CPU a un

solo problema. Para el científico computacional, supera algunos

de las restricciones impuestas por las computadoras de una sola CPU. Además de ofrecer

soluciones más rápidas, aplicaciones que se han paralelizado-convertido

en programas paralelos: puede resolver problemas más grandes y complejos

cuyos datos de entrada o resultados intermedios exceden la capacidad de la memoria

de una CPU.Las simulaciones se pueden ejecutar a una resolución más fina. Fenómeno físico

se puede modelar de manera más realista.

En la práctica, sin embargo, el paralelismo tiene una etiqueta de precio alto.

¿Cómo sabes si hacer o no la inversión? los

propósito y naturaleza de su aplicación son los indicadores más importantes

de cuán acertada será la paralelización.

Condiciones previas para el paralelismo

Básicamente, el propósito de su aplicación es bueno indicador de cuánto esfuerzo es probable que


invierta en mejorar su rendimiento. Tres factores establecen los objetivos de rendimiento de la
aplicación.

Primero, ¿con qué frecuencia se usara la aplicación antes de que se necesiten cambios? Si la
respuesta es

miles de veces entre revisiones, este es un

aplicación altamente productiva que probablemente merezca la pena

un esfuerzo significativo del programador para mejorar su

actuación. Un programa que debe cambiar frecuentemente,

por otro lado, no te dejará amortizar

el tiempo invertido en esas mejoras.

El segundo factor es el tiempo actualmente

necesario para ejecutar la aplicación. Asumamos

ahora esperas días para obtener tus resultados. Reducir

ese tiempo a una fracción puede mejorar su profesional

productividad significativamente. Por el contrario, si

puedes medir el tiempo de ejecución en minutos, eres


es poco probable que esté satisfecho con el pago en términos

de la mejora del rendimiento en comparación con el esfuerzo requerido.

Tenga en cuenta que estas son medidas relativas. Si

su aplicación es un sistema de gestión de emergencias en tiempo real, incluso una mejora de unos
pocos segundos

podría ser significativo.

En tercer lugar, ¿en qué medida está satisfecho con

la resolución actual o la complejidad de sus resultados?

Si la velocidad o la capacidad de memoria de la serie

las computadoras te limitan a una cuadrícula cuyas unidades

son mucho más groseros de lo que quieres, digamos, representando

la superficie del océano en unidades de 10 grados,

cuando lo que realmente necesitas es una granularidad de 2

grados paralelismo puede ser el único posible

forma de romper esa restricción.

Cómo afecta tu problema el rendimiento

La naturaleza del problema es el contribuyente clave para el éxito o fracaso final en la


programación paralela. En particular, los patrones de acceso a los datos y el cálculo asociado
indican cuán fácil o difícil será. Geoffrey Fox fue el primer investigador en

estudiar cómo las características de las aplicaciones limitan su desempeño. Estableció que la
mayoría de las aplicaciones técnicas pertenecen a una de tres categorías, a las que denominó
arquitecturas de problemas, y que cada una es adecuada para ciertos tipos de computadoras
paralelas.

Copiar figura 2

Desde la perspectiva del programador paralelo,

este es el estilo de problema más simple, conocido como

perfect (o "nivel de trabajo") parallelism. Fundamentalmente,

los cálculos en cada conjunto de datos son completamente independientes.

Es decir, las imágenes podrían ser computadas

en máquinas independientes ejecutando copias de la

aplicación, siempre que los datos de entrada apropiados


estaban disponibles para cada copia. Es fácil de lograr

importantes ganancias de rendimiento de las aplicaciones

ajustando este estilo de paralelismo.

Ahora supongamos que las imágenes no están completamente

independiente; quizás respuestas de subestructura

están siendo simulados en una serie de tiempo

pasos. Figura 3

Este modelo se llama pipeline parallelism, ya que

los datos son efectivamente "canalizados" desde un computacional

etapa a otra. La clave es que los resultados

se pasan de una sola manera a través de la tubería (que

es decir, la simulación del siguiente paso de tiempo no

requiere información del volumen-representación

o etapas de formateo). La puesta en marcha se retrasa inicialmente

a medida que los datos estén disponibles en cada etapa,

el rendimiento general dependerá de la

número relativo de pasos de tiempo para procesar

una vez que todos los puntos a lo largo de la tubería estén activos

paralelismo completamente sincrónico,

lo que significa que, al menos conceptualmente, cada cálculo

se aplica sincrónicamente (o simultáneamente)

a todos los datos. La clave aquí es que el futuro

los cálculos o las decisiones dependen de los resultados

de todos los cálculos de datos anteriores. Por lo general, hay

no hay suficientes CPU para aplicar un cálculo a todos

datos al mismo tiempo, por lo que cada CPU realmente itera

a través de un subconjunto. El paralelismo completamente sincrónico

requiere más esfuerzo del programador que


paralelismo de tuberías para lograr un buen rendimiento.

cómo su máquina afecta el rendimiento

En general, una computadora paralela es cualquier colección

de elementos de procesamiento conectados por algún tipo

de la red de comunicación. (Aquí, el procesamiento

los elementos se conocen como CPU por simplicidad,

pero también involucran memoria). También

conocidos como multicomputadores, tales sistemas abarcan

una gama de tamaños y precios, desde

grupo de estaciones de trabajo conectadas a la misma

LAN a una máquina cara y de alto rendimiento

con cientos o miles de CPU conectadas

por interruptores de velocidad ultra alta. Claramente,

Velocidad, capacidad y comunicación de la CPU

medio limitar el rendimiento de cualquier paralelo

solicitud. El modelo de control

dicta cuántas instrucciones diferentes se pueden ejecutar simultáneamente.

Modelo de memoria indica cuántas CPU pueden acceder directamente

una ubicación de memoria dada. Todas las CPU acceden a

memoria única en computadoras de memoria compartida,

mientras que las computadoras con memoria distribuida usan una

memoria separada para cada CPU. La memoria es

compartido entre pequeños grupos de CPU en simétrico

computadoras multiprocesador (SMP) pero cuando

los grupos se agrupan para formar sistemas más grandes, cada

la memoria del grupo permanece aislada.

La interacción del modelo de control y el modelo de memoria

resulta en cuatro clases de computadora paralela

arquitectura: SIMD, memoria compartida, memoria distribuida,


y SMP.

Multicomputadores SIMD

En un multicomputador SIMD todas las CPU ejecutan la misma instrucción. una sola unidad de
control rastrea la corriente

instrucción, que las CPU se aplican

simultáneamente a diferentes operandos. La unidad de control es la clave del programador para

tanto los beneficios como los costos de la paralelización.

Multicomputadores de memoria compartida

los MIMD le dan a cada uno

CPU su propia unidad de control. En cualquier momento durante

ejecución, diferentes CPU pueden ejecutar instrucciones diferentes. Esto permite que las CPUs
realicen cálculos

a diferentes velocidades, pero también significa que

el programador no puede asumir necesariamente nada

sobre el orden relativo en el que un determinado

la instrucción se ejecuta en dos CPU diferentes.

En un multicomputador de memoria compartida, el

Las CPU interactúan accediendo a ubicaciones de memoria

en una sola memoria compartida.

Una parte importante de la

tiempo del programador es probable que se gaste la identificación

carreras potenciales y protección compartida

datos a través de un mecanismo de bloqueo que excluye

otras CPU de acceso cuando un valor de datos se está

modificado. El bloqueo frecuente afecta negativamente

rendimiento ya que las CPU se ven obligadas a esperar su

acceso a su vez, por lo que el truco es proporcionar solo el

cantidad correcta de protección.

La protección de datos compartidos no es la única área que requiere

esfuerzo del programador Al igual que con la informática vectorial,


el rendimiento del paralelismo de memoria compartida

en gran parte depende tanto del tamaño y

intensidad de bucles computacionales.

Multicomputadores de memoria distribuida

En multicomputadores de memoria distribuida, también,

cada CPU ejecuta su propia secuencia de instrucciones,

pero como su nombre lo indica, cada CPU tiene una privacidad

memoria. Para interactuar o compartir información,

las CPU se envían mensajes entre sí, típicamente

sobre los interruptores de alta velocidad. La clave para obtener rendimiento

es por lo tanto la capacidad del programador para

minimizar la comunicación

SMP

máquinas multiprocesador simétricas la palabra "simétrica" se refiere al hecho de que cada

CPU puede recuperar datos almacenados en una memoria determinada

ubicación en la misma cantidad de tiempo. SMPs

se parecen a los multicomputadores de memoria compartida, pero

son más lentos y menos costosos, con menos CPU

El problema a la máquina

En general, entonces, cada tipo de computadora paralela

es apropiado para aplicaciones con ciertas

características. El seguimiento

reglas generales resumen la interacción entre

modelo de aplicación y tipo de máquina:

1.- Una aplicación perfectamente paralela probablemente

funcionar razonablemente bien en cualquier MIMD

2.- 2.-Una aplicación estilo tubería probablemente

funciona mejor en una máquina de memoria compartida

o SMP
3.-Una aplicación completamente sincrónica funcionará

mejor en un multicomputador SIMD

4.- Una aplicación síncrona va a funcionar

mejor en un sistema de memoria compartida

Cómo su lenguaje afecta el rendimiento

El lenguaje de programación que use obviamente

afectar el esfuerzo requerido para paralelizar

su aplicación. La regla de oro que se aplica a la selección del idioma,

entonces, es bastante simple:

Con pocas excepciones, tú no eliges el idioma; El te elige.

Estableciendo expectativas realistas

//Aplicando las reglas de oro: tres casos de estudio

Para analizar el

procesos que se simulan, es necesario convertir el 3D

conjunto de datos a una imagen 2D que se puede mostrar en la computadora

pantalla. El resultado final es una serie de esas imágenes, una

por paso de tiempo, eso se puede estudiar uno a la vez o

se muestra como una secuencia animada.

Potrebbero piacerti anche