<< Chapter < Page Chapter >> Page >

Existen tres enfoques principales sobre cómo dividir o descomponer un trabajo, de modo que pueda distribuirse entre múltiples CPUs:

  • Ya hemos discutido esta técnica. Cuando la descomposición se hace basándose en los cálculos, llegamos a algún mecanismo para dividir equitativamente los cómputos (tales como las iteraciones o un bucle) entre nuestros procesadores. Generalmente se ignora la ubicación de los datos, y las preocupaciones principales son la duración de cada iteración y la uniformidad. Esta es la técnica predilecta para los sistemas de memoria uniformemente compartida, porque cualquier procesador puede acceder a los datos de modo igualitario.
  • Cuando el acceso a la memoria no es uniforme, la tendencia es enfocarse en la distribución de los datos en vez de los cómputos. Se asume que la recuperación de los datos "remotos" es costosa y por tanto debe minimizarse. Los datos se distribuyen entre las memorias. El procesador que contiene el dato realiza los cálculos sobre dicho dato tras recuperar cualquier otro dato necesario para realizarlos.
  • Cuando las operaciones que deben realizarse son muy independientes entre sí, y toman algún tiempo, puede llevarse a cabo una descomposición de tareas. En este enfoque un proceso o hilo de ejecución maestro mantiene una cola de las unidades de trabajo. Cuando un procesador dispone de recursos, recupera la siguiente "tarea" de la cola y comienza a procesarla. Se trata de un enfoque muy atractivo para cálculos embarazosamente paralelos. El esfuerzo distribuido para romper la clave RC5 fue coordinado de esta forma. Cada procesador recibió un bloque de claves y comenzó a probar dichas claves. En algún punto, si los procesadores no eran lo suficientemente rápidos o dejaban de funcionar, el sistema central reasignaba el bloque a otro procesador. Esto permite al sistema recuperarse de problemas en las computadoras individuales.

En cierto sentido, el resto del capítulo está dedicado primordialmente a la descomposición de datos. En un sistema de memoria distribuida, el costo de comunicación usualmente es el factor de rendimiento dominante. Si su problema es tan violentamente paralelo que puede distribuirse entre tareas, prácticamente cualquier técnica funcionará. Los problemas con datos paralelos ocurren en muchas disciplinas. Pueden variar desde aquellos que son extremadamente paralelos, a aquellos otros que sólo lo son un poco. Por ejemplo, los cálculos fractales son extremadamente paralelos; cada punto se deriva independientemente del resto. Es sencillo dividir los cálculos fractales entre los procesadores. Y dado que los cálculos son independientes, los procesadores no requieren coordinarse o compartir datos.

Nuestro problema de flujo calórico, cuando se expresa en su forma rojo-negro (o FORTRAN 90) es extremadamente paralelo, pero requiere de cierto grado de compartición de datos. Un modelo gravitatorio o una galaxia es otra clase de programa paralelo. Cada punto ejerce una influencia sobre cualesquiera otro. Así, y al contrario que los cálculos fractales, los procesadores deben compartir datos.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Cómputo de alto rendimiento. OpenStax CNX. Sep 02, 2011 Download for free at http://cnx.org/content/col11356/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Cómputo de alto rendimiento' conversation and receive update notifications?

Ask