1. Resolución de sistemas de ecuaciones lineales

Anuncio
PRÁCTICAS ARQUITECTURA DE COMPUTADORES
Curso 2006-2007 / Segundo cuatrimestre
Dpto. de Electrónica y Sistemas. Facultad de Informática. La Coruña
1.
1.1.
Resolución de sistemas de ecuaciones lineales
Objetivos
En las dos primeras prácticas de la asignatura se abordó la paralelización de
programas secuenciales utilizando la librerı́a de paso de mensajes PVM. El objetivo
que se perseguı́a era poner de manifiesto las dificultades asociadas a la programación
de máquinas paralelas (sincronización de procesos, intercambio de información entre
procesos,...). Ası́mismo se perseguı́a que el estudiante se familiarizase con el manejo
de la librerı́a de paso de mensajes PVM y el entorno XPVM.
En esta tercera práctica el estudiante deberá profundizar en el proceso de paralelización de programas secuenciales para adquirir una visión global de dicho proceso
independientemente de la arquitectura de la máquina paralela utilizada (memoria
compartida, memoria distribuida). Al finalizar la práctica, el estudiante deberá ser
capaz de comparar las distintas aproximaciones tanto desde un punto de vista técnico (facilidad de desarrollo, portabilidad, eficiencia del programa paralelo, grado de
modificación del código fuente original) como empresarial (coste, disponibilidad de
recursos hardware, disponibilidad de tiempo).
1.2.
Problema a resolver
Resolver el sistema de ecuaciones lineales Ax = b, siendo A una matriz cuadrada
N ∗ N, utilizando la implementación del método de Gauss que se muestra en la
Figura 1. Se pide desarrollar dos versiones de este algoritmo:
Versión paralela para una red de estaciones de trabajo (multicomputador,
memoria distribuida) utilizando la librerı́a de paso de mensajes PVM.
Versión paralela para un sistema multiprocesador de memoria compartida utilizando las directivas de paralelización de OpenMP.
Estas versiones deben estar optimizadas de forma que se extraiga el máximo rendimiento de la arquitectura de cada una de las máquinas.
1.3.
Metodologı́a
El proceso de desarrollo de programas paralelos a partir de programas secuenciales se puede descomponer en tres fases:
1. Análisis de dependencias: En esta fase se realiza un análisis detallado del comportamiento del programa secuencial centrándose en las dependencias de datos
subroutine gauss(ab, x, N)
integer N
real ab(N,N+1), x(N)
integer i, j, ifila, icol, ipv
real pivote, factor
do ipv = 1,N
if(abs(ab(ipv,ipv)) .lt. 1.e-5) then
print *, "pivote mal"
return
endif
pivote = ab(ipv,ipv)
do j=ipv,N+1
ab(ipv,j) = ab(ipv,j)/pivote
enddo
do ifila = 1,N
if(ifila .ne. ipv) then
factor=ab(ifila,ipv)
do icol = ipv,N+1
ab(ifila,icol)=ab(ifila,icol)-factor*ab(ipv,icol)
enddo
endif
enddo
enddo
return
end
Figura 1: Implementación del método de resolución de sistemas de ecuaciones lineales
de Gauss.
y de control que aparecen durante la ejecución del mismo. Las dependencias
permiten al programador determinar el orden en que se tienen que ejecutar las
sentencias del programa a fin de preservar su semántica.
2. Diseño de la estrategia óptima de paralelización: En general, las dependencias
presentes en un programa permiten reordenar las sentencias de varias formas.
La tarea del programador consiste en: (a) identificar el reordenamiento óptimo
en términos de balanceo de la carga entre los procesadores y de minimización
de la sobrecarga debida al intercambio de información entre los procesadores
(e.g., paso de mensajes, mecanismo de coherencia caché, acceso a memorias remotas); y (b) identificar los puntos de sincronización necesarios para preservar
la semántica del programa secuencial.
3. Implementación del programa paralelo: En esta fase se selecciona la herramienta (e.g., PVM, OpenMP) que se utilizará para la programación de las distintas
máquinas paralelas (red de estaciones de trabajo, cluster de procesadores, SGI
Origin 200, HP Superdome, SUN HPC4500,...). Es tarea del programador desarrollar un programa eficiente teniendo en cuenta las caracterı́sticas técnicas
de la herramienta utilizada.
Teniendo en cuenta las fases descritas anteriormente, el estudiante deberá llevar
a cabo las siguientes tareas:
1. Utilizar las condiciones de Bernstein para analizar las dependencias que aparecen durante la ejecución secuencial del programa de la Figura 1 y ası́ identificar
las secciones de código que se pueden ejecutar en paralelo. Elaborar un informe (máximo 2 carillas de un folio A4) que indique explı́citamente las secciones
que no se pueden ejecutar en paralelo y las dependencias que lo impiden.
2
2. Estudiar las distintas posibilidades de reparto de la carga de trabajo y proponer dos estrategias, una en la que la carga esté balanceada y otra en la que
esté desbalanceada. Presentar los resultados en un informe de una carilla de
un folio A4.
3. Implementar dos versiones del programa paralelo que utilicen la estrategia que
presenta balanceo de carga utilizando:
a) Librerı́a de paso de mensajes PVM y una red de estaciones de trabajo.
b) OpenMP y un multiprocesador de memoria compartida.
Elaborar un informe (máximo 2 carillas de un folio A4) que contenga un diagrama de actividad de la versión PVM, un diagrama de actividad de la versión
OpenMP, y una tabla comparativa de las ventajas e inconvenientes de las herramientas PVM y OpenMP.
1.4.
Evaluación
La entrega de la práctica está dividida en dos fases. En la primera fase, el estudiante presentará los resultados del análisis del programa secuencial y del diseño
de las estrategias de paralelización. En la segunda fase, se exigirá un conocimiento
detallado de las implementaciones paralelas del algoritmo de Gauss usando PVM y
OpenMP.
La evaluación se realizará bien por el procedimiento de defensa oral bien mediante
un examen de prácticas. El estudiante podrá obtener una bonificación sobre la nota
final de la asignatura si entrega las prácticas antes de las fechas indicadas en la
siguiente tabla:
Grupo prácticas
Análisis&Diseño (2 sesiones)
Implementación (6 sesiones)
Jueves
Viernes
29 marzo 2007 30 marzo 2007
31 mayo 2007 25 mayo 2007
Los códigos desarrollados por el estudiante deberán cumplir las siguientes restricciones:
La matriz del sistema y el vector de términos independientes se obtendrán de
dos ficheros “a.dat” y “b.dat” con el formato siguiente:
“a.dat”
N
a11
a21
a12
a22
aN 1 aN 2
“b.dat”
N
b1
b2
...
bN
... a1N
... a2N
...
... aN N
3
El resultado se imprimirá en pantalla con el formato siguiente:
x1
x2
...
xN
El código de los programas paralelos debe estar bien estructurado, diseñando
procedimientos especı́ficos para realizar las comunicaciones y las computaciones.
4
Descargar