Introduction to Parallel Computing: mudanças entre as edições

De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar
Linha 21: Linha 21:
* Cuda
* Cuda


Each of the above techniques would merit a course of their own, as done in many of the best universities. Therefore we aim at attaining a practical familiarity with each at the first half of the course, and we will specialize in the later part of the course as to help the students' research.
Each of the above techniques would merit a course of their own, as done in many of the best universities. Therefore we aim at attaining a practical familiarity with each, in the first half of the course, and we will specialize in the later part of the course as to help the students' research.


== Main Resources ==
== Main Resources ==

Edição das 12h01min de 14 de agosto de 2012

This is the main page of a graduate-level course in parallel computing being taught in 2012/2 at the Polytechnic Institute IPRJ/UERJ. It is generally useful for programmers at the advanced level in the fields of scientific and multimedia programming.

General Info

  • Meeting times: Tues 12:30pm-2pm, Thursdays 2:20pm - 4pm
  • Evaluation criteria: 1 quizz at the end of the term (60%), plus practical projects (40%).
  • Forum for file exchange and discussion: uerj.tk

Pre-requisites

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

Each of the above techniques would merit a course of their own, as done in many of the best universities. Therefore we aim at attaining a practical familiarity with each, in the first half of the course, and we will specialize in the later part of the course as to help the students' research.

Main Resources


Lectures

Partial listing & Tentative Outline

  1. Overview of parallel computing: https://computing.llnl.gov/tutorials/parallel_comp/
  2. Review of Linux:
    1. See the book Running Linux http://wiki.nosdigitais.teia.org.br/Literatura_recomendada_pela_equipe
  3. Review of C/C++
  4. Fundamental programming techniques: processes and threads
    1. Read The Unix Programming Environment for some classic multi-process programming[4]
  5. Mapreduce/Hadoop
  6. MPI
  7. 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[5]
  • The project will consist in a series of presentations by the group members

individually.

  • Grade will be asigned to each presentation individually

Project 2

  • 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.