Skip to content

Commit

Permalink
Adding more content to Topic #1
Browse files Browse the repository at this point in the history
  • Loading branch information
henricasanova committed May 21, 2016
1 parent 5211cac commit e509185
Show file tree
Hide file tree
Showing 15 changed files with 334 additions and 118 deletions.
45 changes: 22 additions & 23 deletions 000_objectives.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,17 @@ title: About
description: Curricular information
---


<div class="ui container raised border segment">

<h3 class="ui header">
Target audience
</h3>

<ul class="ui list">
<div class="ui list bulleted">

<li class="ui item"> Students/Researchers/Practitioners who want to complement their learning with hands-on experience with distributed-memory programming, message-passing, MPI, and high performance computing</li>
<li class="ui item"> Instructors who want to provide students with compelling hands-on experiences as part of the coursework they develop</i>
</ul>
<div class="ui item"> Students/Researchers/Practitioners who want to complement their learning with hands-on experience with distributed-memory programming, message-passing, MPI, and high performance computing</div>
<div class="ui item"> Instructors who want to provide students with compelling hands-on experiences as part of the coursework they develop</div>
</div>

</div>

Expand All @@ -25,13 +24,13 @@ Target audience
Prerequisites
</h3>

<ul class="ui list">
<li class="ui item">Access to a Linux (virtual) machine</li>
<li class="ui item">Some Computer Science background (i.e., a few courses)</li>
<li class="ui item">Basic C programming skills (i.e., a 1-semester course)</li>
<li class="ui item">Elementary Linux command-line skills</li>
<li class="ui item">Access to MPI documentation/tutorials</li>
</ul>
<div class="ui list bulleted">
<div class="ui item">Access to a Linux (virtual) machine</div>
<div class="ui item">Some Computer Science background (i.e., a few courses)</div>
<div class="ui item">Basic C programming skills (i.e., a 1-semester course)</div>
<div class="ui item">Elementary Linux command-line skills</div>
<div class="ui item">Access to MPI documentation/tutorials</div>
</div>

</div>

Expand All @@ -48,12 +47,12 @@ Learning Objectives
programs that run on distributed-memory architectures, using the MPI standard.</b>

Specific learning objectives include:
<ul class="ui list">
<li class="ui item"> Learn the fundamentals of the MPI API</li>
<li class="ui item"> Understand general distributed-memory programming and learn standard solutions</li>
<li class="ui item"> Learn how to implement distributed-memory programs, going from traditional "rigid" programs to more "dynamic" programs</li>
<li class="ui item"> Understand and experience performance trade-offs when implementing and executing distributed-memory programs on ranges of distributed-memory platforms</li>
</ul>
<div class="ui list bulleted">
<div class="ui item"> Learn the fundamentals of the MPI API</div>
<div class="ui item"> Understand general distributed-memory programming and learn standard solutions</div>
<div class="ui item"> Learn how to implement distributed-memory programs, going from traditional "rigid" programs to more "dynamic" programs</div>
<div class="ui item"> Understand and experience performance trade-offs when implementing and executing distributed-memory programs on ranges of distributed-memory platforms</div>
</div>
</div>


Expand All @@ -67,11 +66,11 @@ While many curricular materials have been developed for teaching message-passing
this CourseWare relies on the use of _simulation_, which has the following advantages:


<ul class="ui list">
<li class="ui list"> No need to have access to a distributed-memory platform</li>
<li class="ui list"> Ability to run many experiments quickly and reproducibly on one's own computer</li>
<li class="ui list"> Ability to explore arbitrary "what if?" scenarios, in particular to experience performance trade-offs first-hand</li>
</ul>
<div class="ui list bulleted">
<div class="ui item"> No need to have access to a distributed-memory platform</div>
<div class="ui item"> Ability to run many experiments quickly and reproducibly on one's own computer</div>
<div class="ui item"> Ability to explore arbitrary "what if?" scenarios, in particular to experience performance trade-offs first-hand</div>
</div>

This CourseWare uses
<a href="http://simgrid.gforge.inria.fr/simgrid/latest/doc/group__SMPI__API.html">SMPI</a> (Simulated MPI),
Expand Down
11 changes: 9 additions & 2 deletions _config.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
# Dependencies
markdown: redcarpet
highlighter: pygments
#markdown: redcarpet
#highlighter: pygments

