<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>http://wiki.nosdigitais.teia.org.br/index.php?action=history&amp;feed=atom&amp;title=Introduction_to_Parallel_Computing_2014</id>
	<title>Introduction to Parallel Computing 2014 - Histórico de revisão</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.nosdigitais.teia.org.br/index.php?action=history&amp;feed=atom&amp;title=Introduction_to_Parallel_Computing_2014"/>
	<link rel="alternate" type="text/html" href="http://wiki.nosdigitais.teia.org.br/index.php?title=Introduction_to_Parallel_Computing_2014&amp;action=history"/>
	<updated>2026-04-21T13:12:47Z</updated>
	<subtitle>Histórico de revisões para esta página neste wiki</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>http://wiki.nosdigitais.teia.org.br/index.php?title=Introduction_to_Parallel_Computing_2014&amp;diff=34205&amp;oldid=prev</id>
		<title>V1z: Desfeita a edição 34204 de V1z (Discussão)</title>
		<link rel="alternate" type="text/html" href="http://wiki.nosdigitais.teia.org.br/index.php?title=Introduction_to_Parallel_Computing_2014&amp;diff=34205&amp;oldid=prev"/>
		<updated>2015-03-26T11:21:04Z</updated>

		<summary type="html">&lt;p&gt;Desfeita a edição 34204 de &lt;a href=&quot;/Especial:Contribui%C3%A7%C3%B5es/V1z&quot; title=&quot;Especial:Contribuições/V1z&quot;&gt;V1z&lt;/a&gt; (&lt;a href=&quot;/index.php?title=Usu%C3%A1rio_Discuss%C3%A3o:V1z&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Usuário Discussão:V1z (página inexistente)&quot;&gt;Discussão&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pt-BR&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Edição anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Edição das 08h21min de 26 de março de 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Linha 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linha 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== General Info ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== General Info ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Instructor: prof. [http://www.lems.brown.edu/~rfabbri Ricardo Fabbri], Ph.D. Brown University&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Instructor: prof. [http://www.lems.brown.edu/~rfabbri Ricardo Fabbri], Ph.D. Brown University&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Meeting times: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Thursdays 8&lt;/del&gt;:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;50am&lt;/del&gt;-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;12&lt;/del&gt;:20pm&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, room 210&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Meeting times: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Tues 12&lt;/ins&gt;:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;30pm&lt;/ins&gt;-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2pm, Thursdays 2&lt;/ins&gt;:20pm &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;- 4pm&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Evaluation criteria: 1 quizz at the end of the term (60%), plus practical projects (40%).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Evaluation criteria: 1 quizz at the end of the term (60%), plus practical projects (40%).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Forum for file exchange and discussion: [http://uerj.tk uerj.tk]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Forum for file exchange and discussion: [http://uerj.tk uerj.tk]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>V1z</name></author>
	</entry>
	<entry>
		<id>http://wiki.nosdigitais.teia.org.br/index.php?title=Introduction_to_Parallel_Computing_2014&amp;diff=34204&amp;oldid=prev</id>
		<title>V1z: /* General Info */</title>
		<link rel="alternate" type="text/html" href="http://wiki.nosdigitais.teia.org.br/index.php?title=Introduction_to_Parallel_Computing_2014&amp;diff=34204&amp;oldid=prev"/>
		<updated>2015-03-26T11:07:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;General Info&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pt-BR&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Edição anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Edição das 08h07min de 26 de março de 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Linha 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linha 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== General Info ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== General Info ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Instructor: prof. [http://www.lems.brown.edu/~rfabbri Ricardo Fabbri], Ph.D. Brown University&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Instructor: prof. [http://www.lems.brown.edu/~rfabbri Ricardo Fabbri], Ph.D. Brown University&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Meeting times: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Tues 12&lt;/del&gt;:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;30pm&lt;/del&gt;-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2pm, Thursdays 2&lt;/del&gt;:20pm &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;- 4pm&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Meeting times: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Thursdays 8&lt;/ins&gt;:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;50am&lt;/ins&gt;-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;12&lt;/ins&gt;:20pm&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, room 210&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Evaluation criteria: 1 quizz at the end of the term (60%), plus practical projects (40%).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Evaluation criteria: 1 quizz at the end of the term (60%), plus practical projects (40%).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Forum for file exchange and discussion: [http://uerj.tk uerj.tk]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Forum for file exchange and discussion: [http://uerj.tk uerj.tk]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>V1z</name></author>
	</entry>
	<entry>
		<id>http://wiki.nosdigitais.teia.org.br/index.php?title=Introduction_to_Parallel_Computing_2014&amp;diff=34201&amp;oldid=prev</id>
		<title>V1z: 2014 archive of PP</title>
		<link rel="alternate" type="text/html" href="http://wiki.nosdigitais.teia.org.br/index.php?title=Introduction_to_Parallel_Computing_2014&amp;diff=34201&amp;oldid=prev"/>
		<updated>2015-03-26T10:54:31Z</updated>

		<summary type="html">&lt;p&gt;2014 archive of &lt;a href=&quot;/PP&quot; class=&quot;mw-redirect&quot; title=&quot;PP&quot;&gt;PP&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nova&lt;/b&gt;&lt;/p&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;
[[Imagem:Matrix6.png|right|550px]]&lt;br /&gt;
== General Info ==&lt;br /&gt;
* Instructor: prof. [http://www.lems.brown.edu/~rfabbri Ricardo Fabbri], Ph.D. Brown University&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|Recommended Reading]]&lt;br /&gt;
* C/C++ - intermediate to advanced (will be reviewed) - read [[Literatura recomendada pela equipe|Recommended Reading]]&lt;br /&gt;
** [[Configuring Ubuntu for Programming]]&lt;br /&gt;
* Basic understanding of computer architecture - read  &amp;quot;Computer Systems: A Programmer's perspective&amp;quot; listed at [[Literatura recomendada pela equipe|Recommended Reading]].&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/OpenCL&lt;br /&gt;
* Dataflow techniques&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/OpenCL: 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;
** Running Hadoop On Ubuntu Linux Multi and Single Node Cluster [http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/]&lt;br /&gt;
** Short course on CUDA at [http://webmail.iprj.uerj.br/xvemc/ emc 2012] conference: http://josericardojunior.com/?p=219&lt;br /&gt;
&lt;br /&gt;
=== Lectures ===&lt;br /&gt;
&lt;br /&gt;
''' NOTE: There will be no lectures from Oct 4 - Oct 19 2012'''&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;
## Do the [[Learning the Unix Programming Environment]] tutorial to brush up on your skills&lt;br /&gt;
## See the book Running Linux from the [[Literatura_recomendada_pela_equipe| Recommended Reading]]&lt;br /&gt;
# Review of C/C++ (finished 28/Aug) &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;
## What is a process: http://linuxgazette.net/133/saha.html&lt;br /&gt;
## 30/Aug: We'll be following the McKenney Book, ch 3 at the lab.&lt;br /&gt;
## Up to (and including) 18/Sept: We followed McKenney's code samples for counting algorithms and his Threading API in detail&lt;br /&gt;
### What is variable alignment: [http://www.songho.ca/misc/alignment/dataalign.html] [http://gcc.gnu.org/onlinedocs/gcc-4.0.4/gcc/Type-Attributes.html]&lt;br /&gt;
### How to determine the cache line size for your machine: [http://stackoverflow.com/questions/794632/programmatically-get-the-cache-line-size]. This will give you better results for threading algorithms.&lt;br /&gt;
### Install some documentation useful for POSIX threading:  sudo apt-get install glibc-doc manpages-posix-dev&lt;br /&gt;
## 20/Sept: Finished statistic counters and showed how to read assembly language generated by GCC, and how to disassemble binary objects&lt;br /&gt;
## 25/Sept: Finished theoretical thread content for the course: up until ch. 5 of McKenney's Book + Semaphores + Thread Safety. &lt;br /&gt;
### Homework 2 (see below)&lt;br /&gt;
# Cuda/OpenCL (02/Oct)&lt;br /&gt;
## Project 1 handout (see below) due Oct. 23&lt;br /&gt;
# Mapreduce/Hadoop&lt;br /&gt;
# MPI&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) ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/supercomputers/julio-sanchez/tupa4-supercomputer-report.pdf report]) ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/supercomputers/julio-sanchez/tupa4-supercomputer-presentation.pdf slides])&lt;br /&gt;
* Team 2: Claudir Oliver &amp;amp; Luiz Rosalba&lt;br /&gt;
** Supercomputer: '''Tianhe-1A''' (China) ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/supercomputers/claudir-luiz/tian-he-report.pdf report]) ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/supercomputers/claudir-luiz/tian-he-presentation.pdf slides])&lt;br /&gt;
* Team 3: Mateus Guida&lt;br /&gt;
** Supercomputer: '''Sequoia''' (Laborátório Nacional Lawrence Livermore - Califórnia - EUA) ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/supercomputers/mateus-guida/sequoia-supercomputer-report.pdf report]) ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/supercomputers/mateus-guida/sequoia-supercomputer-presentation-v2.pdf slides])&lt;br /&gt;
* Team 4: Lyvia Aloquio &amp;amp; Stella Oggioni &lt;br /&gt;
** Supercomputer: '''Grifo04''' (PETROBRAS/Brazil)&lt;br /&gt;
* Team 5: Ricardo Dias&lt;br /&gt;
** Supercomputer: '''Mole-8.5''' (Institute of Process Engineering, Chinese Academy of Sciences/China) ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/supercomputers/ricardo/mole-supercomputer-report.pdf report]) ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/supercomputers/ricardo/mole-supercomputer-presentation.pdf slides])&lt;br /&gt;
* Team 6: Frederico Santos&lt;br /&gt;
** Supercomputer: '''Helios''' (International Fusion Energy Research Centre (IFERC), EU(F4E) - Japan Broader Approach collaboration) ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/supercomputers/frederico-santos/helios-report.pdf report])&lt;br /&gt;
* Team 7: Thiago Luiz&lt;br /&gt;
** Supercomputer: '''Pleiades''' - NASA/Ames Research Center/ NAS - United States.&lt;br /&gt;
&lt;br /&gt;
=== Homework 2: limit counters ===&lt;br /&gt;
Describe the limit counter implementations of sec. 4.3 in McKenney's Book, answering: &lt;br /&gt;
# list and explain the advantages of each counter&lt;br /&gt;
# explain the main concepts of each method in your words&lt;br /&gt;
Due date: Oct 1 (was: Sept 27)&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/OpenCL&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;
** OpenGL/GLSL &lt;br /&gt;
** [http://dl.acm.org/citation.cfm?id=1807184 Google Pregel]&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;
&lt;br /&gt;
&lt;br /&gt;
====Groups to Project 1====&lt;br /&gt;
&lt;br /&gt;
* '''MPI''': Claudir Oliveira - 25/10/2012 ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/oliveira/apresentacao.pdf slides]) ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/oliveira/codigo/ code])&lt;br /&gt;
* '''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])&lt;br /&gt;
* '''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])&lt;br /&gt;
* '''OPENGL/GLSL''' : Luiz Rosalba - 08/11/2012 ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/rosalba/glsl_opengl_apresenta.pdf slides])&lt;br /&gt;
* '''mapreduce/hadoop''' : Julio Stutz ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/stutz/mapreduce-hadoop.pdf slides])&lt;br /&gt;
* '''Google Go''' : Mateus Guida ([http://www.lems.brown.edu/~rfabbri/stuff/parallel-computing/technologies/guida/google_go.pdf slides])&lt;br /&gt;
* '''Programming for the Playstation 3''' parallel architecture: Thiago Luiz&lt;br /&gt;
&lt;br /&gt;
=== Project 2 ===&lt;br /&gt;
* 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&lt;br /&gt;
* This will be evaluated through actual code and accompanying monograph&lt;br /&gt;
* Grade: up to 4 extra points in the exam grade&lt;br /&gt;
&lt;br /&gt;
==== Topic Suggestions ====&lt;br /&gt;
For those who haven't found a suitable research topic with their own advisors,&lt;br /&gt;
here is a list of possible ideas. These ideas can have some of my guidance&lt;br /&gt;
during the project, but please let your advisors know about this. Also,&lt;br /&gt;
not all ideas may be very easy to develop a project on and may require &lt;br /&gt;
some thinking on your part in terms of goals and objectives.&lt;br /&gt;
&lt;br /&gt;
Try to email the original authors for the relevant papers for your project in order to get code.&lt;br /&gt;
You have to understand the paper, understand the code, and run the code. You will also&lt;br /&gt;
have to write code or a modification of the existing code, although you have limited time for this.&lt;br /&gt;
&lt;br /&gt;
If you need any of the files below but can't access them from home, let me know&lt;br /&gt;
and I will email you a copy.&lt;br /&gt;
&lt;br /&gt;
* [http://ieeexplore.ieee.org/xpl/login.jsp?tp=&amp;amp;arnumber=5543612&amp;amp;url=http%3A%2F%2Fieeexplore.ieee.org%2Fiel5%2F5521877%2F5543135%2F05543612.pdf%3Farnumber%3D5543612 &amp;quot;Design and Implementation of a Wide Area, Large-Scale Camera Network&amp;quot;, Kuo et. al. 2010]&lt;br /&gt;
** Technology: distributed computing / hadoop&lt;br /&gt;
** Abstract&lt;br /&gt;
   We describe a wide area camera network on a campus&lt;br /&gt;
  setting, the SCALLOPSNet (Scalable Large Optical Sensor&lt;br /&gt;
  Network). It covers with about 100 stationary cameras an&lt;br /&gt;
  expansive area that can be divided into three distinct re-&lt;br /&gt;
  gions: inside a building, along urban paths, and in a re-&lt;br /&gt;
  mote natural reserve. Some of these regions lack connec-&lt;br /&gt;
  tions for power and communications, and, therefore, ne-&lt;br /&gt;
  cessitate wireless, battery-powered camera nodes. In our&lt;br /&gt;
  exploration of available solutions, we found existing smart&lt;br /&gt;
  cameras to be insufficient for this task, and instead designed&lt;br /&gt;
  our own battery-powered camera nodes that communicate&lt;br /&gt;
  using 802.11b. The camera network uses the Internet Pro-&lt;br /&gt;
  tocol on either wired or wireless networks to communi-&lt;br /&gt;
  cate with our central cluster, which runs cluster and cloud&lt;br /&gt;
  computing infrastructure. These frameworks like Apache&lt;br /&gt;
  Hadoop are well suited for large distributed and parallel&lt;br /&gt;
  tasks such as many computer vision algorithms. We discuss&lt;br /&gt;
  the design and implementation details of this network, to-&lt;br /&gt;
  gether with the challenges faced in deploying such a large&lt;br /&gt;
  scale network on a research campus. We plan to make the&lt;br /&gt;
  datasets available for researchers in the computer vision&lt;br /&gt;
  community in the near future.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Web-Scale Computer Vision using MapReduce for Multimedia Data Mining&amp;quot;, White, Yeh, Lin and Davis 2010&lt;br /&gt;
** Technology: Mapreduce&lt;br /&gt;
** Abstract: This work explores computer vision applications of the Map-&lt;br /&gt;
  Reduce framework that are relevant to the data mining com-&lt;br /&gt;
  munity. An overview of MapReduce and common design&lt;br /&gt;
  patterns are provided for those with limited MapReduce&lt;br /&gt;
  background. We discuss both the high level theory and the&lt;br /&gt;
  low level implementation for several computer vision algo-&lt;br /&gt;
  rithms: classifier training, sliding windows, clustering, bag-&lt;br /&gt;
  of-features, background subtraction, and image registration.&lt;br /&gt;
  Experimental results for the k-means clustering and single&lt;br /&gt;
  Gaussian background subtraction algorithms are performed&lt;br /&gt;
  on a 410 node Hadoop cluster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Building Rome on a Cloudless Day&amp;quot;, Frahm et al, 2012&lt;br /&gt;
** Technology: Cuda&lt;br /&gt;
** Abstract:&lt;br /&gt;
  This paper introduces an approach for dense 3D reconstruc- &lt;br /&gt;
  tion from unregistered Internet-scale photo collections with about 3 mil- &lt;br /&gt;
  lion of images within the span of a day on a single PC (“cloudless”). Our &lt;br /&gt;
  method advances image clustering, stereo, stereo fusion and structure &lt;br /&gt;
  from motion to achieve high computational performance. We leverage &lt;br /&gt;
  geometric and appearance constraints to obtain a highly parallel imple- &lt;br /&gt;
  mentation on modern graphics processors and multi-core architectures. &lt;br /&gt;
  This leads to two orders of magnitude higher performance on an order &lt;br /&gt;
  of magnitude larger dataset than competing state-of-the-art approaches.&lt;br /&gt;
&lt;br /&gt;
===== Other interesting works =====&lt;br /&gt;
* &amp;quot;GraphLab: A Distributed Framework for Machine Learning in the Cloud&amp;quot;, Low etal., 2011&lt;br /&gt;
   Machine Learning (ML) techniques are indispensable in&lt;br /&gt;
  a wide range of fields. Unfortunately, the exponential in-&lt;br /&gt;
  crease of dataset sizes are rapidly extending the runtime&lt;br /&gt;
  of sequential algorithms and threatening to slow future&lt;br /&gt;
  progress in ML. With the promise of affordable large-&lt;br /&gt;
  scale parallel computing, Cloud systems offer a viable&lt;br /&gt;
  platform to resolve the computational challenges in ML.&lt;br /&gt;
  However, designing and implementing efficient, provably&lt;br /&gt;
  correct distributed ML algorithms is often prohibitively&lt;br /&gt;
  challenging. To enable ML researchers to easily and effi-&lt;br /&gt;
  ciently use parallel systems, we introduced the GraphLab&lt;br /&gt;
  abstraction which is designed to represent the computa-&lt;br /&gt;
  tional patterns in ML algorithms while permitting effi-&lt;br /&gt;
  cient parallel and distributed implementations.&lt;br /&gt;
  In this paper we provide a formal description of the&lt;br /&gt;
  GraphLab parallel abstraction and present an efficient&lt;br /&gt;
  distributed implementation. We conduct a comprehen-&lt;br /&gt;
  sive evaluation of GraphLab on three state-of-the-art ML&lt;br /&gt;
  algorithms using real large-scale data and a 64 node&lt;br /&gt;
  EC2 cluster of 512 processors. We find that GraphLab&lt;br /&gt;
  achieves orders of magnitude performance gains over&lt;br /&gt;
  Hadoop while performing comparably or superior to&lt;br /&gt;
  hand-tuned MPI implementations.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Parallel Data Mining from Multicore to Cloudy Grids&amp;quot;, Fox et. al. &lt;br /&gt;
 &lt;br /&gt;
   We describe a suite of data mining tools that cover clustering,&lt;br /&gt;
  information retrieval and the mapping of high dimensional data to low dimensions&lt;br /&gt;
  for visualization. Preliminary applications are given to particle physics,&lt;br /&gt;
  bioinformatics and medical informatics. The data vary in dimension from low (2-&lt;br /&gt;
  20), high (thousands) to undefined (sequences with dissimilarities but not vectors&lt;br /&gt;
  defined). We use deterministic annealing to provide more robust algorithms that&lt;br /&gt;
  are relatively insensitive to local minima. We discuss the algorithm structure and&lt;br /&gt;
  their mapping to parallel architectures of different types and look at the&lt;br /&gt;
  performance of the algorithms on three classes of system; multicore, cluster and&lt;br /&gt;
  Grid using a MapReduce style algorithm. Each approach is suitable in different&lt;br /&gt;
  application scenarios. We stress that data analysis/mining of large datasets can be&lt;br /&gt;
  a supercomputer application.&lt;br /&gt;
 &lt;br /&gt;
* &amp;quot;Fast face tracking using parallel particle filter algorithm&amp;quot;, Liu et. al., 2009&lt;br /&gt;
&lt;br /&gt;
  This paper proposed a multi-cue based face tracking&lt;br /&gt;
  algorithm with the help of parallel multi-core processing.&lt;br /&gt;
  Due to illumination and occlusion problems, face tracking&lt;br /&gt;
  usually does not work stably based on a single cue. Three&lt;br /&gt;
  different visual cues, color histogram, edge orientation&lt;br /&gt;
  histogram and wavelet feature, are integrated under the&lt;br /&gt;
  framework of particle filter to improve the tracking&lt;br /&gt;
  performance considerably. To handle the huge amount of&lt;br /&gt;
  computation cost resulted from the introduced multi-cue&lt;br /&gt;
  strategy, a map-reduce thread model is designed to parallel&lt;br /&gt;
  and speed up the observation steps. Besides, an online&lt;br /&gt;
  updating strategy makes our algorithm adaptable to some&lt;br /&gt;
  slight face rotations. The experimental results demonstrate&lt;br /&gt;
  that our proposed face tracking algorithm works robustly for&lt;br /&gt;
  cluttered backgrounds and different illuminations. The&lt;br /&gt;
  multi-core parallel scheme achieves a good linear speedup&lt;br /&gt;
  compared to the corresponding sequential algorithms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;CudaGIS: Report on the Design and Realization of a Massive Data Parallel GIS on GPUs&amp;quot;, Zhang, You, &lt;br /&gt;
  We report the design and realization of a high-&lt;br /&gt;
  performance parallel GIS, i.e., CudaGIS, based on the General&lt;br /&gt;
  Purpose computing on Graphics Processing Units (GPGPU)&lt;br /&gt;
  technologies. Still under active developments, CudaGIS currently&lt;br /&gt;
  supports major types of geospatial data (point, polyline, polygon&lt;br /&gt;
  and raster) and provides modules for spatial indexing, spatial join&lt;br /&gt;
  and other types of geospatial operations on such geospatial data&lt;br /&gt;
  types. Experiments have demonstrated 20-40X and 1000-10000X&lt;br /&gt;
  speedups over serial CPU implementations on main-memory and&lt;br /&gt;
  disk-resident systems, respectively.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;A Parallel Clustering Method Study Based on MapReduce&amp;quot;, Zhanquan and Fox&lt;br /&gt;
&lt;br /&gt;
  Clustering is considered as the most important task in data mining. The goal&lt;br /&gt;
  of clustering is to determine the intrinsic grouping in a set of unlabeled&lt;br /&gt;
  data. Many practical application problems should be solved with clustering&lt;br /&gt;
  method. It has been widely applied into all kinds of areas, such marketing,&lt;br /&gt;
  biology, library, insurance, earth-quake study, and World Wide Web and so on.&lt;br /&gt;
  Many clustering methods have been studied, such as k-means, Fisher clustering,&lt;br /&gt;
  and Koehon clustering and so on. In many kinds of areas, the scale of data set&lt;br /&gt;
  becomes larger and larger. Classical clustering method will not work to deal&lt;br /&gt;
  with large scale data set. The study of clustering methods based on large&lt;br /&gt;
  scale data is considered as an important task. MapReduce is taken as the most&lt;br /&gt;
  efficient model to deal with data intensive problems. Many data mining methods&lt;br /&gt;
  based on MapReduce have been studied. In this paper, parallel clustering&lt;br /&gt;
  method based on MapReduce is studied. The research mainly contributes the&lt;br /&gt;
  following aspects.  Firstly, it determines the initial center objectively.&lt;br /&gt;
  Secondly, information loss is taken as the distance metric between two&lt;br /&gt;
  samples. Thirdly, the clustering results are visualized with interpolation MDS&lt;br /&gt;
  method. The efficiency of the method is illustrated with a practical DNA&lt;br /&gt;
  clustering problem.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Sequential and mapreduce-based algorithms for constructing an in-place multidimensional quad-tree index for answering fixed-radius nearest neighbor queries&amp;quot;, Andreica and Tapus&lt;br /&gt;
&lt;br /&gt;
  Answering fixed-radius nearest neighbor queries constitutes an&lt;br /&gt;
  important problem in many areas, ranging from geographic systems to similarity&lt;br /&gt;
  searching in object databases (e.g. image and video databases). The usual ap-&lt;br /&gt;
  proach in order to efficiently answer such queries is to construct an index. In this&lt;br /&gt;
  paper we present algorithms for constructing a multidimensional quad-tree index.&lt;br /&gt;
  We start with well-known sequential algorithms and then adapt them to the MapRe-&lt;br /&gt;
  duce computation model, in order to be able to handle large amounts of data. In all&lt;br /&gt;
  the algorithms the objects are indexed in association with quad-tree cells (or nodes)&lt;br /&gt;
  which they intersect (plus possibly a few other nearby cells). When processing a&lt;br /&gt;
  query, multiple quad-tree cells may be searched in order to find the answer.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Fast Homing Techniques for Autonomous Robots using Sparse Image Waypoints and Design of Vision-based Indoor Localization as Cloud Computing Services&amp;quot;, PhD Thesis, 2011&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Building and Using a Database of One Trillion Natural-Image Patches&amp;quot;, Arietta and Lawrence, IEEECGA 2011&lt;br /&gt;
&lt;br /&gt;
=== Class exercises ===&lt;br /&gt;
# 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&lt;br /&gt;
## Only '''Julio Stutz''' scored the extra +0.1 on the final exam.&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
Portuguese: Programação Paralela, Introdução à Computação Paralela&lt;br /&gt;
&lt;br /&gt;
[[Category:Lab Macambira]] [[Category:IPRJ]] [[Category:Redes]]&lt;/div&gt;</summary>
		<author><name>V1z</name></author>
	</entry>
</feed>