Nueva generación de microprocesadores: procesamiento en paralelo

El cálculo numérico es una herramienta fundamental de la ingeniería química, así como en muchas otras ciencias. Un ejemplo de esto son los programas de simulación y optimización de procesos. Cuando el número de variables y ecuaciones a resolver es alto, la limitante es la capacidad de procesamiento. Los avances en la velocidad de los microprocesadores están llegando a su limite practico, y la manera de obtener mayor performance entonces es utilizar multiples CPU's en paralelo (multi-core). Otra actividad que requiere cada vez mas poder de procesamiento son los servidores de las redes informaticas en la empresa quimica.

En un reciente seminario de Intel, denominado "Parallelism Programming Has Gone Mainstream: Are You Ready?" se hace referencia a esta tendencia y a su impacto en el mundo del software.

Segun los expositores, los programadores deberán adaptarse a la idea de incorporar procesamiento paralelo a sus programas. Esto introduce varios desafíos, pues es una forma completamente nueva de pensar, opuesta a la tradicional que consiste solamente en ejecutar una secuencia de comandos en orden.

Algunos de los problemas a resolver:

  • Un programa debería poder adaptarse eficientemente a sistemas con 2,4,8 o diferentes numeros de procesadores.
  • La coordinación de tiempo entre diferentes tareas introduce nuevos tipos de errores. Se requieren nuevas herramientas para detectar estas condiciones.
  • También puede suceder que alguno de los procesadores falle, y por ello debería tener medidas de seguridad para que el cálculo pueda seguir adelante ante este tipo de eventos.
  • Los programas deberían ser de fácil mantenimiento, por ejemplo las funciones de paralelismo no deberían ocupar gran cantidad del codigo. Mas bien estas tareas deberían implementarse en librerías o funciones de uso general ya optimizadas para los procesadores.

Para facilitar la transición de uniprocesador a multiprocesador ellos proponen el uso de nuevas herramientas que por ejemplo detectan errores de temporización o verifican si correrá eficientemente en un sistema con múltiples procesadores.

De esta forma se facilitaría el uso general de programación en paralelo ya que hasta ahora es un arte dominada por pocos expertos y aún a ellos les resulta difícil escribir software que mantenga su eficiencia cuando se cambia el hardware.

A pesar de estos desafíos, anticipan que las ventajas de los nuevos procesadores serán grandes y darán lugar a numerosas innovaciones en muchas áreas como simulaciones moleculares, optimización de procesos, solución de ecuaciones diferenciales, control de procesos, bases de datos de negocios etc. Todas ellas de gran interés para los ingenieros quimicos.


Mas notas sobre este

Mas notas sobre este tema:

Programacion en paralelo: Notas del webinar del 3 de Abril a cargo de Tim Mattson. Intel corporation

Hasta hora la programacion paralela solo lo usaban aplicaciones alta performance.

* En los proximos anios todas las computadoras seran paralelas. Todas (Hasta las de los telefonos celulares)
* La performance no se lograra mejorar por aumento de gigahertz como hasta ahora, el software debera optimizarse.

Hay que usar software y "wetware" (el cerebro)para descomponer el algoritmo en partes:

Libro de Referencia:
Patterns for Parallel Programming, Tim. Mattson

Algunas Herramientas actuales de programacion en paralelo:
* Low level: Pthreads, Windows threads
* MPI
* OPenMP

El codigo incorpora secciones para administrar los hilos o threads.

Por ejemplo hay 2 tipos de variables:
private : cada thread(hilo) posee su variable propia, distinta
reduction : unica para todo el programa, por ejemplo acumula el total de una suma

En los procesadores multi core habra diferencia entre hilos en el mismo procesador (comunicacion rapida entre ellos) e hilos en distintos procesadores (comunicacion mas lenta, mayor latencia).

Nuevo software auxiliar ayudara a encontrar "race conditions" colisiones entre hilos