<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>http://wiki.nosdigitais.teia.org.br/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RayMath</id>
	<title>Pontão Nós Digitais - Contribuições do usuário [pt-br]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.nosdigitais.teia.org.br/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RayMath"/>
	<link rel="alternate" type="text/html" href="http://wiki.nosdigitais.teia.org.br/Especial:Contribui%C3%A7%C3%B5es/RayMath"/>
	<updated>2026-04-22T00:12:57Z</updated>
	<subtitle>Contribuições do usuário</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>http://wiki.nosdigitais.teia.org.br/index.php?title=Introduction_to_Parallel_Computing&amp;diff=6595</id>
		<title>Introduction to Parallel Computing</title>
		<link rel="alternate" type="text/html" href="http://wiki.nosdigitais.teia.org.br/index.php?title=Introduction_to_Parallel_Computing&amp;diff=6595"/>
		<updated>2012-08-20T22:12:03Z</updated>

		<summary type="html">&lt;p&gt;RayMath: /* Homework 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the main page of a graduate-level course in parallel computing being taught in 2012/2 at the Polytechnic Institute [http://pt.wikipedia.org/wiki/IPRJ IPRJ]/UERJ. It is generally useful for programmers at the advanced level in the fields of scientific and multimedia programming.&lt;br /&gt;
&lt;br /&gt;
== General Info ==&lt;br /&gt;
* Meeting times: Tues 12:30pm-2pm, Thursdays 2:20pm - 4pm&lt;br /&gt;
* Evaluation criteria: 1 quizz at the end of the term (60%), plus practical projects (40%).&lt;br /&gt;
* Forum for file exchange and discussion: [http://uerj.tk uerj.tk]&lt;br /&gt;
&lt;br /&gt;
=== Pre-requisites ===&lt;br /&gt;
* Linux - intermediate to advanced (will be reviewed as needed) - read [[Literatura recomendada pela equipe]]&lt;br /&gt;
* C/C++ - intermediate to advanced (will be reviewed) - read [[Literatura recomendada pela equipe]]&lt;br /&gt;
&lt;br /&gt;
== Approximate Content ==&lt;br /&gt;
&lt;br /&gt;
The course focuses on software techniques for parallel computing.  We are aiming at a comprehensive treatment on different types of practical parallel programming techniques&lt;br /&gt;
* process-oriented parallel programming&lt;br /&gt;
* thread programming/thread safety&lt;br /&gt;
* single-core vector instructions&lt;br /&gt;
* multi-processor and multi-core programming&lt;br /&gt;
* mapreduce/hadoop&lt;br /&gt;
* MPI&lt;br /&gt;
* Cuda&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Main Resources ==&lt;br /&gt;
&lt;br /&gt;
* Textbooks&lt;br /&gt;
** 1st part of the course: [http://kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.html &amp;quot;Is Parallel Programming Hard, and, if so, what can you do about it?&amp;quot; - Paul E. McKenney / IBM (editor)].&lt;br /&gt;
** For MPI: &amp;quot;An Introduction to Parallel Programming&amp;quot; , by Peter Pacheco[http://books.google.com.br/books?id=SEmfraJjvfwC&amp;amp;printsec=frontcover&amp;amp;hl=pt-BR&amp;amp;source=gbs_ge_summary_r&amp;amp;cad=0#v=onepage&amp;amp;q&amp;amp;f=false]&lt;br /&gt;
** For Cuda: Programming Massively Parallel Processors: A Hands-On Approach[http://books.google.com.br/books?id=qW1mncii_6EC&amp;amp;printsec=frontcover&amp;amp;hl=pt-BR#v=onepage&amp;amp;q&amp;amp;f=false]&lt;br /&gt;
** General textbook: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Second Edition, Addison-Wesley, 2003.&lt;br /&gt;
** Algorithms-oriented textbook: Algorithms: sequential, parallel, and distributed, Kenneth A. Berman, Jerome L. Paul&lt;br /&gt;
*** For more theoretical info, see the chapter on parallel algorits in Cormen's classical algorithms book.&lt;br /&gt;
* Mapreduce, GFS, and Bigtable:&lt;br /&gt;
** Papers from Google&lt;br /&gt;
** http://code.google.com/edu/parallel/mapreduce-tutorial.html&lt;br /&gt;
** Wikipedia &lt;br /&gt;
** Hadoop documentation&lt;br /&gt;
* Presentations from IBM and Intel: Cilk, etc.&lt;br /&gt;
** http://software.intel.com/en-us/videos/channel/parallel-programming&lt;br /&gt;
* Wikipedia pages&lt;br /&gt;
** http://en.wikipedia.org/wiki/Vectorization_%28parallel_computing%29&lt;br /&gt;
** http://en.wikipedia.org/wiki/Mapreduce&lt;br /&gt;
** http://en.wikipedia.org/wiki/Hadoop&lt;br /&gt;
* Rice lecture notes on Parallel Computing [http://www.clear.rice.edu/comp422/lecture-notes/index.html]&lt;br /&gt;
* Other Resources&lt;br /&gt;
** http://www-users.cs.umn.edu/~karypis/parbook/&lt;br /&gt;
** http://www.cse.iitd.ernet.in/~subodh/courses/CSL860/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lectures ===&lt;br /&gt;
&lt;br /&gt;
==== Partial listing &amp;amp; Tentative Outline ====&lt;br /&gt;
# Overview of parallel computing: https://computing.llnl.gov/tutorials/parallel_comp/&lt;br /&gt;
# Review of Linux: &lt;br /&gt;
## See the book Running Linux http://wiki.nosdigitais.teia.org.br/Literatura_recomendada_pela_equipe&lt;br /&gt;
# Review of C/C++&lt;br /&gt;
# Fundamental programming techniques: processes and threads&lt;br /&gt;
## Read The Unix Programming Environment for some classic multi-process programming[http://wiki.nosdigitais.teia.org.br/Literatura_recomendada_pela_equipe]&lt;br /&gt;
# Mapreduce/Hadoop&lt;br /&gt;
# MPI&lt;br /&gt;
# Cuda&lt;br /&gt;
&lt;br /&gt;
== Homework ==&lt;br /&gt;
=== Homework 1 ===&lt;br /&gt;
Our insitute is planning on buying a supercomputer. Therefore, our first homework will consist on studying these systems in detail.&lt;br /&gt;
&lt;br /&gt;
* The class shall be divided into groups of 2 people.&lt;br /&gt;
* Each group must pick one top 500 ((http://www.top500.org/) supercomputer and write on this wiki:&lt;br /&gt;
** Team number:&lt;br /&gt;
** Supercomputer:&lt;br /&gt;
&lt;br /&gt;
* Each class will start with a 20min presentation from a '''random''' group (or a volunteer group).&lt;br /&gt;
* A handout must also be provided on Tue August 28&lt;br /&gt;
* Your project must not be a plain copy from wikipedia!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Contents of the presentation and report&lt;br /&gt;
* Overview of the system&lt;br /&gt;
* Glossary of terms&lt;br /&gt;
* '''How to program for the system'''&lt;br /&gt;
* Software infrastructure&lt;br /&gt;
* How does this differ from a conventional cluster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Groups'''&lt;br /&gt;
&lt;br /&gt;
* Team 1: Julio Stutz &amp;amp; Joel Sanchez  &lt;br /&gt;
** Supercomputer: Tupã (Inpe/Brazil)&lt;br /&gt;
&lt;br /&gt;
* Team 2: Claudir Oliver &amp;amp; Luiz Rosalba&lt;br /&gt;
** Supercomputer: Tianhe-1A (China)&lt;br /&gt;
&lt;br /&gt;
* Team 3: Mateus Guida &amp;amp; Dario Sanchez&lt;br /&gt;
** Supercomputer: Sequoia (Laborátório Nacional Lawrence Livermore - Califórnia - EUA)&lt;br /&gt;
&lt;br /&gt;
* Team 4: Lyvia Aloquio &amp;amp; Stella Oggioni &lt;br /&gt;
** Supercomputer: Grifo04 (PETROBRAS/Brazil)&lt;br /&gt;
&lt;br /&gt;
* Team 5: Ricardo Dias&lt;br /&gt;
** Supercomputer: Mole-8.5 (Institute of Process Engineering, Chinese Academy of Sciences/China)&lt;br /&gt;
&lt;br /&gt;
* Team 6: Davi José &amp;amp; Frederico Santos&lt;br /&gt;
** Supercomputer: Helios (International Fusion Energy Research Centre (IFERC), EU(F4E) - Japan Broader Approach collaboration)&lt;br /&gt;
&lt;br /&gt;
* Team 7: Josecley &amp;amp; Marciana&lt;br /&gt;
** Supercomputer: Fermi - BlueGene/Q, Power BQC 16C 1.60GHz, Custom - Cit Bologna; Country Italy.&lt;br /&gt;
&lt;br /&gt;
* Team 8: Raimundo &amp;amp; Thiago&lt;br /&gt;
** Supercomputer: Pleiades - NASA/Ames Research Center/ NAS - United States.&lt;br /&gt;
&lt;br /&gt;
=== Project 1 ===&lt;br /&gt;
* The class will be divided into interest groups&lt;br /&gt;
* The interest groups will each pick one of the following technologies or else propose another one of their liking. &lt;br /&gt;
** mapreduce/hadoop&lt;br /&gt;
** MPI&lt;br /&gt;
** Cuda &lt;br /&gt;
** Hybrid technologies (Distributed + Cuda)&lt;br /&gt;
** Languages designed for concurrency: [http://golang.org Google Go], Erlang, etc.&lt;br /&gt;
** Programming for the Playstation 3 parallel architecture[http://groups.csail.mit.edu/cag/ps3/index.shtml]&lt;br /&gt;
* The project will consist in a series of presentations by the group members individually.&lt;br /&gt;
* Grade will be asigned to each presentation individually&lt;br /&gt;
&lt;br /&gt;
=== Project 2 ===&lt;br /&gt;
* This project will consist on a practical programming problem from the&lt;br /&gt;
student's research. The student is required to describe a problem from his&lt;br /&gt;
research and present a parallel implementation of some aspect of it. &lt;br /&gt;
* This will be evaluated through actual code and acompanying monograph.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Lab Macambira]] [[Category:IPRJ]]&lt;/div&gt;</summary>
		<author><name>RayMath</name></author>
	</entry>
</feed>