Introduction to Parallel Computing: mudanças entre as edições
(→Groups to Project 1: postei trabalho do julio) |
|||
Linha 142: | Linha 142: | ||
* '''Hybrid technologies (Distributed + Cuda)''': Ricardo Dias ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/dias/apresentacao.pdf slides]) ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/dias/codigo/ code]) | * '''Hybrid technologies (Distributed + Cuda)''': Ricardo Dias ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/dias/apresentacao.pdf slides]) ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/dias/codigo/ code]) | ||
* '''Cuda/OpenCL''': Joel Sanchez ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/sanchez/gpu_cuda.pdf slides]) ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/sanchez/codigo/ code]) | * '''Cuda/OpenCL''': Joel Sanchez ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/sanchez/gpu_cuda.pdf slides]) ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/sanchez/codigo/ code]) | ||
* '''OPENGL/GLSL''' : Luiz Rosalba | * '''OPENGL/GLSL''' : Luiz Rosalba - 08/11/2012 | ||
* '''mapreduce/hadoop''' : Julio Stutz ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/stutz/mapreduce-hadoop.pdf slides]) | * '''mapreduce/hadoop''' : Julio Stutz ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/stutz/mapreduce-hadoop.pdf slides]) | ||
* '''Google Go''' : Mateus Guida ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/guida/google_go.pdf slides]) | * '''Google Go''' : Mateus Guida ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/guida/google_go.pdf slides]) |
Edição das 13h11min de 13 de novembro 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
- Instructor: prof. Ricardo Fabbri, Ph.D. Brown University
- 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
- Linux - intermediate to advanced (will be reviewed as needed) - read Recommended Reading
- C/C++ - intermediate to advanced (will be reviewed) - read Recommended Reading
- Basic understanding of computer architecture - read "Computer Systems: A Programmer's perspective" listed at Recommended Reading.
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/OpenCL
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' graduate research.
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[1]
- For Cuda/OpenCL: Programming Massively Parallel Processors: A Hands-On Approach[2]
- 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
- For more theoretical info, see the chapter on parallel algorits in Cormen's classical algorithms book.
- Mapreduce, GFS, and Bigtable:
- Papers from Google
- http://code.google.com/edu/parallel/mapreduce-tutorial.html
- Wikipedia
- Hadoop documentation
- Presentations from IBM and Intel: Cilk, etc.
- Wikipedia pages
- Rice lecture notes on Parallel Computing [3]
- Other Resources
- http://www-users.cs.umn.edu/~karypis/parbook/
- http://www.cse.iitd.ernet.in/~subodh/courses/CSL860/
- Running Hadoop On Ubuntu Linux Multi and Single Node Cluster [4]
Lectures
NOTE: There will be no lectures from Oct 4 - Oct 19 2012
Partial listing & Tentative Outline
- Overview of parallel computing: https://computing.llnl.gov/tutorials/parallel_comp/
- Review of Linux:
- See the book Running Linux from the Recommended Reading
- Review of C/C++ (finished 28/Aug)
- Fundamental programming techniques: processes and threads
- Read The Unix Programming Environment for some classic multi-process programming[5]
- What is a process: http://linuxgazette.net/133/saha.html
- 30/Aug: We'll be following the McKenney Book, ch 3 at the lab.
- Up to (and including) 18/Sept: We followed McKenney's code samples for counting algorithms and his Threading API in detail
- 20/Sept: Finished statistic counters and showed how to read assembly language generated by GCC, and how to disassemble binary objects
- 25/Sept: Finished theoretical thread content for the course: up until ch. 5 of McKenney's Book + Semaphores + Thread Safety.
- Homework 2 (see below)
- Cuda/OpenCL (02/Oct)
- Project 1 handout (see below) due Oct. 23
- Mapreduce/Hadoop
- MPI
Homework
Homework 1
Our insitute is planning on buying a supercomputer. Therefore, our first homework will consist on studying these systems in detail.
- The class shall be divided into groups of 2 people.
- Each group must pick one top 500 (http://www.top500.org) supercomputer and write on this wiki:
- Team number:
- Supercomputer:
- Each class will start with a 20min presentation from a random group (or a volunteer group).
- A handout must also be provided on Tue August 28
- Your project must not be a plain copy from wikipedia!
Contents of the presentation and report
- Overview of the system
- Glossary of terms
- How to program for the system
- Software infrastructure
- How does this differ from a conventional cluster.
Groups
- Team 1: Julio Stutz & Joel Sanchez
- Team 2: Claudir Oliver & Luiz Rosalba
- Team 3: Mateus Guida
- Team 4: Lyvia Aloquio & Stella Oggioni
- Supercomputer: Grifo04 (PETROBRAS/Brazil)
- Team 5: Ricardo Dias
- Team 6: Frederico Santos
- Supercomputer: Helios (International Fusion Energy Research Centre (IFERC), EU(F4E) - Japan Broader Approach collaboration) (report)
- Team 7: Thiago Luiz
- Supercomputer: Pleiades - NASA/Ames Research Center/ NAS - United States.
Homework 2: limit counters
Describe the limit counter implementations of sec. 4.3 in McKenney's Book, answering:
- list and explain the advantages of each counter
- explain the main concepts of each method in your words
Due date: Oct 1 (was: Sept 27)
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.
- The project will consist in a series of presentations by the group members individually.
- Grade will be asigned to each presentation individually
Groups to Project 1
- MPI: Claudir Oliveira - 25/10/2012 (slides) (code)
- Hybrid technologies (Distributed + Cuda): Ricardo Dias (slides) (code)
- Cuda/OpenCL: Joel Sanchez (slides) (code)
- OPENGL/GLSL : Luiz Rosalba - 08/11/2012
- mapreduce/hadoop : Julio Stutz (slides)
- Google Go : Mateus Guida (slides)
- Programming for the Playstation 3 parallel architecture: Thiago Luiz
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.
Class exercies
- In-class assignment (extra .1 in the final test): Compare 3 different implementation of statistic counters: array of per-thread variables, eventuallly consistent counter and GCC __thread variables
- Only Julio Stutz scored the extra +0.1 on the final exam.
Keywords
Portuguese: Programação Paralela, Introdução à Computação Paralela