Apuntes - Programacion Paralela y Distribuida

Algunas anotaciones que hice en clase que podrían aclarar algunas cosas y que utilice como guía de estudio en la realización de mis programas, no tienen un orden secuencial pero si ya estás en tus últimos días de la materia ya le encontraras sentido, (si hay error me lo pueden hacer saber con un comentario)

ADJUNTO EL DOCUMENTO EN WORD POR SI LO QUIERES BAJAR.

Pd: la tome con el maestro Ledezma

Como compilar en LINUX CONSOLA EL OPEN MP

//Escribir en la terminal donde nombre es el nombre del programa en C
gcc nombre.c -fopenmp -o nombre

//luego
./nombre

Schedule y reduction

//schedule es carga distribuida en tiempo de ejecución
//shchedule : Distribuye un bloque de instrucciones
//schedule: Distribuye la carga computacional
// schedule Distribuye iteraciones en bloques de tamaño  “chunk”
//reduction -> el total sobre esa variable, de los bloques de datos q van a ser sumarizados por cada hilo

Hilo y granularidad

Hilos son instancias virtuales de procesos, nosotros estamos definiendo procesos virtuales

EL número de hilos que están en un proceso de ejecución nos está indicando granularidad, el número de procesos, el tamaño de cada proceso se refiere al bloque de datos y al bloque de instrucciones que se están ejecutando en cada hilo.

Ya estamos trabajando con un particionamiento funcional y de datos

¿SI UNA VARIABLE NO SE LE DICE SI ES COMPARTIDA O PRIVADA, ENTONCES QUE ES?

Si no indica si una variable es compartida o privada,
entonces es compartida

Barrier
barrier una manera de hacer sincronización, es como establecer un token ,es parar.
Barrera es un wait

¿Si creo hilos a lo tonto, el programa será más rápido?
a mayor hilos no quiere decir que el programa se haga más rápido (tiempo ejecución), en algún momento se mantendrá constante y luego puede decaer.

PARALLEL/PRIVATE/NOWAIT

parallel – que hilos realicen cosas diferentes
private – se usa para índices de cada hilo
nowait – no va a ver barreras implícitas, no va a esperar que otro hilo termine la región paralela

COMO DECLARAR MASTER/SINGLE/CRITICAL/BARRIER/ATOMIC Y QUE HACEN
#pragma omp master // referencia al hilo 0 al hilo maestro
#pragma omp single //todos los demás lo ejecutaran menos el maestro
#pragma omp critical // exclusión mutua es para ejecutar procesos q no pueden ser interrumpidos por otros, 1 hilo a la vez, un hilo con el privilegio ,por ejemplo región de memoria donde están las variables del sistema
#pragma omp barrier // sincroniza todos los threads en el equipo
#pragma omp atomic //sirve para llevar el control de que no se realice. el atomic puede hacerse para actualizar o bien para hacer un insert cuando una variable o localidad se le intente agregar un valor

VARIABLES PRIVADAS/FIRSTPRIVATE/LASTPRIVATE

VARIABLES PRIVADAS:
NO SON INICIALIZADAS, TOMAN VALORES ALEATORIOS PARA CADA HILO

VARIABLES FIRSTPRIVATE:
ESPECIFICA QUE CADA HILO DEBE DE TENER SU PROPIA INSTANCIA DE VARIABLE Y QUE ESTA DEBE SER INICIALIZADA PREVIO A LA REGION PARALELA ES DECIR.

VARIABLE LASTPRIVATE:
CONSIDERA  EL VALOR QUE OBTENGA CUANDO EL ULTIMO HILO EJECUTE LA ULTIMA ITERACION

THREADPRIVATE/TOL Y SIZE/COPYNG

THREADPRIVATE, LAS VARIABLES QUE TENGA THREADPRIVATE SERAN SOLAMENTE USADAS PARA ESE HILO, EL CUAL ES EL HILO MAESTRO

LAS VARIABLES DE TOL Y SIZE QUE SE ESTAN EMPLEANDO SON LOS VALORES QUE TIENE TOL Y SIZE PERO DEL HILO MAESTRO

y copyng que copea las variables del threadprivate