SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Proyecto Final
Uni versidad Autónoma de Sinaloa

2013

Facultad de Informática Culiacán

Programación Avanzada, 5 de diciembre de 2013
Grupo: 7-4
Carrera

Instructor

Licenciatura en Informática

M.C. Juan Ulises Gallardo

Alumno
Escalante Godinez Alfredo Humberto
Martínez Rubio Luis Carlos

1

Facultad de Informática Culiacán
Proyecto Final
Uni versidad Autónoma de Sinaloa

Contenido

2013
Página

Presentación........................................................................................................................3
Open MP .............................................................................................................................4
Introducción.....................................................................................................................4
Historia ............................................................................................................................4
Características..................................................................................................................5
Detalles generales ............................................................................................................6
Cláusula de datos .............................................................................................................6
Cláusula SHARED...........................................................................................................7
Cláusula PRIVATE ..........................................................................................................7
Cláusula DEFAULT .........................................................................................................8
La cláusula FIRSTPRIVATE ..............................................................................................9
Directivas de distribución de datos ..................................................................................10
La directiva !$OMP DO ................................................................................................10
La directiva !$OMP SECTIONS ......................................................................................11
La directiva !$OMP WORKSHARE .................................................................................12
Ejemplos 5 .....................................................................................................................13
Compilación y ejecución..................................................................................................14
Open MPI ..........................................................................................................................16
Introducción...................................................................................................................16
Historia ..........................................................................................................................16
Características................................................................................................................17
Ejemplos ........................................................................................................................18
Compilación y ejecución..................................................................................................18
Conclusión .........................................................................................................................19
Bibliografía.........................................................................................................................20

2

Facultad de Informática Culiacán
Proyecto Final
Uni versidad Autónoma de Sinaloa

2013

Presentación
La computación Paralela, es muy importante actualmente, al permitir mejorar la velocidad
en la solución de grandes problemas, de modo que se mejora el rendimiento de computo.
La computación paralela es una forma de cómputo en la que muchas instrucciones se
ejecutan simultáneamente, operando sobre el principio de que problemas grandes, a
menudo se pueden dividir en unos más pequeños, que luego son resueltos
simultáneamente (en paralelo). Hay varias formas diferentes de computación paralela:
paralelismo

a

nivel de

bit,

paralelismo

a

nivel de

instrucción, paralelismo

de

datos y paralelismo de tareas. El paralelismo se ha empleado durante muchos años, sobre
todo en la computación de altas prestaciones, pero el interés en ella ha crecido
últimamente debido a las limitaciones físicas que impiden el aumento de la
frecuencia. Como el consumo de energía y por consiguiente la generación de calor de las
computadoras constituye una preocupación en los últimos años. la computación en
paralelo se ha convertido en el paradigma dominante en la arquitectura de computadores,
principalmente en forma de procesadores multinúcleo. La computación paralela es una
forma

de

cómputo

en

la

que

muchas instrucciones se

ejecutan

1

simultáneamente, operando sobre el principio de que problemas grandes, a menudo se
pueden dividir en unos más pequeños, que luego son resueltos simultáneamente (en
paralelo). Hay varias formas diferentes de computación paralela: paralelismo a nivel de bit,
paralelismo a nivel de instrucción, paralelismo de datos y paralelismo de tareas. El
paralelismo se ha empleado durante muchos años, sobre todo en la computación de altas
prestaciones, pero el interés en ella ha crecido últimamente debido a las limitaciones
físicas que impiden el aumento de la frecuencia. Como el consumo de energía y por
consiguiente la generación de calor de las computadoras constituye una preocupación en
los últimos años. la computación en paralelo se ha convertido en el paradigma dominante
en la arquitectura de computadores, principalmente en forma de procesadores multinúcleo.
Los programas

informáticos

paralelos son

más

difíciles

de

escribir

que

los

secuenciales, porque la concurrencia introduce nuevos tipos de errores de software,
siendo

las condiciones

de

carrera los

más

comunes.

La

comunicación

y sincronización entre diferentes subtareas son algunos de los mayores obstáculos para
obtener un buen rendimiento del programa paralelo.
A continuación veremos dos API’s

con las cuales podremos construir programas en

paralelo: OpenMP y OpenMPI.

3

Facultad de Informática Culiacán
Proyecto Final
Uni versidad Autónoma de Sinaloa

2013

Open MP
Introducción

OpenMP es un estándar que define construcciones y su semántica que ayudan a con struir
programas en paralelo en el modelo de memoria compartida. Fue creado para facilitar la
construcción de programas en este modelo, así como para permitir la portabilidad de estos
programas.1
OpenMP es

una interfaz

de

programación

de

aplicaciones (API)

para

la

programación multiproceso de memoria compartida en múltiples plataformas. Permite
añadir concurrencia a los programas escritos en C, C++ y Fortran sobre la base del
modelo de ejecución fork-join. Está disponible en muchas arquitecturas, incluidas las
plataformas de Unix y de Microsoft Windows. Se compone de un conjunto de directivas de
compilador, rutinas de biblioteca, y variables de entorno que influyen el comportamiento en
tiempo de ejecución.
Definido juntamente por un grupo de proveedores de hardware y de software mayores,
OpenMP es un modelo de programación portable y escalable que proporciona a los
programadores una interfaz simple y flexible para el desarrollo de aplicaciones paralelas
para

las

plataformas

que

van

desde

las

computadoras

de

escritorio

hasta

las supercomputadoras. Una aplicación construida con un modelo de programación
paralela híbrido se puede ejecutar en un clúster de computadoras utilizando ambos
OpenMP y MPI, o más transparentemente a través de las extensiones de OpenMP para
los sistemas de memoria distribuida.2

Historia
OpenMP es administrado por el consorcio sin fines de lucro Architecture Review Board
tecnología OpenMP, definido conjuntamente por un grupo de los principales proveedores
de hardware y software, incluyendo AMD, IBM, Intel, Cray, HP, Fujitsu, Nvidia, NEC,
Microsoft, Texas Instruments, Oracle Corporation , y más.
The Architecture Review Board OpenMP publicó sus especificaciones API primera,
OpenMP Fortran para la 1.0, en octubre de 1997 - octubre del año siguiente lanzaron el C

4

Facultad de Informática Culiacán
2013

Proyecto Final
Uni versidad Autónoma de Sinaloa

+ + estándar de C /. 2000 vio la versión 2.0 de las especificaciones Fortran con la versión
2.0 de las especificaciones + C/C + ser liberado en 2002 - Versión 2.5 es una
especificación + +/Fortran combinada C/C que fue lanzado en 2005.
La versión 3.0 fue lanzado en mayo de 2008 - Incluido en las nuevas características en 3.0
es el concepto de las tareas y la construcción de tareas. Estas nuevas características se
resumen en el Anexo F de las especificaciones de OpenMP 3.0.
La versión 3.1 de la especificación OpenMP fue publicado el 9 de julio de 2011.

Características
El OpenMP se fundamenta en directivas y cláusulas:


Las directivas especifican que hacer.



Las cláusulas indican cómo hacerlo.



Se añaden como comentarios al código.

Tipos de directivas en OpenMP


Directivas de distribución de trabajo.



Directivas de sincronización de tareas.

Tipos de cláusulas en OpenMP


Cláusula de datos.



Cláusula de comportamiento.



Cláusula de sincronía.

Ventajas de OpenMP


Es sencillo ya que no requiere el envío de mensajes como en MPI.



La descomposición de datos es automática.



Admite la paralelización incremental del código.



Mismo código fuente para las versiones serial y paralela.



Permite implementar granularidad gruesa y fina.



Eleva la portabilidad.

Inconvenientes
Requiere un compilador que entienda OpenMP.
El estándar sólo contempla C y Fortran.

5

Facultad de Informática Culiacán

3
Proyecto Final
Uni versidad Autónoma de Sinaloa

2013

Solo es eficiente en máquinas con memoria compartida
En general la eficiencia paralela es baja.
La escalabilidad está limitada por acceso a la memoria.
Aumentar la eficiencia requiere reestructurar el código.

Detalles generales

Directiva: instrucción de OpenMP que especifica la acción a realizar,
Cláusula: instrucción de OpenMP que impone condiciones a la directiva que le prece de.
Tarea: unidad de ejecución con memora y stack propios.
Región paralela: parte de un programa que es ejecuta por un equipo de tareas que
trabajan conjuntamente.
Región serial: parte de un programa que es ejecutada por una única tarea.
Tarea maestra: tarea que crea a las demás tareas al inicio de una región paralela y cuyo
número de tarea es siempre el 0.
Bloque estructurado: bloque de líneas de código con una única entrada lógica en su parte
superior y una única entrada lógica en su parte superior y una unida salida lógica en su
parte inferior.
Rutina thread-safe: una rutina es thread-safe cuando es capaz de ser utilizada de manera
simultánea e independiente por varias tareas ejecutadas en par alelo.
Race condition: situación no deseable en la que el resultado de un código depende del
orden en el que se ejecutan las tareas.

