UNIVERSIDAD NACIONAL DEL NORDESTE

Slides:



Advertisements
Presentaciones similares
Diseño y análisis de algoritmos
Advertisements

Diseño y análisis de algoritmos
Investigación de Operaciones
MROGINSKI, Javier L. – BENEYTO, Pablo A. –
Introducción a los Algoritmos
Bivariadas y Multivariadas
Resolución de Problemas Algoritmos y Programación
MÉTODOS NUMÉRICOS. Explicación del método de L U. Realizado por:
Diseño orientado al flujo de datos
1.- Definiciones. 2.- Fórmulas. 3.- Esquema. 4.- Ejercicios.
Javier L. Mroginski, H. Ariel Di Rado, Pablo A. Beneyto
MROGINSKI, Javier L. – BENEYTO, Pablo A. –
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia.
3. Métodos de resolución Ecuaciones algebraicas lineales
Sistemas de Ecuaciones Diferenciales Lineales
FORTRAN 77 y Cómputo Científico
FORTRAN 77 y Cómputo Científico
MATRICES.
Métodos Numéricos por Interpolación
Método de Gauss-Seidel
APLICACIÓN DE PROCESAMIENTO EN PARALELO BASADO EN OPENMP EN EL MANEJO MATRICIAL USADO EN EL ANÁLISIS DE SISTEMAS ELÉCTRICOS Antonio Ramos Paz 1, Eustaquio.
MATRICES Concepto Se llama matriz de orden m x n a todo conjunto de elementos aij dispuestos en m líneas horizontales (filas) y n verticales (columnas)
Métodos de Análisis Ingenieril
Tema 2: Métodos de ajuste
Universidad Autónoma San Francisco
Operaciones con Polinomios
Universidad de los Andes-CODENSA
Calcular el cero del polinomio de orden 3 que pasa por los puntos
Método de Gauss-Seidel
Programación en Matlab
Métodos iterativos para sistemas lineales
Fundamentos de programación
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Analisis de Rendimiento.

