|
|
(2 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) |
Linha 1: |
Linha 1: |
| 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).
| | #REDIRECT [[Introduction_to_Parallel_Computing]] |
| | |
| == 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: [http://golang.org Google Go], Erlang, etc.
| |
| ** Programming for the Playstation 3 parallel architecture[http://groups.csail.mit.edu/cag/ps3/index.shtml]
| |
| * 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[http://books.google.com.br/books?id=SEmfraJjvfwC&printsec=frontcover&hl=pt-BR&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false]
| |
| ** For Cuda: Programming Massively Parallel Processors: A Hands-On Approach[http://books.google.com.br/books?id=qW1mncii_6EC&printsec=frontcover&hl=pt-BR#v=onepage&q&f=false]
| |
| ** 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.
| |
| ** http://software.intel.com/en-us/videos/channel/parallel-programming
| |
| * Wikipedia pages
| |
| ** http://en.wikipedia.org/wiki/Vectorization_%28parallel_computing%29
| |
| ** http://en.wikipedia.org/wiki/Mapreduce
| |
| ** http://en.wikipedia.org/wiki/Hadoop
| |
| * Rice lecture notes on Parallel Computing [http://www.clear.rice.edu/comp422/lecture-notes/index.html]
| |
| * Other Resources
| |
| ** http://www-users.cs.umn.edu/~karypis/parbook/
| |
| ** http://www.cse.iitd.ernet.in/~subodh/courses/CSL860/
| |
| | |
| | |
| === Lectures ===
| |
| | |
| ==== Partial listing & Tentative Outline ====
| |
| # Overview of parallel computing: https://computing.llnl.gov/tutorials/parallel_comp/
| |
| # Review of Linux: | |
| ** See the book Running Linux http://wiki.nosdigitais.teia.org.br/Literatura_recomendada_pela_equipe
| |
| # Review of C/C++
| |
| # Fundamental programming techniques: processes and threads
| |
| ** Read The Unix Programming Environment for some classic multi-process programming[http://wiki.nosdigitais.teia.org.br/Literatura_recomendada_pela_equipe]
| |
| # Mapreduce/Hadoop
| |
| # MPI
| |
| # Cuda
| |
| | |
| | |
| | |
| [[Category:Lab Macambira]] [[Category:IPRJ]]
| |