Paralelismo (informática)

De Wikipedia, la enciclopedia libre
Ir a la navegación Ir a la búsqueda

El paralelismo es un concepto intuitivo y atractivo. Considere un problema científico o de ingeniería computacional en el que ha estado trabajando. Si ejecutarlo en una sola CPU da como resultado, digamos, 10 horas, ¿por qué no usar 10 CPU y obtener los resultados después de solo una hora? En teoría, el paralelismo es la simple aplicación de múltiples CPU a un problema único. Para la ciencia computacional, supera algunas de las limitaciones impuestas por las computadoras con una sola CPU, pudiendo resolver problemas más grandes y complejos cuyos datos de entrada o resultados intermedios superan la capacidad de memoria de una CPU. De esta forma las simulaciones se pueden ejecutar con una resolución más fina y un fenómeno físico se puede modelar de manera más realista.

En la práctica, el paralelismo tiene un precio elevado. En los procesos paralelos la gramática implica una curva de aprendizaje pronunciada, además de un esfuerzo intensivo; el programador debe pensar en la aplicación de nuevas formas y puede terminar reescribiendo prácticamente todo el código. El entorno de ejecución de una computadora paralela es inherentemente inestable e impredecible. Las técnicas para depurar y ajustar el rendimiento de los programas en serie no se extienden fácilmente al mundo paralelo. Es posible trabajar meses en la paralelización de una aplicación sólo para descubrir que produce resultados incorrectos o que funciona más lento que antes.

El Cray-2 fue el ordenador más rápido del mundo entre 1985 y 1989.

El paralelismo es una forma de computación en la cual varios cálculos pueden realizarse simultáneamente,[1]​ basado en el principio de dividir los problemas grandes para obtener varios problemas pequeños, que son posteriormente solucionados en paralelo. Hay varios tipos diferentes de paralelismo: nivel de bit, nivel de instrucción, de datos y de tarea. El paralelismo ha sido empleado durante muchos años, sobre todo para la Computación de alto rendimiento.

Condiciones previas para el paralelismo[editar]

Existen tres factores que establecen los objetivos de rendimiento de la aplicación. Primero, ¿con qué frecuencia se utilizará la aplicación antes de que se necesiten cambios? Si la respuesta es miles de veces entre revisiones, esta es una aplicación altamente productiva que probablemente requiera esfuerzo significativo del programador para mejorar su rendimiento.

El segundo factor es el tiempo que se necesita actualmente para ejecutar la aplicación. Supongamos que se esperan días para obtener los resultados, reducir ese tiempo a una fracción puede mejorar su productividad significativamente. Por el contrario, si se puede medir el tiempo de ejecución en minutos es poco probable que se esté satisfecho con la recompensa en términos de mejora del rendimiento y esfuerzo requerido. Tenga en cuenta que estas son medidas relativas, si su aplicación es un servicio de emergencia en tiempo real como un sistema de gestión, incluso unos pocos segundos de mejora podrían ser significativos.

En tercer lugar, ¿en qué medida está satisfecho con la resolución actual o la complejidad de los resultados? Si la velocidad o la capacidad de memoria de las computadoras limita a una cuadrícula cuyas unidades son mucho más toscas de lo que se quiere, digamos, se representan enviando la superficie del océano en unidades de 10 grados cuando lo que realmente se necesita es una granularidad de 2 grados, el paralelismo puede ser la única manera factible de romper esa restricción.

Aplicaciones[editar]

Como la computación paralela se vuelve cada día más grande y rápida, muchos problemas considerados anteriormente muy largos y costosos se han podido solucionar. El paralelismo se ha utilizado para muchas temáticas diferentes, desde bioinformática (para hacer plegamiento de proteínas) hasta economía (para hacer simulaciones en matemática financiera). Los problemas típicos encontrados en el paralelismo son:[2]

Aplicación de las reglas generales: 3 casos de estudio[editar]

1. La paralelización en la renderización de una imagen se lleva 150 horas de tiempo de computadota necesarias por cada 1000 pasos ocupando un gigabyte o más de espacio en disco.

2. El primer caso de estudio fue un éxito ya que se presentaron mejoras en el rendimiento general siendo ahora 116 horas para 1800 pasos de tiempo, perocambió el cuello de botella de rendiminto a la fase de renderizado.

3. Dado que la fase de renderizado se había mantenido independiente de la simulación en sí podría usarse para renderizar otro tipo de imágenes, esto se hizo para ver cuánto rendimiento se puede exigir desde el renderizado a través del paralelismo.

Un sistema de memoria compartida vuelve indicando la preferencia, pero con la memoria distribuida del sistema podría funcionar, dando suficientes cálculos entre interacciones de la CPU. Entonces ahora toda la fase de renderizado consume sólo 71 segundos: 6 para configuración e inicialización, 47 para el cálculo de rayos, 13 para trazar y 5 para escribir la salida.

Claramente las reglas generales indican que la paralelización no garantiza, dado que la intención del caso del mundo real fue para empujar los límites del rendimiento. Al canalizar el casting de rayos y trazar cálculos, es posible reducir el tiempo de ejecución en unos pocos segundos por imagen, sin embargo, la cantidad de esfuerzo requerido fue sustancial.

Véase también[editar]

Referencias[editar]

  1. Almasi, G.S. and A. Gottlieb (1989). Highly Parallel Computing. Benjamin-Cummings publishers, Redwood City, CA.
  2. Asanovic, Krste, et al. (December 18, 2006). The Landscape of Parallel Computing Research: A View from Berkeley (PDF). University of California, Berkeley. Technical Report No. UCB/EECS-2006-183. See table on pages 17-19.

Enlaces externos[editar]