Difference between revisions of "Introducción a la programación paralela"

From Supercomputación y Cálculo Científico UIS
Line 62: Line 62:
 
#* Explotación de Memoria
 
#* Explotación de Memoria
 
#* Paradigmas de Programación Emergentes
 
#* Paradigmas de Programación Emergentes
<div class="panel panel-darker-white-border"><div class="panel-body"><p>Las sesiones se realizan en el CENTIC.</p>
 
        </div>
 
    </div>
 
 
</div>
 
</div>
  
 
<div class="col-md-14">
 
<div class="col-md-14">
     <div class="panel panel-darker-white-border">
+
     <div class="panel panel-darker-white"><div class="panel-body">                                       </div></div>
        <div class="panel-heading">
 
            <h3 class="panel-title">Contenido</h3>
 
        </div>
 
        <div class="panel-body">
 
            <ol>
 
                <li>Introducción a la Programación Paralela</li>
 
                <li>Introducción a las Arquitecturas y Sistemas Escalables</li>
 
                <li>Algoritmos Concurrentes y Paralelos</li>
 
                <li>Modelos de Programación Paralela (Introducción a la programación de Memoria Distribuida, Introducción a la programación de Memoria</li>
 
                <li>Compartida, Introducción al a programación de maquinas masivamente paralelas y sistemas híbridos)</li>
 
                <li>Lineamientos para el desarrollo de Aplicaciones Paralelas</li>
 
                <li>Evaluación de Desempeño</li>
 
                <li>Direcciones y Temas Candentes en Programación Paralela</li>
 
            </ol>
 
        </div>
 
    </div>
 
</div>
 
 
 
<div class="col-md-14">
 
    <div class="panel panel-darker-white-border">
 
        <div class="panel-heading">
 
            <h3 class="panel-title">ASPECTOS METODOLOGICOS</h3>
 
        </div>
 
        <div class="panel-body">
 
            <ol>
 
                <li>Sesiones Teórico-Prácticas</li>
 
                <li>Lecturas y Discusiones de Artículos (La mayoría en Inglés)</li>
 
                <li>Observación y Análisis de Aplicaciones y Propuestas</li>               
 
            </ol> 
 
        </div>
 
    </div>
 
</div>
 
 
 
<div class="col-md-14">
 
    <div class="panel panel-darker-white-border">  
 
        <div class="panel-heading">
 
            <h3 class="panel-title">MATERIAL DEL CURSO 2012</h3>
 
        </div>
 
        <div class="panel-body">
 
            <ol>
 
                <li>Sesión</li>
 
                    <ul>
 
                        <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/lXyulyKWnzec0Ku Introduction to Parallel Programming (And Parallel Systems)]</li>
 
                        <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/EdMZAFDYEr0505i Programación Paralela y Programación Científica desde la E-Ciencia y El Cómputo Avanzado]</li>
 
                    </ul>
 
                <li>Sesión</li>
 
                    <ul>
 
                        <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/2LoPD79xsRmeOJZ Scalable Systems and Architectures]</li>
 
                        <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/W8hRnaAiuJZOwZf Concurrency and Parallel Programming]</li>
 
                    </ul>
 
                <li>Sesión</li>
 
                    <ul>
 
                        <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/AqA5G1u8DRp022P Management, Scheduling and Deployment in HPC]</li>
 
                    </ul>
 
                <li>Sesión</li>
 
                    <ul>
 
                        <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/865jnQY4XBwPVNX Introducción a la Programacion de Memoria Compartida con OpenMP]</li>
 
                    </ul>
 
                <li>Sesión</li>
 
                    <ul>
 
                        <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/8PwF3DWMTAcXgk5 Introducción a la Programación de Memoria Distribuída con MPI]</li>
 
                    </ul>
 
                <li>Sesión</li>
 
                    <ul>
 
                        <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/2fBpzrSiHeFomFZ Introducción a la Programación con CUDA]</li>
 
                        <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/O2tsn4yGI6YAWlC GPU Programming with Nvidia CUDA]</li>
 
                    </ul>
 
                <li>Sesión</li>
 
                    <ul>
 
                        <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/DIxUlUB48IMlSAO Evaluación de Rendimiento - Una aproximación de base]</li>
 
                    </ul>
 
                <li>Sesión</li>
 
                    <ul>
 
                        <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/GE28yyeAdkN1kuw Direcciones y Temas Candentes]</li>
 
                    </ul>           
 
            </ol>
 
            <p><b>Lecturas sugeridas</b></p>
 
            <p>De The Fourth Paradigm: Data Intensive Scientific Discovery</p>
 
            <ul>
 
                <li>[http://research.microsoft.com/en-us/collaboration/fourthparadigm/4th_paradigm_book_jim_gray_transcript.pdf Jim Gray on eScience: A Transformed Scientific Method - (Tony Hey, Stewart Tansley, and Kristin Tolle)]</li>
 
                <li>[http://research.microsoft.com/en-us/collaboration/fourthparadigm/4th_paradigm_book_part3_gannon_reed.pdf Parallelism and The Cloud - (Dennis Gannon, Dan Reed)]</li>
 
                <li>[http://research.microsoft.com/en-us/collaboration/fourthparadigm/4th_paradigm_book_part3_larus_gannon.pdf Multicore Computing and Scientific Discovery - (James Larus, Dennis Gannon)]</li>
 
            </ul>   
 
        </div>
 
    </div>
 
</div>
 
 
 
<div class="col-md-14">
 
    <div class="panel panel-darker-white-border">
 
        <div class="panel-heading">
 
            <h3 class="panel-title">MATERIAL DEL CURSO 2013 - 2014</h3>
 
        </div>
 
        <div class="panel-body">
 
            <ul>
 
                <li>Introducción</li>
 
                <li>Arquitecturas Paralelas</li>
 
                <li>Concurrencia y Paralelismo</li>
 
                <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/tFnLLTrvr7Jonal Modelo de Programacion de Memoria Compartida] - [http://openmp.org/wp OpenMP]</li>
 
                <li>[http://www.sc3.uis.edu.co/owncloud/index.php/s/XPIbNBqLqtma6Am Modelo de Programación de Memoria Distribuída] -  [http://www.open-mpi.org OpenMPI]</li>
 
            </ul>       
 
        </div>
 
    </div>
 
</div>
 
 
 
<div class="col-md-14">
 
    <div class="panel panel-darker-white">
 
        <div class="panel-heading">
 
            <h3 class="panel-title">EVALUACIONES</h3>
 
        </div>
 
        <div class="panel-body">
 
 
 
 
 
            <div class="col-md-12">
 
                <div class="panel panel-midnight-border">
 
                    <div class="panel-heading">
 
                        <h3 class="panel-title">(30%) Examen de Conocimientos Único</h3>
 
                    </div>
 
 
 
                    <div class="panel-body">                       
 
                        <p>Este examen de conocimientos es un analisis de caso, se realizará en el tiempo de la clase de manera individual. Incluye un punto de los trabajos presentados por sus compañeros.</p>
 
                    </div>
 
                    <div class="panel-footer">Examen</div>
 
                </div>
 
            </div>
 
 
 
            <div class="col-md-12">
 
                <div class="panel panel-midnight-border">
 
                    <div class="panel-heading">
 
                        <h3 class="panel-title">(70%) Trabajo de Aplicación</h3>
 
                    </div>
 
 
 
                    <div class="panel-body">
 
                        <p>El trabajo de aplicación, es un trabajo que se realizará durante todo el semestre y que implica dos entregas previas, un seguimiento del trabajo realizado y una entrega final, observando unos parametros de evaluación que son:  </p>
 
                        <p><b>Criterios:</b></p>
 
                            <ul>
 
                                <li>Calidad del Análisis y Diseño de la Solución</li>
 
                                <li>Eficiencia y Rendimiento de la Solución Propuesta</li>
 
                                <li>Calidad del Proyecto (Estructura, Documentación, Coherencia)</li>
 
                                <li>Evaluación de Rendimiento (Identificación de Limitaciones)</li>
 
                                <li>Organización y Presentación de los informes previos y de la presentación final.</li>
 
                            </ul>
 
                        <p></p>
 
                        <p>Los pesos de cada una de las entregas son:</p>
 
                            <ul>
 
                                <li>Informe Inicial (20/70)</li>
 
                                <li>Informe de Avance (20/70)</li>
 
                                <li>Informe y Presentación Final (30/70) </li>
 
                            </ul>
 
                        <p></p>
 
                        <p>Los trabajos se realizarán de manera individual y las entregas y seguimiento se hará de la siguiente manera:</p>
 
                            <ol>
 
                                <li>Entrega de los temas</li>
 
                                <li>Entrega del Primer Informe que implica el análisis y diseño de la solución</li>
 
                                    <ul>
 
                                        <li>Ese informe deberá realizarse de manera escrita a manera de resumen extendido en un documento en pdf, de máximo 6 paginas en columna sencilla, tamaño de la letra 12ppt</li>
 
                                        <li> Discusión y presentación en el tablero en una sesión privada</li>
 
                                    </ul>
 
                                <li>Informe de Avance</li>
 
                                    <ul>
 
                                        <li>Este informe de avance deberá exponerse unicamente, usando máximo 5 diapositivas y 10 minutos de presentación al profesor. Deberá estar planteado el algoritmo final de la solución, seudocodigo, tipo de lenguaje a utilizar, estrategia de implementación y aspectos tecnicos esperados</li>
 
                                    </ul>
 
                                <li>Informe y Presentación Final</li>
 
                                    <ul>
 
                                        <li>Se presentará en un documento escrito, tipo artículo, en español, de máximo 10 páginas en un documento pdf, tipo de fuente Arial y tamaño de letra 12ppt, en columna sencilla. El documento se enviará al correo que el profesor indique el dia</li>
 
                                        <li>Se realizará una presentación de 10 minutos incluyendo un demo del prototipo o solución realizada, tanto el codigo fuente como las instrucciones de compilación y ejecución deberan enviarse al profesor previamente</li>
 
                                    </ul>
 
                                </ol>
 
                    </div>
 
                    <div class="panel-footer">Trabajo de Aplicación</div>
 
                </div>
 
            </div>
 
 
 
           
 
       
 
        </div>
 
        <div class="panel-footer">Evaluaciones</div>
 
    </div>
 
 
</div>
 
</div>
  

Revision as of 16:11, 11 August 2018

Volver a Cursos

Introducción a la Programación Paralela - Código 28661

Carlos Jaime Barrios Hernandez, PhD. - (c b a r r i o s (@) u i s . e d u . c o )

Asistencia Técnica-Teóric:. Equipo SC3UIS y CAGE

NoThanksButWereBusy.png

PRESENTACION DEL CURSO

La ruptura tecnológica hace que la computación sea quizás el área del conocimiento más dinámico que existe y que no solo promueve tendencias sino también cambios sociales, desde que la información y su tratamiento no solo es una necesidad sino una exigencia. La computación paralela, si bien no es nada nuevo, como parte de esa "exigencia" permite la explotación de sistemas que desde hace más de treinta años están disponibles, pero que en algunos medios se ve aún como algo exótico, ignorando que gracias a esas posibilidades, desde poder escuchar música, hablar y tomar fotos de manera simultánea en un dispositivo móvil, pasando por pronosticar el clima o mercados, almacenar datos en la nube hasta la realidad de implementar soluciones y algoritmos de inteligencia artificial hoy, existe porque hay múltiples unidades de procesamiento que pueden ser programadas de manera paralela y concurrente.

El curso, que es introductorio, esta dirigido a estudiantes de ingeniería de sistemas y ciencias de la computación, cuyo principal objetivo es ofrecer fundamentos para la explotación de la concurrencia, la explotación de paradigmas de programación dirigidos al paralelismo, sin ignorar algunos conceptos arquitecturales necesarios para entender que soporta ese procesamiento en paralelo. A partir de este curso, los participantes manejaran la terminología necesaria igualmente y tendrán la base para a partir de allí seguir cursos avanzados y seminarios especializados.

Contenido

  1. Introducción a la Computación Paralela
    • Pensamiento Paralelo y Pervasibidad
    • Paralelismo
  2. Arquitecturas Paralelas y Sistemas Escalables
    • Modelos de Máquinas Paralelas
    • Paralelismo y Comunicación
    • Caracterización de Flynn
    • Multinucleos y Multiprocesamiento
    • Arquitecturas para el Procesamiento Masivamente Paralelo (Manycores)
    • Modelos de Memoria
    • Sistemas Distribuidos de Gran Escala
  3. Algoritmos Concurrentes y Paralelos
    • Caracterización de Paralelismo
    • Granularidad
    • Multihilos y Multiprocesos
    • Modelos de Computación (RAM, PRAM, Sorting Networks, BSP, LogP y otros)
    • Modelos de Algoritmos Concurrentes
      • Descomposición de Tareas
      • Descomposición de Datos
    • Algoritmos No Paralelos
    • Balanceo de Carga y Calendarización (Scheduling)
  4. Paradigmas y Modelos de Programación Paralela
    • Ambientes de Programación Paralela
    • Programación de Sistemas CPU-GPU (Sistemas GPGPU)
      • Fundamentos de Programación de GPUs y Múltiples GPU
  5. Optimización
  6. Debugging y Profling
  7. Evaluación de Desempeño
    • Latencia y Throughput
    • Speedup (Aceleración), Eficiencia y Escalabilidad
    • Ley de Amhdal
    • Ley de Gustaffon-Barsis
    • Complejidad Asimptótica (Aceleración y Eficiencia)
    • Modelo de Little
  8. Lineamientos para el Desarrollo de Aplicaciones Paralelas
    • Patrones para el Flujo de Control y de Ejecución
    • Patrones para la Administración de Datos
    • Espacios de Diseño y Desarrollo de Programas Paralelos
      • Búsqueda de Explotación de Concurrencia
      • Diseño de Estructura de Algoritmo
      • Selección de Estructuras de Soporte de Algoritmos Paralelos
      • Selección de Mecanismos de Implementación
  9. Direcciones y Tendencias en Programación Paralela
    • Explotación de Unidades Tensor y Aplicaciones Emergentes
    • Extracción de Paralelismo en Códigos Secuenciales
    • Explotación de Memoria
    • Paradigmas de Programación Emergentes

BIBLIOGRAFÍA Y FUENTES DE INFORMACION