Programación Paralela y Computación de Altas Prestaciones Programación con OpenMP
|
|
- Concepción Revuelta Quiroga
- hace 5 años
- Vistas:
Transcripción
1 Programación Paralela y Computación de Altas Prestaciones Programación con OpenMP Javier Cuenca UniversidaddeMurcia
2 Nociones básicas Modelo de programación fork-join, con generación de múltiples threads. Inicialmente se ejecuta un thread hasta que aparece el primer constructor paralelo, se crean threads esclavos y el que los pone en marcha es el maestro. Al final del constructor se sincronizan los threads y continúa la ejecución el maestro. Facultad de Informática. Universidad de Murcia 2
3 Ejemplo inicial: ejemplo_hello.c #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); Facultad de Informática. Universidad de Murcia 3
4 Directivas #pragma omp nombre-directiva [cláusulas] Facultad de Informática. Universidad de Murcia 4
5 Constructores: Constructor parallel #pragma omp parallel [cláusulas] bloque Se crea un grupo de threads El que los pone en marcha actúa de maestro. Con cláusula if se evalúa su expresión si da valor distinto de cero se crean los threads si es cero se hace en secuencial. Número de threads a crear se obtiene por variables de entorno o llamadas a librería. Hay barrera implícita al final de la región. Cuando dentro de una región hay otro constructor paralelo: anidamiento cada esclavo crearía otro grupo de threads esclavos de los que sería el maestro. Cláusulas (private, firstprivate, default, shared, copyin y reduction) forma en que se accede a las variables. Facultad de Informática. Universidad de Murcia 5
6 Constructores: Constructor for #pragma omp for [cláusulas] bucle for Las iteraciones se ejecutan en paralelo por threads que ya existen La parte de inicialización del for debe ser una asignación La parte de incremento debe ser una suma o resta La parte de evaluación es la comparación de una variable entera sin signo con un valor, utilizando un comparador mayor o menor (puede incluir igual). Los valores que aparecen en las tres partes del for deben ser enteros. Hay barrera al final a no ser que se utilice la cláusula nowait. Hay una serie de cláusulas (private, firstprivate, lastprivate y reduction) para indicar la forma en que se accede a las variables. Facultad de Informática. Universidad de Murcia 6
7 Constructores: Constructor for: : ejemplo_for.c #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 %d\n",iam,np); #pragma omp for for(i=0;i<(np*2);i++) printf("thread %d, contador %d \n",iam,i); Facultad de Informática. Universidad de Murcia 7
8 Constructores: Constructor for Una cláusula schedule indica la forma como se dividen las iteraciones del for entre los threads: schedule(static,tamaño) las iteraciones se dividen según el tamaño, y la asignación se hace estáticamente a los threads. Si no se indica el tamaño se divide por igual entre los threads. schedule(dynamic,tamaño) las iteraciones se dividen según el tamaño y se asignan a los threads dinámicamente cuando van acabando su trabajo. schedule(guided,tamaño) las iteraciones se asignan dinámicamente a los threads pero con tamaños decrecientes, empezando en tamaño numiter/np y acabando en tamaño. schedule(runtime) deja la decisión para el tiempo de ejecución, y se obtienen de la variable de entorno OMP_SCHEDULE. ver modificaciones ejemplo_for.c Facultad de Informática. Universidad de Murcia 8
9 Constructores: Constructor sections #pragma omp sections [cláusulas] [#pragma omp section] bloque [#pragma omp section bloque... Cada sección se ejecuta por un thread. Hay barrera al final de sections a no ser que se utilice la cláusula nowait. Hay una serie de cláusulas (private, firstprivate, lastprivate y reduction) para indicar la forma en que se accede a las variables. Facultad de Informática. Universidad de Murcia 9
10 Constructores: Constructor sections: : ejemplo_sections.c #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 Facultad de Informática. Universidad de Murcia 10
11 Constructores: Constructores combinados #pragma omp parallel for [cláusulas] bucle for Es forma abreviada de directiva parallel que tiene una única directiva for, y admite sus cláusulas menos la nowait. #pragma omp parallel sections [cláusulas] Es forma abreviada de directiva parallel que tiene una única directiva sections, y admite sus cláusulas menos la nowait. Facultad de Informática. Universidad de Murcia 11
12 Constructores: Constructores de ejecución secuencial #pragma omp single [cláusulas] bloque El bloque se ejecuta por un único thread. No tiene por qué ser el maestro. Hay barrera al final a no ser que se utilice la cláusula nowait. #pragma omp master bloque El bloque lo ejecuta el thread maestro. No hay sincronización al entrar ni salir. #pragma omp ordered bloque Todo dentro de un for, el bloque se ejecuta en el orden en que se ejecutaría en secuencial. Facultad de Informática. Universidad de Murcia 12
13 Constructores: Constructores de ejecución secuencial: ejemplos ejemplo_single.c Barreras al final de cada single ejemplo_master.c Ejecución solamente por thread maestro (el 0) No hay barreras ejemplo_ordered.c Se ordena la ejecución por iteraciones del bucle Facultad de Informática. Universidad de Murcia 13
14 Constructores: Constructores de ejecución secuencial: ejemplo_single.c #pragma omp parallel private(iam, np,i) #pragma omp single printf("soy el thread %d, actuando en solitario dentro del primer bloque\n",iam); sleep(1); #pragma omp single printf("soy el thread %d, actuando en solitario dentro ddel segundo bloque \n",iam); sleep(1); #pragma omp single printf("soy el thread %d, actuando en solitario dentro ddel tercer bloque \n",iam); sleep(1); printf("soy el thread %d, fuera de los singles\n",iam); //parallel Facultad de Informática. Universidad de Murcia 14
15 Constructores: Constructores de ejecución secuencial: ejemplo_master.c #pragma omp parallel private(iam, np,i) #pragma omp master printf("soy el thread %d, actuando en solitario dentro del primer bloque\n",iam); sleep(1); #pragma omp master printf("soy el thread %d, actuando en solitario dentro ddel segundo bloque \n",iam); sleep(1); #pragma omp master printf("soy el thread %d, actuando en solitario dentro ddel tercer bloque \n",iam); sleep(1); printf("soy el thread %d, fuera de los singles\n",iam); //parallel Facultad de Informática. Universidad de Murcia 15
16 Constructores: Constructores de ejecución secuencial: ejemplo_ordered.c #pragma omp parallel private(iam, np,i) #pragma omp for ordered for(i=0;i<5;i++) printf("\t\tsoy el thread %d, antes del ordered en la iteracion %d\n",iam,i); #pragma omp ordered printf("soy el thread %d, actuando en la iteracion %d\n",iam,i); //parallel sleep(1); Facultad de Informática. Universidad de Murcia 16
17 Constructores: Constructores de sincronización #pragma omp critical [nombre] bloque Asegura exclusión mutua en la ejecución del bloque. El nombre se puede usar para identificar secciones críticas distintas. #pragma omp barrier Sincroniza todos los threads en el equipo. #pragma omp atomic expresión La expresión debe ser x binop=exp, x++, ++x, x-- o --x, donde x es una expresión con valor escalar, y binop es un operador binario. Asegura la ejecución de la expresión de forma atómica. Facultad de Informática. Universidad de Murcia 17
18 Constructores: Constructores de sincronización: ejemplo_critical.c #pragma omp parallel private(iam, np,i) #pragma omp critical printf("soy el thread %d, al inicio de la seccion critica \n",iam); sleep(1); printf("\t\tsoy el thread %d, al final de la seccion critica \n",iam); //parallel Facultad de Informática. Universidad de Murcia 18
19 Constructores: Constructores de sincronización: ejemplo_barrier.c #pragma omp parallel private(iam, np,i) printf("soy el thread %d, antes del barrier \n",iam); #pragma omp barrier printf("\t\tsoy el thread %d, despues del barrier \n",iam); //parallel Facultad de Informática. Universidad de Murcia 19
20 Constructores: Constructores de manejo de variables #pragma omp flush [lista] Asegura que las variables que aparecen en la lista quedan actualizadas para todos los threads. Si no hay lista se actualizan todos los objetos compartidos. Se hace flush implícito al acabar barrier, al entrar o salir de critical u ordered, al salir de parallel, for, sections o single. ejemplo_flush.c #pragma omp threadprivate (lista) Usado para declarar variables privadas a los threads. Facultad de Informática. Universidad de Murcia 20
21 Constructores: Constructores de manejo de variables: ejemplo_flush.c #pragma omp parallel private(iam, np,i) #pragma omp master x=999; #pragma omp flush(x) printf("soy el thread %d, actualizando x=999 \n\n",iam); printf("soy el thread %d, antes del flush, con x=%d \n",iam,x); while (x==0) #pragma omp flush(x) printf("\t\tsoy el thread %d, despues del flush, con x=%d \n",iam,x); //parallel Facultad de Informática. Universidad de Murcia 21
22 Claúsulas de alcance de datos private(lista) privadas a los threads, no se inicializan antes de entrar y no se guarda su valor al salir. firstprivate(lista) privadas a los threads, se inicializan al entrar con el valor que tuviera la variable correspondiente. lastprivate(lista) privadas a los threads, al salir quedan con el valor de la última iteración o sección. shared(lista) compartidas por todos los threads. default(shared none) indica cómo serán las variables por defecto. reduction(operador:lista) se obtienen por la aplicación del operador. copyin(lista) para asignar el valor de la variable en el master a variables locales privadas a los threads al empezar la región paralela. Facultad de Informática. Universidad de Murcia 22
23 Claúsulas de alcance de datos: Ejemplos: ejemplo_private.c int x=1234; #pragma omp parallel private(iam, np,i,x) printf("soy el thread %d, antes de actualizar, con x=%d \n",iam,x); x=iam*1111; printf("\t\tsoy el thread %d, despues de actualizar, con x=%d \n",iam,x); printf("\n Despues de pragma parallel x=%d \n\n",x); Facultad de Informática. Universidad de Murcia 23
24 Claúsulas de alcance de datos: Ejemplos: ejemplo_firstprivate.c int x=1234; #pragma omp parallel firstprivate(iam, np,i,x) printf("soy el thread %d, antes de actualizar, con x=%d \n",iam,x); x=iam*1111; printf("\t\tsoy el thread %d, despues de actualizar, con x=%d \n",iam,x); printf("\n Despues de pragma parallel x=%d \n\n",x); Facultad de Informática. Universidad de Murcia 24
25 Claúsulas de alcance de datos: Ejemplos: ejemplo_lastprivate.c int x=1234; #pragma omp parallel private(iam, np,i,x) printf("soy el thread %d, antes de actualizar, con x=%d \n",iam,x); #pragma omp for lastprivate(x) schedule(dynamic) for(i=0;i<11;i++) x=iam*i; printf("\tsoy el thread %d, actualizando en for, i=%d x=%d\n",iam,i,x); printf("\t\tsoy el thread %d, despues de actualizar, con x=%d \n",iam,x); printf("\n Despues de pragma parallel x=%d \n\n",x); Facultad de Informática. Universidad de Murcia 25
26 Claúsulas de alcance de datos: Ejemplos: ejemplo_reduction.c int x=1000; int iam =0, np = 1, i=0,j=0; printf("\n Antes de pragma parallel x=%d \n\n",x); #pragma omp parallel private(iam, np,i) reduction(+:x) printf("soy el thread %d, antes de actualizar, con x=%d \n",iam,x); x=iam*10; printf("\t\tsoy el thread %d, despues de actualizar, con x=%d \n",iam,x); //parallel printf("\n Despues de pragma parallel x=%d \n\n",x); Facultad de Informática. Universidad de Murcia 26
27 Claúsulas de alcance de datos: Ejemplos: ejemplo_copyin.c int x; #pragma omp threadprivate(x) int main() int iam =0, np = 1, i=0,j=0; x=9999; // lo ponemos en el master #pragma omp parallel private(iam, np,i) copyin(x) printf("soy el thread %d, antes de actualizar, con x=%d \n",iam,x); x=1000+iam; printf("\t\tsoy el thread %d, despues de que actualice, con x=%d \n",iam,x); //parallel printf("\n Despues de pragma parallel x=%d \n\n",x); //main Facultad de Informática. Universidad de Murcia 27
28 Funciones de librería Poner al principio: #include <omp.h> void omp_set_num_threads(int num_threads); Pone el número de threads a usar en la siguiente región paralela. int omp_get_num_threads(void); Obtiene el número de threads que se están usando en una región paralela. int omp_get_max_threads(void); Obtiene la máxima cantidad posible de threads. int omp_get_thread_num(void); Devuelve el número del thread. int omp_get_num_procs(void); Devuelve el máximo número de procesadores que se pueden asignar al programa. int omp_in_parallel(void); Devuelve valor distinto de cero si se ejecuta dentro de una región paralela. Facultad de Informática. Universidad de Murcia 28
29 Funciones de librería int omp_set_dynamic(void); Permite poner o quitar el que el número de threads se pueda ajustar dinámicamente en las regiones paralelas. int omp_get_dynamic(void); Devuelve un valor distinto de cero si está permitido el ajuste dinámico del número de threads. int omp_set_nested(int); Para permitir o desautorizar el paralelismo anidado. ejemplo_nested.c int omp_get_nested(void); Devuelve un valor distinto de cero si está permitido el paralelismo anidado. Facultad de Informática. Universidad de Murcia 29
30 Funciones de librería ejemplo_nested.c #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 %d \n",iam,np); omp_set_nested(1); #pragma omp parallel private(iam, np,i) #if defined (_OPENMP) np = omp_get_num_threads(); iam = omp_get_thread_num(); #endif printf("\t\thello from thread %d out of %d \n",iam,np); //parallel //parallel Facultad de Informática. Universidad de Murcia 30
31 Funciones de librería void omp_init_lock(omp_lock_t *lock); Para inicializar una llave. Una llave se inicializa como no bloqueada. void omp_init_destroy(omp_lock_t *lock); Para destruir una llave. void omp_set_lock(omp_lock_t *lock); Para pedir una llave. void omp_unset_lock(omp_lock_t *lock); Para soltar una llave. int omp_test_lock(omp_lock_t *lock); Intenta pedir una llave pero no se bloquea. ejemplo_lock.c Facultad de Informática. Universidad de Murcia 31
32 Funciones de librería: ejemplo_lock.c omp_init_lock(&lck); #pragma omp parallel shared(lck) private(id) id=omp_get_thread_num(); omp_set_lock(&lck); printf("my thread id is %d.\n",id); omp_unset_lock(&lck); while (! omp_test_lock(&lck)) skip(id); //while work(id); //ahora tengo el lock, entonces hago el trabajo omp_unset_lock(&lck); //parallel omp_destroy_lock(&lck); Facultad de Informática. Universidad de Murcia 32
33 Variables de entorno OMP_SCHEDULE indica el tipo de scheduling para for y parallel for. OMP_NUM_THREADS Pone el número de threads a usar, aunque se puede cambiar con la función de librería. OMP_DYNAMIC Autoriza o desautoriza el ajuste dinámico del número de threads. OMP_NESTED Autoriza o desautoriza el anidamiento. Por defecto no está autorizado. Facultad de Informática. Universidad de Murcia 33
34 Ejemplos: Busqueda en array #pragma omp parallel private(i, id, p, load, begin, end) p = omp_get_num_threads(); id = omp_get_thread_num(); load = N/p; begin = id*load; end = begin+load; for (i = begin; ((i<end) && keepon); i++) if (a[i] == x) keepon = 0; position = i; #pragma omp flush(keepon) Facultad de Informática. Universidad de Murcia 34
35 Ejemplos: Multiplicación matriz-vector void mv(double *a, int fa,int ca,int lda,double *b,int fb,double *c,int fc) int i, j; double s; #pragma omp parallel #pragma omp for private(i,j,s) schedule(static,bloque) for (i = 0; i < fa; i++) s=0.; for(j=0;j<ca;j++) s+=a[i*lda+j]*b[j]; c[i]=s; Facultad de Informática. Universidad de Murcia 35
36 Tareas en OpenMP 3.0 Cambiar OpenMP de thread-centric a task-centric. Para expresar paralelismo irregular y no estructurado Para hacer paralelismo anidado de tareas sin que conlleve un estricto paralelismo anidado de threads con sus consecuentes barriers implicitos que puedan ser innecesarios. Para paralelizar bucles while. Por ejemplo recorrido de una lista de punteros de longitud no conocida Tied task: ligada a un thread fijo que la ejecutará. Puede tener pausas o hacer otra cosa, pero ese thread acabará la tarea Untied task: cualquier thread del team el scheduler le puede asignar una untied task que esté suspendida en ese momento Facultad de Informática. Universidad de Murcia 36
37 Tareas en OpenMP 3.0: Constructor task #pragma omp task [clause [[,]clause]...] structured-block Clauses: if (scalar expression) untied default (shared none) private (list) firstprivate (list) shared (list) Facultad de Informática. Universidad de Murcia 37
38 Tareas en OpenMP 3.0: Sincronización y Finalización de tareas #pragma omp taskwait Tarea actual se suspende hasta finalización de sus tareas hijas Util para sincronización de tareas de grano fino Un conjunto de tareas será forzada a completarse en alguno de estos casos: En una barrier implícita de threads En una barrier explícita de threads (#pragma omp barrier) En una barrier de tareas (#pragma omp taskwait) Facultad de Informática. Universidad de Murcia 38
39 Tareas en OpenMP 3.0: Ejemplo: recorrido de lista (secuencial)... while(my_pointer) (void) do_independent_work (my_pointer); my_pointer = my_pointer->next ; // End of while loop... Facultad de Informática. Universidad de Murcia 39
40 Tareas en OpenMP 3.0: Ejemplo: recorrido de lista (paralelo) my_pointer = listhead; #pragma omp parallel #pragma omp single nowait while(my_pointer) #pragma omp task firstprivate(my_pointer) (void) do_independent_work (my_pointer); my_pointer = my_pointer->next ; // End of single - no implied barrier (nowait) // End of parallel region - implied barrier Facultad de Informática. Universidad de Murcia 40
41 Tareas en OpenMP 3.0: Ejemplo: Fibonacci F(0) = 1 F(1) = 1 F(n) = F(n-1) + F(n-2) (para n=2,3, ) Secuencia valores resultado: 1, 1, 2, 3, 5, 8, 13, Facultad de Informática. Universidad de Murcia 41
42 Tareas en OpenMP 3.0: Ejemplo: Fibonacci (secuencial recursivo) long comp_fib_numbers(int n) // Basic algorithm: f(n) = f(n-1) + f(n-2) long fnm1, fnm2, fn; if ( n == 0 n == 1 ) return(n); fnm1 = comp_fib_numbers(n-1); fnm2 = comp_fib_numbers(n-2); fn = fnm1 + fnm2; return(fn); Facultad de Informática. Universidad de Murcia 42
43 Tareas en OpenMP 3.0: Ejemplo: Fibonacci (paralelo) long comp_fib_numbers(int n) long fnm1, fnm2, fn; if ( n == 0 n == 1 ) return(1); #pragma omp task shared(fnm1) fnm1 = comp_fib_numbers(n-1); #pragma omp task shared(fnm2) fnm2 = comp_fib_numbers(n-2); #pragma omp taskwait fn = fnm1 + fnm2; return(fn); Facultad de Informática. Universidad de Murcia 43
44 Tareas en OpenMP 3.0: Ejemplo: Fibonacci (paralelo) long comp_fib_numbers(int n) long fnm1, fnm2, #pragma fn; #pragma omp omp parallel parallel shared(nthreads) if ( n == 0 n == 1 ) return(1); #pragma #pragma omp omp single single nowait nowait #pragma omp task shared(fnm1) fnm1 = comp_fib_numbers(n-1); result result = comp_fib_numbers(n); #pragma omp task shared(fnm2) // // End End of of single single fnm2 = // comp_fib_numbers(n-2); // End End of of parallel parallel region region #pragma omp taskwait fn = fnm1 + fnm2; return(fn); Facultad de Informática. Universidad de Murcia 44
45 Tareas en OpenMP 3.0: Ejemplo: Fibonacci (paralelo, versión 2) long comp_fib_numbers(int n) long fnm1, fnm2, fn; if ( n == 0 n == 1 ) return(1); if ( n<20 ) return(comp_fib_numbers(n-1) +comp_fib_numbers(n- 2)); #pragma omp task shared(fnm1) fnm1 = comp_fib_numbers(n-1); #pragma omp task shared(fnm2) fnm2 = comp_fib_numbers(n-2); #pragma omp taskwait fn = fnm1 + fnm2; return(fn); Facultad de Informática. Universidad de Murcia 45
46 Tareas en OpenMP 3.0: Ejemplo: Fibonacci. Probando. iccstart icc_compilar ejemplo_fibo ejemplo_fibo Facultad de Informática. Universidad de Murcia 46
47 Tareas en OpenMP 3.0: Ejemplo: Recorrido de árbol en preorden void traverse(bynarytree *p) process(p); if (p->left) #pragma omp task traverse(p->left); if (p->right) #pragma omp task traverse(p->right); Facultad de Informática. Universidad de Murcia 47
48 Tareas en OpenMP 3.0: Ejemplo: Recorrido de árbol en postorden void traverse(bynarytree *p) if (p->left) #pragma omp task traverse(p->left); if (p->right) #pragma omp task traverse(p->right); #pragma omp taskwait process(p); Facultad de Informática. Universidad de Murcia 48
49 Tareas en OpenMP 3.0: threads y tareas Por defecto: tarea t está ligada a un thread h (tied task): El thread h ejecuta código de t desde principio al final La ejecución puede no ser contigua: En los task scheduling points el thread h puede dedicarse a realizar otra tarea Task scheduling points: Pragma task tareas anidadas Pragma taskwait Barreras explícitas o implícitas Finalización de tarea Valor de threadprivate variables pueden cambiar (por obra de otra tarea ejecutada por el thread h) Facultad de Informática. Universidad de Murcia 49
50 Tareas en OpenMP 3.0: threads y tareas int tp; #pragma omp threadprivate(tp) int var; void work() #pragma omp task // tarea 1 /* do work here */ #pragma omp task //tarea 1.1. Tarea 1 puede ser suspendida 1 tp = 1; /* do work here */ #pragma omp task //tarea > posible cambio a tarea /* no modification of tp */ var = tp; //value of tp can be 1 or 2 tp = 2; Facultad de Informática. Universidad de Murcia 50
51 Tareas en OpenMP 3.0: threads y tareas Si la tarea t no está ligada a un thread h (untied task): El thread h inicia la ejecución código de t Otro thread distinto puede continuar la ejecución de t en cualquier momento Mismas restricciones con variables threadprivates que en tied task Evitar cualquier referencia ligada al identificador del thread Facultad de Informática. Universidad de Murcia 51
52 Ejercicios 0.- Probar los distintos ejemplos de programas. Razonar su comportamiento. Conectarse a luna.inf.um.es ssh luna.inf.um.es usuario XXXX clave YYYY PATH=$PATH:. Para obtener los programas de ejemplo: cp /home/javiercm/ejemplos_openmp/*.c. Para compilar en luna.inf.um.es el programa ejemplo_hello.c: gcc-4.3 o ejemplo_hello ejemplo_hello.c -O3 lm fopenmp Para ejecutarlo con 4 threads: export OMP_NUM_THREADS=4 ejemplo_hello Facultad de Informática. Universidad de Murcia 52
53 Ejercicios 1.- En ejemplo_for.c: probar distintos schedules: estático vs. dinámico, sin tamaño vs. con tamaño=2. Ejecutar y razonar comportamientos. 2.- En ejemplo_sections.c: Agrupar las directivas parallel y sections en una única. 3.- Compara y razona el comportamiento de ejemplo_sections.c vs. ejemplo_single.c. 4.- Compara y razona el comportamiento de ejemplo_sections.c vs. ejemplo_critical.c. 5.- A partir del ejemplo de multiplicación matriz-vector ejemplo_mv.c: diseña un programa para multiplicar dos matrices AxB=C, donde cada thread se encargue de calcular un bloque de filas consecutivas de elementos de C. Facultad de Informática. Universidad de Murcia 53
54 Ejercicios 6.- Diseñar, programar y probar un programa de recorrido recursivo de un árbol, usando tareas de OpenMP 3.0. Mostrar qué thread se encarga de procesar cada nodo.. iccstart icc_compilar ejemplo_recorrido_arbol ejemplo_recorrido_arbol Facultad de Informática. Universidad de Murcia 54
Programación en Memoria Compartida: OpenMP
Programación en Memoria Compartida: OpenMP Domingo Giménez Departamento de Informática y Sistemas Universidad de Murcia, Spain dis.um.es/~domingo Universidad de Murcia 1 Nociones básicas Modelo de programación
Más detallesProgramación con OpenMP
Curso de Promoción Educativa Programación en el Supercomputador Ben Arabi Programación con OpenMP Javier Cuenca Universidad de Murcia Indice de la sesión Introducción. Nociones básicas Ejemplo inicial
Más detallesProgramación en Memoria Compartida: OpenMP
Programación en Memoria Compartida: OpenMP Javier Cuenca Departamento de Ingeniería y Tecnología de Computadores Domingo Giménez Departamento de Informática y Sistemas Universidad de Murcia, Spain dis.um.es/~domingo
Más detallesComputación Matricial y Paralela
Computación Matricial y Paralela Programación en Memoria Compartida Javier Cuenca Dpto. de Ingeniería y Tecnología de Computadores Domingo Giménez Dpto. de Informática y Sistemas Universidad de Murcia
Más detallesProgramación de Memoria Compartida - OpenMP
Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Programación de Memoria Compartida - OpenMP Contenido 1 Tipos de paralelismo 2 OpenMP Ejemplo básico Directivas
Más detallesÍndice. 1. Introducción. 1. Introducción. Regiones Paralelas. Ejemplo
Arquitectura de Computadores: Práctica de Multiprocesadores Introducción a OpenMP Índice 2. Regiones Paralelas: a) For b) Sections 3. Distribución del trabajo 4. Gestión de datos 5. Sincronización 6. Tareas
Más detallesProgramación Multihilo
Proyecto Universidad-Secundaria Incorporación de contenidos de programación paralela en la rama de tecnologías informáticas Facultad Informática, Universidad de Murcia e Instituto de Enseñanza Secundaria
Más detalles2. Regiones Paralelas: 3. Distribución del trabajo 4. Gestión de datos 5. Sincronización. 7. Variables del entorno 8. Ejemplo Π
Arquitectura de Computadores: Práctica de Multiprocesadores Introducción a OpenMP 1. Introducción 2. Regiones Paralelas: Índice 3. Distribución del trabajo 4. Gestión de datos 5. Sincronización 6. Funciones
Más detalles1. Introducción. 1. Introducción. Ejemplo. Regiones Paralelas. Modelo de paralelismo: Fork-Join Un maestro crea y gestiona threads según necesidad:
Programación Paralela y Distribuida OpenMP Índice 1. Introducción 2. Regiones Paralelas: a) For b) Sections 3. Distribución del trabajo 4. Gestión de datos 5. Sincronización 6. Afinidad 7. Tareas 8. Funciones
Más detallesProgramación Multihebra con OpenMP. José Miguel Mantas Ruiz Depto. de Lenguajes y Sistemas Informáticos Universidad de Granada
Programación Multihebra con OpenMP José Miguel Mantas Ruiz Depto. de Lenguajes y Sistemas Informáticos Universidad de Granada Contenidos Modelo de Programación e Introducción Paralelización de bucles Gestión
Más detallesOpenMP. Qué es OpenMP?
OpenMP Qué es OpenMP? Modelo de programación paralela Paralelismo de memoria compartida Soporta el paralelismo por datos Escalable Permite paralelización incremental Extensiones a lenguajes de programación
Más detallesParalelización de Programas Secuenciales: OpenMP
Paralelización de Programas Secuenciales: OpenMP http://www.openmp.org Manuel Arenaz arenaz@udc.es Índice Introducción a la programación paralela Programación con OpenMP Directivas de compilación Librería
Más detallesProgramación paralela con OpenMP
Programación paralela con OpenMP Arquitectura de Computadores J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Grupo ARCOS Departamento
Más detallesMultiprocesamiento en lenguaje C Introducción a Open Multiprocessing (OpenMP)
Multiprocesamiento en lenguaje C Introducción a Open Multiprocessing (OpenMP) Pertinencia de la enseñanza del cómputo paralelo en el currículo de las ingenierías Algunas preguntas Qué es un proceso? Qué
Más detallesIntroducción a la Programación de Memoria Compartida.. con OpenMP
Introducción a la Programación de Memoria Compartida.. con OpenMP Carlos Jaime BARRIOS HERNANDEZ, PhD. Escuela de Ingeniería de Sistemas e Informática Universidad Industrial de Santander Las herramientas
Más detallesLaboratorio de Paralelismo OpenMP: ejemplos y ejercicios
Laboratorio de Paralelismo OpenMP: ejemplos y ejercicios > Máquinas y directorios Vamos a trabajar con el siguiente multiprocesador SMP: PowerEdge 6850 (DELL) 4 procesadores Intel Xeon 7100 de doble núcleo
Más detalles1 Primitivas básicas de OpenMP
1 Primitivas básicas de OpenMP Consultar la página oficial de la plataforma OpenMP http://www.openmp.org/drupal/ Pragmas Es una directiva para el compilador que permite la definición de nuevas directivas
Más detallesEs una API (Aplication Program Interface) que se usa para paralelismo basado en hilos múltiples en entornos de memoria compartida
Algo de OPENMP Memoria Compartida Threads O hilos, se definen como flujos de instrucciones independientes, que se ejecutan separadamente del programa principal. Con estos hilos se aprovecha mucho una máquina
Más detallesFrancisco J. Hernández López
Francisco J. Hernández López fcoj23@cimat.mx Ejecución de más de un cómputo (cálculo) al mismo tiempo o en paralelo, utilizando más de un procesador. Sistema de Cómputo Paralelo Hardware Parallel programming:
Más detallesSistemas Complejos en Máquinas Paralelas
Sistemas Complejos en Máquinas Paralelas Clase 1: OpenMP Francisco García Eijó Departamento de Computación - FCEyN UBA 15 de Mayo del 2012 Memoria compartida Las mas conocidas son las máquinas tipo Symmetric
Más detallesCómputo paralelo con openmp y C
Cómputo paralelo con openmp y C Sergio Ivvan Valdez Peña Guanajuato, México. 13 de Marzo de 2012 Sergio Ivvan Valdez Peña Cómputo Guanajuato, paralelo conméxico. openmp y () C 13 de Marzo de 2012 1 / 27
Más detalles2º curso / 2º cuatr. Arquitectura de Computadores. Grado en Ing. Informática. Seminario 1. Herramientas de programación paralela I: Directivas OpenMP
2º curso / 2º cuatr. 2º curso / 2º cuatr. Grado en Ing. Informática Arquitectura de Computadores Seminario 1. Herramientas de programación paralela I: Directivas OpenMP 2 Qué es OpenMP? De dónde viene
Más detallesGuía práctica de estudio 11 Introducción a OpenMP.
Guía práctica de estudio 11 Introducción a OpenMP. Elaborado por: Revisión: Ing. Laura Sandoval Montaño Facultad de Ingeniería U.N.A.M. Guía Práctica 11 Estructura de datos y Algoritmos II Introducción
Más detallesJavier Ibáñez González
Javier Ibáñez González Despacho 109 Edificio DSIC (1F) Tutorías bajo demanda e-mail: jjibanez@dsic.upv.es http://personales.upv.es/jjibanez Práctica P2 (OpenMP): sesiones 4 y 5 Práctica P3 (MPI): sesiones
Más detallesEsquemas algorítmicos paralelos - Particionado y Paralelismo de Datos
Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Domingo Giménez (Universidad de Murcia)
Más detallesEsquemas algorítmicos paralelos - Particionado y Paralelismo de Datos
Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos - Particionado y Paralelismo de Datos Domingo Giménez (Universidad de Murcia) 1 / 31
Más detallesTema 3. Estructuras de control
Tema 3. Estructuras de control 3.1. Secuencial 3.2. Selección 3.3. Repetición 2 Objetivos Objetivos del tema: Conocer y saber la utilidad de las tres estructuras de control (secuencial, alternativa y repetitiva)
Más detallesLección 3 Sentencias de control
3.1. INTRODUCCIÓN - Hasta aquí: ejecución secuencial de los programas. - Aquí vamos a ver: Lección 3 Sentencias de control Sentencias de control Sentencias condicionales: if- y switch-case Sirven para
Más detallesFrancisco Javier Hernández López
Francisco Javier Hernández López fcoj23@cimat.mx http://www.cimat.mx/~fcoj23 Ejecución de más de un cómputo (cálculo) al mismo tiempo o en paralelo, utilizando más de un procesador. Arquitecturas que hay
Más detallesTEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (primera parte).
TEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (primera parte). SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC www.atc.us.es Dpto. de Arquitectura y Tecnología de Computadores. Universidad
Más detallesParalelización de problemas de recorrido de árboles Trabajadores replicados y esquema maestro esclavo
Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Paralelización de problemas de recorrido de árboles Trabajadores replicados
Más detallesSISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GRADO EN ING. INFORMÁTICA. ING. COMPUTADORES PRÁCTICA 8: INTRODUCCIÓN A OPENMP.
SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GRADO EN ING. INFORMÁTICA. ING. COMPUTADORES PRÁCTICA 8: INTRODUCCIÓN A OPENMP. 1. OBJETIVOS Y PREPARACIÓN. En la actualidad los multiprocesadores en un solo chip
Más detallesARQUITECTURA DE SISTEMAS PARALELOS 2. 4º INGENIERÍA INFORMÁTICA. PRÁCTICA 4. PROGRAMACION PARALELA CON openmp.
ARQUITECTURA DE SISTEMAS PARALELOS 2. 4º INGENIERÍA INFORMÁTICA. PRÁCTICA 4. PROGRAMACION PARALELA CON openmp. 1. OBJETIVOS Y PREPARACIÓN. En la actualidad los multiprocesadores en un solo chip (denominados
Más detallesAdolfo J. Banchio. FaMAF, IFEG-CONICET, Universidad Nacional de Córdoba. 27 04 10 Seminario de grupo 1
Paralelizar un Código usando OpenMP Adolfo J. Banchio FaMAF, IFEG-CONICET, Universidad Nacional de Córdoba 27 04 10 Seminario de grupo 1 Contenido Introducción Paralelización: por qué OpenMP? Qué es OpenMP?
Más detallesTema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN
Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN - Introducción - Sintaxis - Semántica básica - Tipos de datos - Expresiones y enunciados - Procedimientos y ambientes - Tipos abstractos de datos y módulos
Más detallesParalelismo Relajado Paralelismo Síncrono
Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Paralelismo Relajado Paralelismo Síncrono Domingo Giménez (Universidad de Murcia) 1
Más detallesAnálisis y escritura de las estructuras de control
Análisis y escritura de las estructuras de control por Iván Cruz En esta lectura se abordarán las estructuras de control del lenguaje de programación C, estas estructuras. Permiten al programador comunicarse
Más detallesProgramación Paralela y Distribuida
Capítulo 1 Programación Paralela y Distribuida Domingo Giménez 1, Murilo Boratto 2 y Leandro Coelho 3 Abstract The following text is the material of the class sessions of the Laboratory of Parallel and
Más detallesAlgoritmos en Árbol y Grafo Computación Pipeline
Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Algoritmos en Árbol y Grafo Computación Pipeline Domingo Giménez (Universidad
Más detallesMaster SIA 2012/13. Programación de Sistemas Paralelos. OpenMP: Ejercicios prácticos. Facultad de Informática. Ejercicio 1.A. pi.c
Master SIA 2012/13 Facultad de Informática Programación de Sistemas Paralelos OpenMP: Ejercicios prácticos En el directorio templates/practica de tu cuenta msiaxx tienes varios programas que hay que procesar
Más detallesAlgoritmo, Estructuras y Programación I Ing. Marglorie Colina
Unidad II: Fundamentos de la Programación Estructurada Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Estructura General de un Programa Zona de ficheros de cabecera de las librerías Zona
Más detallesInformática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial Sentencias de control en lenguaje Sentencias de control en lenguaje Introducción Sentencia if-else Sentencia switch Sentencia while Sentencia
Más detallesSoluciones a ejercicios de paralelismo y concurrencia
Soluciones a ejercicios de paralelismo y concurrencia J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Arquitectura de Computadores
Más detallesMultiplicación de matrices dispersas
Multiplicación de matrices dispersas Alumno: Irene Sánchez Linares Índice Descripción del problema Representación Algoritmo secuencial Esquemas algorítmicos Elección del esquema OpenMP MPI Estudio experimental
Más detallesOperadores de comparación
Operadores de comparación Los operadores de comparación en C son: Igual (==) Distinto (!=) Mayor (>) y Mayor o igual (>=) Menor (
Más detallesProgramación Paralela en OpenMp
Programación Paralela en OpenMp Proyecto PAPIME PE104911 Facultad de Ingeniería Universidad Nacional Autónoma de México 1 Utilidad de realizar procesamiento paralelo en computadoras con arquitectura de
Más detallesPrác%ca 1 Sesión 3 1
Prác%ca 1 Sesión 3 1 Obje%vo Paralelizar códigos mediante los iden%ficadores de hilos Paralelizar dos códigos secuenciales que calculen: 1. El mayor número primo del %po unsigned long long int 2. El número
Más detallesAlgoritmos Matriciales por Bloques
Master en Nuevas Tecnologías en Informática Programación Paralela y Computación de Altas Prestaciones Algoritmos Matriciales por Bloques Javier Cuenca & Domingo Giménez Grupo de Investigación en Computación
Más detallesFUNDAMENTOS PARA LA CONSTRUCCIÓN DEL CÓDIGO A PARTIR DEL ALGORITMO
FUNDAMENTOS PARA LA CONSTRUCCIÓN DEL CÓDIGO A PARTIR DEL ALGORITMO 3.2 Variables, tipos, expresiones y asignación 3.3 Estructuras de control condicional e iterativo. MODIFICADORES DE ALCANCE CONST Y STATIC
Más detallesAlgoritmos Matriciales por Bloques
Master en Nuevas Tecnologías en Informática Programación Paralela y Computación de Altas Prestaciones Algoritmos Matriciales por Bloques Javier Cuenca & Domingo Giménez Grupo de Investigación en Computación
Más detallesPROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela
PROGRAMACIÓN PARALELA Modelos de programación paralela Paradigmas de programación paralela Tipos de paralelismo Paso de mensajes Paralelismo de datos Memoria compartida Paradigmas de programación paralela
Más detallesLaboratorio de Arquitectura de Redes. Sentencias de control en lenguaje C
Laboratorio de Arquitectura de Redes Sentencias de control en lenguaje C Sentencias de control en lenguaje C Introducción Sentencia if-else Sentencia switch Sentencia while Sentencia do-while Sentencia
Más detallesComputación Matricial y Paralela
Computación Matricial y Paralela Programación híbrida Javier Cuenca Dpto. de Ingeniería y Tecnología de Computadores Domingo Giménez Dpto. de Informática y Sistemas Universidad de Murcia http://dis.um.es/~domingo
Más detallesFundamentos de programación
Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador
Más detallesTEMA 4. ESTRUCTURAS DE CONTROL
M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 4. ESTRUCTURAS DE CONTROL Grado en Ingeniería en Tecnologías Industriales Programación CONTENIDOS 4.1.
Más detallesSESIÓN DE EJERCICIOS E1
SESIÓN DE EJERCICIOS E1 Primera parte: ejercicios test (soluciones al final) A resolver antes de comenzar la sesión en el aula Ejercicio 1 Qué definición de constantes es la correcta en lenguaje C? a)
Más detallesProgramación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.
Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC. Variables Conceptos de Memoria Una variable es un espacio en la memoria del PC Cada variable tiene un nombre, un tipo, un tamaño y un valor
Más detallesLaboratorio de Paralelismo
Laboratorio de Paralelismo 2010-2011 Prácticas OpenMP En el directorio de trabajo LPAR de tu cuenta mlapxx tienes cuatro programas que hay que procesar en paralelo utilizando OpenMP. En el caso de los
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java II... 6 Estructuras de control... 7 Estructuras de selección... 8 Sentencia if... 9 Sentencia if - else... 12 Operador condicional...
Más detallesArquitectura de Computadores: Exámenes y Controles
2º curso / 2º cuatr. Grado en Ing. Informática Doble Grado en Ing. Informática y Matemáticas Arquitectura de Computadores: Exámenes y Controles Examen de Prácticas AC 05/07/2013 resuelto Material elaborado
Más detallesDobles: Es el caso de la instrucción if-else (punto 1.2).
1 1.Introducción Las estructuras de control son instrucciones que nos permiten controlar el flujo de ejecución del programa. Las instrucciones de control se pueden agrupar en instrucciones condicionales
Más detallesCompiladores: Ambientes para Ejecución. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón
Compiladores: Ambientes para Ejecución Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón Procedimientos Definición de un Procedimiento: es una declaración
Más detallesLENGUAJE. Tema 2 Elementos de un programa
LENGUAJE Tema 2 Elementos de un programa ELEMENTOS DE UN PROGRAMA Comentarios. Identificadores. Constantes. Variables. Operadores. Sentencias o instrucciones. COMENTARIOS Los comentarios en C pueden ocupar
Más detallesProgramación Concurrente
Master en Computación Programación Concurrente Bloque II: Programación concurrente en POSIX Tema 1. Introducción al estándar POSIX Tema 2. Sistema Operativo MaRTE OS Tema 4. Gestión del Tiempo Tema 5.
Más detallesAutor: Ing. Nahuel González INTRODUCCIÓN A C. Clase 1
INTRODUCCIÓN A C Clase 1 Introducción al lenguaje C 1967 1970 1971 1972 1989 BCPL Lenguaje B Pascal 1era versión de C ANSI C Introducción al lenguaje C Librería estandar de C: contiene módulos o funciones
Más detallesOperadores aritméticos
Bloque 3.2 Operadores aritméticos Suma : x + y Resta : x y Multiplicación : x * y División : x / y Módulo : x % y (resto de la división Si los operandos son enteros tipo del resultado
Más detallesIntroducción general al Lenguaje C (2010/2011)
Luis Valencia Cabrera lvalencia@us.es (http://www.cs.us.es/~lvalencia) Ciencias de la Computacion e IA (http://www.cs.us.es/) Introducción general al Lenguaje C (2010/2011) Universidad de Sevilla Índice
Más detallesProgramación sobre sistemas de memoria compartida: programación con OpenMP
Programación sobre sistemas de memoria compartida: programación con OpenMP María J. Martín Grupo de Arquitectura de Computadores Universidad de A Coruña España Contenidos del curso Tema 1: Introducción
Más detallesProgramación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.
Programación n Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño o Vargas MsC. Variables y expresiones aritméticas Variables Conceptos de Memoria Una variable es un espacio en la memoria
Más detallesTema 2. El lenguaje JAVA
Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias
Más detallesTÉCNICAS DE CÁLCULO EN PARALELO: Directivas OpenMP y MPI (Message Passing Interface)
TÉCNICAS DE CÁLCULO EN PARALELO: Directivas OpenMP y MPI (Message Passing Interface) J. París, H. Gómez, X. Nogueira,F. Navarrina, I. Colominas, M. Casteleiro GMNI GRUPO DE MÉTODOS NUMÉRICOS EN INGENIERÍA
Más detallesCómputo en paralelo con OpenMP 1
Cómputo en paralelo con OpenMP 1 Miguel Vargas-Félix miguelvargas@cimat.mx http://www.cimat.mx/~miguelvargas CIMAT, September 2, 2015 1/34 Velocidad de los procesadores de escritorio Recientemente, la
Más detallesFundamentos de Programación
Fundamentos de Programación COMENTARIOS Microsoft Visual Basic interpreta que todo lo que está a la derecha del carácter ( ) en una línea cualquiera de programa es un comentario y no ejecuta acción alguna.
Más detallesFUNDAMENTOS DE INFORMÁTICA
FUNDAMENTOS DE INFORMÁTICA Tema 2 Expresiones, operadores y estructuras de control Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo Fundamentos de Informática. Departamento de Ingeniería
Más detallesEstructura de datos y de la información Boletín de problemas - Tema 10
Estructura de datos y de la información Boletín de problemas - Tema 10 1. En el caso de que sea posible, dar un ejemplo de los siguientes puntos. Si no, explicar por qué no lo es. Considerar un valor genérico
Más detallesCilk. Un entorno de programación paralela. Tomás Muñoz Rodríguez < > 17 de noviembre de 2011
Un entorno de programación paralela Tomás Muñoz Rodríguez < tomas.munoz@um.es > 17 de noviembre de 2011 Profesor: Domingo Jiménez Cánovas Asignatura: Metodología de la Programación Paralela Facultad de
Más detallesCómputo en paralelo con OpenMP 2
Cómputo en paralelo con OpenMP 2 Miguel Vargas-Félix miguelvargas@cimat.mx http://www.cimat.mx/~miguelvargas CIMAT, September 2, 2015 1/30 Variables private y shared En el ejemplo del producto punto: double
Más detallesEstructuras de datos: vectores en C. Clase 7 y 8 Introducción a la Computación Patricia Borensztejn
Estructuras de datos: vectores en C Clase 7 y 8 Introducción a la Computación Patricia Borensztejn Estructuras de Datos Son agrupaciones de datos si el tamaño de la estructura es conocido en tiempo de
Más detallesAlgoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2
Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2 Contenidos: 1. Definición de clases 2. Implementación de los métodos 3. Constructores y destructores 4. Objetos
Más detallesTema 05: Elementos de un programa en C
Tema 05: Elementos de un programa en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1
Más detallesMultiplicación de Matrices en Sistemas cc-numa Multicore. Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas
Multiplicación de Matrices en Sistemas cc-numa Multicore Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas Índice de Contenido 1. Introducción 2. Línea de Investigación 3. Sistemas Empleados
Más detallesEstructura de datos y Programación
Estructura de datos y Programación Tema: Conceptos Básicos- Estructuras de control - Arreglos Ing. Analia Méndez Ing. Raquel Zarco Año: 2012 ELEMENTOS DE UN PROGRAMA EN JAVA El programa Java consta de
Más detallesPlataformas de soporte computacional: Sistemas de memoria compartida
Plataformas de soporte computacional: Sistemas de memoria compartida Diego R. Llanos, Belén Palop Departamento de Informática Universidad de Valladolid {diego,b.palop@infor.uva.es Índice 1. Sistemas paralelos
Más detallesDivide y Vencerás Programación Dinámica
Metodología de la Programación Paralela Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Divide y Vencerás Programación Dinámica Domingo Giménez (Universidad de Murcia) 1 /
Más detallesOptimización de Rutinas Multinivel de Álgebra Lineal en Sistemas Multicore
Máster en Nuevas Tecnologías en Informática Facultad de Informática Universidad de Murcia Optimización de Rutinas Multinivel de Álgebra Lineal en Sistemas Multicore Autor: Jesús Cámara Moreno Directores:
Más detallesFundamentos de programación C++
Pág. N. 1 Fundamentos de programación C++ Familia: Editorial: Autor: Computación e informática Macro Ricardo Walter Marcelo Villalobos ISBN: 978-612-304-235-6 N. de páginas: 280 Edición: 2. a 2014 Medida:
Más detallesIntroducción al lenguaje C
Introducción al lenguaje C Ampliación de Informática Belarmino Pulido Junquera Índice 1. Presentación del lenguaje C 2. Estructura de un programa en C 3. Tipos de datos escalares 4. Operadores básicos
Más detalles2.2 Nombres, Ligado y Ámbito
2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el
Más detallesSESIÓN DE EJERCICIOS E1
SESIÓN DE EJERCICIOS E1 Primera parte: ejercicios test Ejercicio 1 Qué definición de constantes es la correcta en lenguaje C? a) #define N=25; b) #define N 25 c) int N=25; d) int N 25 Ejercicio 2 La expresión
Más detallesEstructura de Datos ARREGLOS
Estructura de Datos ARREGLOS ESTRUCTURAS DE INFORMACIÓN Una estructura de datos o de información es una colección de datos que pueden ser caracterizados por su organización y las operaciones que se definen
Más detallesProgramación (PRG) PRACTICA 4. Elementos de programación: estructuras de control.
Programación (PRG) PRACTICA 4. Elementos de programación: estructuras de control. Facultad de Informática Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia Curso 2002/2003
Más detallesRepaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)
Repaso Lenguaje C OBJETOS Variables Constantes Variable: objeto del ambiente cuyo contenido puede cambiar. Constante: objeto cuyo contenido no puede cambiar. Variables: - un nombre que la identifica. Deben
Más detallesTema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo
Tema 4 Control de flujo Programación 2015-2016 Programación - Tema 4: Control de Flujo 1 Tema 4. Control de flujo Introducción. Estructuras condicionales. Estructuras de repetición. Programación - Tema
Más detallesTEMA 2: PROGRAMACIÓN PARALELA (I)
Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas ARQUITECTURA DE COMPUTADORES II AUTORES: David Expósito Singh Florin Isaila Daniel Higuero Alonso-Mardones Javier García Blas Borja Bergua
Más detallesTodo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan
Más detallesOperadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++. Operadores aritméticos Son operadores binarios (requieren siempre dos operandos) que realizan las operaciones aritméticas
Más detallesProgramación I Teoría I.
Programación I Teoría I http://proguno.unsl.edu.ar Horarios Teorías: Jueves 8:00 10:00; aula 58 (Bloque 2) Prácticas: Comisión 1: Licenciatura Martes de 10 a 13 en sala 7, bloque 2 jueves de 10 a 13 en
Más detalles