4

Cláusula de datos
Características generales de estas cláusulas:


Especifican propiedades “paralelas” de las variables.



Pueden aparecen tantas veces como sea necesario.



Pueden usarse con cualquier directiva OpenMP.

6

Facultad de Informática Culiacán
Proyecto Final
Uni versidad Autónoma de Sinaloa

2013

Restricciones


Una variable no puede aparecer en más de una cláusula



Solo admiten variables que sean visibles desde la subrutina o función que incluya
la cláusula.

Cláusula SHARED
Especifica que una variable es compartida por las tareas:
!$OMP PARALLEL SHARED(c,d)
…
!$OMP END PARALLEL

Características de las variables compartidas:


Todas las tareas ven su contenido.



Todas las tareas pueden cambiar su contenido.



Todas las tareas ven los cambios realizados.

Peculiaridades de las variables compartidas:


Los cambios no son inmediatos (cache coherency).



Pueden requerir de sincronía entre tareas.



Existen algunas limitaciones en Fortran.

Cláusula PRIVATE
Especifica que una variable es privada a cada tarea:
!$OMP PARALLEL PRIVATE(a,b)
...
!$OMP END PARALLEL

7

Facultad de Informática Culiacán
Proyecto Final
Uni versidad Autónoma de Sinaloa

Características de las variables privadas:


Cada tarea tiene su propia versión de la variable.



Eso se consigue replicando la variable en memoria.



Las otras tareas no pueden ver su contenido.

Peculiaridades de las variables privadas:


Su valor inicial no está definido.



Tras la región paralela su valor tampoco está definido.



Existen algunas limitaciones.

Cláusula DEFAULT
Especifica el comportamiento por defecto:
integer :: a ,b ,c , d
!$OMP PARALLEL DEFAULT(PRIVATE) SHARED(a)
...
!$OMP END PARALLEL

8

Facultad de Informática Culiacán

2013
Proyecto Final
Uni versidad Autónoma de Sinaloa

2013

Características de la cláusula:


Sólo puede aparecer una única vez en cada directiva.



Admite tres opciones: PRIVATE, SHARED y NONE.



Con NONE todas las variables deben ser definidas.

Sólo afecta a las variables directamente visibles:
!$OMP PARALLEL DEFAULT(SHARED)
a=1
b=2
call ejemplo (a ,b )
!$OMP END PARALLEL
Las variables definidas dentro de la subrutina ejemplo no se ven afectadas por la cláusula
DEFAULT.
La cláusula FIRSTPRIVATE
Es una extensión de la cláusula PRIVATE:
a=2
b=1
!$OMP PARALLEL PRIVATE(a) FIRSTPRIVATE(b)
...
!$OMP END PARALLEL

Características de las variables FIRSTPRIVATE:


Cada tarea tiene su propia versión de la variable



Eso se consigue replicando la variable en memoria



Las otras tareas no pueden ver su contenido



Su valor es inicializado con la variable original

9

Facultad de Informática Culiacán
Proyecto Final
Uni versidad Autónoma de Sinaloa

2013

Peculiaridades de las variables FIRSTPRIVATE:


Tras la región paralela su valor no está definido



Existen algunas limitaciones

Cláusulas de datos vistas:
SHARED, PRIVATE, DEFAULT, FIRSTPRIVATE
Cláusulas de datos adicionales:
LASTPRIVATE, REDUCTION, COPYIN, COPYPRIVATE
Condiciones generales a tener en cuenta:


Una variable sólo puede aparecer en una cláusula, salvo en FIRSTPRIVATE y
LASTPRIVATE a la vez



El contador de un bucle siempre es privado



Cada cláusula tiene sus limitaciones

Directivas de distribución de datos
Características de estas directivas:


Distribuyen una carga de trabajo sobre varias tareas



No crean nuevas tareas, usan las ya existentes



Funcionan en regiones seriales y en regiones paralelas



Incluyen al final una sincronización implícita

Restricciones de estas directivas:


Deben ser encontradas por todas las tareas



Sólo pueden contener bloques estructurados de código

La directiva !$OMP DO
Características de la directiva:


Distribuye la carga de un bucle entre las tareas



La descomposición se hace en el espacio de iteraciones



La descomposición es modificable mediante clausulas



El contador es implícitamente declarado PRIVATE

!$OMP DO clause1 clause2 ...
do i = 1 , 1000
...

10

Facultad de Informática Culiacán
Proyecto Final
Uni versidad Autónoma de Sinaloa

enddo
!$OMP END DO end_clause
Ejemplo de distribución de carga de un bucle.
!$OMP PARALLEL NUM_T HREADS(10)
!$OMP DO
do i = 1 , 1000
…
enddo
!$OMP END DO
!$OMP END PARALLEL

Restricciones de la directiva !$OMP DO:


En C, el bucle debe ser de un tipo determinado



En Fortran, el bucle no puede ser del tipo do while



El contador debe ser el mismo para todas las tareas



Sólo admite bloques estructurados de código



Las variables SHARED sólo se actualizan al final

La directiva !$OMP SECTIONS
Características de la directiva:


Cada tarea ejecuta una de las secciones



Cada sección es ejecutada una ´única vez



Permite implementar el paralelismo tipo MIMD

!$OMP SECTIONS clause1 clause2 ...
!$OMP SECTION
...
!$OMP SECTION
...
...
!$OMP END SECTIONS end_clause

11

Facultad de Informática Culiacán

2013
Proyecto Final
Uni versidad Autónoma de Sinaloa

2013

Ejemplo de asignación de tareas
!$OMP SECTIONS
!$OMP SECTION
write(*,*) “Hello”
!$OMP SECTION
write(*,*) “Hi”
!$OMP SECTION
write(*,*) “Bye”
!$OMP END SECTIONS

Restricciones de la directiva:


La manera de asignar secciones a tareas no está definida



Cada sección debe ser un bloque estructurado de código



No se crean nuevas tareas, se usan las existentes



Las variables SHARED sólo se actualizan al final

La directiva !$OMP WORKS HARE

Características de la directiva:


Es especifica para Fortran 95



Explota las capacidades paralelas de Fortran 95



Distribuye las instrucciones matriciales entre las tareas

Soporta las siguientes instrucciones matriciales:
matmul, dot product, sum, product, maxval, minval, count,any, all, spread, pack,
unpack, reshape, transpose, eoshift,cshift, minloc, maxloc, forall, where.
Las instrucciones deben comportarse como si estuvieran en una región serial.
!$OMP WORKSHARE

12

Facultad de Informática Culiacán
Proyecto Final
Uni versidad Autónoma de Sinaloa

...
!$OMP END WORKSHARE end_clause

Restricciones de la directiva:


La asignación del trabajo a las tareas no está definida



El compilador debe insertar sincronizaciones suficientes para que el
comportamiento sea el correcto



Sólo se pueden hacer llamadas a funciones que sean del tipo elemental



Existen restricciones al uso de variables PRIVATE

Peculiaridad de la directiva:
Las variables SHARED se actualizan constantemente

Ejemplos 5

Hola mundo
#include <omp.h>
int main()
{
int iam =0, np = 1;
#pragma omp parallel private(iam, np)
{
#if defined (_OPENMP)
np = omp_get_num_threads();
iam = omp_get_thread_num();
#endif
printf(“Hello from thread %d out of %d n”,iam,np);
}
}

Ciclo
#include <omp.h>
int main()
{
int iam =0, np = 1, i=0;
#pragma omp parallel private(iam, np,i)
{
#if defined (_OPENMP)
np = omp_get_num_threads();
iam = omp_get_thread_num();
#endif
printf("Hello from thread %d out of %dn",iam,np);
#pragma omp for
for(i=0;i<(np*2);i++)

13

Facultad de Informática Culiacán

2013
Proyecto Final
Uni versidad Autónoma de Sinaloa

2013

{
printf("Thread %d, contador %d n",iam,i);
}
}
}