markdown: kramdown
kramdown:
hard_wrap: false
input: GFM
syntax_highlighter: pygments


# Permalinks
permalink: pretty
Expand Down
1 change: 1 addition & 0 deletions _includes/head.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
<!-- Semantic UI, JQuery, etc. -->
<link rel="stylesheet" type="text/css" href="{{ site.baseurl }}/semantic/semantic.min.css">
<link rel="stylesheet" type="text/css" href="{{ site.baseurl }}/public/basics.css">
<link rel="stylesheet" type="text/css" href="{{ site.baseurl }}/public/syntax.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script src="{{ site.baseurl }}/semantic/components/accordion.js"></script>
Expand Down
4 changes: 1 addition & 3 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ navigate: false
---

<div class="ui container raised segment padded">
<font size=+1>

<p class="ui">
SMPI CourseWare is a set of hands-on pedagogic materials focused on teaching high performance computing and distributed memory computing in simulation. This is
Expand All @@ -23,8 +22,7 @@ to be included into existing courses.

<p class="ui">
Using the navigation bar on the left you can see the specific learning objectives, and explore the covered topics. Each topic consists of
short tutorial information and of many hands-on activities. Topic #0 is a good place to start :)
short tutorial information and of many hands-on activities. Topic #0 is a good place to start.
</p>

