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.

Slides:



Advertisements
Presentaciones similares
MROGINSKI, Javier L. – BENEYTO, Pablo A. –
Advertisements

MÉTODOS NUMÉRICOS. Explicación del método de L U. Realizado por:
Métodos iterativos para sistemas lineales
UNIVERSIDAD NACIONAL DEL NORDESTE
SISTEMA DE ECUACIONES LINEALES.
(agradecimiento: Ruben Weht
SISTEMA DE ECUACIONES LINEALES. Métodos ExactosMétodos Aproximados.
Análisis de los algoritmos Unidad 7. Análisis La resolución práctica de un problema – algoritmo o método de resolución – y por otra un programa o codificación.
MÉTODO CONGRUENCIALES David Chacón. Método Congruenciales Se han desarrollado básicamente tres métodos de congruenciales para generar números pseudoaleatorios,
César Gómez Martín Supercomputación “El alma está en el cerebro”
Sistema de ecuaciones 2x2. Recordemos lo visto en las clases anteriores…
 E Expresión de un problema de programación lineal  A Aplicaciones de la programación lineal  S Soluciones de un problema de programación lineal.
Vibraciones en sistemas físicos Autor: Tadeusz Majewski.
TUTORIA 1 Lógica para la Computación TUTORIA 1 Facultad de Ciencias Naturales y Matemáticas.
COMPUTACIÓN Y SOFTWARE DE APLICACIÓN
“Alternativa para procesamiento de datos oceanográficos que requieren gran capacidad de cómputo, por medio de programación en paralelo con el programa.
Sistemas de Ecuaciones
Vibraciones en sistemas físicos
DE PRIMERO Y SEGUNDO GRADO Diseño: M. en C. Juan Adolfo Alvarez Mtz.
VENTAJAS DEL ALGORITMO LMS
ESTRUCTURAS CONDICIONALES
Clase n º 4 Introducción a Matlab
Introducción La optimización trata de buscar el punto óptimo de una función objetivo cumpliendo con una serie de restricciones. El proceso de optimización.
Unidad 5. Capítulo VI. Sistemas lineales no homogéneos.
Hardware Software Sistema Informática Computadora Computación Datos.
MÉTODOS NUMÉRICOS ..
EQUIPO No 3.
INTERPOLACION.
Unidad 6. Capítulo IV. Puntos ordinarios y puntos singulares.
CI51J HIDRAULICA DE AGUAS SUBTERRANEAS Y SU APROVECHAMIENTO
Unidad 6. Capítulo I. Introducción.
Universidad Nacional de Canindeyú Facultad de Ciencias de la Salud
Definición de un Sistema Distribuido
PREDICCIÓN Y ESTIMACIÓN
Sistemas Operativos Unidad I Introducción.
Software Es intangible, existe como información, ideas, conceptos, símbolos, pero no ocupa un espacio físico, se podría decir que no tiene sustancia. Se.
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
Unidad 1 Introducción al mundo de la computación.
Diseñar y elaborar algoritmos
Método de Heun. Salvador Arteaga. Jalil Villalobos.
Análisis de redes Por: Alexander Miss.
DULCE BRIANDA CUESTA ESCOBAR ANAYELY HERNANDEZ GUILLEN
CONCEPTOS PRELIMINARES (Cont)
Concepto Clasificación Hardware Como procesa datos Sistemas de los Procesos de Datos (Dispositivos) Software (Conceptos, tipos, clasificación, fuentes)
Concepto Clasificación Hardware Como procesa datos Sistemas de los Procesos de Datos (Dispositivos) Software (Conceptos, tipos, clasificación, fuentes)
EL SISTEMA OPERATIVO Es un conjunto de programas hechos para la ejecución de varias tareas, en las que sirve de intermediario entre el usuario y la computadora.
“Grid Computing” Rogelio Ferreira Escutia.
HERRAMIENTAS DE PROGRAMACIÓN
Caracterización cualitativa de algunos métodos de solución de sistemas de ecuaciones lineales. MROGINSKI, Javier L. – BENEYTO, Pablo A. – DI RADO, H. Ariel.
FUDAMENTOS BÀSICOS computación
Diapositivas en PowerPoint de la UA: Circuitos eléctricos
Message Passing Interface
FUNDAMENTOS DE PROGRAMACIÓN. INTRODUCCIÓN  Conceptos: Informática, Ordenador, Programa, Dato, Bit, Byte, Hardware, Software, Lenguaje de Programación,
Teoría Nº 3 Conceptos Básicos de Algoritmia Estructuras de Control
Tipos de Ecuaciones. El signo igual El signo igual se utiliza en: El signo igual se utiliza en: Igualdades numéricas: Igualdades numéricas: = 5.
Eficiencia de un Algoritmo  El análisis de algoritmos estudia desde el punto de vista teórico los recursos computacionales que necesita un programa para.
Complejidad algorítmica
Concepto Clasificación Hardware Como procesa datos Sistemas de los Procesos de Datos (Dispositivos) Software (Conceptos, tipos, clasificación, fuentes)
DEFINICIONES BÁSICAS CICLO 4 CECIBEL MICHAY. ¿QUÉ ES INFORMÁTICA? ¿QUÉ ES INFORMACIÓN? ¿POR QUÉ NACE LA INFORMÁTICA? TRABAJO COLABORATIVO.
Características de los Sistemas Operativos
Prof: Javier Serrano Pérez Ingeniero Mecánico Métodos Numéricos, Mecánica de Materiales, Dibujo Mecánico, Incorporación de materiales Proyectos de Investigación.
INVESTIGACION DE OPERACIONES I UNIDAD I. HISTORIA La primera actividad de Investigación de Operaciones se dio durante la Segunda Guerra Mundial en Gran.
ALGORITMO DE ORDENAMIENTO POR BURBUJA. El método de la burbuja es uno de los mas simples, es tan fácil como comparar todos los elementos de una lista.
UNIVERSIDAD PRIVADA SAN JUAN BAUTISTA FILIAL CHINCHA ESCUELA PROFESIONAL DE INGENIERÍA DE COMPUTACIÓN Y SISTEMAS Por: Nestares Torres Luis Jesús Enrique.
Estructura de los Sistemas Operativos
Conjunto de programas contenidos en un núcleo o kernel que efectúan la gestión de los procesos básicos de un Sistema informático, y permite la normal.
Diseñas y elaboras algoritmos para la solución de problemas
Concepto Clasificación Hardware Como procesa datos Sistemas de los Procesos de Datos (Dispositivos) Software (Conceptos, tipos, clasificación, fuentes)
Sustentación de Paper Curso : MN 463 Sección : “C” Docente : Morales-Tarqui Oswaldo Morla Alumno : Josué Gabriel Díaz Saavedra Código : D Fecha.
Concepto Clasificación Hardware Como procesa datos Sistemas de los Procesos de Datos (Dispositivos) Software (Conceptos, tipos, clasificación, fuentes)
Transcripción de la presentació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 Beneyto, Pablo A. - Awruch, Armando M. UNIVERSIDAD NACIONAL DEL NORDESTE FACULTAD DE INGENIERIA

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, o bien con 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.

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_BARRIER( MPI_COMM_WORLD, ierror) 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_BARRIER( MPI_COMM_WORLD, ierror) 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 10CONTINUE 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 END DO 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 ENDIF !*** Impresion de los resultados Algoritmo

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 I p. Si el valor de I p 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)

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.