Sección
#pragma omp parallel private(iam, np,i)
{
#pragma omp sections
{
#pragma omp section
printf("Soy el thread %d, en solitario en la seccion 1ª n",iam);
#pragma omp section
printf("Soy el thread %d, en solitario en la sección 2ª n",iam);
#pragma omp section
printf("Soy el thread %d, en solitario en la seccion 3ª n",iam);
}//sections
}//parallel
Compilación y ejecución
Para compilar y ejecutar programas con OpenMP use: gcc -fopenmp -0 <ejecutable>
<fuente> donde ejecutable es el nombre del archivo de salida y fuente es el archivo a
compilar o programa fuente con extension .c.
#include <omp.h>
#include <stdio.h>
int main (int argc, char *argv[]) {
int th_id, nthreads;
#pragma omp parallel private(th_id)
{
th_id = omp_get_thread_num();
printf("Hello World from thread %dn", th_id);
#pragma omp barrier
if ( th_id == 0 ) {
nthreads = omp_get_num_threads();
printf("There are %d threadsn",nthreads);
}
}
return 0;
}
Así para compilar este programa llamado hola_openmp.c seria.
[ah.escalante10@uas ~]$ gcc -fopenmp -o hola_openmp hola_openmp.c

14

Facultad de Informática Culiacán
Proyecto Final
Uni versidad Autónoma de Sinaloa

2013

Si se requiere agregar funciones matemáticas agregue la librería con: mpicc -lm -fopenmp
-o <ejecutable> <fuente>.
Ejecución de trabajos con OpenMP. Ejecute el programa de forma normal como cualquier
otro programa hecho en C.
[ah.escalante10@uas ~]$ ./hola_openmp
Hello World from thread 1
Hello World from thread 0
There are 2 threads
Observe que no se está usando algún nodo del Clúster ya que esta autentificado en
gridmorelos.uaem.mx que es el front-end o nodo maestro, para usar los nodos del Clúster
se requiere lanzar los programas uno a uno ya que no es un programa MPI, si por ejemplo
se desea usar un nodo en especifico podría lanzarlo de la siguiente manera, primero
observando los nodos disponibles.
[ah.escalante10@uas ~]$ rocks list host
HOST
Uas

MEMBERSHIP CPUS RACK RANK RUNACT ION INSTALLATION
:

Frontend

2

0

0

os

install

compute-0-0: Compute

2

0

0

os

install

compute-0-1: Compute

2

0

1

os

install

...
Al seleccionar el nodo llamado compute-0-0 el comando seria:
[ah.escalante10@uas ~]$ ssh compute-0-0 ./hola_openmp
Hello World from thread 0
Hello World from thread 1
There are 2 threads
Si requiere lanzar los programas OpenMP a lo largo de todo el Cluster podría implementar
un Script que realice esta misma tarea por cada nodo disponible. 6

15

Facultad de Informática Culiacán
Proyecto Final
Uni versidad Autónoma de Sinaloa

2013

Open MPI

Introducción
OpenMPI (Message Passing Interface) es un proyecto de librería que combin a tecnología y
recursos de otros proyectos (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI). Es utilizado por
muchas supercomputadoras. 7 Se trata de una API de código abierto desarrollada para
facilitar la programación paralela y/o distribuida que:


Implementa el estándar MPI.



Permite la distribución de procesos de forma dinámica.



Alto rendimiento.



Tolerancia a fallos: capacidad de recuperarse de forma transparente de los fallos
de los



componentes (errores en el envío o recepción de mensajes, fallo de un procesador
o



nodo).



Soporta redes hetereogéneas : permite la ejecución de programas en redes cuyos



ordenadores presenten distinto número de nodos y de procesadores.



Una única librería soporta todas las redes.



Portable: funciona en los sistemas operativos Linux, OS-X , Solaris y en un futuro



próximo en Windows.



Modificable por los instaladores y usuarios finales : presenta opciones de
configuración durante la instalación de la API, la compilación de programas y su
ejecución.

8

Historia
Al diseñarse MPI, se tomaron en cuenta las características más atractivas de los sistemas
existentes para el paso de mensajes, en vez de seleccionar uno solo de ellos y adoptarlo
como el estándar, resultando así, en una fuerte influencia para MPI los trabajos hechos por
IBM, INT EL, NX/, Express, nCUBE's Vernex, p4 y PARMACS. Otras contribuciones
importantes provienen de Zipcode, Chimp, PVM, Chameleon y PICL.
El esfuerzo para estandarizar MPI involucró a cerca de 60 personas de 40 organizaciones
diferentes principalmente de EE.UU. y Europa.

16

Facultad de Informática Culiacán
Proyecto Final
Uni versidad Autónoma de Sinaloa

2013

La mayoría de los vendedores de computadoras concurrentes estaban involucrados con
MPI, así como con investigadores de diferentes universidades, laboratorios del gobierno e
industrias.
El proceso de estandarización comenzó en el taller de estándares para el paso de
mensajes en un ambiente con memoria distribuida, patrocinado por el Centro de
Investigación en Computación Paralela en Williamsburg, Virginia, Estados Unidos (Abril
29-30 de 1992).
Se llegó a una propuesta preliminar conocida como MPI1, enfocada principalmente en
comunicaciones punto a punto sin incluir rutinas para comunicación colectiva y no
presentaba tareas seguras.
El estándar final por el MPI fue presentado en la conferencia de Supercómputo en
noviembre de 1993, constituyéndose así el foro para el MPI.
En un ambiente de comunicación con memoria distribuida en la cual las rutinas de paso de
mensajes de nivel bajo, los beneficios de la estandarización son muy notorios. La principal
ventaja al establecer un estándar para el paso de mensajes es la portabilidad y el ser fácil
de utilizar. MPI-1 apareció en 1994, el estándar MPI-2 fue lanzado en 1997.

Características


Cumple el standar MPI-2



Distribución de procesos de forma dinámica



Alto rendimiento en todas las plataformas



Administración de trabajos rápida y fiable



Tolerancia a fallos de red y procesos



Soporte de redes hetereogéneas



Una única librería soporta todas las redes



Herramientas de Run-time



Muchos planificadores de trabajos soportados



Portable y mantenible



Modificable por los instaladores y usuarios finales



Mensajes de error internacionalizados



PIs documentadas



Lista de correo activa 10

17

Facultad de Informática Culiacán
Proyecto Final
Uni versidad Autónoma de Sinaloa

Ejemplos
include <stdio.h>
#include <mpi.h>
int main(int argc, char **argv)
{
int size, rank;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
printf("SIZE = %d RANK = %dn",size,rank);
MPI_Finalize();
return(0);
}
Compilación y ejecución
Para compilar utilizamos la siguiente instrucción:
mpic++ your_code_file.c
Ejecución del recién programa compilado
mpirun -np <no. of Processors> ./a.out

18

Facultad de Informática Culiacán

2013
Proyecto Final
Uni versidad Autónoma de Sinaloa

2013

Conclusión
Para empezar no sabíamos que existía la forma de poder desarrollar programas en
paralelo, es decir, que cada procesador se encarga de una tarea específica equivalente a
la que van a realizar los demás procesadores para aprovechar al máximo los recursos de
la computadora. Dicho esto, pareciera que nuestra programación es obsoleta. Sin
embargo, también se le puede considerar un área de oportunidad.
Las dos opciones de API’s aquí mostradas para el desarrollo de programas de computo en
paralelo las considero buenas y fáciles de aprender si se pone entusiasmo.
Aquí el problema mayor que veo más que aprender a utilizar bien estás herramientas es
aprender a desmenuzar las tareas de tal forma que sean equitativas para cada uno de los
procesadores que lo va a ejecutar.

19

Facultad de Informática Culiacán
Proyecto Final
Uni versidad Autónoma de Sinaloa

2013

Bibliografía
1. Instituto de Ingeniería – Universidad Autónoma de México
ftp://ftp.iingen.unam.mx/IINGEN/Taller-Super-Computo/jueves24mayo/openmp.pdf
2. Open MP – Wikipedia
http://es.wikipedia.org/wiki/OpenMP
3. Web Academia
http://centrodeartigos.com/articulos-informativos/article_69704.html
4. Universidad Politécnica de Madrid
http://webserver.dmt.upm.es/zope/DMT/Members/hermanns/docencia-ycursos/introduccion-programacion-paralela/Clase_2_Programacion_Paralela_OpenMP.pdf
5. Universidad de Murcia
http://dis.um.es/~domingo/apuntes/PPCAP/1011/PPCAP_1011_OpenMP.pdf
6. Universidad Autónoma del Estado de Morelos
http://www.gridmorelos.uaem.mx/?option=com_content&view=article&id=55&Itemid=71
7. Open MPI – Wikipedia
http://en.wikipedia.org/wiki/Open_MPI
8. Universidad de Murcia
http://dis.um.es/~domingo/apuntes/AlgProPar/0910/exposicion1/MunozPablo -OpenMPI.pdf
9. Computación en paralelo
http://es.wikipedia.org/wiki/Computaci%C3%B3n_paralela
10. MPI – Wikipedia
http://es.wikipedia.org/wiki/Interfaz_de_Paso_de_Mensajes

