Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Metodología de programación paralela




Enviado por Pablo Turmero



Partes: 1, 2

    Monografias.com

    1
    ¿Qué es paralelismo?
    Dos o más procesos o hilos se ejecutan al mismo tiempo
    Paralelismo para arquitecturas con varios núcleos
    Múltiples procesos
    Comunicación a través de IPCs (Inter-Process Communication)
    Un solo proceso, múltiples hilos
    Comunicación a través de memoria compartida

    Monografias.com

    2
    (Gp:)

    n = número de procesadores

    (Gp:) Tparalelo = {(1-P) + P/n} Tserial
    (Gp:) Aceleración = Tserial / Tparalelo

    Ley de Amdahl
    Describe el límite máximo de aceleración con ejecución paralela

    El código serial limita la aceleración
    (Gp:) (1-P)
    (Gp:) P
    (Gp:) T
    (Gp:) serial

    (Gp:) (1-P)

    (Gp:) P/2

    (Gp:) 0.5 + 0.25
    (Gp:) 1.0/0.75 = 1.33

    n = 2
    n = 8
    (Gp:) P/8
    (Gp:) .

    (Gp:) 0.5 + 0.0
    (Gp:) 1.0/0.5 = 2.0

    Monografias.com

    3
    Procesos e Hilos
    Los sistemas operativos modernos cargan programas como procesos
    Tiene recursos
    Ejecución
    Un proceso inicia ejecutando su punto de entrada como un hilo
    Los hilos pueden crear otros hilos dentro del proceso
    Cada hilo obtiene su propio stack
    Todos los hilos dentro de un proceso comparten código y segmentos de datos
    Procesos e Hilos
    (Gp:) Code segment
    (Gp:) Data segment

    thread
    main()
    (Gp:) .
    (Gp:) thread
    (Gp:) thread

    (Gp:) Stack
    (Gp:) Stack
    (Gp:) Stack

    Monografias.com

    4
    Hilos – Beneficios y riesgos
    Beneficios
    Mayor rendimiento y mejor utilización de recursos
    Incluso en sistemas con un solo procesador – para esconder latencia e incrementar el tiempo de respuesta
    Comunicación entre procesos a través de memoria compartida es más eficiente
    Riesgos
    Incrementa la complejidad de la aplicación
    Difícil de depurar (condiciones de concurso, interbloqueos, etc.)

    Monografias.com

    5
    Preguntas comunes cuando se paralelizan aplicaciones
    ¿Dónde paralelizar?
    ¿Cuánto tiempo lleva paralelizar?
    ¿Cuánto esfuerzo para rediseñar se requiere?
    ¿Es útil paralelizar una región específica?
    ¿Qué tanto se espera acelerar?
    ¿El rendimiento va de acuerdo a mis expectativas?
    ¿Será escalable a más hilos/datos añadidos?
    ¿Qué modelo de paralelización utilizar?

    Monografias.com

    6
    Generación de Números Primos
    bool TestForPrime(int val)
    { // let's start checking from 3
    int limit, factor = 3;
    limit = (long)(sqrtf((float)val)+0.5f);
    while( (factor < = limit) && (val % factor) )
    factor += 2;

    return (factor > limit);
    }

    void FindPrimes(int start, int end)
    {
    int range = end – start + 1;
    for( int i = start; i < = end; i += 2 )
    {
    if( TestForPrime(i) )
    globalPrimes[gPrimesFound++] = i;
    ShowProgress(i, range);
    }
    }
    (Gp:) i
    (Gp:) factor

    61 3 5 7
    63 3
    65 3 5
    67 3 5 7
    69 3
    71 3 5 7
    73 3 5 7 9
    75 3 5
    77 3 5 7
    79 3 5 7 9

    Monografias.com

    7
    Actividad 1
    Ejecutar la versión serial de los números primos
    Buscar el directorio PrimeSingle
    Compilar con Intel® Parallel Composer en Visual Studio
    Ejecutar algunas veces con rangos diferentes

    Monografias.com

    8
    Metodología de Desarrollo
    Análisis
    Buscar código donde se realiza cómputo intensivo
    Diseño (Introducir Hilos)
    Determinar como implementar una solución paralelizada
    Depurar
    Detectar cualquier problema como resultado de usar hilos
    Afinar para mejorar el rendimiento
    Lograr el mejor rendimiento en paralelo

    Monografias.com

    9
    Ciclo de Desarrollo

    Análisis
    Intel® Parallel Amplifier
    Diseño (Introducir Hilos)
    Intel® Performance libraries: IPP y MKL
    OpenMP* (Intel® Parallel Composer)
    Creción explícita de hilos (Win32*, Pthreads*)
    Depuración
    Intel® Parallel Inspector
    Intel Debugger
    Afinar para mejorar el rendimiento
    Intel® Parallel Amplifier

    Monografias.com

    10
    Usaremos el proyecto PrimeSingle para el análisis
    PrimeSingle < inicio> < fin>

    Ejemplo: ./PrimeSingle 1 1000000

    Análisis de Hotspot
    Usa Parallel Amplifier para encontrar los hotspots en la aplicación
    bool TestForPrime(int val)
    { // let's start checking from 3
    int limit, factor = 3;
    limit = (long)(sqrtf((float)val)+0.5f);
    while( (factor < = limit) && (val % factor))
    factor ++;

    return (factor > limit);
    }

    void FindPrimes(int start, int end)
    {
    // start is always odd
    int range = end – start + 1;
    for( int i = start; i < = end; i+= 2 ){
    if( TestForPrime(i) )
    globalPrimes[gPrimesFound++] = i;
    ShowProgress(i, range);
    }
    }
    Identifica las regiones que consumen tiempo

    Monografias.com

    11
    Análisis – Call Stack
    Inspeccionar el código desde el nodo (TestForPrime)
    Buscar un loop para paralelizar
    Si no se encuentra ninguno, avanza en el call stack hasta encontrar un ciclo adecuado o llamada a función para paralelizar
    Este es el nivel en el árbol de llamadas donde necesitamos paralelizar
    Usado para encontrar el nível apropiado en el árbol de llamadas para paralelizar

    Monografias.com

    12
    Actividad 2
    Ejecuta el código con el rango de '1 5000000' para obtener la medición base
    Tomar nota para referencias futuras
    Hacer el análisis de Hotspots en el código serial
    ¿Qué función se lleva la mayor parte del tiempo?

    Partes: 1, 2

    Página siguiente 

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter