Introdução à Computação Paralela

De Pontão Nós Digitais
Revisão de 11h36min de 14 de agosto de 2012 por V1z (discussão | contribs) (pagina completa)
Ir para navegaçãoIr para pesquisar

Esta é a pagina principal de um curso de programacao paralela ministrado em 2012 no IPRJ/UERJ, de utilidade geral para a formacao de programadores de nivel avancado na area cientifica e de processamento multimidia (audio-visual).

General Info

  • Meeting times: Tues 12:30pm-2pm, Thursdays 2:20pm - 4pm
  • Evaluation criteria: The class will consist on 1 quizz at the end of the term (60%),

plus practical projects (40%).

Pre-requisites

  • Linux (will be reviewed as needed)
  • C/C++ (will be reviewed)

Approximate Content

The course focuses on software techniques for parallel computing. We are aiming at a comprehensive treatment on different types of practical parallel programming techniques

  • process-oriented parallel programming
  • thread programming/thread safety
  • single-core vector instructions
  • multi-processor and multi-core programming
  • mapreduce/hadoop
  • MPI
  • Cuda


Homework

Project 1

  • The class will be divided into interest groups
  • The interest groups will each pick one of the following technologies or else propose another one of their liking.
    • mapreduce/hadoop
    • MPI
    • Cuda
    • Hybrid technologies (Distributed + Cuda)
    • Languages designed for concurrency: Google Go, Erlang, etc.
    • Programming for the Playstation 3 parallel architecture[1]
  • The project will consist in a series of presentations by the group members

individually.

  • Grade will be asigned to each presentation individually

Project 1

  • This project will consist on a practical programming problem from the

student's research. The student is required to describe a problem from his research and present a parallel implementation of some aspect of it.

  • This will be evaluated through actual code and acompanying monograph.

Main Resources

  • Textbooks
    • 1st part of the course: "Is Parallel Programming Hard, and, if so, what can you do about it?" - Paul E. McKenney / IBM (editor).
    • For MPI: "An Introduction to Parallel Programming" , by Peter Pacheco[2]
    • For Cuda: Programming Massively Parallel Processors: A Hands-On Approach[3]
    • General textbook: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Second Edition, Addison-Wesley, 2003.
    • Algorithms-oriented textbook: Algorithms: sequential, parallel, and

distributed, Kenneth A. Berman, Jerome L. Paul


Lectures

Partial listing & Tentative Outline

  1. Overview of parallel computing: https://computing.llnl.gov/tutorials/parallel_comp/
  2. Review of Linux:
  1. Review of C/C++
  2. Fundamental programming techniques: processes and threads
    • Read The Unix Programming Environment for some classic multi-process programming[5]
  1. Mapreduce/Hadoop
  2. MPI
  3. Cuda