20

Facultad de Informática Culiacán

Más contenido relacionado

La actualidad más candente

Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidosChristian19121
 
Metodologías de desarrollo de software
Metodologías de desarrollo de softwareMetodologías de desarrollo de software
Metodologías de desarrollo de softwareJesenia Escobar
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPUEduardo Suarez
 
Enfoque estructurado enfoque oo
Enfoque estructurado   enfoque ooEnfoque estructurado   enfoque oo
Enfoque estructurado enfoque ookarlanm07
 
Metodologia web
Metodologia webMetodologia web
Metodologia webAnel Sosa
 
Administración de procesos y del procesador
Administración de procesos y del procesadorAdministración de procesos y del procesador
Administración de procesos y del procesadorFernando Camacho
 
Diagrama de 7 estados
Diagrama de 7 estadosDiagrama de 7 estados
Diagrama de 7 estadoszombra18
 
Comunicación y Sincronizacion de Procesos
Comunicación y Sincronizacion de ProcesosComunicación y Sincronizacion de Procesos
Comunicación y Sincronizacion de ProcesosLorena Ramos
 
Las siete grandes categorias del software
Las siete grandes categorias del softwareLas siete grandes categorias del software
Las siete grandes categorias del softwareSandyCaceres
 
Estructura+del+sistema+mac+os+x
Estructura+del+sistema+mac+os+xEstructura+del+sistema+mac+os+x
Estructura+del+sistema+mac+os+xSophia Galarraga
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidossaul_ramos
 
Monitores-sistemas operativos
Monitores-sistemas operativosMonitores-sistemas operativos
Monitores-sistemas operativosDaniel Vargas
 
Gestion del almacenamiento secundario
Gestion del almacenamiento secundarioGestion del almacenamiento secundario
Gestion del almacenamiento secundarioMarielita Carlos
 
Gestión de Entrada y Salida
Gestión de Entrada y SalidaGestión de Entrada y Salida
Gestión de Entrada y SalidaAlf Chee
 

La actualidad más candente (20)

Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidos
 
Metodologías de desarrollo de software
Metodologías de desarrollo de softwareMetodologías de desarrollo de software
Metodologías de desarrollo de software
 
Estándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de NegociosEstándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de Negocios
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPU
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
 
Enfoque estructurado enfoque oo
Enfoque estructurado   enfoque ooEnfoque estructurado   enfoque oo
Enfoque estructurado enfoque oo
 
Metodologia web
Metodologia webMetodologia web
Metodologia web
 
Administración de procesos y del procesador
Administración de procesos y del procesadorAdministración de procesos y del procesador
Administración de procesos y del procesador
 
Diagrama de 7 estados
Diagrama de 7 estadosDiagrama de 7 estados
Diagrama de 7 estados
 
Comunicación y Sincronizacion de Procesos
Comunicación y Sincronizacion de ProcesosComunicación y Sincronizacion de Procesos
Comunicación y Sincronizacion de Procesos
 
Las siete grandes categorias del software
Las siete grandes categorias del softwareLas siete grandes categorias del software
Las siete grandes categorias del software
 
Herramientas case full informacion
Herramientas case full informacionHerramientas case full informacion
Herramientas case full informacion
 
Estructura+del+sistema+mac+os+x
Estructura+del+sistema+mac+os+xEstructura+del+sistema+mac+os+x
Estructura+del+sistema+mac+os+x
 
Sistema Operativo Distribuido
Sistema Operativo DistribuidoSistema Operativo Distribuido
Sistema Operativo Distribuido
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidos
 
Administración de memoria
Administración de memoriaAdministración de memoria
Administración de memoria
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Monitores-sistemas operativos
Monitores-sistemas operativosMonitores-sistemas operativos
Monitores-sistemas operativos
 
Gestion del almacenamiento secundario
Gestion del almacenamiento secundarioGestion del almacenamiento secundario
Gestion del almacenamiento secundario
 
Gestión de Entrada y Salida
Gestión de Entrada y SalidaGestión de Entrada y Salida
Gestión de Entrada y Salida
 

Destacado (13)

Computacion paralela
Computacion paralelaComputacion paralela
Computacion paralela
 
Paralela1
Paralela1Paralela1
Paralela1
 
Computacion paralela
Computacion paralelaComputacion paralela
Computacion paralela
 
computación paralela
computación paralelacomputación paralela
computación paralela
 
Cluster beowulf javier condori flores
Cluster beowulf   javier condori floresCluster beowulf   javier condori flores
Cluster beowulf javier condori flores
 
Aplicaciones distribuidas
Aplicaciones distribuidasAplicaciones distribuidas
Aplicaciones distribuidas
 
Paralela2
Paralela2Paralela2
Paralela2
 
Introducción a la Computacion paralela
Introducción a la Computacion paralelaIntroducción a la Computacion paralela
Introducción a la Computacion paralela
 
Computación móvil y organización virtual
Computación móvil y organización virtualComputación móvil y organización virtual
Computación móvil y organización virtual
 
Programacion paralelo
Programacion paraleloProgramacion paralelo
Programacion paralelo
 
Computación Móvil
Computación MóvilComputación Móvil
Computación Móvil
 
Aplicaciones distribuidas
Aplicaciones distribuidasAplicaciones distribuidas
Aplicaciones distribuidas
 
Prolog ejercicios resueltos
Prolog ejercicios resueltosProlog ejercicios resueltos
Prolog ejercicios resueltos
 

Similar a Computo en paralelo con OpenMP y OpenMPI

Similar a Computo en paralelo con OpenMP y OpenMPI (20)

traajo ofimatica
 traajo ofimatica traajo ofimatica
traajo ofimatica
 
Mdw guia-android-1.3
Mdw guia-android-1.3Mdw guia-android-1.3
Mdw guia-android-1.3
 
Curso android desarrollo de aplicaciones moviles
Curso android   desarrollo de aplicaciones movilesCurso android   desarrollo de aplicaciones moviles
Curso android desarrollo de aplicaciones moviles
 
LI_1167_050918_A_Introduccion_Programacion_Plan2016.docx
LI_1167_050918_A_Introduccion_Programacion_Plan2016.docxLI_1167_050918_A_Introduccion_Programacion_Plan2016.docx
LI_1167_050918_A_Introduccion_Programacion_Plan2016.docx
 
Tl primer grupo
Tl primer grupoTl primer grupo
Tl primer grupo
 
Tl primer grupo
Tl primer grupoTl primer grupo
Tl primer grupo
 
Sistema Operativo
Sistema OperativoSistema Operativo
Sistema Operativo
 
Tl primer grupo
Tl primer grupoTl primer grupo
Tl primer grupo
 
Tl primer grupo
Tl primer grupoTl primer grupo
Tl primer grupo
 
Tl primer grupo[2]
Tl primer grupo[2]Tl primer grupo[2]
Tl primer grupo[2]
 
Tl primer grupo
Tl primer grupoTl primer grupo
Tl primer grupo
 
SISTEMA OPERATIVO
SISTEMA OPERATIVOSISTEMA OPERATIVO
SISTEMA OPERATIVO
 
Android
AndroidAndroid
Android
 
Capa aplicacion Modelo OSI
Capa aplicacion Modelo OSICapa aplicacion Modelo OSI
Capa aplicacion Modelo OSI
 
Proyecto tic´s
Proyecto tic´sProyecto tic´s
Proyecto tic´s
 
Maestrosdelweb guia-android
Maestrosdelweb guia-androidMaestrosdelweb guia-android
Maestrosdelweb guia-android
 
Mdw guia-android-1.3
Mdw guia-android-1.3Mdw guia-android-1.3
Mdw guia-android-1.3
 
Guía Android
Guía AndroidGuía Android
Guía Android
 
Mdw guia-android-1.3
Mdw guia-android-1.3Mdw guia-android-1.3
Mdw guia-android-1.3
 
Mdw guia-android
Mdw guia-androidMdw guia-android
Mdw guia-android
 

Más de Alfredo Humberto Escalante Godinez

Informe de Actividades 2018 del Municipio de Cosalá, Sinaloa.
Informe de Actividades 2018 del Municipio de Cosalá, Sinaloa.Informe de Actividades 2018 del Municipio de Cosalá, Sinaloa.
Informe de Actividades 2018 del Municipio de Cosalá, Sinaloa.Alfredo Humberto Escalante Godinez
 