</font>
</div>
60 changes: 60 additions & 0 deletions public/syntax.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
.highlight { background: #ffffff; }
.highlight .c { color: #999988; font-style: italic } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { font-weight: bold } /* Keyword */
.highlight .o { font-weight: bold } /* Operator */
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #999999 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { font-weight: bold } /* Keyword.Constant */
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #009999 } /* Literal.Number */
.highlight .s { color: #d14 } /* Literal.String */
.highlight .na { color: #008080 } /* Name.Attribute */
.highlight .nb { color: #0086B3 } /* Name.Builtin */
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
.highlight .no { color: #008080 } /* Name.Constant */
.highlight .ni { color: #800080 } /* Name.Entity */
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
.highlight .nn { color: #555555 } /* Name.Namespace */
.highlight .nt { color: #000080 } /* Name.Tag */
.highlight .nv { color: #008080 } /* Name.Variable */
.highlight .ow { font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mf { color: #009999 } /* Literal.Number.Float */
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
.highlight .sc { color: #d14 } /* Literal.String.Char */
.highlight .sd { color: #d14 } /* Literal.String.Doc */
.highlight .s2 { color: #d14 } /* Literal.String.Double */
.highlight .se { color: #d14 } /* Literal.String.Escape */
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
.highlight .si { color: #d14 } /* Literal.String.Interpol */
.highlight .sx { color: #d14 } /* Literal.String.Other */
.highlight .sr { color: #009926 } /* Literal.String.Regex */
.highlight .s1 { color: #d14 } /* Literal.String.Single */
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #008080 } /* Name.Variable.Class */
.highlight .vg { color: #008080 } /* Name.Variable.Global */
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
8 changes: 8 additions & 0 deletions topic_basics_of_distributed_memory_programming/1D.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<div class="ui top attached tabular menu">
<a class="item active" data-tab="second/a">2A</a>
<a class="item" data-tab="second/b">2B</a>
<a class="item" data-tab="second/c">2C</a>
</div>
<div class="ui bottom attached tab segment active" data-tab="second/a">2A</div>
<div class="ui bottom attached tab segment" data-tab="second/b">2B</div>
<div class="ui bottom attached tab segment" data-tab="second/c">2C</div>
8 changes: 8 additions & 0 deletions topic_basics_of_distributed_memory_programming/2D.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<div class="ui top attached tabular menu">
<a class="item active" data-tab="second/a">2A</a>
<a class="item" data-tab="second/b">2B</a>
<a class="item" data-tab="second/c">2C</a>
</div>
<div class="ui bottom attached tab segment active" data-tab="second/a">2A</div>
<div class="ui bottom attached tab segment" data-tab="second/b">2B</div>
<div class="ui bottom attached tab segment" data-tab="second/c">2C</div>
61 changes: 0 additions & 61 deletions topic_basics_of_distributed_memory_programming/about.html

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@

/*
* compute_julia_pixel(): compute RBG values of a pixel in a
* particular Julia set image.
*
* In:
* (x,y): pixel coordinates
* (width, height): image dimensions
* tint_bias: a float to "tweak" the tint (1.0 is "no tint")
* Out:
* rgb: an already-allocated 3-byte array into which R, G, and B
* values are written.
*
* Return:
* 0 in success, -1 on failure
*
*/

int compute_julia_pixel(int x, int y, int width, int height, float tint_bias, unsigned char *rgb) {

// Check coordinates
if ((x < 0) || (x >= width) || (y < 0) || (y >= height)) {
fprintf(stderr,"Invalid (%d,%d) pixel coordinates in a %d x %d image\n", x, y, width, height);
return -1;
}

// "Zoom in" to a pleasing view of the Julia set
float X_MIN = -1.6, X_MAX = 1.6, Y_MIN = -0.9, Y_MAX = +0.9;
float float_y = (Y_MAX - Y_MIN) * (float)y / height + Y_MIN ;
float float_x = (X_MAX - X_MIN) * (float)x / width + X_MIN ;

// Point that defines the Julia set
float julia_real = -.79;
float julia_img = .15;

// Maximum number of iteration
int max_iter = 300;

// Compute the complex series convergence
float real=float_y, img=float_x;
int num_iter = max_iter;
while (( img * img + real * real < 2 * 2 ) && ( num_iter > 0 )) {
float xtemp = img * img - real * real + julia_real;
real = 2 * img * real + julia_img;
img = xtemp;
num_iter--;
}

// Paint pixel based on how many iterations were used, using some funky colors
float color_bias = (float) num_iter / max_iter;
rgb[0] = (num_iter == 0 ? 200 : - 500.0 * pow(tint_bias, 1.2) * pow(color_bias, 1.6));
rgb[1] = (num_iter == 0 ? 100 : -255.0 * pow(color_bias, 0.3));
rgb[2] = (num_iter == 0 ? 100 : 255 - 255.0 * pow(tint_bias, 1.2) * pow(color_bias, 3.0));

return 0;
}
39 changes: 10 additions & 29 deletions topic_basics_of_distributed_memory_programming/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,46 +2,27 @@


<div class="ui pointing secondary menu">
<a class="item active" data-tab="first">About</a>
<a class="item active" data-tab="first">Introduction</a>
<a class="item " data-tab="second">Activity #1</a>
<a class="item" data-tab="third">Activity #2</a>
<a class="item" data-tab="fourth">Activity #3</a>
</div>

<div class="ui tab segment active" data-tab="first">
{% include_relative topic_basics_of_distributed_memory_programming/about.html %}
{% include_relative topic_basics_of_distributed_memory_programming/introduction.html %}
</div>


<div class="ui tab segment " data-tab="second">
<div class="ui top attached tabular menu">
<a class="item active" data-tab="second/a">2A</a>
<a class="item" data-tab="second/b">2B</a>
<a class="item" data-tab="second/c">2C</a>
</div>
<div class="ui bottom attached tab segment active" data-tab="second/a">2A</div>
<div class="ui bottom attached tab segment" data-tab="second/b">2B</div>
<div class="ui bottom attached tab segment" data-tab="second/c">2C</div>
{% include_relative topic_basics_of_distributed_memory_programming/sequential.html %}
</div>

<div class="ui tab segment" data-tab="third">
<div class="ui top attached tabular menu">
<a class="item" data-tab="third/a">3A</a>
<a class="item" data-tab="third/b">3B</a>
<a class="item" data-tab="third/c">3C</a>
</div>
<div class="ui bottom attached tab segment" data-tab="third/a">3A</div>
<div class="ui bottom attached tab segment" data-tab="third/b">3B</div>
<div class="ui bottom attached tab segment" data-tab="third/c">3C</div>
{% include_relative topic_basics_of_distributed_memory_programming/1D.html %}
</div>

<div class="ui tab segment" data-tab="fourth">
<div class="ui top attached tabular menu">
<a class="item" data-tab="third/a">3A</a>
<a class="item" data-tab="third/b">3B</a>
<a class="item" data-tab="third/c">3C</a>
</div>
<div class="ui bottom attached tab segment" data-tab="third/a">3A</div>
<div class="ui bottom attached tab segment" data-tab="third/b">3B</div>
<div class="ui bottom attached tab segment" data-tab="third/c">3C</div>
{% include_relative topic_basics_of_distributed_memory_programming/2D.html %}
</div>


<!--</div>-->


Loading

0 comments on commit e509185

Please sign in to comment.