Al borde de un ataque de Matlab sálvame C++ Francisco Javier García Blas Universidad Carlos III de Madrid Grupo ARCOS 2016
|
|
- Javier Hidalgo Castillo
- hace 6 años
- Vistas:
Transcripción
1 Al borde de un ataque de Matlab sálvame C++ Francisco Javier García Blas Universidad Carlos III de Madrid Grupo ARCOS 2016
2 Matlab 2
3 3 Introducción Qué es Matlab?, MATrix LABoratory Es un lenguaje de programación (inicialmente escrito en C) para realizar cálculos numéricos con vectores y matrices. Como caso particular puede también trabajar con números escalares, tanto reales como complejos. Cuenta con paquetes de funciones especializadas.
4 4 Mito 1: Matlab es difícil
5 5 Google Trend Gran comunidad de usuarios. Usado en múltiples áreas de la ingeniería.
6 6 Mito 1: Matlab es difícil
7 7 Mito 2: Matlab es lento
8 8 Matlab es lento Matlab utiliza Intel MatkKernel Library (MKL) Intel MKL incluye una nueva función de Descarga Automática (AO). Multiprocesadores Intel Xeon Phi de forma automática y transparente
9 9 Mito 2: Matlab es lento
10 10 Mito 3: Matlab es caro
11 11
12 12 Mito 3: Matlab es caro
13 13 Qué SI nos gusta de Matlab? Prototipado rápido de aplicaciones Soporte para desarrolladores Representación sencilla de operaciones algebraicas Interfaz gráfica (GUI) para depuración y desarrollo Matlab Simulink Programación paralela basada en maestro-esclavo (workers) Parfor Bucles paralelos GPU
14 14 Qué NO nos gusta de Matlab? Entorno cerrado de desarrollo (esclavos de Matlab). Gestión de memoria. El despliegue de aplicaciones es altamente dependiente. Limitadas alternativas para la paralelización eficiente en memoria compartida.
15 Sálvame C++ 15
16 16 Alternativas a Matlab en C++ Eigen Armadillo ArrayFire
17 17 Qué es Armadillo? Biblioteca de código libre para C++. Fácil uso y con una sintaxis similar a Matlab. Basada en templates y C++11. Lambdas (transform, for_each, reduce) Contenedores Soporte para BLAS y LAPACK de forma adicional. Representa tipos básicos para representación matemática: Mat (2D) Cube (3D) Soporte para aceleración mediante tarjetas gráfica (GPU). Proporciona vectorización automática SIMD (eg. SSE2). CUIDADO: representación column-major. Soporte para CMake
18 18 Qué NO proporciona Armadillo? Todo el conjunto de bibliotecas proporcionadas por Matlab. Paralelización de operaciones sobre vectores. #pragma omp parallel for for (int i = 0; i < inda.n_elem; ++i) { slicevf_gm.at(inda(i)) = ODF(ODF.n_rows - 1,i); } }
19 Asignatura/Tema 19 Operadores en Armadillo Operadores sobrecargados para clases Mat, Col, Row y Cube +: Suma de dos objetos. -: Resta de un objeto de otro o negación de un objeto. /: División de un objeto por otro objeto o un escalar. * Multiplicación matricial de dos objetos; No aplicable a la clase Cube a menos que multiplique un cubo por un escalar. %: Multiplicación por elementos de dos objetos. ==: Evaluación de igualdad entre elementos de dos objetos; Genera una matriz de tipo umat con entradas que indican si en una posición dada los dos elementos de los dos objetos son iguales (1) o no iguales (0)
20 20 Ejemplo: multiplicación de matrices #include <iostream> #include <armadillo> using namespace std; using namespace arma; int main (int argc, char** argv) { mat A = randu<mat>(5000,5000); mat B = randu<mat>(5000,5000); mat C = A *B; return 0; }
21 21 Ejemplo: Solver g++ -o solver solver.cpp -larmadillo #include <iostream> #include <armadillo> int main() { arma::vec b; b << 2.0 << 5.0 << 2.0; arma::mat A; A << 1.0 << 2.0 << arma::endr << 2.0 << 3.0 << arma::endr << 1.0 << 3.0 << arma::endr; std::cout << Solución a mínimos cuadrados: std::cout << solve(a,b) << std::end; << std::end; } return 0;
22 22 Ejemplo: Programación funcional // Idiff(Idiff>1) = 1; // Idiff(Idiff<0) = 0; Idiff.elem( find(idiff > 1.0) ).ones(); Idiff.elem( find(idiff < 0.0) ).zeros();
23 23 Matlab Vs Armadillo MATLAB for i = 1:Niter fodfi = fodf; Ratio = mbessel_ratio(n_order,reblurred_s); RL_factor = KernelT * ( Signal.* (Ratio))./ (KernelT * (Reblurred)+ eps); fodf = fodfi.* RL_factor; Reblurred = Kernel * fodf; Reblurred_S = (Signal.* Reblurred)./ sigma2; sigma2_i = (1/N) * sum( (Signal.^2 + Reblurred.^2)/2 - (sigma2.* Reblurred_S).* Ratio, 1)./n_order; sigma2_i = min((1/10)^2, max(sigma2_i,(1/50)^2)); sigma2 = repmat(sigma2_i,[n, 1]); end Armadillo for (auto i = 0; i < Niter; ++i) { fodfi = fodf; Ratio = mbessel_ratio<t>(n_order,reblurred_s); RL_factor = KernelT * (Signal % Ratio) / ((KernelT * Reblurred) + std::numeric_limits<t>::epsilon()); fodf = fodfi % RL_factor; Reblurred = Kernel * fodf; Reblurred_S = (Signal % Reblurred) / sigma2; sigma2_i = (1.0/N) * sum( (pow(signal,2) + pow(reblurred,2))/2 - (sigma2 % Reblurred_S) % Ratio, 0) / n_order; sigma2_i.transform( [](T val) { return std::min<t>(std::pow<t>(1.0/10.0,2), std::max<t>(val, std::pow<t>(1.0/50.0,2))); } ); sigma2 = repmat(sigma2_i, N, 1); }
24 24 Cómo puedo hacer para acelerar mi aplicación? Permite paralelización casi mágica de mi aplicación: Mediante enlazado de bibliotecas comúnmente usadas: Intel MKL (CPU) OpenBLAS (CPU) Atlas (CPU) Magma (GPU) NVidia permite la descarga (offloading) del cálculo matricial cublas: necesitamos trabajar con API (complejo) NVBLAS: descarga automática (fácil)
25 25 Configurando NVBLAS NVBLAS_LOGFILE nvblas.log NVBLAS_CPU_BLAS_LIB libmkl_rt.so #NVBLAS_CPU_BLAS_LIB libopenblas.so NVBLAS_GPU_LIST 0 #NVBLAS_GPU_LIST ALL NVBLAS_TILE_DIM 2048 #NVBLAS_GPU_DISABLED_SGEMM #NVBLAS_GPU_DISABLED_DGEMM #NVBLAS_GPU_DISABLED_CGEMM #NVBLAS_GPU_DISABLED_ZGEMM NVBLAS_CPU_RATIO_CGEMM 0.07 %> LD_PRELOAD=LD_PRELOAD=/usr/local/cuda-7.5/lib64/libnvblas.so./miapplicacion
26 26 ArrayFire Programación orientada a dispositivos Basado en la clase array Limitado a datos en 1D/2D/3D Open source Neutral Nvidia AMD (OpenCL) CPU (CUDA) Múltiples funcionalidades Soporte para CMake
27 27 Ejemplos básicos array A = array(seq(1,9), 3, 3); af_print(a); af_print(a(0)); // primer elemento af_print(a(0,1)); // primera fila, segunda columna af_print(a(end)); // último elemento af_print(a(-1)); // último elemento (también) af_print(a(1,span)); // segunda fila af_print(a.row(end)); // última fila af_print(a.cols(1,end)); // todo menos la segunda fila float b_host[] = {0,1,2,3,4,5,6,7,8,9}; array b(10, 1, b_host); af_print(b(seq(3))); af_print(b(seq(1,7))); af_print(b(seq(1,7,2))); af_print(b(seq(0,end,2)));
28 28 Ejemplo #include <arrayfire.h> #include <stdio.h> #include <math.h> #include <cstdlib> static af::array A; static void fn() { } af::array B = af::matmul(a,a); B.eval(); int main(int argc, char ** argv) { double peak = 0; try { int device = argc > 1? atoi(argv[1]) : 0; af::setdevice(device); af::info(); } std::cout << Benchmark N-by-N << std::endl; for (auto n = 128; n <= 2048; n += 128) { std::cout << n << x << n << ; A = af::constant (1, n, n); double time = af::timeit(fn); double gflops = 2.0 * powf(n,3) / (time * 1e9); if (gflops > peak) peak = gflops; std::cout << gflops << GF << std::endl; } } catch (af::exception & e) { std::cout << e.what() << std::endl;; throw; } std::cout << ## Max << peak << GFLOPS << std::endl; return 0;
29 29 Gfor-loop La construcción gfor-loop puede utilizarse para iniciar simultáneamente todas las iteraciones de un bucle for de la GPU o dispositivo. siempre y cuando las iteraciones sean independientes. gfor-loop se realiza cada iteración al mismo tiempo (en paralelo). Tamaño del intervalo limitado. FFT a cada rodaja de un volumen: for (auto i = 0; i < N; ++i) A(span,span,i) = fft2(a(span,span,i)); // Secuencial gfor (seq i, N) A(span,span,i) = fft2(a(span,span,i)); // Paralelo
30 30 ArrayFire + Armadillo Ambos comparten el mismo layout de memoria (column-major). Es posible transferir datos de la clase Mat (Armadillo) a array (ArrayFire). af::array mat_gpu = af::array(filas, columnas, mat_cpu.memptr()); mat_gpu.host(mat_cpu.memptr());
31 31 Caso de uso: phardi Identificación de fibras nerviosas para estudiar el grado de conectividad de las distintas áreas del cerebro. Rendimiento: pseudo-tiempo real: Quirófano (operatorio). Procesamiento estadístico (clínico).
32 32
33 33 Evaluación (I) Intel Xeon E v3 8 núcleos 2.40 GHz, 128 GB RAM Ubuntu x64 CUDA versión 7.5. Compiladores GCC 5.1 Flags O3 y DNDEBUG Nvidia Tesla K40 GTX 680
34 34 Evaluación (II)
35 35 Evaluación (y III)
36 36 Conclusiones Es posible el despliegue de aplicaciones fuera del ámbito Matlab. Flexibilidad de desarrollo. Matlab como DSL.
37 37
38 Al borde de un ataque de Matlab sálvame C++. Francisco Javier García Blas Universidad Carlos III de Madrid Grupo ARCOS 2016
Tema: Plantillas en C++.
Programación II. Guía 11 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Plantillas en C++. Objetivos Específicos Conocer los tipos de plantillas Utilizar las plantillas de
Más detallescuevogenet Paralelización en CUDA de la Dinámica Evolutiva de Redes Génicas Dirigido por: Fernando Díaz del Río José Luis Guisado Lizar
cuevogenet Paralelización en CUDA de la Dinámica Evolutiva de Redes Génicas Realizado por: Raúl García Calvo Dirigido por: Fernando Díaz del Río José Luis Guisado Lizar Objetivos Implementar un algoritmo
Más detallesLenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III
República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III Lenguaje C 1 Puntos previos Los códigos fuentes generados en C requieren ser compilados
Más detallesComputación de Propósito General en Unidades de Procesamiento Gráfico GPGPU. Clase 0 Lanzamiento del Curso. Motivación
Computación de Propósito General en Unidades de Procesamiento Gráfico () Pablo Ezzatti, Martín Pedemonte Clase 0 Lanzamiento del Curso Contenido Evolución histórica en Fing Infraestructura disponible en
Más detallesPROGRAMACIÓN N C++ CONSTRUCTORES PROG.C++ L11 CONSTRUCTORES DEL LENGUAJE
L11 CONSTRUCTORES DEL LENGUAJE CLASES class { } PLANTILLAS template { } ESPACIOS DE NOMBRES namespace { } EXCEPCIONES try catch.. SOBRECARGA DE OPERADORES operator (parametros) BIBLIOTECA
Más detallesFundamentos de la programación
Fundamentos de la programación 4A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Facultad de Informática Universidad Complutense Archivos como parámetros
Más detallesFLAG/C. Una API para computación matricial sobre GPUs. M. Jesús Zafont Alberto Martín Francisco Igual Enrique S. Quintana-Ortí
FLAG/C Una API para computación matricial sobre GPUs M. Jesús Zafont Alberto Martín Francisco Igual Enrique S. Quintana-Ortí High Performance Computing & Architectures Group Universitat Jaume I de Castellón
Más detallesHeterogé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
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 detalles12 símbolos (13 si se incluye el espacio en blanco)
Universidad Rafael Urdaneta Facultad de Ingeniería Escuela de Ingeniería de Computación Cátedra: Programación I Laboratorio - Semestre 2012-1 (Sección L y P ) Profesor: Jaime Soto Examen #1 - Fecha: 09-03-2012
Más detallesCAR. http://acarus.uson.mx/cursos2013/car.htm
CAR http://acarus.uson.mx/cursos2013/car.htm Sistemas de CAR en la UNISON Responsable : María del Carmen Heras Sánchez Asesores Técnicos : Aracely Dzul Campos Daniel Mendoza Camacho Yessica Vidal Quintanar
Más detallesCátedra I Informática Autor I Carlos Bartó
FCEFyN Departamento de Computación Informática Examen - 07-07-2008 Apellido y Nombres: Matrícula: Carrera: PROBLEMAS: 1) Especifique en el lenguaje C++ una función denominada calc_fecha() que tenga como
Más detallesMAGMA. Matrix Algebra on GPU and Multicore Architecture. Ginés David Guerrero Hernández
PLASMA GPU MAGMA Rendimiento Trabajo Futuro MAGMA Matrix Algebra on GPU and Multicore Architecture Ginés David Guerrero Hernández gines.guerrero@ditec.um.es Grupo de Arquitecturas y Computación Paralela
Más detallesFunciones y Parámetros
Funciones y Parámetros! Funciones! Concepto! Argumentos! Programa Principal! Recursividad El programa principal Es el punto de entrada al programa Imprescindible para conseguir un ejecutable autónomo o
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 detallesIntroducción a C++ y Code::Blocks
Introducción a C++ y Práctica Imperativo Clase 1 Luis Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 28 de mayo de 2010 Menu de esta Tarde Funcional Vs. Imperativo (Intérprete
Más detallesTipos de datos y operadores en C++
Tipos de datos y operadores en C++ El tipo de dato determina la naturaleza del valor que puede tomar una variable. Un tipo de dato define un dominio de valores y las operaciones que se pueden realizar
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 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 detallesINTRODUCCIÓN AL LENGUAJE C++
Transparencias del libro Rodríguez Artalejo, M., González-Calero, P.A., Gómez Martín, M.A.: Estructuras de datos, un enfoque moderno. Editorial Complutense 2011. TEMA 0 INTRODUCCIÓN AL LENGUAJE C++ El
Más detallesProgramación 1 Tema 3. Información, datos, operaciones y expresiones
Programación 1 Tema 3 Información, datos, operaciones y expresiones Índice Datos y tipos de datos Datos primitivos en C++ Expresiones e instrucción de asignación Datos y tipos de datos Problema información
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 1. Programación modular. Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas
Tema 1. Programación modular Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas 1.1. Objetivos Repasar brevemente mediante ejemplos los elementos principales del lenguaje
Más detallesUnidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Más detallesProgramación Híbrida e Introducción a la Programación de GPUs
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 CONTENIDO
Más detallesProgramación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C
Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales
Más detallesPlantillas (Templates)
Programación Orientada o Objetos Plantillas (Templates) Univesidad de Los Andes - Facultad de Ingeniería Escuela de Sistemas Programación Digital II Profesor: Gilberto Diaz gilberto@ula.ve Plantillas Los
Más detallesLibrería Thrust. Clase 4. http://fisica.cab.cnea.gov.ar/gpgpu/index.php/en/icnpg/clases
Librería Thrust Clase 4 http://fisica.cab.cnea.gov.ar/gpgpu/index.php/en/icnpg/clases Hasta aquí... CUDA C/C++ Control de bajo nivel del mapeo al hardware Desarrollo de algoritmos de alta performance.
Más detallesTesting Unitario. Laboratorio de Testing y Aseguramiento de la Calidad del Software
Testing Unitario Laboratorio de Testing y Aseguramiento de la Calidad del Software Introducción Testing ad hoc Automatización de testing Testing unitario Unidad y Suite de test GoogleTest Fixture e independencia
Más detallesSegundo Taller Final de PROGRAMACIÓN ORIENTADO A OBJETOS. INGENIERÍA DE SISTEMAS. Docente y Administrativo: Luz Esperanza Espitia Preciado
Segundo Taller Final de PROGRAMACIÓN ORIENTADO A OBJETOS. Código: O613 INGENIERÍA DE SISTEMAS Docente y Administrativo: Luz Esperanza Espitia Preciado Componente: Teórico Práctico. F. Vigencia: 8/10/2.012
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 detallesC++17. El lenguaje que sustituirá a C++11/14. J. Daniel Garcia. 24 de noviembre de Grupo ARCOS Universidad Carlos III de Madrid C++17
C++17 El lenguaje que sustituirá a C++11/14 J. Daniel Garcia Grupo ARCOS Universidad Carlos III de Madrid 24 de noviembre de 2016 cbed J. Daniel Garcia ARCOS@UC3M (josedaniel.garcia@uc3m.es) Twitter: @jdgarciauc3m
Más detallesArquitecturas de Altas Prestaciones y Supercomputación
Arquitecturas de Altas Prestaciones y Supercomputación Presentación del itinerario Julio de 2014 Arquitecturas de Altas Prestaciones y Supercomputación Julio de 2014 1 / 15 Agenda Introducción 1 Introducción
Más detallesConstrucciones del Lenguaje Java
Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.
Más detallesCAR. Responsable : María del Carmen Heras Sánchez. Asesores Técnicos : Daniel Mendoza Camacho Yessica Vidal Quintanar.
CAR Responsable : María del Carmen Heras Sánchez Asesores Técnicos : Daniel Mendoza Camacho Yessica Vidal Quintanar http://acarus2.uson.mx Infraestructura de Hardware Software Conexiones remotas http://acarus2.uson.mx
Más detallesPRÁCTICA DE LABORATORIO 3 Tipo Abstrato de Dato
ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 3 Tipo Abstrato de Dato Contenido Introducción...1 Dato...1 Valor...1 Tipo de Dato...2 Tipo Abstracto
Más detallesIntroducción rápida a la programación (estructurada ) con C++
Introducción rápida a la programación (estructurada ) con C++ A B No A? Si B A Los Bloques pueden ser una línea de código o un modulo (función o subrutina) que pueden estar contenido en otro archivo de
Más detallesComputació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,
Más detallesArquitecturas 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,
Más detallesProgramación. Test Autoevaluación Tema 3
Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.
Más detallesPráctica de gsoap. int ns enviar (unsigned nodo, std::string cadena, std::string &resultado); int ns recibir(unsigned nodo, std::string &resultado);
Práctica de gsoap Para desarrollar programas que utilicen gsoap para llevar a cabo las comunicaciones, debemos bajar el paquete gsoap linux 2.7.tgz disponible en: http://atc.ugr.es/pedro/docencia/irhc/irhc.html
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...
Más detallesIntroducción a C++ Índice
Introducción a C++ 1. 2. 3. 4. 5. 6. Índice 1. Diferencias entre C y C++. 2. Diferencias entre C++ y Java. 3. Ejemplos. 4. Funciones. 5. Memoria dinámica 6. Librería de funciones. 1 1. Diferencias entre
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 detallesLenguaje C Funciones. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia
Lenguaje C Funciones Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Qué es una función o rutina/subrutina? Se presenta como un subalgoritmo
Más detallesProgramació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
Más detallesIntroduccion 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
Más detallesCONTENIDO. Programación orientada a objetos - POO. Clases. Constructores y destructores. Definiciones. Entrada y salida
INFORMÁTICA II 1 CONTENIDO 2 1 Programación orientada a objetos - POO 2 Clases 3 Constructores y destructores 4 Definiciones 5 Entrada y salida PROGRAMACIÓN ORIENTADA A OBJETOS Los lenguajes de programación
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 detallesCursada Segundo Cuatrimestre 2012 Guía de Trabajos Prácticos Nro. 1
Temas: Ambiente de trabajo MATLAB. Creación de matrices y vectores. Matrices pre-definidas. Operador dos puntos. Operaciones con matrices y vectores. Direccionamiento de elementos de matrices y vectores.
Más detallesUtilizació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,
Más detallesSolving Dense Linear Systems on Platforms with Multiple Hardware Accelerators
Solving Dense Linear Systems on Platforms with Multiple Hardware Accelerators Maribel Castillo, Francisco D. Igual, Rafael Mayo, Gregorio Quintana-Ortí, Enrique S. Quintana-Ortí, Robert van de Geijn Grupo
Más detallesPunteros. Definición Un puntero es un dato que contiene una dirección de memoria.
Punteros Definición Un puntero es un dato que contiene una dirección de memoria. NOTA: Existe una dirección especial que se representa por medio de la constante NULL (definida en ) y se emplea
Más detallesProgramación I Funciones
1 Funciones Iván Cantador 2 Funciones: definición, sintaxis, ejemplos (I) Una funciónes un bloque de sentencias identificado con un nombre que se ejecutan de manera secuencial ofreciendo una funcionalidad
Más detallesLENGUAJE. Tema 4 Vectores, Matrices y Cadenas de caracteres.
LENGUAJE Tema 4 Vectores, Matrices y Cadenas de caracteres. VECTORES UNIDIMENSIONALES Los vectores (array o arreglo) unidimensionales son secuencias de valores del mismo tipo que se almacenan en localidades
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 detallesMPI 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
Más detallesTécnicas SuperEscalares en la Paralelización de Bibliotecas de Computación Matricial sobre Procesadores Multinúcleo y GPUs
Técnicas SuperEscalares en la Paralelización de Bibliotecas de Computación Matricial sobre Procesadores Multinúcleo y GPUs Enrique S. Quintana-Ortí quintana@icc.uji.es High Performance Computing & Architectures
Más detallesSistemas Operativos Práctica 3
Sistemas Operativos Práctica 3 Ing. Andrés Bustamante afbustamanteg@unal.edu.co Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que
Más detallesProgramación C++ (1 Parte) Dr. Oldemar Rodríguez Rojas Escuela De Informática Universidad Nacional
Programación C++ (1 Parte) Dr. Oldemar Rodríguez Rojas Escuela De Informática Universidad Nacional Programming Language Popularity: The TCP Index for December, 2012 La noción de clase en C++ C++ fue
Más detallesFunciones y paso de parámetros
Unidad Didáctica 24 Funciones y paso de parámetros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.0 Índice Consideraciones sobre funciones Estructura de una función
Más detallesNociones básicas de computación paralela
Nociones básicas de computación paralela Javier Cuenca 1, Domingo Giménez 2 1 Departamento de Ingeniería y Tecnología de Computadores Universidad de Murcia 2 Departamento de Informática y Sistemas Universidad
Más detallesProgramación Estructurada
Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 2 Nombre: El lenguaje de programación C Contextualización Una constante en todos los lenguajes de programación (viejos y nuevos) es la implementación
Más detallesFunciones: Pasos por Referencia Recursividad
Funciones: Pasos por Referencia Recursividad Fundamentos de Programación Fundamentos de Programación I Parámetros por referencia Con la instrucción return sólo se puede devolver un valor calculado. A veces
Más detallesEl lenguaje de Programación C. Fernando J. Pereda <ferdy@gentoo.org>
El lenguaje de Programación C Fernando J. Pereda Por qué aprender C? Portable y muy extendido Estándar (C89, C99) El lenguaje de los sistemas Un lenguaje fácil (no, no es broma) Por
Más detallesUNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. TRUJILLO 1.- Resumen de Prog1 Comentarios es C++ Declaraciones de variables.
Más detallesArquitectura de aceleradores. Carlos Bederián IFEG CONICET GPGPU Computing Group FaMAF UNC bc@famaf.unc.edu.ar
Arquitectura de aceleradores Carlos Bederián IFEG CONICET GPGPU Computing Group FaMAF UNC bc@famaf.unc.edu.ar Contenidos Cómo llegamos hasta acá Qué hay ahora Qué hace Cómo lo uso Hacia dónde parece que
Más detallesParadigma de paso de mensajes
Paradigma de paso de mensajes Curso 2011-2012 Índice Visión lógica del paradigma de paso de mensajes. Operaciones básicas en paso de mensajes. Operaciones bloqueantes. Operaciones no bloqueantes. MPI:
Más detallesPaso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1.
Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1. Anjuta es un entorno de desarrollo de C que podemos encontrar en cualquier distribución de GNU/Linux. Si nuestra distribución no dispone de ella,
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 detallesSEGUNDO PARCIAL INFORMATICA II
SEGUNDO PARCIAL INFORMATICA II Tema 1 Hacer un programa en C++ que realice lo siguiente: a. Generar los primeros 100 números enteros comenzando en 1 y guardar los impares en una pila y los pares en una
Más detallesUnidad II Fundamentos de C++ M.C. Juan Carlos Olivares Rojas
Unidad II Fundamentos de C++ M.C. Juan Carlos Olivares Rojas Agenda 2.1 Familiarización con el ambiente de programación 2.2 Análisis de la estructura de un programa 2.3 Envío de mensajes a la salida estándar
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 detallesProgramación C++ Tipos Parametrizados. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad Nacional
Programación C++ Tipos Parametrizados Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad Nacional Tipos (clases) parametrizados Templates La noción de "templates" provee los llamados algunas
Más detalles4. Operadores Operador asignación
Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre
Más detallesPrimeros pasos con CUDA. Clase 1
Primeros pasos con CUDA Clase 1 Ejemplo: suma de vectores Comencemos con un ejemplo sencillo: suma de vectores. Sean A, B y C vectores de dimensión N, la suma se define como: C = A + B donde C i = A i
Más detallesCálculo Estructural, Fluídos e Magnetismo Ansys 5.7
1 2 Temas SD SVG SC Cálculo Estructural, Fluídos e Magnetismo Ansys 5.7 X Cálculo Molecular Amber 8.0 X X X Gaussian 98 X X X Gaussian 03 X X X Dalton X X X CPMD X X X GAMESS X X X Molden X X NWCHEM X
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 detallesProgramación MATLAB: Programas y Funciones.
Programación MATLAB: Programas y Funciones. Curso: Métodos Numéricos en Ingeniería Profesor: Dr. José A. Otero Hernández Correo: j.a.otero@itesm.mx web: http://metodosnumericoscem.weebly.com Universidad:
Más detallesSobre Carga de Operadores
Programación Orientada o Objetos Univesidad de Los Andes - Facultad de Ingeniería Escuela de Sistemas Programación Digital II Profesor: Gilberto Diaz gilberto@ula.ve Las operaciones tradicionales que se
Más detallesHerramientas computacionales para la matemática MATLAB: Estructuras de control
Herramientas computacionales para la matemática MATLAB: Estructuras de control Verónica Borja Macías Mayo 2012 1 Estructuras de control ESTRUCTURAS DE REPETICIÓN: BUCLES Los bucles permiten repetir las
Más detallesCÓMPUTO DE ALTO RENDIMIENTO EN MEMORIA COMPARTIDA Y PROCESADORES GRÁFICOS
CÓMPUTO DE ALTO RENDIMIENTO EN MEMORIA COMPARTIDA Y PROCESADORES GRÁFICOS Leopoldo N. Gaxiola, Juan J. Tapia Centro de Investigación y Desarrollo de Tecnología Digital Instituto Politécnico Nacional Avenida
Más detallesTema 1: Introducción. Índice. Notas
s : Introducción Programación 2 Curso 2016-2017 Índice s 1 s 2 Conocimientos básicos de 3 4 5 recomendada Cómo se hace un... s 1 Estudio del problema y de las posibles soluciones 2 l algoritmo en papel
Más detallesHoja de ejercicios del Tema 3
Facultad de Informática Universidad Complutense Fundamentos de la programación Curso 2013 2014 Hoja de ejercicios del Tema 3 1. Conversiones de tipos: Prueba el siguiente programa en tu compilador (copia
Más detallesImpresión por pantalla
3. Indicar la salida por pantalla (2 puntos-20 minutos) #include template void Funcion_B(S& a, S& b); template void Funcion_A (T *vector, int num); void main(void) float
Más detallesLibrerías estándar en C++ STL: Standard Template Library. Álvaro Sánchez Miralles José Porras (Fidel Fernández)
Librerías estándar en C++ STL: Standard Template Library Álvaro Sánchez Miralles José Porras (Fidel Fernández) Cadenas de caracteres Es una clase que se encuentra en librería estandar Consta,
Más detallesProgramación en Lenguaje C
Lenguaje de programación C Programación en Lenguaje C Introducción El Lenguaje de programación C fue implantado por primera vez en los años 70 por Dennis Ritchie para una computadora DEC PDP-11 corriendo
Más detallesIntroducción a Java. Introducción a Java. Programación I
Introducción a Java Introducción a Java Programación I Como Funciona Tipos de Datos TIPO TAMAÑO RANGO byte 8 bits Valores numéricos de 128 a 127 short 16 bits Valores numéricos de 32.768 a 32.767 int 32
Más detallesImpresión por pantalla. 3. Indicar la salida por pantalla (2 puntos-20 minutos)
3. Indicar la salida por pantalla (2 puntos-20 minutos) #include class EUITIelemento; class EUITIpila int num; EUITIelemento *pila[10]; EUITIpila():num(0); bool push(euitielemento *in) if(num>=10)return
Más detallesElementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
Más detallesRancagua, Agosto 2009
cvalle@inf.utfsm.cl Departamento de Informática - Universidad Técnica Federico Santa María Rancagua, Agosto 2009 1 / 28 Temario 1 2 3 4 2 / 28 Temario 1 2 3 4 3 / 28 Los nombre y arreglos son equivalentes.
Más detallesC++11: Simplificando la vida del programador
C++11: Simplificando la vida del programador J. Daniel Garcia Universidad Carlos III de Madrid 26 de noviembre de 2013 J. Daniel Garcia ARCOS@UC3M (josedaniel.garcia@uc3m.es) 1/99 Bienvenido a C++11 1
Más detallesTipos Abstractos de Datos
Unidad 6 Tipos Abstractos de Datos Tipos Abstractos de Datos (1) Un Tipo Abstracto de Datos (TAD) es una colección de valores más un conjunto de operaciones que sobre esos valores pueden realizarse, definidas
Más detallesINTRODUCCIÓN A LA COMPUTACIÓN PARALELA CON GPUS
INTRODUCCIÓN A LA COMPUTACIÓN PARALELA CON GPUS Sergio Orts Escolano sorts@dtic.ua.es Vicente Morell Giménez vmorell@dccia.ua.es Universidad de Alicante Departamento de tecnología informática y computación
Más detallesExpresiones y sentencias
Expresiones y sentencias Expresión Construcción (combinación de tokens) que se evalúa para devolver un valor. Sentencia Representación de una acción o una secuencia de acciones. En C, todas las sentencias
Más detallesModelos de computadores paralelos
Modelos de computadores paralelos Domingo Giménez Departamento de Informática y Sistemas Universidad de Murcia, Spain dis.um.es/~domingo Universidad de Murcia 1 Contenido Programación paralela Modelos
Más detallesEjercicios De Programación De C++ Algoritmos. Lenguaje De Programación C++:
Ejercicios De Programación De C++ 1. Muestre en pantalla el mensaje Bienvenido. Algoritmos 1. Inicio 2. muestrer en pantalla el mensaje Bienvenido 3. Fin Lenguaje De Programación C++: #include
Más detallesEscuela Politécnica Superior de Elche
EXAMEN DE SISTEMAS INFORMÁTICOS INDUSTRIALES ((SOLUCIÓN) (TEORÍA)jUJ jhshshs SEPTIEMBRE 2015 1. Indicar si las siguientes afirmaciones son verdaderas o falsas: (a) En C++, una clase derivada puede acceder
Más detallesPreliminares. 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
Más detallesINTRODUCCIÓN A LA PROGRAMACIÓN EN CUDA. Francisco Javier Hernández López
INTRODUCCIÓN A LA PROGRAMACIÓN EN CUDA Francisco Javier Hernández López http://www.cimat.mx/~fcoj23 Guanajuato, Gto. Noviembre de 2012 Introducción a la Programación en CUDA 2 Qué es el Cómputo Paralelo
Más detalles