Contenido de la asignatura: Tecnologias emergentes para el aprendizaje
Contenido de la asignatura: Tecnologias emergentes para el aprendizajeContenido de la asignatura: Tecnologias emergentes para el aprendizaje
Contenido de la asignatura: Tecnologias emergentes para el aprendizajeAlfredo Humberto Escalante Godinez
 
Propuesta de Sistema de Evaluación y Retroalimentación (SER)
Propuesta de Sistema de Evaluación y Retroalimentación (SER)Propuesta de Sistema de Evaluación y Retroalimentación (SER)
Propuesta de Sistema de Evaluación y Retroalimentación (SER)Alfredo Humberto Escalante Godinez
 
Rúbrica de Evaluación de Conceptos Básicos del Aprendizaje en Línea
Rúbrica de Evaluación de Conceptos Básicos del Aprendizaje en LíneaRúbrica de Evaluación de Conceptos Básicos del Aprendizaje en Línea
Rúbrica de Evaluación de Conceptos Básicos del Aprendizaje en LíneaAlfredo Humberto Escalante Godinez
 
Portafolio de evidencia: Evaluación del aprendizaje en los entornos virtuales
Portafolio de evidencia: Evaluación del aprendizaje en los entornos virtuales Portafolio de evidencia: Evaluación del aprendizaje en los entornos virtuales
Portafolio de evidencia: Evaluación del aprendizaje en los entornos virtuales Alfredo Humberto Escalante Godinez
 
Manual organizacional del Instituto Municipal de la Cultura de Cosalá
Manual organizacional del Instituto Municipal de la Cultura de CosaláManual organizacional del Instituto Municipal de la Cultura de Cosalá
Manual organizacional del Instituto Municipal de la Cultura de CosaláAlfredo Humberto Escalante Godinez
 
Manual Organizacional del Instituto Municipal de la Juventud de Cosalá
Manual Organizacional del Instituto Municipal de la Juventud de CosaláManual Organizacional del Instituto Municipal de la Juventud de Cosalá
Manual Organizacional del Instituto Municipal de la Juventud de CosaláAlfredo Humberto Escalante Godinez
 
Manual Organizacional del Instituto Municipal del Deporte y la Cultura Física...
Manual Organizacional del Instituto Municipal del Deporte y la Cultura Física...Manual Organizacional del Instituto Municipal del Deporte y la Cultura Física...
Manual Organizacional del Instituto Municipal del Deporte y la Cultura Física...Alfredo Humberto Escalante Godinez
 
Informe de Actividades 2017 del Municipio de Cosalá, Sinaloa.
Informe de Actividades 2017 del Municipio de Cosalá, Sinaloa.Informe de Actividades 2017 del Municipio de Cosalá, Sinaloa.
Informe de Actividades 2017 del Municipio de Cosalá, Sinaloa.Alfredo Humberto Escalante Godinez
 
Propuesta inversión de un programa de infraestructura tecnológica
Propuesta inversión de un programa de infraestructura tecnológicaPropuesta inversión de un programa de infraestructura tecnológica
Propuesta inversión de un programa de infraestructura tecnológicaAlfredo Humberto Escalante Godinez
 
Sistema de Búsqueda de Archivos que permita la Digitalización del Archivo Mun...
Sistema de Búsqueda de Archivos que permita la Digitalización del Archivo Mun...Sistema de Búsqueda de Archivos que permita la Digitalización del Archivo Mun...
Sistema de Búsqueda de Archivos que permita la Digitalización del Archivo Mun...Alfredo Humberto Escalante Godinez
 
Sistematización de los Servicios de la Coordinación de Centro de Computo
Sistematización de los Servicios de la Coordinación de Centro de ComputoSistematización de los Servicios de la Coordinación de Centro de Computo
Sistematización de los Servicios de la Coordinación de Centro de ComputoAlfredo Humberto Escalante Godinez
 

Más de Alfredo Humberto Escalante Godinez (20)

Informe de Actividades 2018 del Municipio de Cosalá, Sinaloa.
Informe de Actividades 2018 del Municipio de Cosalá, Sinaloa.Informe de Actividades 2018 del Municipio de Cosalá, Sinaloa.
Informe de Actividades 2018 del Municipio de Cosalá, Sinaloa.
 
Contenido de la asignatura: Tecnologias emergentes para el aprendizaje
Contenido de la asignatura: Tecnologias emergentes para el aprendizajeContenido de la asignatura: Tecnologias emergentes para el aprendizaje
Contenido de la asignatura: Tecnologias emergentes para el aprendizaje
 
Propuesta de Sistema de Evaluación y Retroalimentación (SER)
Propuesta de Sistema de Evaluación y Retroalimentación (SER)Propuesta de Sistema de Evaluación y Retroalimentación (SER)
Propuesta de Sistema de Evaluación y Retroalimentación (SER)
 
Rúbrica de Evaluación de Conceptos Básicos del Aprendizaje en Línea
Rúbrica de Evaluación de Conceptos Básicos del Aprendizaje en LíneaRúbrica de Evaluación de Conceptos Básicos del Aprendizaje en Línea
Rúbrica de Evaluación de Conceptos Básicos del Aprendizaje en Línea
 
Portafolio de evidencia: Evaluación del aprendizaje en los entornos virtuales
Portafolio de evidencia: Evaluación del aprendizaje en los entornos virtuales Portafolio de evidencia: Evaluación del aprendizaje en los entornos virtuales
Portafolio de evidencia: Evaluación del aprendizaje en los entornos virtuales
 
Plan de recuperación de información en caso de siniestros
Plan de recuperación de información en caso de siniestrosPlan de recuperación de información en caso de siniestros
Plan de recuperación de información en caso de siniestros
 
Manual organizacional del Instituto Municipal de la Cultura de Cosalá
Manual organizacional del Instituto Municipal de la Cultura de CosaláManual organizacional del Instituto Municipal de la Cultura de Cosalá
Manual organizacional del Instituto Municipal de la Cultura de Cosalá
 
Manual Organizacional del Instituto Municipal de la Juventud de Cosalá
Manual Organizacional del Instituto Municipal de la Juventud de CosaláManual Organizacional del Instituto Municipal de la Juventud de Cosalá
Manual Organizacional del Instituto Municipal de la Juventud de Cosalá
 
Manual organizacional del Instituto Municipal de las Mujeres
Manual organizacional del Instituto Municipal de las MujeresManual organizacional del Instituto Municipal de las Mujeres
Manual organizacional del Instituto Municipal de las Mujeres
 
Manual Organizacional del Instituto Municipal del Deporte y la Cultura Física...
Manual Organizacional del Instituto Municipal del Deporte y la Cultura Física...Manual Organizacional del Instituto Municipal del Deporte y la Cultura Física...
Manual Organizacional del Instituto Municipal del Deporte y la Cultura Física...
 
Manual Organizacional del H. Ayuntamiento de Cosalá
Manual Organizacional del H. Ayuntamiento de CosaláManual Organizacional del H. Ayuntamiento de Cosalá
Manual Organizacional del H. Ayuntamiento de Cosalá
 
Manual para la elaboración del Informe Municipal
Manual para la elaboración del Informe MunicipalManual para la elaboración del Informe Municipal
Manual para la elaboración del Informe Municipal
 
Informe de Actividades 2017 del Municipio de Cosalá, Sinaloa.
Informe de Actividades 2017 del Municipio de Cosalá, Sinaloa.Informe de Actividades 2017 del Municipio de Cosalá, Sinaloa.
Informe de Actividades 2017 del Municipio de Cosalá, Sinaloa.
 
Informe 2017 de solicitudes de acceso a la información
Informe 2017 de solicitudes de acceso a la informaciónInforme 2017 de solicitudes de acceso a la información
Informe 2017 de solicitudes de acceso a la información
 
Guía de Archivo y Catalogo de Disposición Documental.
Guía de Archivo y Catalogo de Disposición Documental.Guía de Archivo y Catalogo de Disposición Documental.
Guía de Archivo y Catalogo de Disposición Documental.
 
Propuesta inversión de un programa de infraestructura tecnológica
Propuesta inversión de un programa de infraestructura tecnológicaPropuesta inversión de un programa de infraestructura tecnológica
Propuesta inversión de un programa de infraestructura tecnológica
 
Sistema de Búsqueda de Archivos que permita la Digitalización del Archivo Mun...
Sistema de Búsqueda de Archivos que permita la Digitalización del Archivo Mun...Sistema de Búsqueda de Archivos que permita la Digitalización del Archivo Mun...
Sistema de Búsqueda de Archivos que permita la Digitalización del Archivo Mun...
 
Sistematización de los Servicios de la Coordinación de Centro de Computo
Sistematización de los Servicios de la Coordinación de Centro de ComputoSistematización de los Servicios de la Coordinación de Centro de Computo
Sistematización de los Servicios de la Coordinación de Centro de Computo
 