INSTITUTO TECNOLÓGICO DE CD. GUZMÁN
Teoría de Sistemas y Señales
Tipos de Paralelismo Paralelismo de datos: cada procesador ejecuta la misma tarea sobre diferentes conjuntos o subregiones de datos Paralelismo de tareas:
Contenido Marco de referencia Arquitectura de computadoras paralelas
TEMA 7 ECUACIONES. SISTEMAS DE ECUACIONES
COMPUTACION EVOLUTIVA Introducción. Computación Evolutiva: Computación Evolutiva: Enfoque alternativo para abordar problemas complejos de: Enfoque alternativo.
Sesión 12.2 Sistemas lineales y método de Gauss.
Métodos de Análisis Ingenieril
Programación Lineal Entera Antonio H. Escobar Z Universidad Tecnológica de Pereira – Colombia Posgrado en Ingeniería Maestría en Ingeniería Eléctrica.
Operaciones con números complejos
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Tema 3.- MATRICES INVERTIBLES
Vectores y Matrices.
(agradecimiento: Ruben Weht
Ecuaciones y sistemas de ecuaciones
MATLAB Adriana Ruiz Martínez. Mario Cesar Taracena Contreras.
1 Condiciones de extremo Proceso para derivar las condiciones De problema más simple a más complejo Progresión de problemas: Problema sin restricciones.
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 2: Divide y Vencerás Unidad 1: Nociones básicas.
Ecuaciones Algebraicas
UNIDAD 4 Clase 6.3 Tema: Sistema de Ecuaciones Lineales
Instituto Tecnológico De Villahermosa Alumno: Lázaro García Hernández.
SISTEMA DE ECUACIONES LINEALES. Métodos ExactosMétodos Aproximados.
METODO DE SUMA Y RESTA. INDICE.
“CURSO PROPEDÉUTICO PARA EL MEJORAMIENTO DEL PENSAMIENTO MATEMÁTICO”
Matemáticas II. Profesor: Ing. Yadhira M. Rangel Carrillo.
APLICACIONES DE LAS MATRICES
Ecuaciones y sistemas de ecuaciones de primer grado
MATRIZ INVERSA.
MATRICES.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Matemática Básica (Ing.) 1 Sesión 12.1 Sistemas lineales y método de Gauss.
Escuela de Ciencias Básicas Tecnología e Ingeniería UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA SEPTIEMBRE.
Sistemas de Ecuaciones
Álgebra, ecuaciones y sistemas
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
ALGORITMO PARALELO PARA LA RESOLUCIÓN DE SISTEMAS DE ECUACIONES APLICABLES AL MÉTODO DE LOS ELEMENTOS FINITOS Mroginski, Javier L. - Di Rado, H. Ariel.
Transcripción de la presentación:

UNIVERSIDAD NACIONAL DEL NORDESTE FACULTAD DE INGENIERIA ALGORITMO PARALELO PARA LA RESOLUCIÓN DE SISTEMAS DE ECUACIONES APLICABLES AL MÉTODO DE LOS ELEMENTOS FINITOS Mroginski, Javier L. - Di Rado, H. Ariel Beneyto, Pablo A. - Awruch, Armando M. Tesis de Maestría en Ciencias de la Ingeniería

INTRODUCCIÓN Con el devenir de los años y el desarrollo industrializado de las computadoras personales (PC), muchos problemas de la ingeniería que estaban restringidos a grupos selectos de investigación hoy pueden ser resueltos empleando computación paralela. Existen muchas formas de implementar una estación de computadoras en paralelo, sin embargo la mas económica probablemente resulta ser la denominada “Clusters Beowulf”. En estos computadores usualmente se ejecuta un único programa en una PC (servidor) que reparte la tarea a las demás PC (nodos) por medio de una interfase de mensajería (ej. MPI, PVM, OpenMP, etc.). Los problemas de ingeniería que representan un desafío a la tecnología actual (ej. Predicción climática, modelación de la turbulencia, etc.) requieren un gran costo computacional y necesitan del empleo de supercomputadoras o bien, sin que represente un desmedro en el rendimiento, estaciones en paralelo. Tal vez la herramienta numérica mas empleada en la actualidad para resolver los problemas ingenieriles sea el Método de los Elementos Finitos (MEF), el cual presenta en un punto crítico al momento de paralelizar los códigos. Dicha situación se debe a que el MEF conduce a un sistema de ecuaciones algebraicas lineales (SEAL) cuya resolución debe ser abordada en paralelo. Existen muchos métodos de resolución de sistemas de ecuaciones aplicables al MEF, uno de ellos es el método de Jacobi. En el presente trabajo se muestra un algoritmo, con el código fuente de F90, capaz de resolver sistemas de ecuaciones en PC paralelas por el método iterativo de Jacobi. Se indican a su vez valores de eficiencia comparándolos con algoritmos secuénciales.

MÉTODO DE JACOBI Es un método iterativo con el cual se resuelve el sistema lineal comenzando con una aproximación inicial y genera una sucesión de vectores que converge a x. Los métodos iterativos traen consigo un proceso que convierte el sistema en otro equivalente de la forma para alguna matriz fija T y un vector c. Luego de seleccionar el vector inicial la sucesión de los vectores de la solución aproximada se genera calculando: para k = 1,2,3, ... El método se escribe en la forma original separando A en sus partes diagonal D, triangular inferior L y triangular superior U. Con lo cual A = D+L+U, entonces transformamos la ecuación, en con , o bien y explicitando el vector incógnita se tiene Esta demostrado que el método de Jacobi así planteado converge a la solución cuando la matriz A es diagonalmente dominante.

BIBLIOTECAS MPI El paquete MPI (Message Passing Interface) consiste de una serie de bibliotecas con funciones que el programador puede utilizar en el código de su aplicación y así transmitir la información entre las tareas distribuidas en los diferentes procesadores conectados en red. Además, provee el entorno y protocolos sobre el sistema operativo, para que el código paralelo se ejecute en forma consistente y ordenada (esto frecuentemente se conoce como communicator en la terminología MPI). La complejidad subyacente en los algoritmos en paralelo determina que no siempre sea conveniente distribuir una tarea. Las aplicaciones de cálculo numérico (con cierta estructura algorítmica) donde se requiere cálculo intensivo pueden ser paralelizados en forma eficiente. Un ejemplo típico son los algoritmos de inversión de matrices o de solución de sistemas de ecuaciones algebraicos, presentes en una gran variedad de problemas ingenieriles que atañen al MEF. Existen muchas distribuciones e implementaciones de MPI. En nuestro caso se instaló MPICH2 (versión 1.0.5). Este es un software de código abierto y distribución gratuita que está disponible en Internet.

Algoritmo PROGRAM JacobiPar !*** Metodo para resolver sistema de ecuaciones por el metodo de Jacobi en PARALELO INCLUDE 'mpif.h' INTEGER*4 N,MITER,IITER,size,myid,ierror,i,j,RETOR,REST,icolu,fcolu ALLOCATABLE A,X,R,SUMA,ZUMA REAL*8 ERR,XANT,A(:,:),X(:),R(:),clock,SUMA(:),ZUMA(:) CALL MPI_INIT( ierror ) CALL MPI_COMM_RANK( MPI_COMM_WORLD, myid, ierror ) CALL MPI_COMM_SIZE( MPI_COMM_WORLD, size, ierror ) CALL MPI_BARRIER( MPI_COMM_WORLD, ierror) IF(myid.eq.0)THEN OPEN(UNIT=5,FILE='INDAT.DAT',FORM='FORMATTED',ACCESS='SEQUENTIAL') OPEN(UNIT=6,FILE='SOLUTION.DAT',FORM='FORMATTED',ACCESS='SEQUENTIAL') WRITE(*,*) 'RESOLUCION DE SISTEMAS DE ECUACIONES ' WRITE(*,*) 'POR EL METODO ITERATIVO DE JACOBI EN PARALELO' READ(5,*) READ(5,*) N END IF CALL MPI_BCAST( N, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierror) ALLOCATE (A(N,(N+1)),X(N),R(N),SUMA(N),ZUMA(N)) !*** Generación de un sistema de ecuaciones aleatorio IF(myid.eq.0) CALL SISGEN(N,A,X,R,ERR,MITER) CALL MPI_BCAST(MITER,1,MPI_INTEGER,0,MPI_COMM_WORLD,ierror) CALL MPI_BCAST(ERR,1,MPI_DOUBLE_PRECISION,0,MPI_COMM_WORLD,ierror) CALL MPI_BCAST(A,N*N,MPI_DOUBLE_PRECISION,0,MPI_COMM_WORLD,ierror) CALL MPI_BCAST(X,N,MPI_DOUBLE_PRECISION,0,MPI_COMM_WORLD,ierror) clock = secnds(0.0) !*** Inicio del Metodo de Jacobi IITER=0 REST=MOD(N,size) icolu = 1 + myid*(N-REST)/size fcolu = myid*(N-REST)/size + (N-REST)/size IF(myid.eq.(size-1)) fcolu = fcolu + REST 10 CONTINUE RETOR=0 DO I=1,N SUMA(I)=0.0D00 END DO DO j=icolu,fcolu DO i=1,N IF(i.NE.j)THEN SUMA(i) = SUMA(i) + A(i,j)*X(j) ENDIF CALL MPI_BARRIER(MPI_COMM_WORLD,ierror) CALL MPI_REDUCE(SUMA,zuma,N,MPI_DOUBLE_PRECISION,MPI_ SUM,0,MPI_COMM_WORLD,ierror if(myid.eq.0)then IITER = IITER + 1 do i=1,N XANT=X(I) X(I)=(A(I,N+1)-zuma(i))/A(I,I) R(I)=ABS(X(I)-XANT) IF(R(I).gt.ERR.and.IITER.LT.MITER) RETOR=1 end do end if CALL MPI_BARRIER( MPI_COMM_WORLD, ierror) CALL MPI_BCAST(RETOR,1,MPI_INTEGER,0,MPI_COMM_WORLD,ierror) IF(RETOR.eq.1)THEN CALL MPI_BCAST(X,N,MPI_DOUBLE_PRECISION,0,MPI_COMM_WORLD,ierror) GOTO 10 !*** Impresion de los resultados

EFICIENCIA EN PROGRAMAS PARALELOS Para determinar la eficiencia de un algoritmo paralelo es necesario definir en primer medida el speed-up, que se denota mediante y representa el grado de aprovechamiento que hace dicho algoritmo paralelo de los recursos físicos del sistema. El speed-up se define mediante la siguiente expresión: Donde Ts es el tiempo necesario para procesar el algoritmo en forma secuencial y Tp es el tiempo necesario para procesar el algoritmo en forma paralelo con p procesadores. El valor teórico máximo que puede tomar el speed-up es igual al número de procesadores, p. En la práctica, en vez de utilizar el speed-up de un algoritmo paralelo como medida de rendimiento del mismo se suele utilizar la eficiencia, ya que proporciona una medida más objetiva. La eficiencia de un algoritmo paralelo se denota por Ep y se define de la siguiente forma:

Cuanto más próxima se halle la eficiencia a la unidad tanto mejor es el rendimiento del algoritmo paralelo, independientemente del número de procesadores utilizados. La eficiencia se puede escribir de la siguiente forma: De las expresiones anteriores puede deducirse que la eficiencia de un algoritmo paralelo depende del cociente que se lo denomina isoeficiencia y se denota por Ip. Si el valor de Ip es pequeño la eficiencia será buena y a medida que este parámetro crezca la eficiencia del algoritmo paralelo se deteriorará.

RESULTADOS Para probar la eficiencia del algoritmo paralelo, JacobiPar, mostrado en el Cuadro 1 se resolvieron diferentes sistemas de ecuaciones generados en forma aleatoria manteniendo el requerimiento del método de Jacobi de dominancia diagonal de la matriz A de los coeficientes. En la Tabla 1 se comparan los resultados del algoritmo ejecutado en 2 computadoras conectadas en paralelo y en una que posee doble núcleo, con los resultados obtenidos de correr el problema en forma secuencial (1 procesador)

Gráfico 1: Tiempo de ejecución vs. Orden del sistema de ecuaciones RESULTADOS Gráfico 1: Tiempo de ejecución vs. Orden del sistema de ecuaciones

CONCLUSIONES Se ha presentado un algoritmo, codificado en F90, para resolver en paralelo sistemas de ecuaciones por el método de Jacobi. Los resultados obtenidos sobre sistemas aleatorios diagonalmente dominantes muestran un mejor rendimiento para los procesadores de doble núcleo comparándolo con una estación de trabajo formada con 2 PC y con el mismos algoritmo corrido secuencialmente. Esta mejora se debe fundamentalmente a que el procesamiento en paralelo se ve obligado a destinar un tiempo en comunicación en la red que no lo requiere el procesador de doble núcleo.