Programación Híbrida e Introducción a la Programación de GPUs
|
|
|
- Agustín Pinto Camacho
- hace 10 años
- Vistas:
Transcripción
1 Programación Híbrida e Introducción a la Programación de GPUs Fernando Robles Morales Instituto Nacional de Medicina Genómica Enrique Cruz Martínez Universidad Autónoma de la ciudad de México
2 CONTENIDO 1. Introducción al Cómputo de Alto Rendimiento. a. Sistemas de Memoria Compartida. b. Sistemas de Memoria Distribuida. 2. Paralelismo. a. Importancia. b. Procesos paralelos y distribuidos. 3. Programacion Paralela. 4. Programación de GPUs con OpenACC. 5. Evaluación del Rendimiento en Aplicaciones Científicas.
3 ANTECEDENTES Paradigma tradicional en las ciencias e ingeniería: Hacer teoría o diseños en papel. Realizar experimentos. Paradigma de ciencias computacionales: Simular el fenómeno con base en las leyes físicas y métodos numéricos eficientes.
4 CIENCIA COMPUTACIONAL Aplicación científica/in geniería Ciencia Computacional Matemáticas Cómputo Alto Rendimiento
5 COMPUTO DE ALTO RENDIMIENTO Formulación de un problema para su tratamiento computacional. Representación del dominio de un problema para su procesamiento. Arquitecturas de computadoras que proporcionan un buen rendimiento. Algoritmos que proporcionen la mejor aproximación y menor complejidad. Herramientas de software existentes que proporcionen mejores espectativas para solucionar problemas.
6 PROBLEMAS DEL GRAN RETO Escencial para descubrimientos científicos. Críticos para seguridad nacional. Contribuye fundamentalmente para la economía y competitividad a través de su uso en la ingeniería y en la manufactura. Las computadoras de alto rendimiento son las herramientas que resuelven estos problemas a través de simulaciones.
7 COMPUTADORA DE ALTO RENDIMIENTO Paralelismo en diferentes niveles (hardware y software). Dos o más niveles de memoria en función de sus tiempos de acceso, denominado memoria jerárquica. Interconexión de alta velocidad entre procesadores ó máquinas. Subsistemas especializados de entrada/salida. Uso de software especializado en tales arquitecturas (Sistema Operativo, Herramientas de Análisis, Compiladores, etc.).
8 CLASIFICACIÓN DE COMPUTADORAS Single Instruction, Single Data (PCs). Single Instruction, Multiple Data (Computadoras Vectoriales). Multiple Instruction, Single Data (Super pipeline). Multiple Instruction, Multiple Data (Computadoras Masivamente Paralelas, Clusters, Grids).
9 SISTEMAS DE MEMORIA COMPARTIDA Ventajas: Multiples procesadores que comparten el mismo espacio de direcciones de la memoria principal. Evita pendientes en cuanto a la ubicación de los datos en la memoria principal. Desventajas: Escalabilidad limitada en el número de procesadores, costo en interconexión de procesadores crece en O(n 2 ) para un crecimiento de O(n) procesadores.
10 SISTEMAS DE MEMORIA COMPARTIDA
11 SISTEMAS DE MEMORIA DISTRIBUIDA Ventajas: Ancho de banda escalable en proporción al número de procesadores. Desventajas: Comunicación entre procesadores más lenta que en un sistema de memoria compartida.
12 SISTEMAS DE MEMORIA DISTRIBUIDA
13 CLUSTERS SMP Sistema de Multiprocesamiento Simetrico (SMP) Bloques de procesamiento multicore (16 cores o más). Interconexión de bajo costo entre bloques de procesamiento. Alcanzan el rendimiento de una computadora de memoria compartida de mayor costo.
14 CLUSTERS SMP
15 CONTENIDO 1. Introducción al Cómputo de Alto Rendimiento. a. Sistemas de Memoria Compartida. b. Sistemas de Memoria Distribuida. 2. Paralelismo. a. Importancia. b. Procesos paralelos y distribuidos. 3. Programacion Paralela. 4. Programación de GPUs con OpenACC. 5. Evaluación del Rendimiento en Aplicaciones Científicas.
16 IMPORTANCIA DEL PARALELISMO El mundo real es inherentemente paralelo, la naturaleza realiza sus procesos en forma paralela o de manera que no impida el paralelismo. El paralelismo dispone de un rendimiento mayor al realizado por un solo procesador. Cada generación de procesadores aumenta en un 10% su rendimiento en comparación con su versión anterior. En consecuencia varios sistemas interconectados con procesadores de generaciones previas, se pueden obtener rendimientos aceptables.
17 DIFERENCIAS PROCESOS DISTRIBUIDOS Y PARALELOS Tiene un número fijo de procesos concurrentes que inician simultáneamente y permanecen mientras la computadora este en funcionamiento. Un proceso puede acceder solamente a sus propias variables, no hay variables en común para otros procesos. Permitir que los procesos ejecuten procedimientos encomún. Permitir la sincronización de procesos por medio de sentencias no deterministas, llamadas regiones críticas.
18 CONTENIDO 1. Introducción al Cómputo de Alto Rendimiento. a. Sistemas de Memoria Compartida. b. Sistemas de Memoria Distribuida. 2. Paralelismo. a. Importancia. b. Procesos paralelos y distribuidos. 3. Programacion Paralela. 4. Programación de GPUs con OpenACC. 5. Evaluación del Rendimiento en Aplicaciones Científicas.
19 COMUNICACIÓN ENTRE PROCESOS Envio de mensajes: Un proceso envía el mensaje por medio de paquetes con una cabecera indicando el proceso receptor, el proceso destino y los datos que enviará. Transferencias a través de la memoria compartida: La comunicación entre procesos en un arquitectura de memoria compartida consiste en asignar o tomar valores de ciertas localidades de memoria, a esta comunicación se le denomina directa. Acceso directo a memoria: La comunicación entre procesos en una maquina SMP, que cuenta con uno o más procesadores para las aplicaciones y para atender las peticioes de la red. De este modo un mensaje lo trata como un acceso a memoria de otro procesador.
20 ESTRATEGIA PARA EL DESARROLLO DE APLICACIONES Paralelización Automática: Consiste en relevar al programador de las tareas de paralelización. Por ejemplo, un compilador puede aceptar un código obsoleto (dusty-check) y producir un código objeto paralelo y eficiente sin (o con muy poco) trabajo adicional por parte del programador. Portabilidad del código paralelo: Consiste en el uso de bibliotecas paralelas. La idea básica es encapsular el código paralelo que sea común a varias aplicaciones en una biblioteca paralela, para que este pueda implementarse eficientemente y reutilizar su código. Desarrollo de una aplicación paralela: Consiste en escribir una aplicación paralela desde el principio, lo que otorga mayor grado de libertad al programador para que escoga el lenguaje y su paradigma. Sin embargo, su nivel de portabilidad es limitado.
21 GRANULARIDAD Idendificar pedazos de código a paralelizar: Granos muy finos (hardware pipeline) Granos finos (repartir datos o bloques de datos a los procesadores) Granos medios (nivel de control escencialmente en ciclos) Granos grandes (subrutinas y procedimientos)
22 DISEÑO DE ALGORITMOS PARALELOS Proceso de diseño en 4 pasos: Particionamiento: Descomposicion de datos y funciones relacionadas con el problema en varios subproblemas. Comunicación: Determinar el flujo de datos y la coordinación de los subproblemas creados en el particionamiento. Aglomeración: Evaluar los suproblemas y su patrón de comunicación en términos de rendimiento y costo de implementación. Mapeo: Asignar cada subproblema a un procesador para maximizar los recursos del sistema y minimizar los costos de comunicación.
23 PARADIGMAS DE PROGRAMACIÓN PARALELA Metodologías de alto nivel para algoritmos eficientes: Redes de procesos ( Proceso maestro, proceso esclavo) Proceso con múltiples datos (SPMD, descomposición de dominio) Línea de ensamble de datos (Pipeline de datos, granularidad fina) Divide y vencerás (división problema, combina resultados parciales) Paralelismo especulativo (empleo de diferentes algoritmos para mismo problema) Modelos híbridos (mezcla de paradigmas para utilizarse en aplicaciones masivamente paralelas).
24 BIBLIOTECAS DE PROGRAMACION PARALELA MPI (Message Passing Interface): Estándar en la comunicación de procesos, con base en envío de mensajes por más de 40 organizaciones de estados unidos y europa. Uso común en computadoras de alto rendimiento con memoria distribuida. Versión actual OpenMP (Multiprocesamiento en Memoria Compartida): Estándar de paralelización automática avalado por los fabricantes de maquinas SMP ó de memoria compartida. Uso común en computadoras de alto rendimiento con memoria compartida. Versión actual 4.0
25 MPI Ejemplo: #include<stdio.h> #include<mpi.h > int main ( int argc, char argv [ ] ) { int rank, nproc, nombre_len ; char nombre_proc [MPI_MAX_PROCESSOR_NAME] ; MPI_Init(&argc,&argv ) ; MPI_Comm_size( MPI_COMM_WORLD,&nproc ) ; MPI_Comm_rank( MPI_COMM_WORLD,&rank ) ; MPI_Get_processor_name ( nombre_proc,&nombre_len ) ; printf( "Hola proceso %d de %d en % s \n", rank, nproc, nombre_proc ) ; MPI_Finalize ( ) ; return 0 ; }
26 MPI Compilación: mpicc -o hola_mpi hola_mpi.c Ejecución: mpirun -np N hola_mpi N -> numero de procesos
27 MPI Funciones mínimas: MPI_Init: inicia el ambiente paralelo para el envio de mensajes. MPI_Comm_size: establece el numero de procesos a utilizar determinado por el usuario al ejecutar mpirun. MPI_Comm_rank: Se especifica el rango con base en el numero de procesos, para enumerarlos e identificarlos durante el envío de mensajes. MPI_Send: Envia mensaje a un proceso, puede ir etiquetado y con un tipo de dato definido por el usuario. MPI_Recv: Recibe mensajes de un proceso, este es asignado a las variables definidas por el usuario. MPI_Finalize: termina el ambiente paralelo para el envio de mensajes.
28 OpenMP Ejemplo: #include<omp.h> #include <stdio.h> #include<stdlib. h> int main ( int argc, char argv [ ] ) { int nthreads, tid ; /* Crear un grupo de thread con sus propias copias de variables*/ #pragma omp parallel private( nthreads, tid ) { /*Obtener numero del thread*/ tid = omp_get_thread_num ( ) ; printf ( Hola Mundo desde thread = %d \n", tid ) ; /* Proción de Código solo para el thread maestro 0 */ if( tid == 0) { nthreads = omp_get_num_threads ( ) ; printf ( Numero de threads = %d\n", nthreads ) ; } } /*Todos los hilos se unen al hilo maestro y finaliza ambiente paralelo */ }
29 OpenMP Compilación: gcc -o omp_hola -fopenmp omp_hola. c Ejecución: export OMP_NUM_THREADS=N N -> numero de procesos./omp_hola
30 OpenMP Funciones Mínimas: #pragma omp parallel private( var1,..,varn): inicia región paralela con variables copia para los hilos de ejecución. #pragma omp parallel shared( var1,,varn): inicia región paralela con variables compartidas para los hilos de ejecución. #pragma omp parallel private(var1,,varn) shared(var1,,varn): inicia region paralela con variables copia y compartidas para los hilos de ejecución.
31 Vista a Nodos de Procesamiento en OpenMP y MPI
32 Modelo de Programación Híbrida Iniciar con el ambiente MPI Crear regiones paralelas con OpenMP en los procesos MPI La región serial es el proceso MPI. EL MPI_rank debe ser conocido por todos los hilos. Realizar llamadas de envio de mensajes con MPI en regiones seriales y paralelas. Finalizar MPI.
33 Modelos MPI con OpenMP Paso de mensajes entre procesos MPI.
34 Modelos MPI con OpenMP Paso de mensajes entre hilos OpenMP.
35 Thread Safe MPI con OpenMP MPI_Init_thread: Determina el nivel de seguridad del thread: Single: no hay multithreading. Funneled: solo el hilo maestro puede realizar llamadas a MPI. Serialized: cualquier hilo puede realizar envio de mensajes pero sólo uno a la vez se puede comunicar durante la ejecución. Multiple: no hay restricciones, cualquier hilo puede realizar envio de mensajes.
36 Ejemplo en Funneled: Thread Safe MPI con OpenMP
37 Ejemplo en Serialized: Thread Safe MPI con OpenMP
38 Ejemplo en Multiple: Thread Safe MPI con OpenMP
39 Thread Safe MPI con OpenMP Ejemplo con Funneled (checar con SINGLE,MULTIPLE): #include <mpi.h> #include <omp.h> #include <stdio.h> int main(int argc, char *argv[]) { int rank,omp_rank,mpisupport; MPI_Init_thread(&argc,&argv,MPI_THREAD_FUNNELED, &mpisupport); MPI_Comm_rank(MPI_COMM_WORLD,&rank); omp_set_num_threads(atoi(argv[1])); #pragma omp parallel private(omp_rank) { omp_rank=omp_get_thread_num(); printf("%d %d \n",rank,omp_rank); } MPI_Finalize(); }
40 CONTENIDO 1. Introducción al Cómputo de Alto Rendimiento. a. Sistemas de Memoria Compartida. b. Sistemas de Memoria Distribuida. 2. Paralelismo. a. Importancia. b. Procesos paralelos y distribuidos. 3. Programacion Paralela. 4. Programación de GPUs con OpenACC. 5. Evaluación del Rendimiento en Aplicaciones Científicas.
41 Programación Paralela en GPUs Alto grado de paralelismo Gran numero de threads escalares Organización en bloques/grupos de threads. SIMD (Single Instruction, Multiple Data) Bloques organizados en grids: MIMD (Multiple Instruction, Multiple Data) Bibliotecas Paralelas: CUDA, OpenCL, OpenACC Maneja tipos de vectores (entreros, flotantes)
42 Programación Paralela en GPUs Procedimiento de ejecución en un GPU: Reservar memoria para datos en el GPU Mover datos de la memoria del CPU hacia la memoria del GPU, o asignar datos en memoria del GPU. Iniciar ambiente de ejecución (kernel): Driver del GPU crea el código intermedio para ejecutarse en el GPU. Preserva la compatibilidad en los tipos de datos. Acumular datos procesados del GPU. Liberar memoria para datos en el GPU.
43 Ventajas OpenACC Programación con base en directivas estilo OpenMP. Portabilidad para otro tipo de aceleradores (Xeon Phi). No es tan fácil como insertar directivas, un buen algoritmo para un CPU no puede tener el mismo rendimiento en un GPU.
44 Programación en OpenACC Principales Directivas: Fortran:!$acc directive[clause]. C: #pragma acc directive[clause]...
45 Programación en OpenACC Definición de regiones: Delimitada por directivas. Los ciclos iterativos se colocan en los threads de GPUs. Los datos para las regiones críticas, se alojan en el GPU.
46 OpenMP comparación con OpenACC Ejemplo con OpenMP: #define SIZE 1000 float a[size][size]; float b[size][size]; float c[size][size]; int main() { int i,j,k; // Initialize matrices. for (i = 0; i < SIZE; ++i) { for (j = 0; j < SIZE; ++j) { a[i][j] = (float)i + j; b[i][j] = (float)i - j; c[i][j] = 0.0f; } }
47 OpenMP comparación con OpenACC // Compute matrix multiplication. #pragma omp parallel for default(none) shared(a,b,c) private(i,j,k) for (i = 0; i < SIZE; ++i) { for (j = 0; j < SIZE; ++j) { for (k = 0; k < SIZE; ++k) { c[i][j] += a[i][k] * b[k][j]; } } } return 0; }
48 OpenMP comparación con OpenACC Ejemplo con OpenACC:! matrix-acc.f program example1 parameter ( n_size=1000 ) real*4, dimension(:,:) :: a(n_size,n_size) real*4, dimension(:,:) :: b(n_size,n_size) real*4, dimension(:,:) :: c(n_size,n_size)! Initialize matrices (values differ from C version) do i=1, n_size do j=1, n_size a(i,j) = i + j; b(i,j) = i - j; c(i,j) = 0.; enddo enddo
49 !$acc data copyin(a,b) copy(c)!$acc kernels loop! Compute matrix multiplication. do i=1, n_size do j=1, n_size do k = 1, n_size c(i,j) = c(i,j) + a(i,k) * b(k,j) enddo enddo enddo!$acc end data end program example1 OpenMP comparación con OpenACC
50 Ejemplo CUDA: #include <stdio.h> #include <assert.h> #include <cuda.h> int main(void) { float *a_h, *b_h; // pointers to host memory float *a_d, *b_d; // pointers to device memory int N = 14; int i; // allocate arrays on host a_h = (float *)malloc(sizeof(float)*n); b_h = (float *)malloc(sizeof(float)*n); // allocate arrays on device cudamalloc((void **) &a_d, sizeof(float)*n); cudamalloc((void **) &b_d, sizeof(float)*n); // initialize host data for (i=0; i<n; i++) { a_h[i] = 10.f+i; b_h[i] = 0.f; } OpenACC comparación con CUDA
51 OpenACC comparación con CUDA // send data from host to device: a_h to a_d cudamemcpy(a_d, a_h, sizeof(float)*n, cudamemcpyhosttodevice); // copy data within device: a_d to b_d cudamemcpy(b_d, a_d, sizeof(float)*n, cudamemcpydevicetodevice); // retrieve data from device: b_d to b_h cudamemcpy(b_h, b_d, sizeof(float)*n, cudamemcpydevicetohost); // check result for (i=0; i<n; i++) assert(a_h[i] == b_h[i]); // cleanup free(a_h); free(b_h); cudafree(a_d); cudafree(b_d); return 0; }
4. Programación Paralela
4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios
FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS. CNCA Abril 2013
FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS CNCA Abril 2013 6. COMPUTACIÓN DE ALTO RENDIMIENTO Ricardo Román DEFINICIÓN High Performance Computing - Computación de Alto Rendimiento Técnicas, investigación
Modelo de aplicaciones CUDA
Modelo de aplicaciones CUDA Utilización de GPGPUs: las placas gráficas se utilizan en el contexto de una CPU: host (CPU) + uno o varios device o GPUs Procesadores masivamente paralelos equipados con muchas
UAEM 2015, Estado de México
CONSTRUCCIÓN DE CLUSTERS Fernando Robles Morales Ins/tuto Nacional de Medicina Genómica Enrique Cruz Mar
Heterogénea y Jerárquica
Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Computación Híbrida, Heterogénea y Jerárquica Contenidos 1 Sistemas 2 Paralelismo anidado 3 Programación híbrida
Resolución de problemas en paralelo
Resolución de problemas en paralelo Algoritmos Paralelos Tema 1. Introducción a la computación paralela (segunda parte) Vicente Cerverón Universitat de València Resolución de problemas en paralelo Descomposición
Arquitecturas GPU v. 2013
v. 2013 Stream Processing Similar al concepto de SIMD. Data stream procesado por kernel functions (pipelined) (no control) (local memory, no cache OJO). Data-centric model: adecuado para DSP o GPU (image,
Preliminares. Tipos de variables y Expresiones
Preliminares. Tipos de variables y Expresiones Felipe Osorio Instituto de Estadística Pontificia Universidad Católica de Valparaíso Marzo 5, 2015 1 / 20 Preliminares Computadoras desarrollan tareas a un
CLUSTER FING: PARALELISMO de MEMORIA DISTRIBUIDA
CLUSTER FING: PARALELISMO de MEMORIA DISTRIBUIDA SERGIO NESMACHNOW Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY CONTENIDO Introducción: arquitecturas
MPI es un estándar de programación en paralelo mediante paso de mensajes que permite crear programas portables y eficientes.
Programación paralela en MPI MPI es un estándar de programación en paralelo mediante paso de mensajes que permite crear programas portables y eficientes. Introducción a MPI MPI fue creado en 1993 como
Arquitectura 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
Programación en Paralelo con MPI en Clusters Linux
Programación en Paralelo con MPI en Clusters Linux Francisco Javier Rodríguez Arias 13 de marzo de 2006 Problema y Motivación En física se requiere hacer muchos cálculos. Para eso se hacen programas de
Cómputo en paralelo con OpenMP 1
Cómputo en paralelo con OpenMP 1 Miguel Vargas-Félix [email protected] http://www.cimat.mx/~miguelvargas CIMAT, September 2, 2015 1/34 Velocidad de los procesadores de escritorio Recientemente, la
Módulo: Modelos de programación para Big Data
Program. paralela/distribuida Módulo: Modelos de programación para Big Data (título original: Entornos de programación paralela basados en modelos/paradigmas) Fernando Pérez Costoya Introducción Big Data
UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 19 de junio de 2007
UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 19 de junio de 2007 Para la realización del presente examen se dispondrá de 2 1/2
Computació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
Qué se entiende por diseño arquitectónico? Comprende el establecimiento de un marco de trabajo estructural básico para un sistema. Alude a la estructura general del software y el modo en que la estructura
15. Arquitectura de los multiprocesadores. 16. Multiprocesadores de memoria compartida. 17. Multicomputadores.
UNIDAD TEMÁTICA 5: MULTIPROCESADORES. 15. Arquitectura de los multiprocesadores. 16. Multiprocesadores de memoria compartida. 17. Multicomputadores. 15-1 TEMA 15: ARQUITECTURA DE LOS MULTIPROCESADORES.
Programando con memoria unificada. Contenidos [15 diapositivas] Aportaciones de la memoria unificada. I. Descripción
Programando con memoria unificada IX Curso de Verano de la UMA Programación de GPUs con CUDA Contenidos [15 diapositivas] Málaga, del 15 al 24 de Julio, 2015 1. Descripción [5] 2. Ejemplos [8] 3. Observaciones
ARQUITECTURA DE DISTRIBUCIÓN DE DATOS
4 ARQUITECTURA DE DISTRIBUCIÓN DE DATOS Contenido: Arquitectura de Distribución de Datos 4.1. Transparencia 4.1.1 Transparencia de Localización 4.1.2 Transparencia de Fragmentación 4.1.3 Transparencia
Plataformas paralelas
Plataformas paralelas Curso 2011-2012 Elementos de un computador paralelo Hardware: Múltiples procesadores Múltiples memorias Redes de interconexión Software: Sistemas Operativos paralelos Programas orientados
Computacion de Alto Performance
Computacion de Alto Performance Abraham Zamudio Abraham Zamudio Computacion de Alto Performance 1/47 Indice 1 Algunos Aspectos Teoricos 2 Paralelismo Computacional 3 Linux Cluster Hardware Software 4 MPICH
Capítulo 5. Cliente-Servidor.
Capítulo 5. Cliente-Servidor. 5.1 Introducción En este capítulo hablaremos acerca de la arquitectura Cliente-Servidor, ya que para nuestra aplicación utilizamos ésta arquitectura al convertir en un servidor
Tema 1. Conceptos fundamentales de los Sistemas Operativos
Tema 1. Conceptos fundamentales de los Sistemas Operativos 1. Introducción a los Sistemas Operativos. 1. Concepto de Sistema Operativo. Niveles del software. 2. Funciones principales de un Sistema Operativo.
No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.
RAIDS MODO LINEAL Es un tipo de raid que muestra lógicamente un disco pero se compone de 2 o más discos. Solamente llena el disco 0 y cuando este está lleno sigue con el disco 1 y así sucesivamente. Este
1. Manejo de memoria estática 2. Manejo de memoria dinámica
1. Manejo de memoria estática 2. Manejo de memoria dinámica *La administración de memoria de una computadora es una tarea fundamental debido a que la cantidad de memoria es limitada. *El sistema operativo
Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia
Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por
Descomposición de dominios
Descomposición de dominios Miguel Vargas 27/10/10 1/29 Contenido Contenido Solución de ecuaciones diferenciales con descomposición de dominios Dominios sin traslape, complemento de Schur Método alternante
Computación Híbrida, Heterogénea y Jerárquica
Computación Híbrida, Heterogénea y Jerárquica http://www.ditec.um.es/ javiercm/curso psba/ Curso de Programación en el Supercomputador Ben-Arabí, febrero-marzo 2012 Organización aproximada de la sesión,
Procesamiento Paralelo
Procesamiento Paralelo Introducción a MPI Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de Abril 461, Bahía Blanca, Argentina [email protected] http://www.frbb.utn.edu.ar/hpc/
Sistemas Operativos. Curso 2016 Procesos
Sistemas Operativos Curso 2016 Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor
Entorno de Programación Visual Studio 6
Entorno de Programación Visual Studio 6 Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria [email protected] Programación en C 1 Proceso de Programación Edición
Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática
Tema 1 Introducción. Arquitectura básica y Sistemas Operativos Fundamentos de Informática Índice Descripción de un ordenador Concepto básico de Sistema Operativo Codificación de la información 2 1 Descripción
High Performance Computing and Architectures Group
HPCA Group 1 High Performance Computing and Architectures Group http://www.hpca.uji.es Universidad Jaime I de Castellón ANACAP, noviembre de 2008 HPCA Group 2 Generalidades Creado en 1991, al mismo tiempo
Introducción a las redes de computadores
Introducción a las redes de computadores Contenido Descripción general 1 Beneficios de las redes 2 Papel de los equipos en una red 3 Tipos de redes 5 Sistemas operativos de red 7 Introducción a las redes
Computación de Propósito General en Unidades de Procesamiento Gráfico GPGPU
Computación de Propósito General en Unidades de Procesamiento Gráfico () E. Dufrechou, P. Ezzatti M. Pedemonte Práctico Programación con CUDA Práctica 0: Ejecución del ejemplo visto en teórico (suma de
Administración de Redes
Administración de Redes Funciones de un Servidor de Red Controladores de dominio Servidor DNS Servidor de archivos Servidor de aplicaciones Servidor de impresión Servidor de terminal 1 Grupo de trabajo
INTRODUCCIÓN. Que es un sistema operativo? - Es un programa. - Funciona como intermediario entre el usuario y los programas y el hardware
INTRODUCCIÓN Que es un sistema operativo? - Es un programa. - Funciona como intermediario entre el usuario y los programas y el hardware INTRODUCCIÓN METAS: Brindar un entorno para que los usuarios puedan
Yersinio Jiménez Campos Analista de datos Banco Nacional de Costa Rica
Fundamentos Título de de Big la Data presentación utilizando MATLAB Yersinio Jiménez Campos Analista de datos Banco Nacional de Costa Rica 1 Agenda Qué es Big Data? Buenas prácticas en el manejo de memoria.
UNIVERSIDAD DR. JOSE MATIAS DELGADO
NOMBRE DE LA ASIGNATURA: PROGRAMACION DE COMPUTADORAS 1 a. Generalidades. Duración del Ciclo en Semanas: Número de Orden: 16 Código: PRC1 16 Ciclo Académico: Duración/Hora Clase: 50 III minutos Prerrequisito
Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl
1 Colección de Tesis Digitales Universidad de las Américas Puebla Morales Salcedo, Raúl En este último capitulo se hace un recuento de los logros alcanzados durante la elaboración de este proyecto de tesis,
Capítulo 1 Introducción a la Computación
Capítulo 1 Introducción a la Computación 1 MEMORIA PRINCIPAL (RAM) DISPOSITIVOS DE ENTRADA (Teclado, Ratón, etc) C P U DISPOSITIVOS DE SALIDA (Monitor, Impresora, etc.) ALMACENAMIENTO (Memoria Secundaria:
Seminario II: Introducción a la Computación GPU
Seminario II: Introducción a la Computación GPU CONTENIDO Introducción Evolución CPUs-Evolución GPUs Evolución sistemas HPC Tecnologías GPGPU Problemática: Programación paralela en clústers heterogéneos
Tema 4. Gestión de entrada/salida
Tema 4. Gestión de entrada/salida 1. Principios de la gestión de E/S. 1.Problemática de los dispositivos de E/S. 2.Objetivos generales del software de E/S. 3.Principios hardware de E/S. 1. E/S controlada
Almacenamiento virtual de sitios web HOSTS VIRTUALES
Almacenamiento virtual de sitios web HOSTS VIRTUALES El término Hosting Virtual se refiere a hacer funcionar más de un sitio web (tales como www.company1.com y www.company2.com) en una sola máquina. Los
Cálculos en paralelo con FreeFem++
Cálculos en paralelo con FreeFem++ J. Rafael Rodríguez Galván 4 al 8 de julio de 2011 J. Rafael Rodríguez Galván (UCA) Cálculos en paralelo con FreeFem++ 4 al 8 de julio de 2011 1 / 18 Outline 1 Cálculos
SISTEMAS DE INFORMACIÓN II TEORÍA
CONTENIDO: EL PROCESO DE DISEÑO DE SISTEMAS DISTRIBUIDOS MANEJANDO LOS DATOS EN LOS SISTEMAS DISTRIBUIDOS DISEÑANDO SISTEMAS PARA REDES DE ÁREA LOCAL DISEÑANDO SISTEMAS PARA ARQUITECTURAS CLIENTE/SERVIDOR
OBJETIVOS DE LA MATERIA... 4 PROGRAMA ANALÍTICO. CONTENIDOS TEÓRICOS Y PRÁCTICOS... 5 BIBLIOGRAFIA... 7
UNIVERSIDAD NACIONAL DE LA MATANZA DEPARTAMENTO DE INGENIERIA E INVESTIGACIONES TECNOLOGICAS INGENIERIA EN INFORMATICA ARQUITECTURA DE COMPUTADORAS (1109) Profesor Titular: Ing. Fernando I. Szklanny PLANIFICACIÓN
Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática
Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática Fundamentos de la informática 2. Algoritmos, diagramas de flujo y pseudocódigo Contenido Algoritmos Diagramas de flujo
Evaluación del rendimiento de procesadores Intel Nehalem. Modelos x7550, x5670 y x5570
Evaluación del rendimiento de procesadores Intel Nehalem. Modelos x7550, x5670 y x5570 Juan Carlos Fernández Rodríguez. Área de HPC. Centro Informático Científico de Andalucía (CICA) Junta de Andalucía
Capitulo V Administración de memoria
Capitulo V Administración de memoria Introducción. Una de las tareas más importantes y complejas de un sistema operativo es la gestión de memoria. La gestión de memoria implica tratar la memoria principal
Sistemas Operativos Windows 2000
Sistemas Operativos Contenido Descripción general 1 Funciones del sistema operativo 2 Características de 3 Versiones de 6 Sistemas Operativos i Notas para el instructor Este módulo proporciona a los estudiantes
Asignación de Procesadores
INTEGRANTES: Asignación de Procesadores Un sistema distribuido consta de varios procesadores. Estos se pueden organizar como colección de estaciones de trabajo personales, una pila pública de procesadores
Implementación de un Cluster de Computadoras con software libre para Computación Científica en Jicamarca
Implementación de un Cluster de Computadoras con software libre para Computación Científica en Jicamarca A.Zamudio M. Milla Contenido de la Presentación 1 Radio Observatorio de Jicamarca 2 3 4 5 6 Índice
Introducción a Computación
Curso: Modelización y simulación matemática de sistemas Metodología para su implementación computacional Introducción a Computación Esteban E. Mocskos ([email protected]) Facultades de Ciencias Exactas
El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */
Principios de Programación El lenguaje C 1. Variables locales y globales 1.1. Variables locales Las funciones permiten al programador modularizar un programa. Todas las variables declaradas en las definiciones
Desarrollo de un cluster computacional para la compilación de. algoritmos en paralelo en el Observatorio Astronómico.
Desarrollo de un cluster computacional para la compilación de algoritmos en paralelo en el Observatorio Astronómico. John Jairo Parra Pérez Resumen Este artículo muestra cómo funciona la supercomputación
Figura 4.1 Clasificación de los lenguajes de bases de datos
1 Colección de Tesis Digitales Universidad de las Américas Puebla Romero Martínez, Modesto Este capítulo describen los distintos lenguajes para bases de datos, la forma en que se puede escribir un lenguaje
Kepler. 1. Presentación de la arquitectura. Índice de contenidos [25 diapositivas] Kepler, Johannes (1571-1630)
Índice de contenidos [25 diapositivas] Manuel Ujaldón Nvidia CUDA Fellow Dpto. Arquitectura de Computadores Universidad de Málaga 1. Presentación de la arquitectura [3] 2. Los cores y su organización [7]
Guia para examen de Sistemas Operativos Para primer parcial Febrero 2013 Revisión 2 Ing. Julio Cesar Gonzalez Cervantes
Guia para examen de Sistemas Operativos Para primer parcial Febrero 2013 Revisión 2 Ing. Julio Cesar Gonzalez Cervantes Qué es un software comercial? Es el software que las compañías cobran por su producto
CLUSTER FING: ARQUITECTURA Y APLICACIONES
CLUSTER FING: ARQUITECTURA Y APLICACIONES SERGIO NESMACHNOW Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY CONTENIDO Introducción Clusters Cluster
Ejemplos de optimización para Kepler. 1. Balanceo dinámico de la carga. Contenidos de la charla [18 diapositivas]
Ejemplos de optimización para Kepler Manuel Ujaldón Nvidia CUDA Fellow Dpto. Arquitectura de Computadores Universidad de Málaga Contenidos de la charla [18 diapositivas] 1. Balanceo dinámico de la carga.
Java Inicial (20 horas)
Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción
Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software.
ARQUITECTURA DE LAS COMPUTADORAS QUE ES UNA COMPUTADORA (UN ORDENADOR)? Existen numerosas definiciones de una computadora, entre ellas las siguientes: 1) Una computadora es un dispositivo capaz de realizar
Control Digital en PC con MS-DOS
Control Digital en PC con MS-DOS Abel Alberto Cuadrado Vega 19 de abril de 2006 1. Introducción Un PC puede ser utilizado para realizar un sistema de control digital. Para ello necesita lo siguiente: tarjeta
Introducción HPC. Curso: Modelización y simulación matemática de sistemas. Esteban E. Mocskos ([email protected]) Escuela Complutense Latinoamericana
Curso: Modelización y simulación matemática de sistemas Metodología para su implementación computacional Introducción HPC Esteban E. Mocskos ([email protected]) Facultad de Ciencias Exactas y Naturales,
Tema: INSTALACIÓN Y PARTICIONAMIENTO DE DISCOS DUROS.
1 Facultad: Ingeniería Escuela: Electrónica Asignatura: Arquitectura de computadoras Lugar de ejecución: Lab. de arquitectura de computadoras, edif. de electrónica. Tema: INSTALACIÓN Y PARTICIONAMIENTO
SOLUCION EXAMEN junio 2006
SOLUCION EXAMEN junio 2006 1. Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas: I) (1 p) En UNIX únicamente se distinguen dos tipos de procesos: los procesos de usuario y los
Utilización de la programación paralela en procesadores gráficos para el cálculo científico.
Utilización de la programación paralela en procesadores gráficos para el cálculo científico. EMNO 2013 Rolando E. Rodríguez Fernández Medicina Computacional, Instituto de Nefrología. y Facultad de Física,
Gestión de la Configuración
Gestión de la ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 1 ESTUDIO DE VIABILIDAD DEL SISTEMA... 2 ACTIVIDAD EVS-GC 1: DEFINICIÓN DE LOS REQUISITOS DE GESTIÓN DE CONFIGURACIÓN... 2 Tarea EVS-GC 1.1: Definición de
Autenticación Centralizada
Autenticación Centralizada Ing. Carlos Rojas Castro Herramientas de Gestión de Redes Introducción En el mundo actual, pero en especial las organizaciones actuales, los usuarios deben dar pruebas de quiénes
Metodologías de diseño de hardware
Capítulo 2 Metodologías de diseño de hardware Las metodologías de diseño de hardware denominadas Top-Down, basadas en la utilización de lenguajes de descripción de hardware, han posibilitado la reducción
Tema 1: Computadores y Programas
Tema 1: Computadores y Programas Ingeniería Informática Ingeniería Técnica en Informática de Sistemas Ingeniería Técnica en Informática de Gestión Departamento de Ciencia de la Computación e I.A. Universidad
Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases
El UML está compuesto por diversos elementos gráficos que se combinan para conformar diagramas. Debido a que el UML es un lenguaje, cuenta con reglas para combinar tales elementos. La finalidad de los
Introducción a la programación orientada a objetos
Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación
MPI Introducción Procesos Envío y recepción simple Envío y recepción no tan simple Comunicación colectiva. Herramientas de depuración y evaluación
Tutorial sobre MPI Temario 1 MPI Introducción Procesos Envío y recepción simple Envío y recepción no tan simple Comunicación colectiva Herramientas de depuración y evaluación arqavapar MPI (Introducción)
Unidad II: Administración de Procesos y del procesador
Unidad II: Administración de Procesos y del procesador 2.1 Concepto de proceso Un proceso no es más que un programa en ejecución, e incluye los valores actuales del contador de programa, los registros
PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso
PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación II MODELOS y HERRAMIENTAS UML 1 1 Modelado de casos de uso (I) Un caso de uso es una técnica de modelado usada para describir lo que debería hacer
Un nombre de usuario de 30 caracteres o menos, sin caracteres especiales y que inicie con una letra.
Unidad IV: Seguridad 4.1 Tipos de usuario El objetivo de la creación de usuarios es establecer una cuenta segura y útil, que tenga los privilegios adecuados y los valores por defecto apropiados Para acceder
Talleres CLCAR. CUDA para principiantes. Título. Mónica Liliana Hernández Ariza, SC3UIS-CRC NVIDIA Research Center monicalilianahernandez8@gmail.
a CUDA para principiantes Mónica Liliana Hernández Ariza, SC3UIS-CRC NVIDIA Research Center [email protected] Tener un primer encuentro práctico con la programación en CUDA para personas
TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA
TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA Programa: Algoritmo (secuencia no ambigua, finita y ordenada de instrucciones para la resolución de un determinado problema) traducido
Hilos, comunicación y competencia entre procesos. Dr. Alonso Ramírez Manzanares 2-Sep-2010
Hilos, comunicación y competencia entre procesos Dr. Alonso Ramírez Manzanares 2-Sep-2010 Implementación de procesos Se mantiene una tabla de procesos con una entrada por cada proceso: Con lo cual tenemos
Introducción. Por último se presentarán las conclusiones y recomendaciones pertinentes.
Introducción En el presente documento se explicarán las consideraciones realizadas para implementar la convolución bidimensional en la arquitectura CUDA. En general se discutirá la metodología seguida
UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I. Licda. Consuelo Eleticia Sandoval
UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I Licda. Consuelo Eleticia Sandoval OBJETIVO: ANALIZAR LAS VENTAJAS Y DESVENTAJAS DE LAS REDES DE COMPUTADORAS. Que es una red de computadoras?
Seminario Electrónico de Soluciones Tecnológicas sobre Content Networking
Seminario Electrónico de Soluciones Tecnológicas sobre Content Networking 1 de 13 Seminario Electrónico de Soluciones Tecnológicas sobre Content Networking 3 Bienvenida. 4 Objetivos. 5 Soluciones comerciales
Centro de Capacitación en Informática
Fórmulas y Funciones Las fórmulas constituyen el núcleo de cualquier hoja de cálculo, y por tanto de Excel. Mediante fórmulas, se llevan a cabo todos los cálculos que se necesitan en una hoja de cálculo.
2º 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.T.I. Arturo López Saldiña
M.T.I. Arturo López Saldiña Hoy en día, existen diversas aproximaciones al tema de cómo hacer que las personas trabajen dentro de una organización de manera colaborativa. El problema se vuelve más difícil
INSTRUCTIVO DE ADMINISTRADOR ALFRESCO COMMUNITY 4.2
INSTRUCTIVO DE ADMINISTRADOR ALFRESCO COMMUNITY 4.2 Grupo de Innovación y Apropiación de Tecnologías de la Información Archivística Compilador: Pedro Antonio Gómez Guarín INSTRUCTIVO DE ADMINISTRADOR ALFRESCO
Adelacu Ltda. www.adelacu.com Fono +562-218-4749. Graballo+ Agosto de 2007. Graballo+ - Descripción funcional - 1 -
Graballo+ Agosto de 2007-1 - Índice Índice...2 Introducción...3 Características...4 DESCRIPCIÓN GENERAL...4 COMPONENTES Y CARACTERÍSTICAS DE LA SOLUCIÓN...5 Recepción de requerimientos...5 Atención de
Ayuda de Symantec pcanywhere Web Remote
Ayuda de Symantec pcanywhere Web Remote Conexión desde un navegador web Este documento incluye los temas siguientes: Acerca de Symantec pcanywhere Web Remote Protección de la sesión de Web Remote Formas
Diseño orientado al flujo de datos
Diseño orientado al flujo de datos Recordemos que el diseño es una actividad que consta de una serie de pasos, en los que partiendo de la especificación del sistema (de los propios requerimientos), obtenemos
Procesos. Bibliografía. Threads y procesos. Definiciones
Procesos Prof. Mariela Curiel Bibliografía A. Tanembaum & M. Van Steen. Sistemas Distribuidos. Principios y Paradigmas. 2da. Edición. Smith & Nair. The Architecture of Virtual Machines. IEEE Computer.
INTERRUPCIONES. La comunicación asíncrona de los sistemas periféricos con la CPU, en ambos sentidos, se puede establecer de dos maneras fundamentales:
INTERRUPCIONES La comunicación asíncrona de los sistemas periféricos con la CPU, en ambos sentidos, se puede establecer de dos maneras fundamentales: a)consultas (POLLING): Se comprueban cíclicamente,
Administración de proyectos. Organizar, planificar y programar los proyectos de software
Administración de proyectos Organizar, planificar y programar los proyectos de software Administración de proyectos Trata de las actividades que hay que realizar para asegurar que el software se entregará