Implementación de un servidor PROXY.
Implementación de un servidor PROXY.Implementación de un servidor PROXY.
Implementación de un servidor PROXY.
 
Propuesta de un Sistema de Búsqueda de Archivos
Propuesta de un Sistema de Búsqueda de ArchivosPropuesta de un Sistema de Búsqueda de Archivos
Propuesta de un Sistema de Búsqueda de Archivos
 

Último

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 

Último (20)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 

Computo en paralelo con OpenMP y OpenMPI

  • 1. Proyecto Final Uni versidad Autónoma de Sinaloa 2013 Facultad de Informática Culiacán Programación Avanzada, 5 de diciembre de 2013 Grupo: 7-4 Carrera Instructor Licenciatura en Informática M.C. Juan Ulises Gallardo Alumno Escalante Godinez Alfredo Humberto Martínez Rubio Luis Carlos 1 Facultad de Informática Culiacán
  • 2. Proyecto Final Uni versidad Autónoma de Sinaloa Contenido 2013 Página Presentación........................................................................................................................3 Open MP .............................................................................................................................4 Introducción.....................................................................................................................4 Historia ............................................................................................................................4 Características..................................................................................................................5 Detalles generales ............................................................................................................6 Cláusula de datos .............................................................................................................6 Cláusula SHARED...........................................................................................................7 Cláusula PRIVATE ..........................................................................................................7 Cláusula DEFAULT .........................................................................................................8 La cláusula FIRSTPRIVATE ..............................................................................................9 Directivas de distribución de datos ..................................................................................10 La directiva !$OMP DO ................................................................................................10 La directiva !$OMP SECTIONS ......................................................................................11 La directiva !$OMP WORKSHARE .................................................................................12 Ejemplos 5 .....................................................................................................................13 Compilación y ejecución..................................................................................................14 Open MPI ..........................................................................................................................16 Introducción...................................................................................................................16 Historia ..........................................................................................................................16 Características................................................................................................................17 Ejemplos ........................................................................................................................18 Compilación y ejecución..................................................................................................18 Conclusión .........................................................................................................................19 Bibliografía.........................................................................................................................20 2 Facultad de Informática Culiacán
  • 3. Proyecto Final Uni versidad Autónoma de Sinaloa 2013 Presentación La computación Paralela, es muy importante actualmente, al permitir mejorar la velocidad en la solución de grandes problemas, de modo que se mejora el rendimiento de computo. La computación paralela es una forma de cómputo en la que muchas instrucciones se ejecutan simultáneamente, operando sobre el principio de que problemas grandes, a menudo se pueden dividir en unos más pequeños, que luego son resueltos simultáneamente (en paralelo). Hay varias formas diferentes de computación paralela: paralelismo a nivel de bit, paralelismo a nivel de instrucción, paralelismo de datos y paralelismo de tareas. El paralelismo se ha empleado durante muchos años, sobre todo en la computación de altas prestaciones, pero el interés en ella ha crecido últimamente debido a las limitaciones físicas que impiden el aumento de la frecuencia. Como el consumo de energía y por consiguiente la generación de calor de las computadoras constituye una preocupación en los últimos años. la computación en paralelo se ha convertido en el paradigma dominante en la arquitectura de computadores, principalmente en forma de procesadores multinúcleo. La computación paralela es una forma de cómputo en la que muchas instrucciones se ejecutan 1 simultáneamente, operando sobre el principio de que problemas grandes, a menudo se pueden dividir en unos más pequeños, que luego son resueltos simultáneamente (en paralelo). Hay varias formas diferentes de computación paralela: paralelismo a nivel de bit, paralelismo a nivel de instrucción, paralelismo de datos y paralelismo de tareas. El paralelismo se ha empleado durante muchos años, sobre todo en la computación de altas prestaciones, pero el interés en ella ha crecido últimamente debido a las limitaciones físicas que impiden el aumento de la frecuencia. Como el consumo de energía y por consiguiente la generación de calor de las computadoras constituye una preocupación en los últimos años. la computación en paralelo se ha convertido en el paradigma dominante en la arquitectura de computadores, principalmente en forma de procesadores multinúcleo. Los programas informáticos paralelos son más difíciles de escribir que los secuenciales, porque la concurrencia introduce nuevos tipos de errores de software, siendo las condiciones de carrera los más comunes. La comunicación y sincronización entre diferentes subtareas son algunos de los mayores obstáculos para obtener un buen rendimiento del programa paralelo. A continuación veremos dos API’s con las cuales podremos construir programas en paralelo: OpenMP y OpenMPI. 3 Facultad de Informática Culiacán
  • 4. Proyecto Final Uni versidad Autónoma de Sinaloa 2013 Open MP Introducción OpenMP es un estándar que define construcciones y su semántica que ayudan a con struir programas en paralelo en el modelo de memoria compartida. Fue creado para facilitar la construcción de programas en este modelo, así como para permitir la portabilidad de estos programas.1 OpenMP es una interfaz de programación de aplicaciones (API) para la programación multiproceso de memoria compartida en múltiples plataformas. Permite añadir concurrencia a los programas escritos en C, C++ y Fortran sobre la base del modelo de ejecución fork-join. Está disponible en muchas arquitecturas, incluidas las plataformas de Unix y de Microsoft Windows. Se compone de un conjunto de directivas de compilador, rutinas de biblioteca, y variables de entorno que influyen el comportamiento en tiempo de ejecución. Definido juntamente por un grupo de proveedores de hardware y de software mayores, OpenMP es un modelo de programación portable y escalable que proporciona a los programadores una interfaz simple y flexible para el desarrollo de aplicaciones paralelas para las plataformas que van desde las computadoras de escritorio hasta las supercomputadoras. Una aplicación construida con un modelo de programación paralela híbrido se puede ejecutar en un clúster de computadoras utilizando ambos OpenMP y MPI, o más transparentemente a través de las extensiones de OpenMP para los sistemas de memoria distribuida.2 Historia OpenMP es administrado por el consorcio sin fines de lucro Architecture Review Board tecnología OpenMP, definido conjuntamente por un grupo de los principales proveedores de hardware y software, incluyendo AMD, IBM, Intel, Cray, HP, Fujitsu, Nvidia, NEC, Microsoft, Texas Instruments, Oracle Corporation , y más. The Architecture Review Board OpenMP publicó sus especificaciones API primera, OpenMP Fortran para la 1.0, en octubre de 1997 - octubre del año siguiente lanzaron el C 4 Facultad de Informática Culiacán
  • 5. 2013 Proyecto Final Uni versidad Autónoma de Sinaloa + + estándar de C /. 2000 vio la versión 2.0 de las especificaciones Fortran con la versión 2.0 de las especificaciones + C/C + ser liberado en 2002 - Versión 2.5 es una especificación + +/Fortran combinada C/C que fue lanzado en 2005. La versión 3.0 fue lanzado en mayo de 2008 - Incluido en las nuevas características en 3.0 es el concepto de las tareas y la construcción de tareas. Estas nuevas características se resumen en el Anexo F de las especificaciones de OpenMP 3.0. La versión 3.1 de la especificación OpenMP fue publicado el 9 de julio de 2011. Características El OpenMP se fundamenta en directivas y cláusulas:  Las directivas especifican que hacer.  Las cláusulas indican cómo hacerlo.  Se añaden como comentarios al código. Tipos de directivas en OpenMP  Directivas de distribución de trabajo.  Directivas de sincronización de tareas. Tipos de cláusulas en OpenMP  Cláusula de datos.  Cláusula de comportamiento.  Cláusula de sincronía. Ventajas de OpenMP  Es sencillo ya que no requiere el envío de mensajes como en MPI.  La descomposición de datos es automática.  Admite la paralelización incremental del código.  Mismo código fuente para las versiones serial y paralela.  Permite implementar granularidad gruesa y fina.  Eleva la portabilidad. Inconvenientes Requiere un compilador que entienda OpenMP. El estándar sólo contempla C y Fortran. 5 Facultad de Informática Culiacán 3
  • 6. Proyecto Final Uni versidad Autónoma de Sinaloa 2013 Solo es eficiente en máquinas con memoria compartida En general la eficiencia paralela es baja. La escalabilidad está limitada por acceso a la memoria. Aumentar la eficiencia requiere reestructurar el código. Detalles generales Directiva: instrucción de OpenMP que especifica la acción a realizar, Cláusula: instrucción de OpenMP que impone condiciones a la directiva que le prece de. Tarea: unidad de ejecución con memora y stack propios. Región paralela: parte de un programa que es ejecuta por un equipo de tareas que trabajan conjuntamente. Región serial: parte de un programa que es ejecutada por una única tarea. Tarea maestra: tarea que crea a las demás tareas al inicio de una región paralela y cuyo número de tarea es siempre el 0. Bloque estructurado: bloque de líneas de código con una única entrada lógica en su parte superior y una única entrada lógica en su parte superior y una unida salida lógica en su parte inferior. Rutina thread-safe: una rutina es thread-safe cuando es capaz de ser utilizada de manera simultánea e independiente por varias tareas ejecutadas en par alelo. Race condition: situación no deseable en la que el resultado de un código depende del orden en el que se ejecutan las tareas. 4 Cláusula de datos Características generales de estas cláusulas:  Especifican propiedades “paralelas” de las variables.  Pueden aparecen tantas veces como sea necesario.  Pueden usarse con cualquier directiva OpenMP. 6 Facultad de Informática Culiacán
  • 7. Proyecto Final Uni versidad Autónoma de Sinaloa 2013 Restricciones  Una variable no puede aparecer en más de una cláusula  Solo admiten variables que sean visibles desde la subrutina o función que incluya la cláusula. Cláusula SHARED Especifica que una variable es compartida por las tareas: !$OMP PARALLEL SHARED(c,d) … !$OMP END PARALLEL Características de las variables compartidas:  Todas las tareas ven su contenido.  Todas las tareas pueden cambiar su contenido.  Todas las tareas ven los cambios realizados. Peculiaridades de las variables compartidas:  Los cambios no son inmediatos (cache coherency).  Pueden requerir de sincronía entre tareas.  Existen algunas limitaciones en Fortran. Cláusula PRIVATE Especifica que una variable es privada a cada tarea: !$OMP PARALLEL PRIVATE(a,b) ... !$OMP END PARALLEL 7 Facultad de Informática Culiacán
  • 8. Proyecto Final Uni versidad Autónoma de Sinaloa Características de las variables privadas:  Cada tarea tiene su propia versión de la variable.  Eso se consigue replicando la variable en memoria.  Las otras tareas no pueden ver su contenido. Peculiaridades de las variables privadas:  Su valor inicial no está definido.  Tras la región paralela su valor tampoco está definido.  Existen algunas limitaciones. Cláusula DEFAULT Especifica el comportamiento por defecto: integer :: a ,b ,c , d !$OMP PARALLEL DEFAULT(PRIVATE) SHARED(a) ... !$OMP END PARALLEL 8 Facultad de Informática Culiacán 2013
  • 9. Proyecto Final Uni versidad Autónoma de Sinaloa 2013 Características de la cláusula:  Sólo puede aparecer una única vez en cada directiva.  Admite tres opciones: PRIVATE, SHARED y NONE.  Con NONE todas las variables deben ser definidas. Sólo afecta a las variables directamente visibles: !$OMP PARALLEL DEFAULT(SHARED) a=1 b=2 call ejemplo (a ,b ) !$OMP END PARALLEL Las variables definidas dentro de la subrutina ejemplo no se ven afectadas por la cláusula DEFAULT. La cláusula FIRSTPRIVATE Es una extensión de la cláusula PRIVATE: a=2 b=1 !$OMP PARALLEL PRIVATE(a) FIRSTPRIVATE(b) ... !$OMP END PARALLEL Características de las variables FIRSTPRIVATE:  Cada tarea tiene su propia versión de la variable  Eso se consigue replicando la variable en memoria  Las otras tareas no pueden ver su contenido  Su valor es inicializado con la variable original 9 Facultad de Informática Culiacán
  • 10. Proyecto Final Uni versidad Autónoma de Sinaloa 2013 Peculiaridades de las variables FIRSTPRIVATE:  Tras la región paralela su valor no está definido  Existen algunas limitaciones Cláusulas de datos vistas: SHARED, PRIVATE, DEFAULT, FIRSTPRIVATE Cláusulas de datos adicionales: LASTPRIVATE, REDUCTION, COPYIN, COPYPRIVATE Condiciones generales a tener en cuenta:  Una variable sólo puede aparecer en una cláusula, salvo en FIRSTPRIVATE y LASTPRIVATE a la vez  El contador de un bucle siempre es privado  Cada cláusula tiene sus limitaciones Directivas de distribución de datos Características de estas directivas:  Distribuyen una carga de trabajo sobre varias tareas  No crean nuevas tareas, usan las ya existentes  Funcionan en regiones seriales y en regiones paralelas  Incluyen al final una sincronización implícita Restricciones de estas directivas:  Deben ser encontradas por todas las tareas  Sólo pueden contener bloques estructurados de código La directiva !$OMP DO Características de la directiva:  Distribuye la carga de un bucle entre las tareas  La descomposición se hace en el espacio de iteraciones  La descomposición es modificable mediante clausulas  El contador es implícitamente declarado PRIVATE !$OMP DO clause1 clause2 ... do i = 1 , 1000 ... 10 Facultad de Informática Culiacán
  • 11. Proyecto Final Uni versidad Autónoma de Sinaloa enddo !$OMP END DO end_clause Ejemplo de distribución de carga de un bucle. !$OMP PARALLEL NUM_T HREADS(10) !$OMP DO do i = 1 , 1000 … enddo !$OMP END DO !$OMP END PARALLEL Restricciones de la directiva !$OMP DO:  En C, el bucle debe ser de un tipo determinado  En Fortran, el bucle no puede ser del tipo do while  El contador debe ser el mismo para todas las tareas  Sólo admite bloques estructurados de código  Las variables SHARED sólo se actualizan al final La directiva !$OMP SECTIONS Características de la directiva:  Cada tarea ejecuta una de las secciones  Cada sección es ejecutada una ´única vez  Permite implementar el paralelismo tipo MIMD !$OMP SECTIONS clause1 clause2 ... !$OMP SECTION ... !$OMP SECTION ... ... !$OMP END SECTIONS end_clause 11 Facultad de Informática Culiacán 2013
  • 12. Proyecto Final Uni versidad Autónoma de Sinaloa 2013 Ejemplo de asignación de tareas !$OMP SECTIONS !$OMP SECTION write(*,*) “Hello” !$OMP SECTION write(*,*) “Hi” !$OMP SECTION write(*,*) “Bye” !$OMP END SECTIONS Restricciones de la directiva:  La manera de asignar secciones a tareas no está definida  Cada sección debe ser un bloque estructurado de código  No se crean nuevas tareas, se usan las existentes  Las variables SHARED sólo se actualizan al final La directiva !$OMP WORKS HARE Características de la directiva:  Es especifica para Fortran 95  Explota las capacidades paralelas de Fortran 95  Distribuye las instrucciones matriciales entre las tareas Soporta las siguientes instrucciones matriciales: matmul, dot product, sum, product, maxval, minval, count,any, all, spread, pack, unpack, reshape, transpose, eoshift,cshift, minloc, maxloc, forall, where. Las instrucciones deben comportarse como si estuvieran en una región serial. !$OMP WORKSHARE 12 Facultad de Informática Culiacán
  • 13. Proyecto Final Uni versidad Autónoma de Sinaloa ... !$OMP END WORKSHARE end_clause Restricciones de la directiva:  La asignación del trabajo a las tareas no está definida  El compilador debe insertar sincronizaciones suficientes para que el comportamiento sea el correcto  Sólo se pueden hacer llamadas a funciones que sean del tipo elemental  Existen restricciones al uso de variables PRIVATE Peculiaridad de la directiva: Las variables SHARED se actualizan constantemente Ejemplos 5 Hola mundo #include <omp.h> int main() { int iam =0, np = 1; #pragma omp parallel private(iam, np) { #if defined (_OPENMP) np = omp_get_num_threads(); iam = omp_get_thread_num(); #endif printf(“Hello from thread %d out of %d n”,iam,np); } } Ciclo #include <omp.h> int main() { int iam =0, np = 1, i=0; #pragma omp parallel private(iam, np,i) { #if defined (_OPENMP) np = omp_get_num_threads(); iam = omp_get_thread_num(); #endif printf("Hello from thread %d out of %dn",iam,np); #pragma omp for for(i=0;i<(np*2);i++) 13 Facultad de Informática Culiacán 2013
  • 14. Proyecto Final Uni versidad Autónoma de Sinaloa 2013 { printf("Thread %d, contador %d n",iam,i); } } } Sección #pragma omp parallel private(iam, np,i) { #pragma omp sections { #pragma omp section printf("Soy el thread %d, en solitario en la seccion 1ª n",iam); #pragma omp section printf("Soy el thread %d, en solitario en la sección 2ª n",iam); #pragma omp section printf("Soy el thread %d, en solitario en la seccion 3ª n",iam); }//sections }//parallel Compilación y ejecución Para compilar y ejecutar programas con OpenMP use: gcc -fopenmp -0 <ejecutable> <fuente> donde ejecutable es el nombre del archivo de salida y fuente es el archivo a compilar o programa fuente con extension .c. #include <omp.h> #include <stdio.h> int main (int argc, char *argv[]) { int th_id, nthreads; #pragma omp parallel private(th_id) { th_id = omp_get_thread_num(); printf("Hello World from thread %dn", th_id); #pragma omp barrier if ( th_id == 0 ) { nthreads = omp_get_num_threads(); printf("There are %d threadsn",nthreads); } } return 0; } Así para compilar este programa llamado hola_openmp.c seria. [ah.escalante10@uas ~]$ gcc -fopenmp -o hola_openmp hola_openmp.c 14 Facultad de Informática Culiacán
  • 15. Proyecto Final Uni versidad Autónoma de Sinaloa 2013 Si se requiere agregar funciones matemáticas agregue la librería con: mpicc -lm -fopenmp -o <ejecutable> <fuente>. Ejecución de trabajos con OpenMP. Ejecute el programa de forma normal como cualquier otro programa hecho en C. [ah.escalante10@uas ~]$ ./hola_openmp Hello World from thread 1 Hello World from thread 0 There are 2 threads Observe que no se está usando algún nodo del Clúster ya que esta autentificado en gridmorelos.uaem.mx que es el front-end o nodo maestro, para usar los nodos del Clúster se requiere lanzar los programas uno a uno ya que no es un programa MPI, si por ejemplo se desea usar un nodo en especifico podría lanzarlo de la siguiente manera, primero observando los nodos disponibles. [ah.escalante10@uas ~]$ rocks list host HOST Uas MEMBERSHIP CPUS RACK RANK RUNACT ION INSTALLATION : Frontend 2 0 0 os install compute-0-0: Compute 2 0 0 os install compute-0-1: Compute 2 0 1 os install ... Al seleccionar el nodo llamado compute-0-0 el comando seria: [ah.escalante10@uas ~]$ ssh compute-0-0 ./hola_openmp Hello World from thread 0 Hello World from thread 1 There are 2 threads Si requiere lanzar los programas OpenMP a lo largo de todo el Cluster podría implementar un Script que realice esta misma tarea por cada nodo disponible. 6 15 Facultad de Informática Culiacán
  • 16. Proyecto Final Uni versidad Autónoma de Sinaloa 2013 Open MPI Introducción OpenMPI (Message Passing Interface) es un proyecto de librería que combin a tecnología y recursos de otros proyectos (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI). Es utilizado por muchas supercomputadoras. 7 Se trata de una API de código abierto desarrollada para facilitar la programación paralela y/o distribuida que:  Implementa el estándar MPI.  Permite la distribución de procesos de forma dinámica.  Alto rendimiento.  Tolerancia a fallos: capacidad de recuperarse de forma transparente de los fallos de los  componentes (errores en el envío o recepción de mensajes, fallo de un procesador o  nodo).  Soporta redes hetereogéneas : permite la ejecución de programas en redes cuyos  ordenadores presenten distinto número de nodos y de procesadores.  Una única librería soporta todas las redes.  Portable: funciona en los sistemas operativos Linux, OS-X , Solaris y en un futuro  próximo en Windows.  Modificable por los instaladores y usuarios finales : presenta opciones de configuración durante la instalación de la API, la compilación de programas y su ejecución. 8 Historia Al diseñarse MPI, se tomaron en cuenta las características más atractivas de los sistemas existentes para el paso de mensajes, en vez de seleccionar uno solo de ellos y adoptarlo como el estándar, resultando así, en una fuerte influencia para MPI los trabajos hechos por IBM, INT EL, NX/, Express, nCUBE's Vernex, p4 y PARMACS. Otras contribuciones importantes provienen de Zipcode, Chimp, PVM, Chameleon y PICL. El esfuerzo para estandarizar MPI involucró a cerca de 60 personas de 40 organizaciones diferentes principalmente de EE.UU. y Europa. 16 Facultad de Informática Culiacán
  • 17. Proyecto Final Uni versidad Autónoma de Sinaloa 2013 La mayoría de los vendedores de computadoras concurrentes estaban involucrados con MPI, así como con investigadores de diferentes universidades, laboratorios del gobierno e industrias. El proceso de estandarización comenzó en el taller de estándares para el paso de mensajes en un ambiente con memoria distribuida, patrocinado por el Centro de Investigación en Computación Paralela en Williamsburg, Virginia, Estados Unidos (Abril 29-30 de 1992). Se llegó a una propuesta preliminar conocida como MPI1, enfocada principalmente en comunicaciones punto a punto sin incluir rutinas para comunicación colectiva y no presentaba tareas seguras. El estándar final por el MPI fue presentado en la conferencia de Supercómputo en noviembre de 1993, constituyéndose así el foro para el MPI. En un ambiente de comunicación con memoria distribuida en la cual las rutinas de paso de mensajes de nivel bajo, los beneficios de la estandarización son muy notorios. La principal ventaja al establecer un estándar para el paso de mensajes es la portabilidad y el ser fácil de utilizar. MPI-1 apareció en 1994, el estándar MPI-2 fue lanzado en 1997. Características  Cumple el standar MPI-2  Distribución de procesos de forma dinámica  Alto rendimiento en todas las plataformas  Administración de trabajos rápida y fiable  Tolerancia a fallos de red y procesos  Soporte de redes hetereogéneas  Una única librería soporta todas las redes  Herramientas de Run-time  Muchos planificadores de trabajos soportados  Portable y mantenible  Modificable por los instaladores y usuarios finales  Mensajes de error internacionalizados  PIs documentadas  Lista de correo activa 10 17 Facultad de Informática Culiacán
  • 18. Proyecto Final Uni versidad Autónoma de Sinaloa Ejemplos include <stdio.h> #include <mpi.h> int main(int argc, char **argv) { int size, rank; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); printf("SIZE = %d RANK = %dn",size,rank); MPI_Finalize(); return(0); } Compilación y ejecución Para compilar utilizamos la siguiente instrucción: mpic++ your_code_file.c Ejecución del recién programa compilado mpirun -np <no. of Processors> ./a.out 18 Facultad de Informática Culiacán 2013
  • 19. Proyecto Final Uni versidad Autónoma de Sinaloa 2013 Conclusión Para empezar no sabíamos que existía la forma de poder desarrollar programas en paralelo, es decir, que cada procesador se encarga de una tarea específica equivalente a la que van a realizar los demás procesadores para aprovechar al máximo los recursos de la computadora. Dicho esto, pareciera que nuestra programación es obsoleta. Sin embargo, también se le puede considerar un área de oportunidad. Las dos opciones de API’s aquí mostradas para el desarrollo de programas de computo en paralelo las considero buenas y fáciles de aprender si se pone entusiasmo. Aquí el problema mayor que veo más que aprender a utilizar bien estás herramientas es aprender a desmenuzar las tareas de tal forma que sean equitativas para cada uno de los procesadores que lo va a ejecutar. 19 Facultad de Informática Culiacán
  • 20. Proyecto Final Uni versidad Autónoma de Sinaloa 2013 Bibliografía 1. Instituto de Ingeniería – Universidad Autónoma de México ftp://ftp.iingen.unam.mx/IINGEN/Taller-Super-Computo/jueves24mayo/openmp.pdf 2. Open MP – Wikipedia http://es.wikipedia.org/wiki/OpenMP 3. Web Academia http://centrodeartigos.com/articulos-informativos/article_69704.html 4. Universidad Politécnica de Madrid http://webserver.dmt.upm.es/zope/DMT/Members/hermanns/docencia-ycursos/introduccion-programacion-paralela/Clase_2_Programacion_Paralela_OpenMP.pdf 5. Universidad de Murcia http://dis.um.es/~domingo/apuntes/PPCAP/1011/PPCAP_1011_OpenMP.pdf 6. Universidad Autónoma del Estado de Morelos http://www.gridmorelos.uaem.mx/?option=com_content&view=article&id=55&Itemid=71 7. Open MPI – Wikipedia http://en.wikipedia.org/wiki/Open_MPI 8. Universidad de Murcia http://dis.um.es/~domingo/apuntes/AlgProPar/0910/exposicion1/MunozPablo -OpenMPI.pdf 9. Computación en paralelo http://es.wikipedia.org/wiki/Computaci%C3%B3n_paralela 10. MPI – Wikipedia http://es.wikipedia.org/wiki/Interfaz_de_Paso_de_Mensajes 20 Facultad de Informática Culiacán