https://cluster.earlham.edu/wiki/index.php?title=Special:Contributions/Amweeden06&feed=atomEarlham Cluster Department - User contributions [en]2020-10-29T23:36:57ZFrom Earlham Cluster DepartmentMediaWiki 1.16.2https://cluster.earlham.edu/wiki/index.php/Xsede13-prog-contestXsede13-prog-contest2013-07-24T00:08:00Z<p>Amweeden06: </p>
<hr />
<div>https://www.xsede.org/web/xsede13/student-programming-competition<br />
<br />
=Problem Descriptions=<br />
<br />
==1. Area under the curve==<br />
Description: Scientists need to calculate the area under a curve in many<br />
real-world applications, from determining the acceleration of an object in<br />
physics to modeling the change in concentration of a drug in pharmacokinetics.<br />
Calculus-based approaches work for calculating the area under simple curves, but<br />
for more complex curves, the best method is often to apply a discrete<br />
approximation using simple shapes and limits.<br />
<br />
Problem: Given the function ln(ln x), approximate the area under the curve from <br />
x = 3 to 3000.<br />
<br />
==2. Prime number generation==<br />
Description: Because prime numbers have a random (as far as we know)<br />
distribution across the number line, generating them can be a very useful task<br />
for introducing randomness to a scientific model. A famous scientific<br />
application of prime numbers is in cryptography, particularly in the RSA<br />
encryption algorithm, which uses pairs of prime numbers as keys to an encoded<br />
message. Generating prime numbers that are large enough to be used as keys is<br />
a computationally-intensive task.<br />
<br />
<br />
Problem: Implement a program that generates all of the primes under 10,000,000.<br />
<br />
==3. Cellular automata==<br />
Description: A number of interesting scientific models use cellular automata to <br />
represent real-world situations. A cellular automaton is a grid of cells, each <br />
of which has a state that is often determined by the states of its neighbor<br />
cells. A famous example of a cellular automaton is Conway’s Game of Life, but<br />
there are many examples elsewhere in science and math.<br />
<br />
<br />
Problem: Develop a cellular automaton model of the spread of a fire through a <br />
forest. The forest consists of a 2-D grid of trees n trees x n trees (known as <br />
the forest size), with only the center tree initially on fire. A tree burns<br />
completely in one step of the simulation (known as the burn cycle). When an<br />
unburned tree is next to a burning tree, there is percent chance (known as burn <br />
rate) of it catching on fire in the next step of the simulation. The simulation <br />
runs till no trees are burning. A series of simulations (known as the<br />
aggregation amount) are made with the same burn rate to determine the average<br />
percent of burned trees and the average number of burn cycles. Forest size,<br />
burn rate, aggregation amount, and rate increment should be command line<br />
arguments. Produce 132 results using forest sizes of 11, 101, 1001, and 10001; <br />
burn rates of 0, 10, 20, … 100; and aggregation amounts of 1, 10, and 100.<br />
<br />
==4. N-body simulation==<br />
Description: In physics, the 2-body problem explores how two physical bodies<br />
with certain masses interact with each other through gravitational force. The<br />
2-body problem has been solved, but extending the problem to a 3-body problem by<br />
adding just 1 more object makes the problem so chaotic that it has only been<br />
solved for special cases. In general, if scientists want to study the n-body<br />
problem, in which an arbitrary number of bodies interact with each other, they<br />
will often use computer models and simulations.<br />
<br />
<br />
Problem: Create an n-body simulation involving 100,000 bodies, each with uniform<br />
mass, each interacting with all the other bodies through simple Newtonian<br />
gravitation, and run the simulation for 100 time steps.<br />
<br />
==5. Binary tree traversal==<br />
Description: In computer science, trees are a common data structure for storing <br />
and processing data. A tree is composed of nodes, each of which point to one or <br />
more child nodes. There is one node to rule them all, the root node. This is the<br />
first node in the tree, and the only node to which other nodes do not point. In <br />
addition to pointing to other nodes, each node will have a value (the meaning of<br />
which is dependent on the application). Finally, a tree has no loops<br />
(or cycles); that is, processing a tree from top to bottom will visit each node <br />
either 0 or 1 times.<br />
<br />
A tree can be traversed using several different methods. The two most applicable<br />
here are in-order depth-first (visit all left children, then the current node,<br />
then all right children); and breadth-first (search each level left-to-right<br />
before moving to the next level down).<br />
<br />
A binary search tree is a tree with special properties. First, each node will<br />
point to only 0, 1, or 2 other nodes. Second, the tree is structured such that<br />
the value of all of each node’s left children have values (whatever that may be)<br />
less than the node itself; and the value of all of each node’s right children<br />
have values greater than the node itself. Finally, each value in the tree must<br />
be unique.<br />
<br />
<br />
Problem: You will read in a file “rand_nums.txt” containing 10000000<br />
newline-delimited integers, which will be in no particular order. You must write<br />
a program that will read in these 10000000 integers, sort them into a binary<br />
search tree, and then perform some operations on them:<br />
* Find all the numbers with a divisor of 11.<br />
* Find the shortest-path between the node with value 797917900 and value<br />
210714487.<br />
<br />
==6. Agent-based simulation==<br />
Description: An agent-based simulation involves many individual things<br />
(“agents”) moving around in an environment, and is useful in many areas of<br />
science including biology (spread of disease), chemistry (motion of particles<br />
in an ideal gas), and physics (n-body gravitation).<br />
<br />
<br />
Problem: There is a neurotoxin outbreak in an underground laboratory. The<br />
scientists inside are completely unprepared for this type of epidemic so their<br />
best bet is to get out as fast as possible. The only way out of the lab is<br />
through the escape elevators (they’re too high-tech for stairs). This will<br />
involve random walking (or running in this case), probability, and spread of<br />
poisonous gas.<br />
<br />
A rectangular grid, 800mx900m, represents the underground laboratory, with each <br />
coordinate one meter on a side. The lab has an open floor plan with no walls or <br />
other obstructions. There are 3 elevators that are randomly placed around the<br />
edges of the lab. Each scientist is represented by a single pixel/variable/agent<br />
and reacts once per one second time-step. They move around randomly at a rate of<br />
one meter per second in panic, always in one of the cardinal directions (up,<br />
down, left, right). Any number of scientists can coexist within one cell and do <br />
not interact with each other. In a tragic accident, a neurotoxin is released in <br />
the exact center of the lab. A set of counters will count three things: the<br />
number of scientists that die, the number that safely escape, and the amount of <br />
time the entire epidemic takes (the simulation should finish when the lab <br />
contains no more scientists). Neurotoxin can kill an individual completely in <br />
exactly 120 time steps (two minutes). The population of scientists in the <br />
laboratory is 700 (but this is a changeable parameter). What is the experimental<br />
probability of all of the scientists in the lab being able to escape to an<br />
elevator before death?<br />
<br />
==7. Monte Carlo==<br />
Description: Monte Carlo simulations are useful where a model does not have a<br />
deterministic result. Instead, the model is run many times (this is sometimes<br />
called an ensemble) and the results in aggregate are used to produce a<br />
probability distribution of expected outcomes.<br />
<br />
<br />
Problem: The dart game “301” divides a dartboard into 20 wedges (each wedge with<br />
a different point value), a bulls-eye in the middle worth double points, an<br />
inner ring worth triple points, and an outer ring worth double points. From the <br />
top going clockwise, the wedge point values are 20, 1, 18, 4, 13, 6, 10, 15, 2, <br />
17, 3, 19, 7, 16, 8, 11, 14, 19, 9, 12, and 5.<br />
<br />
The game play involves each player getting three throws per turn. Each player<br />
starts at 301 points, and each time the player hits the board, the points scored<br />
are subtracted from their current score (for instance, hitting 6 on the<br />
triple-score ring would subtract 18 points). The first player to reach 0 points <br />
wins. A common hint is to throw at 1, with the assumption that if you miss you<br />
are likely to land on 20 or 18. <br />
<br />
How would you verify this? One idea would be to write a program that simulates <br />
dart throws. A dart throw can be thought of as an aim point, a random direction <br />
from that aim point, and a distance from that aim point. If one runs this lots<br />
of times, one could verify this assumption.<br />
<br />
==8. Logistics==<br />
Description: The problem comes from elementary math education, particularly<br />
fraction addition. A separate file, not given here, lists 2561 fraction<br />
addition exercises. Each of the numbers in this file refer to one of those<br />
exercises. Each row in this file represents a well-rounded set of ten<br />
exercises. The challenge here is to find how many such sets of exercises we<br />
can give to students without assigning the same exercise twice. <br />
<br />
<br />
Problem: The data set live in wordsEn.txt and has 390945 lines of ten numbers<br />
each.<br />
<br />
Your goal is to find the largest number of rows, call it n, that can be<br />
collected in a set where none of the 10*n elements repeat. <br />
<br />
The worst brute force way to search is to test 390945 choose n combinations for <br />
increasing values of n until a complete search fails. <br />
<br />
Other terrible brute force methods do not take into account some elements<br />
appearing in over half of the rows. <br />
<br />
Profile the data, and think about separating the set into smaller subsets.<br />
Consider eliminating vast subsets. Try different approaches, justifying your<br />
choices in your engineering journal.<br />
<br />
[http://cluster.earlham.edu/~amweeden06/Logistics/wordsEn.txt Input file]<br />
<br />
==9. Computational Linguistics==<br />
Description: The NPR Sunday Puzzles are a rich collection of problems with<br />
anagrams and combinations of letters. Tools for genome sequencing are designed <br />
to work with the letters A, C, G, and T, but can be used for any letters.<br />
PERL is specially designed for these tasks, but any language will suffice. The <br />
question will be an expansion of one of the Sunday Puzzles. <br />
<br />
<br />
Problem: Take the four words “salt,” “afar,” “lava,” and “trap.” Write them one<br />
under the other, and the words will read the same vertically as horizontally.<br />
This is a word square of four-letter words. Using the given file of 109,582<br />
English words, what is the largest word square you can construct?<br />
<br />
[http://cluster.earlham.edu/~amweeden06/ComputationalLinguistics/wordsEn.txt Input file]<br />
<br />
==10. Matrix-Matrix Multiply==<br />
Description: Matrix-Matrix Multiplication has many applications in<br />
computationally-enabled science. Most applications are for sparse matrices,<br />
where most of the elements are zero, especially sparse matrices with some<br />
structure or pattern, but this exercise deals with dense matrices. Dense<br />
matrix-matrix multiplication of square matrices of size n x n is generally an<br />
O(n^3) operation. Multiplication of dense matrices is an “embarrassingly<br />
parallelizable” problem. <br />
<br />
<br />
Problem:<br />
0. If your team does not understand the basic algorithm for matrix-matrix<br />
multiplication, just ask and we’ll walk you through it with no penalty. Also,<br />
if you do not understand the jargon, “profile,” as used below, just ask. <br />
<br />
1. Write serial code for randomly generating two n x n integer square matrices <br />
and multiplying them. Profile the run time for increasing values of n until you<br />
get interesting behavior. Explain that behavior in terms of the sizes of the<br />
different levels of memory on the chip. <br />
<br />
2. Modify the code to first find the transpose of the second matrix so the<br />
memory fetching happens in a different order. Profile for different values of <br />
n and discuss when this approach is faster. <br />
<br />
3. Parallelize the multiplication. You may choose to do any or all of these:<br />
Parallelize on the head node using shared memory over the two cores<br />
Parallelize on the twelve CPU cores using distributed memory.<br />
Parallelize over the six nodes using distributed memory, and over the two <br />
cores on each node using shared memory.<br />
Parallelize on one GPU.<br />
Parallelize over the six GPU’s. <br />
Use all twelve CPU cores and six GPU cores most efficiently. <br />
Profile the code for different values of n, and discuss the “most efficient” way<br />
to multiply two matrices.<br />
<br />
=Evaluation Criteria / Rubric=<br />
All solutions must be able to run on the LittleFe platform using existing software on the Bootable Cluster CD (BCCD). They must be placed on the provided 4GB USB stick with legible instructions provided to the graders for running each solution, and a lab notebook (series of text files) describing the work done to produce the solution. No software engineering or runtime points will be awarded for un-runnable solutions. USB sticks with solutions are due in the graders’ hands when the contest room clock reads 3:59pm PDT.<br />
<br />
==Good software engineering (40%)==<br />
* Clear, concise code written in one of the following programming languages: C, C++, FORTRAN, Perl, Python, and/or Java. (10%)<br />
* Good commenting, docs (including clear instructions on how to run the program to generate a solution), and shared libraries implementing common parts of the solutions (15%)<br />
* Solution correctness and/or approach towards solution (is the solution/approach correct, and does it solve the correct problem?) (15%)<br />
<br />
==Runtime (30%)==<br />
* The team must time the program using the Linux time command, including these times and the timing command clearly in their documentation. Judges will corroborate these run-times (10%).<br />
* An explanation of the run-time of each component of the program should be provided. Points will be awarded for an explanation of how to improve the run-time of each component (10%).<br />
* An explanation of how the program is or could be made parallel should be included (10%).<br />
<br />
==Analysis of results (30%)==<br />
* An analysis of results and algorithm used should be included, which can include visualization (20%).<br />
* An explanation of the speedup and scaling of the parallel program should be included. If no parallel implementation is provided, there should instead be an explanation of the theoretical speedup and scaling (10%).<br />
<br />
==Parallel implementation bonus (10%)==<br />
* Bonus points will be awarded for an actual, working parallel implementation that uses MPI, OpenMP, pthreads, and/or CUDA.</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Xsede13-prog-contestXsede13-prog-contest2013-07-24T00:03:11Z<p>Amweeden06: </p>
<hr />
<div>https://www.xsede.org/web/xsede13/student-programming-competition<br />
<br />
=Problem Descriptions=<br />
<br />
==1. Area under the curve==<br />
Description: Scientists need to calculate the area under a curve in many<br />
real-world applications, from determining the acceleration of an object in<br />
physics to modeling the change in concentration of a drug in pharmacokinetics.<br />
Calculus-based approaches work for calculating the area under simple curves, but<br />
for more complex curves, the best method is often to apply a discrete<br />
approximation using simple shapes and limits.<br />
<br />
Problem: Given the function ln(ln x), approximate the area under the curve from <br />
x = 3 to 3000.<br />
<br />
==2. Prime number generation==<br />
Description: Because prime numbers have a random (as far as we know)<br />
distribution across the number line, generating them can be a very useful task<br />
for introducing randomness to a scientific model. A famous scientific<br />
application of prime numbers is in cryptography, particularly in the RSA<br />
encryption algorithm, which uses pairs of prime numbers as keys to an encoded<br />
message. Generating prime numbers that are large enough to be used as keys is<br />
a computationally-intensive task.<br />
<br />
<br />
Problem: Implement a program that generates all of the primes under 10,000,000.<br />
<br />
==3. Cellular automata==<br />
Description: A number of interesting scientific models use cellular automata to <br />
represent real-world situations. A cellular automaton is a grid of cells, each <br />
of which has a state that is often determined by the states of its neighbor<br />
cells. A famous example of a cellular automaton is Conway’s Game of Life, but<br />
there are many examples elsewhere in science and math.<br />
<br />
<br />
Problem: Develop a cellular automaton model of the spread of a fire through a <br />
forest. The forest consists of a 2-D grid of trees n trees x n trees (known as <br />
the forest size), with only the center tree initially on fire. A tree burns<br />
completely in one step of the simulation (known as the burn cycle). When an<br />
unburned tree is next to a burning tree, there is percent chance (known as burn <br />
rate) of it catching on fire in the next step of the simulation. The simulation <br />
runs till no trees are burning. A series of simulations (known as the<br />
aggregation amount) are made with the same burn rate to determine the average<br />
percent of burned trees and the average number of burn cycles. Forest size,<br />
burn rate, aggregation amount, and rate increment should be command line<br />
arguments. Produce 132 results using forest sizes of 11, 101, 1001, and 10001; <br />
burn rates of 0, 10, 20, … 100; and aggregation amounts of 1, 10, and 100.<br />
<br />
==4. N-body simulation==<br />
Description: In physics, the 2-body problem explores how two physical bodies<br />
with certain masses interact with each other through gravitational force. The<br />
2-body problem has been solved, but extending the problem to a 3-body problem by<br />
adding just 1 more object makes the problem so chaotic that it has only been<br />
solved for special cases. In general, if scientists want to study the n-body<br />
problem, in which an arbitrary number of bodies interact with each other, they<br />
will often use computer models and simulations.<br />
<br />
<br />
Problem: Create an n-body simulation involving 100,000 bodies, each with uniform<br />
mass, each interacting with all the other bodies through simple Newtonian<br />
gravitation, and run the simulation for 100 time steps.<br />
<br />
==5. Binary tree traversal==<br />
Description: In computer science, trees are a common data structure for storing <br />
and processing data. A tree is composed of nodes, each of which point to one or <br />
more child nodes. There is one node to rule them all, the root node. This is the<br />
first node in the tree, and the only node to which other nodes do not point. In <br />
addition to pointing to other nodes, each node will have a value (the meaning of<br />
which is dependent on the application). Finally, a tree has no loops<br />
(or cycles); that is, processing a tree from top to bottom will visit each node <br />
either 0 or 1 times.<br />
<br />
A tree can be traversed using several different methods. The two most applicable<br />
here are in-order depth-first (visit all left children, then the current node,<br />
then all right children); and breadth-first (search each level left-to-right<br />
before moving to the next level down).<br />
<br />
A binary search tree is a tree with special properties. First, each node will<br />
point to only 0, 1, or 2 other nodes. Second, the tree is structured such that<br />
the value of all of each node’s left children have values (whatever that may be)<br />
less than the node itself; and the value of all of each node’s right children<br />
have values greater than the node itself. Finally, each value in the tree must<br />
be unique.<br />
<br />
<br />
Problem: You will read in a file “rand_nums.txt” containing 10000000<br />
newline-delimited integers, which will be in no particular order. You must write<br />
a program that will read in these 10000000 integers, sort them into a binary<br />
search tree, and then perform some operations on them:<br />
* Find all the numbers with a divisor of 11.<br />
* Find the shortest-path between the node with value 797917900 and value<br />
210714487.<br />
<br />
==6. Agent-based simulation==<br />
Description: An agent-based simulation involves many individual things<br />
(“agents”) moving around in an environment, and is useful in many areas of<br />
science including biology (spread of disease), chemistry (motion of particles<br />
in an ideal gas), and physics (n-body gravitation).<br />
<br />
<br />
Problem: There is a neurotoxin outbreak in an underground laboratory. The<br />
scientists inside are completely unprepared for this type of epidemic so their<br />
best bet is to get out as fast as possible. The only way out of the lab is<br />
through the escape elevators (they’re too high-tech for stairs). This will<br />
involve random walking (or running in this case), probability, and spread of<br />
poisonous gas.<br />
<br />
A rectangular grid, 800mx900m, represents the underground laboratory, with each <br />
coordinate one meter on a side. The lab has an open floor plan with no walls or <br />
other obstructions. There are 3 elevators that are randomly placed around the<br />
edges of the lab. Each scientist is represented by a single pixel/variable/agent<br />
and reacts once per one second time-step. They move around randomly at a rate of<br />
one meter per second in panic, always in one of the cardinal directions (up,<br />
down, left, right). Any number of scientists can coexist within one cell and do <br />
not interact with each other. In a tragic accident, a neurotoxin is released in <br />
the exact center of the lab. A set of counters will count three things: the<br />
number of scientists that die, the number that safely escape, and the amount of <br />
time the entire epidemic takes (the simulation should finish when the lab <br />
contains no more scientists). Neurotoxin can kill an individual completely in <br />
exactly 120 time steps (two minutes). The population of scientists in the <br />
laboratory is 700 (but this is a changeable parameter). What is the experimental<br />
probability of all of the scientists in the lab being able to escape to an<br />
elevator before death?<br />
<br />
==7. Monte Carlo==<br />
Description: Monte Carlo simulations are useful where a model does not have a<br />
deterministic result. Instead, the model is run many times (this is sometimes<br />
called an ensemble) and the results in aggregate are used to produce a<br />
probability distribution of expected outcomes.<br />
<br />
<br />
Problem: The dart game “301” divides a dartboard into 20 wedges (each wedge with<br />
a different point value), a bulls-eye in the middle worth double points, an<br />
inner ring worth triple points, and an outer ring worth double points. From the <br />
top going clockwise, the wedge point values are 20, 1, 18, 4, 13, 6, 10, 15, 2, <br />
17, 3, 19, 7, 16, 8, 11, 14, 19, 9, 12, and 5.<br />
<br />
The game play involves each player getting three throws per turn. Each player<br />
starts at 301 points, and each time the player hits the board, the points scored<br />
are subtracted from their current score (for instance, hitting 6 on the<br />
triple-score ring would subtract 18 points). The first player to reach 0 points <br />
wins. A common hint is to throw at 1, with the assumption that if you miss you<br />
are likely to land on 20 or 18. <br />
<br />
How would you verify this? One idea would be to write a program that simulates <br />
dart throws. A dart throw can be thought of as an aim point, a random direction <br />
from that aim point, and a distance from that aim point. If one runs this lots<br />
of times, one could verify this assumption.<br />
<br />
==8. Logistics==<br />
Description: The problem comes from elementary math education, particularly<br />
fraction addition. A separate file, not given here, lists 2561 fraction<br />
addition exercises. Each of the numbers in this file refer to one of those<br />
exercises. Each row in this file represents a well-rounded set of ten<br />
exercises. The challenge here is to find how many such sets of exercises we<br />
can give to students without assigning the same exercise twice. <br />
<br />
<br />
Problem: The data set live in wordsEn.txt and has 390945 lines of ten numbers<br />
each.<br />
<br />
Your goal is to find the largest number of rows, call it n, that can be<br />
collected in a set where none of the 10*n elements repeat. <br />
<br />
The worst brute force way to search is to test 390945 choose n combinations for <br />
increasing values of n until a complete search fails. <br />
<br />
Other terrible brute force methods do not take into account some elements<br />
appearing in over half of the rows. <br />
<br />
Profile the data, and think about separating the set into smaller subsets.<br />
Consider eliminating vast subsets. Try different approaches, justifying your<br />
choices in your engineering journal.<br />
<br />
[http://cluster.earlham.edu/~amweeden06/Logistics/wordsEn.txt Input file]<br />
<br />
==9. Computational Linguistics==<br />
Description: The NPR Sunday Puzzles are a rich collection of problems with<br />
anagrams and combinations of letters. Tools for genome sequencing are designed <br />
to work with the letters A, C, G, and T, but can be used for any letters.<br />
PERL is specially designed for these tasks, but any language will suffice. The <br />
question will be an expansion of one of the Sunday Puzzles. <br />
<br />
<br />
Problem: Take the four words “salt,” “afar,” “lava,” and “trap.” Write them one<br />
under the other, and the words will read the same vertically as horizontally.<br />
This is a word square of four-letter words. Using the given file of 109,582<br />
English words, what is the largest word square you can construct?<br />
<br />
[http://cluster.earlham.edu/~amweeden06/ComputationalLinguistics/wordsEn.txt Input file]<br />
<br />
==10. Matrix-Matrix Multiply==<br />
Description: Matrix-Matrix Multiplication has many applications in<br />
computationally-enabled science. Most applications are for sparse matrices,<br />
where most of the elements are zero, especially sparse matrices with some<br />
structure or pattern, but this exercise deals with dense matrices. Dense<br />
matrix-matrix multiplication of square matrices of size n x n is generally an<br />
O(n^3) operation. Multiplication of dense matrices is an “embarrassingly<br />
parallelizable” problem. <br />
<br />
<br />
Problem:<br />
0. If your team does not understand the basic algorithm for matrix-matrix<br />
multiplication, just ask and we’ll walk you through it with no penalty. Also,<br />
if you do not understand the jargon, “profile,” as used below, just ask. <br />
<br />
1. Write serial code for randomly generating two n x n integer square matrices <br />
and multiplying them. Profile the run time for increasing values of n until you<br />
get interesting behavior. Explain that behavior in terms of the sizes of the<br />
different levels of memory on the chip. <br />
<br />
2. Modify the code to first find the transpose of the second matrix so the<br />
memory fetching happens in a different order. Profile for different values of <br />
n and discuss when this approach is faster. <br />
<br />
3. Parallelize the multiplication. You may choose to do any or all of these:<br />
Parallelize on the head node using shared memory over the two cores<br />
Parallelize on the twelve CPU cores using distributed memory.<br />
Parallelize over the six nodes using distributed memory, and over the two <br />
cores on each node using shared memory.<br />
Parallelize on one GPU.<br />
Parallelize over the six GPU’s. <br />
Use all twelve CPU cores and six GPU cores most efficiently. <br />
Profile the code for different values of n, and discuss the “most efficient” way<br />
to multiply two matrices.<br />
<br />
=Evaluation Criteria / Rubric=<br />
All solutions must be able to run on the LittleFe platform using existing software on the Bootable Cluster CD (BCCD). They must be placed on the provided 4GB USB stick with legible instructions provided to the graders for running each solution, and a lab notebook (series of text files) describing the work done to produce the solution. No software engineering or runtime points will be awarded for un-runnable solutions. USB sticks with solutions are due in the graders’ hands when the contest room clock reads 3:59pm PDT.<br />
<br />
==Good software engineering (40%)==<br />
Clear, concise code written in one of the following programming languages: C, C++, FORTRAN, Perl, Python, and/or Java. (10%)<br />
Good commenting, docs (including clear instructions on how to run the program to generate a solution), and shared libraries implementing common parts of the solutions (15%)<br />
Solution correctness and/or approach towards solution (is the solution/approach correct, and does it solve the correct problem?) (15%)<br />
<br />
==Runtime (30%)==<br />
The team must time the program using the Linux time command, including these times and the timing command clearly in their documentation. Judges will corroborate these run-times (10%).<br />
An explanation of the run-time of each component of the program should be provided. Points will be awarded for an explanation of how to improve the run-time of each component (10%).<br />
An explanation of how the program is or could be made parallel should be included (10%).<br />
<br />
==Analysis of results (30%)==<br />
An analysis of results and algorithm used should be included, which can include visualization (20%).<br />
An explanation of the speedup and scaling of the parallel program should be included. If no parallel implementation is provided, there should instead be an explanation of the theoretical speedup and scaling (10%).<br />
<br />
==Parallel implementation bonus (10%)==<br />
Bonus points will be awarded for an actual, working parallel implementation that uses MPI, OpenMP, pthreads, and/or CUDA.</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Xsede13-prog-contestXsede13-prog-contest2013-07-23T18:51:08Z<p>Amweeden06: </p>
<hr />
<div>https://www.xsede.org/web/xsede13/student-programming-competition<br />
<br />
=Problem Descriptions=<br />
<br />
==1. Area under the curve==<br />
Description: Scientists need to calculate the area under a curve in many<br />
real-world applications, from determining the acceleration of an object in<br />
physics to modeling the change in concentration of a drug in pharmacokinetics.<br />
Calculus-based approaches work for calculating the area under simple curves, but<br />
for more complex curves, the best method is often to apply a discrete<br />
approximation using simple shapes and limits.<br />
<br />
Problem: Given the function ln(ln x), approximate the area under the curve from <br />
x = 3 to 3000.<br />
<br />
==2. Prime number generation==<br />
Description: Because prime numbers have a random (as far as we know)<br />
distribution across the number line, generating them can be a very useful task<br />
for introducing randomness to a scientific model. A famous scientific<br />
application of prime numbers is in cryptography, particularly in the RSA<br />
encryption algorithm, which uses pairs of prime numbers as keys to an encoded<br />
message. Generating prime numbers that are large enough to be used as keys is<br />
a computationally-intensive task.<br />
<br />
<br />
Problem: Implement a program that generates all of the primes under 10,000,000.<br />
<br />
==3. Cellular automata==<br />
Description: A number of interesting scientific models use cellular automata to <br />
represent real-world situations. A cellular automaton is a grid of cells, each <br />
of which has a state that is often determined by the states of its neighbor<br />
cells. A famous example of a cellular automaton is Conway’s Game of Life, but<br />
there are many examples elsewhere in science and math.<br />
<br />
<br />
Problem: Develop a cellular automaton model of the spread of a fire through a <br />
forest. The forest consists of a 2-D grid of trees n trees x n trees (known as <br />
the forest size), with only the center tree initially on fire. A tree burns<br />
completely in one step of the simulation (known as the burn cycle). When an<br />
unburned tree is next to a burning tree, there is percent chance (known as burn <br />
rate) of it catching on fire in the next step of the simulation. The simulation <br />
runs till no trees are burning. A series of simulations (known as the<br />
aggregation amount) are made with the same burn rate to determine the average<br />
percent of burned trees and the average number of burn cycles. Forest size,<br />
burn rate, aggregation amount, and rate increment should be command line<br />
arguments. Produce 132 results using forest sizes of 11, 101, 1001, and 10001; <br />
burn rates of 0, 10, 20, … 100; and aggregation amounts of 1, 10, and 100.<br />
<br />
==4. N-body simulation==<br />
Description: In physics, the 2-body problem explores how two physical bodies<br />
with certain masses interact with each other through gravitational force. The<br />
2-body problem has been solved, but extending the problem to a 3-body problem by<br />
adding just 1 more object makes the problem so chaotic that it has only been<br />
solved for special cases. In general, if scientists want to study the n-body<br />
problem, in which an arbitrary number of bodies interact with each other, they<br />
will often use computer models and simulations.<br />
<br />
<br />
Problem: Create an n-body simulation involving 100,000 bodies, each with uniform<br />
mass, each interacting with all the other bodies through simple Newtonian<br />
gravitation, and run the simulation for 100 time steps.<br />
<br />
==5. Binary tree traversal==<br />
Description: In computer science, trees are a common data structure for storing <br />
and processing data. A tree is composed of nodes, each of which point to one or <br />
more child nodes. There is one node to rule them all, the root node. This is the<br />
first node in the tree, and the only node to which other nodes do not point. In <br />
addition to pointing to other nodes, each node will have a value (the meaning of<br />
which is dependent on the application). Finally, a tree has no loops<br />
(or cycles); that is, processing a tree from top to bottom will visit each node <br />
either 0 or 1 times.<br />
<br />
A tree can be traversed using several different methods. The two most applicable<br />
here are in-order depth-first (visit all left children, then the current node,<br />
then all right children); and breadth-first (search each level left-to-right<br />
before moving to the next level down).<br />
<br />
A binary search tree is a tree with special properties. First, each node will<br />
point to only 0, 1, or 2 other nodes. Second, the tree is structured such that<br />
the value of all of each node’s left children have values (whatever that may be)<br />
less than the node itself; and the value of all of each node’s right children<br />
have values greater than the node itself. Finally, each value in the tree must<br />
be unique.<br />
<br />
<br />
Problem: You will read in a file “rand_nums.txt” containing 10000000<br />
newline-delimited integers, which will be in no particular order. You must write<br />
a program that will read in these 10000000 integers, sort them into a binary<br />
search tree, and then perform some operations on them:<br />
* Find all the numbers with a divisor of 11.<br />
* Find the shortest-path between the node with value 797917900 and value<br />
210714487.<br />
<br />
==6. Agent-based simulation==<br />
Description: An agent-based simulation involves many individual things<br />
(“agents”) moving around in an environment, and is useful in many areas of<br />
science including biology (spread of disease), chemistry (motion of particles<br />
in an ideal gas), and physics (n-body gravitation).<br />
<br />
<br />
Problem: There is a neurotoxin outbreak in an underground laboratory. The<br />
scientists inside are completely unprepared for this type of epidemic so their<br />
best bet is to get out as fast as possible. The only way out of the lab is<br />
through the escape elevators (they’re too high-tech for stairs). This will<br />
involve random walking (or running in this case), probability, and spread of<br />
poisonous gas.<br />
<br />
A rectangular grid, 800mx900m, represents the underground laboratory, with each <br />
coordinate one meter on a side. The lab has an open floor plan with no walls or <br />
other obstructions. There are 3 elevators that are randomly placed around the<br />
edges of the lab. Each scientist is represented by a single pixel/variable/agent<br />
and reacts once per one second time-step. They move around randomly at a rate of<br />
one meter per second in panic, always in one of the cardinal directions (up,<br />
down, left, right). Any number of scientists can coexist within one cell and do <br />
not interact with each other. In a tragic accident, a neurotoxin is released in <br />
the exact center of the lab. A set of counters will count three things: the<br />
number of scientists that die, the number that safely escape, and the amount of <br />
time the entire epidemic takes (the simulation should finish when the lab <br />
contains no more scientists). Neurotoxin can kill an individual completely in <br />
exactly 120 time steps (two minutes). The population of scientists in the <br />
laboratory is 700 (but this is a changeable parameter). What is the experimental<br />
probability of all of the scientists in the lab being able to escape to an<br />
elevator before death?<br />
<br />
==7. Monte Carlo==<br />
Description: Monte Carlo simulations are useful where a model does not have a<br />
deterministic result. Instead, the model is run many times (this is sometimes<br />
called an ensemble) and the results in aggregate are used to produce a<br />
probability distribution of expected outcomes.<br />
<br />
<br />
Problem: The dart game “301” divides a dartboard into 20 wedges (each wedge with<br />
a different point value), a bulls-eye in the middle worth double points, an<br />
inner ring worth triple points, and an outer ring worth double points. From the <br />
top going clockwise, the wedge point values are 20, 1, 18, 4, 13, 6, 10, 15, 2, <br />
17, 3, 19, 7, 16, 8, 11, 14, 19, 9, 12, and 5.<br />
<br />
The game play involves each player getting three throws per turn. Each player<br />
starts at 301 points, and each time the player hits the board, the points scored<br />
are subtracted from their current score (for instance, hitting 6 on the<br />
triple-score ring would subtract 18 points). The first player to reach 0 points <br />
wins. A common hint is to throw at 1, with the assumption that if you miss you<br />
are likely to land on 20 or 18. <br />
<br />
How would you verify this? One idea would be to write a program that simulates <br />
dart throws. A dart throw can be thought of as an aim point, a random direction <br />
from that aim point, and a distance from that aim point. If one runs this lots<br />
of times, one could verify this assumption.<br />
<br />
==8. Logistics==<br />
Description: The problem comes from elementary math education, particularly<br />
fraction addition. A separate file, not given here, lists 2561 fraction<br />
addition exercises. Each of the numbers in this file refer to one of those<br />
exercises. Each row in this file represents a well-rounded set of ten<br />
exercises. The challenge here is to find how many such sets of exercises we<br />
can give to students without assigning the same exercise twice. <br />
<br />
<br />
Problem: The data set live in wordsEn.txt and has 390945 lines of ten numbers<br />
each.<br />
<br />
Your goal is to find the largest number of rows, call it n, that can be<br />
collected in a set where none of the 10*n elements repeat. <br />
<br />
The worst brute force way to search is to test 390945 choose n combinations for <br />
increasing values of n until a complete search fails. <br />
<br />
Other terrible brute force methods do not take into account some elements<br />
appearing in over half of the rows. <br />
<br />
Profile the data, and think about separating the set into smaller subsets.<br />
Consider eliminating vast subsets. Try different approaches, justifying your<br />
choices in your engineering journal.<br />
<br />
[http://cluster.earlham.edu/~amweeden06/Logistics/wordsEn.txt Input file]<br />
<br />
==9. Computational Linguistics==<br />
Description: The NPR Sunday Puzzles are a rich collection of problems with<br />
anagrams and combinations of letters. Tools for genome sequencing are designed <br />
to work with the letters A, C, G, and T, but can be used for any letters.<br />
PERL is specially designed for these tasks, but any language will suffice. The <br />
question will be an expansion of one of the Sunday Puzzles. <br />
<br />
<br />
Problem: Take the four words “salt,” “afar,” “lava,” and “trap.” Write them one<br />
under the other, and the words will read the same vertically as horizontally.<br />
This is a word square of four-letter words. Using the given file of 109,582<br />
English words, what is the largest word square you can construct?<br />
<br />
[http://cluster.earlham.edu/~amweeden06/ComputationalLinguistics/wordsEn.txt Input file]<br />
<br />
==10. Matrix-Matrix Multiply==<br />
Description: Matrix-Matrix Multiplication has many applications in<br />
computationally-enabled science. Most applications are for sparse matrices,<br />
where most of the elements are zero, especially sparse matrices with some<br />
structure or pattern, but this exercise deals with dense matrices. Dense<br />
matrix-matrix multiplication of square matrices of size n x n is generally an<br />
O(n^3) operation. Multiplication of dense matrices is an “embarrassingly<br />
parallelizable” problem. <br />
<br />
<br />
Problem:<br />
0. If your team does not understand the basic algorithm for matrix-matrix<br />
multiplication, just ask and we’ll walk you through it with no penalty. Also,<br />
if you do not understand the jargon, “profile,” as used below, just ask. <br />
<br />
1. Write serial code for randomly generating two n x n integer square matrices <br />
and multiplying them. Profile the run time for increasing values of n until you<br />
get interesting behavior. Explain that behavior in terms of the sizes of the<br />
different levels of memory on the chip. <br />
<br />
2. Modify the code to first find the transpose of the second matrix so the<br />
memory fetching happens in a different order. Profile for different values of <br />
n and discuss when this approach is faster. <br />
<br />
3. Parallelize the multiplication. You may choose to do any or all of these:<br />
Parallelize on the head node using shared memory over the two cores<br />
Parallelize on the twelve CPU cores using distributed memory.<br />
Parallelize over the six nodes using distributed memory, and over the two <br />
cores on each node using shared memory.<br />
Parallelize on one GPU.<br />
Parallelize over the six GPU’s. <br />
Use all twelve CPU cores and six GPU cores most efficiently. <br />
Profile the code for different values of n, and discuss the “most efficient” way<br />
to multiply two matrices.</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Xsede13-prog-contestXsede13-prog-contest2013-07-23T18:42:46Z<p>Amweeden06: /* 8. Logistics */</p>
<hr />
<div>https://www.xsede.org/web/xsede13/student-programming-competition<br />
<br />
=Problem Descriptions=<br />
<br />
==1. Area under the curve==<br />
Description: Scientists need to calculate the area under a curve in many<br />
real-world applications, from determining the acceleration of an object in<br />
physics to modeling the change in concentration of a drug in pharmacokinetics.<br />
Calculus-based approaches work for calculating the area under simple curves, but<br />
for more complex curves, the best method is often to apply a discrete<br />
approximation using simple shapes and limits.<br />
<br />
Problem: Given the function ln(ln x), approximate the area under the curve from <br />
x = 3 to 3000.<br />
<br />
==2. Prime number generation==<br />
Description: Because prime numbers have a random (as far as we know)<br />
distribution across the number line, generating them can be a very useful task<br />
for introducing randomness to a scientific model. A famous scientific<br />
application of prime numbers is in cryptography, particularly in the RSA<br />
encryption algorithm, which uses pairs of prime numbers as keys to an encoded<br />
message. Generating prime numbers that are large enough to be used as keys is<br />
a computationally-intensive task.<br />
<br />
<br />
Problem: Implement a program that generates all of the primes under 10,000,000.<br />
<br />
==3. Cellular automata==<br />
Description: A number of interesting scientific models use cellular automata to <br />
represent real-world situations. A cellular automaton is a grid of cells, each <br />
of which has a state that is often determined by the states of its neighbor<br />
cells. A famous example of a cellular automaton is Conway’s Game of Life, but<br />
there are many examples elsewhere in science and math.<br />
<br />
<br />
Problem: Develop a cellular automaton model of the spread of a fire through a <br />
forest. The forest consists of a 2-D grid of trees n trees x n trees (known as <br />
the forest size), with only the center tree initially on fire. A tree burns<br />
completely in one step of the simulation (known as the burn cycle). When an<br />
unburned tree is next to a burning tree, there is percent chance (known as burn <br />
rate) of it catching on fire in the next step of the simulation. The simulation <br />
runs till no trees are burning. A series of simulations (known as the<br />
aggregation amount) are made with the same burn rate to determine the average<br />
percent of burned trees and the average number of burn cycles. Forest size,<br />
burn rate, aggregation amount, and rate increment should be command line<br />
arguments. Produce 132 results using forest sizes of 11, 101, 1001, and 10001; <br />
burn rates of 0, 10, 20, … 100; and aggregation amounts of 1, 10, and 100.<br />
<br />
==4. N-body simulation==<br />
Description: In physics, the 2-body problem explores how two physical bodies<br />
with certain masses interact with each other through gravitational force. The<br />
2-body problem has been solved, but extending the problem to a 3-body problem by<br />
adding just 1 more object makes the problem so chaotic that it has only been<br />
solved for special cases. In general, if scientists want to study the n-body<br />
problem, in which an arbitrary number of bodies interact with each other, they<br />
will often use computer models and simulations.<br />
<br />
<br />
Problem: Create an n-body simulation involving 100,000 bodies, each with uniform<br />
mass, each interacting with all the other bodies through simple Newtonian<br />
gravitation, and run the simulation for 100 time steps.<br />
<br />
==5. Binary tree traversal==<br />
Description: In computer science, trees are a common data structure for storing <br />
and processing data. A tree is composed of nodes, each of which point to one or <br />
more child nodes. There is one node to rule them all, the root node. This is the<br />
first node in the tree, and the only node to which other nodes do not point. In <br />
addition to pointing to other nodes, each node will have a value (the meaning of<br />
which is dependent on the application). Finally, a tree has no loops<br />
(or cycles); that is, processing a tree from top to bottom will visit each node <br />
either 0 or 1 times.<br />
<br />
A tree can be traversed using several different methods. The two most applicable<br />
here are in-order depth-first (visit all left children, then the current node,<br />
then all right children); and breadth-first (search each level left-to-right<br />
before moving to the next level down).<br />
<br />
A binary search tree is a tree with special properties. First, each node will<br />
point to only 0, 1, or 2 other nodes. Second, the tree is structured such that<br />
the value of all of each node’s left children have values (whatever that may be)<br />
less than the node itself; and the value of all of each node’s right children<br />
have values greater than the node itself. Finally, each value in the tree must<br />
be unique.<br />
<br />
<br />
Problem: You will read in a file “rand_nums.txt” containing 10000000<br />
newline-delimited integers, which will be in no particular order. You must write<br />
a program that will read in these 10000000 integers, sort them into a binary<br />
search tree, and then perform some operations on them:<br />
* Find all the numbers with a divisor of 11.<br />
* Find the shortest-path between the node with value 797917900 and value<br />
210714487.<br />
<br />
==6. Agent-based simulation==<br />
Description: An agent-based simulation involves many individual things<br />
(“agents”) moving around in an environment, and is useful in many areas of<br />
science including biology (spread of disease), chemistry (motion of particles<br />
in an ideal gas), and physics (n-body gravitation).<br />
<br />
<br />
Problem: There is a neurotoxin outbreak in an underground laboratory. The<br />
scientists inside are completely unprepared for this type of epidemic so their<br />
best bet is to get out as fast as possible. The only way out of the lab is<br />
through the escape elevators (they’re too high-tech for stairs). This will<br />
involve random walking (or running in this case), probability, and spread of<br />
poisonous gas.<br />
<br />
A rectangular grid, 800mx900m, represents the underground laboratory, with each <br />
coordinate one meter on a side. The lab has an open floor plan with no walls or <br />
other obstructions. There are 3 elevators that are randomly placed around the<br />
edges of the lab. Each scientist is represented by a single pixel/variable/agent<br />
and reacts once per one second time-step. They move around randomly at a rate of<br />
one meter per second in panic, always in one of the cardinal directions (up,<br />
down, left, right). Any number of scientists can coexist within one cell and do <br />
not interact with each other. In a tragic accident, a neurotoxin is released in <br />
the exact center of the lab. A set of counters will count three things: the<br />
number of scientists that die, the number that safely escape, and the amount of <br />
time the entire epidemic takes (the simulation should finish when the lab <br />
contains no more scientists). Neurotoxin can kill an individual completely in <br />
exactly 120 time steps (two minutes). The population of scientists in the <br />
laboratory is 700 (but this is a changeable parameter). What is the experimental<br />
probability of all of the scientists in the lab being able to escape to an<br />
elevator before death?<br />
<br />
==7. Monte Carlo==<br />
Description: Monte Carlo simulations are useful where a model does not have a<br />
deterministic result. Instead, the model is run many times (this is sometimes<br />
called an ensemble) and the results in aggregate are used to produce a<br />
probability distribution of expected outcomes.<br />
<br />
<br />
Problem: The dart game “301” divides a dartboard into 20 wedges (each wedge with<br />
a different point value), a bulls-eye in the middle worth double points, an<br />
inner ring worth triple points, and an outer ring worth double points. From the <br />
top going clockwise, the wedge point values are 20, 1, 18, 4, 13, 6, 10, 15, 2, <br />
17, 3, 19, 7, 16, 8, 11, 14, 19, 9, 12, and 5.<br />
<br />
The game play involves each player getting three throws per turn. Each player<br />
starts at 301 points, and each time the player hits the board, the points scored<br />
are subtracted from their current score (for instance, hitting 6 on the<br />
triple-score ring would subtract 18 points). The first player to reach 0 points <br />
wins. A common hint is to throw at 1, with the assumption that if you miss you<br />
are likely to land on 20 or 18. <br />
<br />
How would you verify this? One idea would be to write a program that simulates <br />
dart throws. A dart throw can be thought of as an aim point, a random direction <br />
from that aim point, and a distance from that aim point. If one runs this lots<br />
of times, one could verify this assumption.<br />
<br />
==8. Logistics==<br />
Description: The problem comes from elementary math education, particularly<br />
fraction addition. A separate file, not given here, lists 2561 fraction<br />
addition exercises. Each of the numbers in this file refer to one of those<br />
exercises. Each row in this file represents a well-rounded set of ten<br />
exercises. The challenge here is to find how many such sets of exercises we<br />
can give to students without assigning the same exercise twice. <br />
<br />
<br />
Problem: The data set live in wordsEn.txt and has 390945 lines of ten numbers<br />
each.<br />
<br />
Your goal is to find the largest number of rows, call it n, that can be<br />
collected in a set where none of the 10*n elements repeat. <br />
<br />
The worst brute force way to search is to test 390945 choose n combinations for <br />
increasing values of n until a complete search fails. <br />
<br />
Other terrible brute force methods do not take into account some elements<br />
appearing in over half of the rows. <br />
<br />
Profile the data, and think about separating the set into smaller subsets.<br />
Consider eliminating vast subsets. Try different approaches, justifying your<br />
choices in your engineering journal.<br />
<br />
[http://cluster.earlham.edu/~aweeden/Logistics/wordsEn.txt Input file]<br />
<br />
==9. Computational Linguistics==<br />
Description: The NPR Sunday Puzzles are a rich collection of problems with<br />
anagrams and combinations of letters. Tools for genome sequencing are designed <br />
to work with the letters A, C, G, and T, but can be used for any letters.<br />
PERL is specially designed for these tasks, but any language will suffice. The <br />
question will be an expansion of one of the Sunday Puzzles. <br />
<br />
<br />
Problem: Take the four words “salt,” “afar,” “lava,” and “trap.” Write them one<br />
under the other, and the words will read the same vertically as horizontally.<br />
This is a word square of four-letter words. Using the given file of 109,582<br />
English words, what is the largest word square you can construct?<br />
<br />
==10. Matrix-Matrix Multiply==<br />
Description: Matrix-Matrix Multiplication has many applications in<br />
computationally-enabled science. Most applications are for sparse matrices,<br />
where most of the elements are zero, especially sparse matrices with some<br />
structure or pattern, but this exercise deals with dense matrices. Dense<br />
matrix-matrix multiplication of square matrices of size n x n is generally an<br />
O(n^3) operation. Multiplication of dense matrices is an “embarrassingly<br />
parallelizable” problem. <br />
<br />
<br />
Problem:<br />
0. If your team does not understand the basic algorithm for matrix-matrix<br />
multiplication, just ask and we’ll walk you through it with no penalty. Also,<br />
if you do not understand the jargon, “profile,” as used below, just ask. <br />
<br />
1. Write serial code for randomly generating two n x n integer square matrices <br />
and multiplying them. Profile the run time for increasing values of n until you<br />
get interesting behavior. Explain that behavior in terms of the sizes of the<br />
different levels of memory on the chip. <br />
<br />
2. Modify the code to first find the transpose of the second matrix so the<br />
memory fetching happens in a different order. Profile for different values of <br />
n and discuss when this approach is faster. <br />
<br />
3. Parallelize the multiplication. You may choose to do any or all of these:<br />
Parallelize on the head node using shared memory over the two cores<br />
Parallelize on the twelve CPU cores using distributed memory.<br />
Parallelize over the six nodes using distributed memory, and over the two <br />
cores on each node using shared memory.<br />
Parallelize on one GPU.<br />
Parallelize over the six GPU’s. <br />
Use all twelve CPU cores and six GPU cores most efficiently. <br />
Profile the code for different values of n, and discuss the “most efficient” way<br />
to multiply two matrices.</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Xsede13-prog-contestXsede13-prog-contest2013-07-23T15:57:30Z<p>Amweeden06: </p>
<hr />
<div>https://www.xsede.org/web/xsede13/student-programming-competition<br />
<br />
=Problem Descriptions=<br />
<br />
==1. Area under the curve==<br />
Description: Scientists need to calculate the area under a curve in many<br />
real-world applications, from determining the acceleration of an object in<br />
physics to modeling the change in concentration of a drug in pharmacokinetics.<br />
Calculus-based approaches work for calculating the area under simple curves, but<br />
for more complex curves, the best method is often to apply a discrete<br />
approximation using simple shapes and limits.<br />
<br />
Problem: Given the function ln(ln x), approximate the area under the curve from <br />
x = 3 to 3000.<br />
<br />
==2. Prime number generation==<br />
Description: Because prime numbers have a random (as far as we know)<br />
distribution across the number line, generating them can be a very useful task<br />
for introducing randomness to a scientific model. A famous scientific<br />
application of prime numbers is in cryptography, particularly in the RSA<br />
encryption algorithm, which uses pairs of prime numbers as keys to an encoded<br />
message. Generating prime numbers that are large enough to be used as keys is<br />
a computationally-intensive task.<br />
<br />
<br />
Problem: Implement a program that generates all of the primes under 10,000,000.<br />
<br />
==3. Cellular automata==<br />
Description: A number of interesting scientific models use cellular automata to <br />
represent real-world situations. A cellular automaton is a grid of cells, each <br />
of which has a state that is often determined by the states of its neighbor<br />
cells. A famous example of a cellular automaton is Conway’s Game of Life, but<br />
there are many examples elsewhere in science and math.<br />
<br />
<br />
Problem: Develop a cellular automaton model of the spread of a fire through a <br />
forest. The forest consists of a 2-D grid of trees n trees x n trees (known as <br />
the forest size), with only the center tree initially on fire. A tree burns<br />
completely in one step of the simulation (known as the burn cycle). When an<br />
unburned tree is next to a burning tree, there is percent chance (known as burn <br />
rate) of it catching on fire in the next step of the simulation. The simulation <br />
runs till no trees are burning. A series of simulations (known as the<br />
aggregation amount) are made with the same burn rate to determine the average<br />
percent of burned trees and the average number of burn cycles. Forest size,<br />
burn rate, aggregation amount, and rate increment should be command line<br />
arguments. Produce 132 results using forest sizes of 11, 101, 1001, and 10001; <br />
burn rates of 0, 10, 20, … 100; and aggregation amounts of 1, 10, and 100.<br />
<br />
==4. N-body simulation==<br />
Description: In physics, the 2-body problem explores how two physical bodies<br />
with certain masses interact with each other through gravitational force. The<br />
2-body problem has been solved, but extending the problem to a 3-body problem by<br />
adding just 1 more object makes the problem so chaotic that it has only been<br />
solved for special cases. In general, if scientists want to study the n-body<br />
problem, in which an arbitrary number of bodies interact with each other, they<br />
will often use computer models and simulations.<br />
<br />
<br />
Problem: Create an n-body simulation involving 100,000 bodies, each with uniform<br />
mass, each interacting with all the other bodies through simple Newtonian<br />
gravitation, and run the simulation for 100 time steps.<br />
<br />
==5. Binary tree traversal==<br />
Description: In computer science, trees are a common data structure for storing <br />
and processing data. A tree is composed of nodes, each of which point to one or <br />
more child nodes. There is one node to rule them all, the root node. This is the<br />
first node in the tree, and the only node to which other nodes do not point. In <br />
addition to pointing to other nodes, each node will have a value (the meaning of<br />
which is dependent on the application). Finally, a tree has no loops<br />
(or cycles); that is, processing a tree from top to bottom will visit each node <br />
either 0 or 1 times.<br />
<br />
A tree can be traversed using several different methods. The two most applicable<br />
here are in-order depth-first (visit all left children, then the current node,<br />
then all right children); and breadth-first (search each level left-to-right<br />
before moving to the next level down).<br />
<br />
A binary search tree is a tree with special properties. First, each node will<br />
point to only 0, 1, or 2 other nodes. Second, the tree is structured such that<br />
the value of all of each node’s left children have values (whatever that may be)<br />
less than the node itself; and the value of all of each node’s right children<br />
have values greater than the node itself. Finally, each value in the tree must<br />
be unique.<br />
<br />
<br />
Problem: You will read in a file “rand_nums.txt” containing 10000000<br />
newline-delimited integers, which will be in no particular order. You must write<br />
a program that will read in these 10000000 integers, sort them into a binary<br />
search tree, and then perform some operations on them:<br />
* Find all the numbers with a divisor of 11.<br />
* Find the shortest-path between the node with value 797917900 and value<br />
210714487.<br />
<br />
==6. Agent-based simulation==<br />
Description: An agent-based simulation involves many individual things<br />
(“agents”) moving around in an environment, and is useful in many areas of<br />
science including biology (spread of disease), chemistry (motion of particles<br />
in an ideal gas), and physics (n-body gravitation).<br />
<br />
<br />
Problem: There is a neurotoxin outbreak in an underground laboratory. The<br />
scientists inside are completely unprepared for this type of epidemic so their<br />
best bet is to get out as fast as possible. The only way out of the lab is<br />
through the escape elevators (they’re too high-tech for stairs). This will<br />
involve random walking (or running in this case), probability, and spread of<br />
poisonous gas.<br />
<br />
A rectangular grid, 800mx900m, represents the underground laboratory, with each <br />
coordinate one meter on a side. The lab has an open floor plan with no walls or <br />
other obstructions. There are 3 elevators that are randomly placed around the<br />
edges of the lab. Each scientist is represented by a single pixel/variable/agent<br />
and reacts once per one second time-step. They move around randomly at a rate of<br />
one meter per second in panic, always in one of the cardinal directions (up,<br />
down, left, right). Any number of scientists can coexist within one cell and do <br />
not interact with each other. In a tragic accident, a neurotoxin is released in <br />
the exact center of the lab. A set of counters will count three things: the<br />
number of scientists that die, the number that safely escape, and the amount of <br />
time the entire epidemic takes (the simulation should finish when the lab <br />
contains no more scientists). Neurotoxin can kill an individual completely in <br />
exactly 120 time steps (two minutes). The population of scientists in the <br />
laboratory is 700 (but this is a changeable parameter). What is the experimental<br />
probability of all of the scientists in the lab being able to escape to an<br />
elevator before death?<br />
<br />
==7. Monte Carlo==<br />
Description: Monte Carlo simulations are useful where a model does not have a<br />
deterministic result. Instead, the model is run many times (this is sometimes<br />
called an ensemble) and the results in aggregate are used to produce a<br />
probability distribution of expected outcomes.<br />
<br />
<br />
Problem: The dart game “301” divides a dartboard into 20 wedges (each wedge with<br />
a different point value), a bulls-eye in the middle worth double points, an<br />
inner ring worth triple points, and an outer ring worth double points. From the <br />
top going clockwise, the wedge point values are 20, 1, 18, 4, 13, 6, 10, 15, 2, <br />
17, 3, 19, 7, 16, 8, 11, 14, 19, 9, 12, and 5.<br />
<br />
The game play involves each player getting three throws per turn. Each player<br />
starts at 301 points, and each time the player hits the board, the points scored<br />
are subtracted from their current score (for instance, hitting 6 on the<br />
triple-score ring would subtract 18 points). The first player to reach 0 points <br />
wins. A common hint is to throw at 1, with the assumption that if you miss you<br />
are likely to land on 20 or 18. <br />
<br />
How would you verify this? One idea would be to write a program that simulates <br />
dart throws. A dart throw can be thought of as an aim point, a random direction <br />
from that aim point, and a distance from that aim point. If one runs this lots<br />
of times, one could verify this assumption.<br />
<br />
==8. Logistics==<br />
Description: The problem comes from elementary math education, particularly<br />
fraction addition. A separate file, not given here, lists 2561 fraction<br />
addition exercises. Each of the numbers in this file refer to one of those<br />
exercises. Each row in this file represents a well-rounded set of ten<br />
exercises. The challenge here is to find how many such sets of exercises we<br />
can give to students without assigning the same exercise twice. <br />
<br />
<br />
Problem: The data set live in wordsEn.txt and has 390945 lines of ten numbers<br />
each.<br />
<br />
Your goal is to find the largest number of rows, call it n, that can be<br />
collected in a set where none of the 10*n elements repeat. <br />
<br />
The worst brute force way to search is to test 390945 choose n combinations for <br />
increasing values of n until a complete search fails. <br />
<br />
Other terrible brute force methods do not take into account some elements<br />
appearing in over half of the rows. <br />
<br />
Profile the data, and think about separating the set into smaller subsets.<br />
Consider eliminating vast subsets. Try different approaches, justifying your<br />
choices in your engineering journal.<br />
<br />
==9. Computational Linguistics==<br />
Description: The NPR Sunday Puzzles are a rich collection of problems with<br />
anagrams and combinations of letters. Tools for genome sequencing are designed <br />
to work with the letters A, C, G, and T, but can be used for any letters.<br />
PERL is specially designed for these tasks, but any language will suffice. The <br />
question will be an expansion of one of the Sunday Puzzles. <br />
<br />
<br />
Problem: Take the four words “salt,” “afar,” “lava,” and “trap.” Write them one<br />
under the other, and the words will read the same vertically as horizontally.<br />
This is a word square of four-letter words. Using the given file of 109,582<br />
English words, what is the largest word square you can construct?<br />
<br />
==10. Matrix-Matrix Multiply==<br />
Description: Matrix-Matrix Multiplication has many applications in<br />
computationally-enabled science. Most applications are for sparse matrices,<br />
where most of the elements are zero, especially sparse matrices with some<br />
structure or pattern, but this exercise deals with dense matrices. Dense<br />
matrix-matrix multiplication of square matrices of size n x n is generally an<br />
O(n^3) operation. Multiplication of dense matrices is an “embarrassingly<br />
parallelizable” problem. <br />
<br />
<br />
Problem:<br />
0. If your team does not understand the basic algorithm for matrix-matrix<br />
multiplication, just ask and we’ll walk you through it with no penalty. Also,<br />
if you do not understand the jargon, “profile,” as used below, just ask. <br />
<br />
1. Write serial code for randomly generating two n x n integer square matrices <br />
and multiplying them. Profile the run time for increasing values of n until you<br />
get interesting behavior. Explain that behavior in terms of the sizes of the<br />
different levels of memory on the chip. <br />
<br />
2. Modify the code to first find the transpose of the second matrix so the<br />
memory fetching happens in a different order. Profile for different values of <br />
n and discuss when this approach is faster. <br />
<br />
3. Parallelize the multiplication. You may choose to do any or all of these:<br />
Parallelize on the head node using shared memory over the two cores<br />
Parallelize on the twelve CPU cores using distributed memory.<br />
Parallelize over the six nodes using distributed memory, and over the two <br />
cores on each node using shared memory.<br />
Parallelize on one GPU.<br />
Parallelize over the six GPU’s. <br />
Use all twelve CPU cores and six GPU cores most efficiently. <br />
Profile the code for different values of n, and discuss the “most efficient” way<br />
to multiply two matrices.</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Xsede13-prog-contestXsede13-prog-contest2013-07-23T14:43:48Z<p>Amweeden06: </p>
<hr />
<div>https://www.xsede.org/web/xsede13/student-programming-competition<br />
<br />
=Problem Descriptions=<br />
<br />
==1. Area under the curve==<br />
Scientists need to calculate the area under a curve in many real-world applications, from determining the acceleration of an object in physics to modeling the change in concentration of a drug in pharmacokinetics. Calculus-based approaches work for calculating the area under simple curves, but for more complex curves, the best method is often to apply a discrete approximation using simple shapes and limits.<br />
<br />
==2. Prime number generation==<br />
Because prime numbers have a random (as far as we know) distribution across the number line, generating them can be a very useful task for introducing randomness to a scientific model. A famous scientific application of prime numbers is in cryptography, particularly in the RSA encryption algorithm, which uses pairs of prime numbers as keys to an encoded message. Generating prime numbers that are large enough to be used as keys is a computationally-intensive task.<br />
<br />
==3. Cellular automata==<br />
A number of interesting scientific models use cellular automata to represent real-world situations. A cellular automaton is a grid of cells, each of which has a state that is often determined by the states of its neighbor cells. A famous example of a cellular automaton is Conway’s Game of Life, but there are many examples elsewhere in science and math.<br />
<br />
==4. N-body simulation==<br />
In physics, the 2-body problem explores how two physical bodies with certain masses interact with each other through gravitational force. The 2-body problem has been solved, but extending the problem to a 3-body problem by adding just 1 more object makes the problem so chaotic that it has only been solved for special cases. In general, if scientists want to study the n-body problem, in which an arbitrary number of bodies interact with each other, they will often use computer models and simulations.<br />
<br />
==5. Binary tree traversal==<br />
In computer science, trees are a common data structure for storing and processing data. A tree is composed of nodes, each of which point to one or more child nodes. There is one node which rules them all, the root node. This is the first node in the tree, and the only node to which other nodes do not point. In addition to pointing to other nodes, each node will have a value (the meaning of which is dependent on the application). Finally, a tree has no loops (or cycles); that is, processing a tree from top to bottom will visit each node either 0 or 1 times.<br />
<br />
A tree can be traversed using several different methods. The two most applicable here are in-order depth-first (visit all left children, then the current node, then all right children); and breadth-first (search each level left-to-right before moving to the next level down).<br />
<br />
A binary search tree is a tree with special properties. First, each node will point to only 0, 1, or 2 other nodes. Second, the tree is structured such that the value of all of each node’s left children have values (whatever that may be) less than the node itself; and the value of all of each node’s right children have values greater than the node itself. Finally, each value in the tree must be unique.<br />
<br />
==6. Agent-based simulation==<br />
An agent-based simulation involves many individual things (“agents”) moving around in an environment, and is useful in many areas of science including biology (spread of disease), chemistry (motion of particles in an ideal gas), and physics (n-body gravitation).<br />
<br />
==7. Monte Carlo==<br />
Monte Carlo simulations are useful where a model does not have a deterministic result. Instead, the model is run many times (this is sometimes called an ensemble) and the results in aggregate are used to produce a probability distribution of expected outcomes.<br />
<br />
==8. Logistics==<br />
The problem comes from elementary math education, particularly fraction addition.<br />
<br />
==9. Simulated Annealing==<br />
One of the most important roles mathematics plays in the world is that of reducing complex problems to simple algorithms that either someone of a computer could follow to a desired solution. In many, many real world applications, the object is to find the least expensive, or the most environmentally safe, or the fastest solution from a huge number of possible solutions. There are certain optimization problems that become unmanageable using combinatorial methods as number of objects becomes large. For example, finding an optimal solution to the ‘Traveling Salesman Problem (TSP)’ optimization problem could be an incredibly difficult task, often practically impossible. Because when you increase the number of cities, you need to search through an enormous number of possible solutions in order to find the optimal one. In this case because we can't realistically expect to find the optimal one within a sensible length of time, we have to settle for something that is close enough. Simulated Annealing algorithm is used for finding the most optimal solution to a probabilistic and combinatorial problems. The simulated annealing algorithm was originally inspired from the process of annealing in metals. Annealing involves heating and cooling a material to alter its physical properties due to the changes in its internal structure. As the metal cools its new structure becomes fixed, consequently causing the metal to retain its newly obtained properties. In simulated annealing we keep a temperature variable to simulate this heating process. We initially set it high and then allow it to slowly 'cool' as the algorithm runs. While this temperature variable is high the algorithm will be allowed, with more frequency, to accept solutions that are worse than our current solution. This gives the algorithm the ability to jump out of any local optimums it finds itself in early on in execution. As the temperature is reduced so is the chance of accepting worse solutions, therefore allowing the algorithm to gradually focus in on an area of the search space in which hopefully, a close to optimum solution can be found. This gradual 'cooling' process is what makes the simulated annealing algorithm remarkably effective at finding a close to optimum solution when dealing with large problems which contain numerous local optimums.<br />
<br />
==10. Computational Linguistics==<br />
The NPR Sunday Puzzles are a rich collection of problems with anagrams and combinations of letters. Tools for genome sequencing are designed to work with the letters A, C, G, and T, but can be used for any letters. PERL is specially designed for these tasks, but any language will suffice. The question will be an expansion of one of the Sunday Puzzles.</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Xsede13-prog-contestXsede13-prog-contest2013-07-18T18:39:04Z<p>Amweeden06: Created page with "=Problem Descriptions= ==1. Area under the curve== Scientists need to calculate the area under a curve in many real-world applications, from determining the acceleration of an ..."</p>
<hr />
<div>=Problem Descriptions=<br />
<br />
==1. Area under the curve==<br />
Scientists need to calculate the area under a curve in many real-world applications, from determining the acceleration of an object in physics to modeling the change in concentration of a drug in pharmacokinetics. Calculus-based approaches work for calculating the area under simple curves, but for more complex curves, the best method is often to apply a discrete approximation using simple shapes and limits.<br />
<br />
==2. Prime number generation==<br />
Because prime numbers have a random (as far as we know) distribution across the number line, generating them can be a very useful task for introducing randomness to a scientific model. A famous scientific application of prime numbers is in cryptography, particularly in the RSA encryption algorithm, which uses pairs of prime numbers as keys to an encoded message. Generating prime numbers that are large enough to be used as keys is a computationally-intensive task.<br />
<br />
==3. Cellular automata==<br />
A number of interesting scientific models use cellular automata to represent real-world situations. A cellular automaton is a grid of cells, each of which has a state that is often determined by the states of its neighbor cells. A famous example of a cellular automaton is Conway’s Game of Life, but there are many examples elsewhere in science and math.<br />
<br />
==4. N-body simulation==<br />
In physics, the 2-body problem explores how two physical bodies with certain masses interact with each other through gravitational force. The 2-body problem has been solved, but extending the problem to a 3-body problem by adding just 1 more object makes the problem so chaotic that it has only been solved for special cases. In general, if scientists want to study the n-body problem, in which an arbitrary number of bodies interact with each other, they will often use computer models and simulations.<br />
<br />
==5. Binary tree traversal==<br />
In computer science, trees are a common data structure for storing and processing data. A tree is composed of nodes, each of which point to one or more child nodes. There is one node which rules them all, the root node. This is the first node in the tree, and the only node to which other nodes do not point. In addition to pointing to other nodes, each node will have a value (the meaning of which is dependent on the application). Finally, a tree has no loops (or cycles); that is, processing a tree from top to bottom will visit each node either 0 or 1 times.<br />
<br />
A tree can be traversed using several different methods. The two most applicable here are in-order depth-first (visit all left children, then the current node, then all right children); and breadth-first (search each level left-to-right before moving to the next level down).<br />
<br />
A binary search tree is a tree with special properties. First, each node will point to only 0, 1, or 2 other nodes. Second, the tree is structured such that the value of all of each node’s left children have values (whatever that may be) less than the node itself; and the value of all of each node’s right children have values greater than the node itself. Finally, each value in the tree must be unique.<br />
<br />
==6. Agent-based simulation==<br />
An agent-based simulation involves many individual things (“agents”) moving around in an environment, and is useful in many areas of science including biology (spread of disease), chemistry (motion of particles in an ideal gas), and physics (n-body gravitation).<br />
<br />
==7. Monte Carlo==<br />
Monte Carlo simulations are useful where a model does not have a deterministic result. Instead, the model is run many times (this is sometimes called an ensemble) and the results in aggregate are used to produce a probability distribution of expected outcomes.<br />
<br />
==8. Logistics==<br />
The problem comes from elementary math education, particularly fraction addition.<br />
<br />
==9. Simulated Annealing==<br />
One of the most important roles mathematics plays in the world is that of reducing complex problems to simple algorithms that either someone of a computer could follow to a desired solution. In many, many real world applications, the object is to find the least expensive, or the most environmentally safe, or the fastest solution from a huge number of possible solutions. There are certain optimization problems that become unmanageable using combinatorial methods as number of objects becomes large. For example, finding an optimal solution to the ‘Traveling Salesman Problem (TSP)’ optimization problem could be an incredibly difficult task, often practically impossible. Because when you increase the number of cities, you need to search through an enormous number of possible solutions in order to find the optimal one. In this case because we can't realistically expect to find the optimal one within a sensible length of time, we have to settle for something that is close enough. Simulated Annealing algorithm is used for finding the most optimal solution to a probabilistic and combinatorial problems. The simulated annealing algorithm was originally inspired from the process of annealing in metals. Annealing involves heating and cooling a material to alter its physical properties due to the changes in its internal structure. As the metal cools its new structure becomes fixed, consequently causing the metal to retain its newly obtained properties. In simulated annealing we keep a temperature variable to simulate this heating process. We initially set it high and then allow it to slowly 'cool' as the algorithm runs. While this temperature variable is high the algorithm will be allowed, with more frequency, to accept solutions that are worse than our current solution. This gives the algorithm the ability to jump out of any local optimums it finds itself in early on in execution. As the temperature is reduced so is the chance of accepting worse solutions, therefore allowing the algorithm to gradually focus in on an area of the search space in which hopefully, a close to optimum solution can be found. This gradual 'cooling' process is what makes the simulated annealing algorithm remarkably effective at finding a close to optimum solution when dealing with large problems which contain numerous local optimums.<br />
<br />
==10. Computational Linguistics==<br />
The NPR Sunday Puzzles are a rich collection of problems with anagrams and combinations of letters. Tools for genome sequencing are designed to work with the letters A, C, G, and T, but can be used for any letters. PERL is specially designed for these tasks, but any language will suffice. The question will be an expansion of one of the Sunday Puzzles.</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Main_PageMain Page2013-07-17T21:43:12Z<p>Amweeden06: </p>
<hr />
<div>__NOTOC__<br />
= Welcome to the Cluster Computing Group's Wiki =<br />
<br />
=== Applied Groups ===<br />
* [[Cluster Information|Cluster Computing Group]]<br />
** [[ccg-chemistry-faq|Computational Chemistry FAQ]]<br />
** [[fire-modeling|Fire Modeling]]<br />
** [[ccg-admin|CCG Sysadmin]]<br />
** [[run-as|Running on Al-Salam]]<br />
** [[run-ac|Running on AC]]<br />
** Curriculum Modules<br />
*** [[Cluster:Gprof|Using gprof]]<br />
* [[Green Science|Green Science]]<br />
* Hardware Interfacing Project (HIP) - http://wiki.cs.earlham.edu/index.php/HIP<br />
<br />
=== Classes ===<br />
* [[England_2011|England Program (2011)]]<br />
<br />
=== Other === <br />
* [[new-course|New Course]]<br />
* [[xsede12-prog-contest|XSEDE12 Student Programming Contest]]<br />
* [[xsede13-prog-contest|XSEDE13 Student Programming Contest]]</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Xsede12-prog-contestXsede12-prog-contest2012-07-18T16:05:25Z<p>Amweeden06: </p>
<hr />
<div>=== Introduction===<br />
The XSEDE12 Student Programming Contest is a competitive programming event which will take place as part of the XSEDE12 Conference in Chicago, IL. Teams consisting of up to five students (high school, undergraduate, and/or graduate students) will be given eight to twelve problems from various scientific problem domain areas. To accommodate travel impediments, at least one team member is required to be physically present at XSEDE12, since all program development, testing, and deployment are restricted to the on-site computational resources. The contest will be based on the LittleFe cluster platform (http://LittleFe.net) and the Bootable Cluster CD software stack (http://BCCD.net). Contestants are encouraged to familiarize themselves with them before the contest.<br />
<br />
Problem descriptions will be released one week prior to the on-site competition. Full problem descriptions and data sets will only be accessible to the teams on the day of the actual event. Students will have the bulk of the day, from 8:00 am until 5:00 pm, to submit code and solutions to as many problems as they choose. Part of the judging criteria will involve documentation of the team's activities. Each team will keep an engineering journal using electronic lab notebooks provided by the contest organizers. <br />
<br />
To register a team, ask questions, etc. send email to xsede12-student-contest@cluster.earlham.edu<br />
<br />
=== Team Composition ===<br />
A team consists of up to five students from recognized high school, undergraduate, and/or graduate degree programs. Faculty, and other coaches not part of the student team, are encouraged to mentor students up to, and including, release of the problem descriptions; but should have no involvement with the students on any aspect of the actual competition once the full problem details are released on the day of the event.<br />
<br />
===Hardware/Software Environments===<br />
Every team will be provided access to identical computational resources, a LittleFe v4 unit running the BCCD. Teams may not share resources. Team members may use their own laptops and the contest organizers remote computational resources if they request access to them. Team members will be able to install software on the LittleFe/BCCD unit during the contest.<br />
<br />
===How to use your USB drive===<br />
http://bccd.net/wiki/index.php/UserInstructions#USB_mounting<br />
<br />
===High Level Description of Problems===<br />
<br />
==== Folding, but not your laundry ====<br />
----<br />
This problem is based on the processes and chemistry used by chains of amino acids to "fold" into proteins. Students will design a parallel algorithm considering chains of hydrophobic and polar protein elements.<br />
<br />
[[XSEDE12contest_folding | Full Problem Description]]<br />
<br />
==== Secret message ====<br />
----<br />
Encrypting and decrypting messages has been a long-standing use of a supercomputer of the day. While not a state secret cipher, this problem provides a message in a message in a message to uncover. The moral of the story is while there is a well-established place for high-level, highly-abstracted languages, algorithmic and performance issues may sometimes dictate other solutions.<br />
<br />
This problem challenges you to discover algorithm(s) to simplify and solve a well defined logic puzzle, given that for a contest lasting only a few hours, a brute force algorithm could take days of run-time to complete.<br />
<br />
[[XSEDE12contest_secret_message | Full Problem Description]]<br />
<br />
==== Measure twice, cut once ====<br />
----<br />
In our constantly-evolving, many-core world, the task of load balancing is taking on more and more importance, as is the algorithmic load balancing of computational resources done within the parallel codes that computational scientists have written to implement their mathematical models. This problem offers students the opportunity to develop their algorithm for making load balancing decisions in the universe of hybrid computing, by deciding which tasks will be run together in shared memory mode, communicating between groups using message passing.<br />
<br />
[[XSEDE12contest_measure_twice | Full Problem Description]]<br />
<br />
==== Repulsive gravity ====<br />
----<br />
Problems involving a large number of objects where everything interacts with everything else is found throughout science, from the very small to the very large and a lot in between. This class of problems is called an n-body problem.<br />
<br />
[[XSEDE12contest_repulsive_gravity | Full Problem Description]]<br />
<br />
==== Neurotoxin lab ==== <br />
----<br />
There is a neurotoxin outbreak in an underground laboratory. The scientists inside are completely unprepared for this type of epidemic so their best bet is to get out as fast as possible. The only way out of the lab is through the escape elevators (they’re too high-tech for stairs). This will involve random walking (or running in this case), probability, and spread of poisonous gas.<br />
<br />
[[XSEDE12contest_neurotoxin_lab | Full Problem Description]]<br />
<br />
==== Quasicrystals ====<br />
----<br />
Quasicrystals can be modeled as tilings of two dimensional space. The cardinality of the set of possible tilings, ie the size of state-space, is directly related to the entropy of the crystal. Consequently, the problem of counting the number of tilings of 2-D space with a fixed number of shapes of tiles is as important as it is difficult. Solving the problem requires the application of numerical techniques of discrete math in a physics/materials science context.<br />
<br />
[[XSEDE12contest_quasicrystals | Full Problem Description]]<br />
<br />
==== Has it cooled down yet? ====<br />
----<br />
Simulated Annealing is used in function minimization as a method of finding the global minimum for problems with many free parameters and many local minima.<br />
<br />
[[XSEDE12contest_annealing | Full Problem Description]]<br />
<br />
==== How fast can you run? ====<br />
----<br />
Often the best way to compare two or more computational resources is to analyze how quickly and efficiently they can each solve a given problem. Some of these applications give better light into the resource's performance than others. Be prepared to use some common benchmarking tools.<br />
<br />
[[XSEDE12contest_hpl | Full Problem Description]]<br />
<br />
==== Safe flying ====<br />
----<br />
If you did the air traffic analysis problem, you would see that the data leave a lot to be desired. One way to “fix” the data is to create your own by simulation. This problem is the basis for the real air traffic management systems used in Europe. The USA is still mired in old manual technology. The object here will be to simulate the air traffic in a 2-D square sector.<br />
<br />
[[XSEDE12contest_safeflying | Full Problem Description]]<br />
<br />
==== GFCUDA ====<br />
----<br />
General Purpose Graphical Processing Units (GPGPUs) are developing into a powerful and efficient computing platform. They are especially suited for data-processing applications, many of which can be modeled as matrix operations. In some cases, it can be advantageous to perform operations using groups, rings, or fields other than the integers or reals. Solving this problem requires implementing matrix operations over a Galois field on CUDA-enabled GPGPUs.<br />
<br />
[[XSEDE12contest_gpgpu | Full Problem Description]]<br />
<br />
===Evaluation Criteria===<br />
The following factors will be taken into consideration in ranking and awarding team honors:<br />
<br />
* Process toward a solution<br />
* A complete solution<br />
* Extenuating circumstances of a complete solution, i.e. insightful elegant solutions<br />
* Robustness of the solution.<br />
**Is the code general, so that it will work with other data sets?<br />
**Will perturbations in the data destabilize the code?<br />
*Accuracy of the solution<br />
*Quality of the write-up describing the teams activities to solving the problem<br />
*Engineering journal<br />
**How sound is the documented engineering process?<br />
**Is the documented process consistent with the runs made through the development and scoring queues?<br />
*Resources for Preparation and Team Support<br />
**Computational Resources<br />
**Looking into these resources ahead of time will help prepare students for the challenges they will face during the competition.<br />
<br />
===More Information===<br />
For more information, please direct questions to xsede12-student-contest@cluster.earlham.edu<br />
<br />
===Teams===<br />
Maximum of 15<br />
# Clark Atlanta University (Peter Molnar) - Travon Haynes, Stephen Jones, Jr., David Williams, Zerotti Woods, Jimmy Zhangj, Fatima Ojeda<br />
# XSEDE Scholars 1 (Alice Fisher) - Manuel Zubieta, David Manosalvas, Grace Silva, Nancy Carloa<br />
# XSEDE Scholars 2 (Alice Fisher) - Lindley Graham, Mechel'le Saenz, Agnes Ramos-Beauchamp, Alejandro Weibel<br />
# XSEDE Scholars 3 (Alice Fisher) - Elizabeth Alvarez, Ivy Krystal Jones, Brian Flowers, Kolawole Oni <br />
# XSEDE Scholars 4 (Alice Fisher) - Jasmine Bunch, Mariela Barrera, Malika Harris, Paul Delgado, Jaime Guajardo<br />
# XSEDE Scholars 5 (Alice Fisher) - Amanuel Weldemariam, Alemsthay Abeje, Erika Jones, Ivan Zecena, Julie Pedraza<br />
# XSEDE Scholars 6 (Alice Fisher) - Carla Smith, Abigail Groff, Peter Njenga, Daniel Calderon, Malcom Chitsa<br />
# XSEDE Scholars 7 (Alice Fisher) - Kenisha Ford, Lourdes Espinoza, Joseph Young, Mylo Carter, Eric Santos<br />
# XSEDE Scholars 8 (Alice Fisher) - Melissa Estrada-Maravilla, Alex Grabacki, Carlos Sanchez, Ifueko Igbinedion, J.D. DeVaughn-Brown<br />
# XSEDE Scholars 9 (Alice Fisher) - Nitocris Perez, Adolfo Escobedo-Pinto, Rolando Olivares, Stefano Rensi, Anja Guillory<br />
# University of Michigan (Benson Muite) - Brian Leu (brianleu@umich.edu), Albert Liu (alberliu@umich.edu), Parth Sheth (pssheth@umich.edu), Zheyin Zhang (zeyinzh@umich.edu)<br />
# University of Notre Dame Summer Scholars - Team One (Timothy Stitt, Timothy.Stitt.9@nd.edu) - Rebecca Liu, Jacob Kassman, Evelyn Ding, Anna McMahon, Alex Cao<br />
# University of Notre Dame Summer Scholars - Team Two (Timothy Stitt, Timothy.Stitt.9@nd.edu) - Austin Gwiazdowski, Alex Brizius, Nicholas DeMarshall, Jacob Miller, John Heintschel<br />
<br />
=== Organizers' Notes===<br />
Logistics:<br />
* Tables, chairs, power strips (2 per) from the conference A/V group<br />
* Monitors (we bring or conference A/V group?)<br />
* Disable DHCP<br />
* 15 LittleFes, gigabit switch, jumpers, spares, gear bags</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Xsede12-prog-contestXsede12-prog-contest2012-07-18T14:55:23Z<p>Amweeden06: </p>
<hr />
<div>=== Introduction===<br />
The XSEDE12 Student Programming Contest is a competitive programming event which will take place as part of the XSEDE12 Conference in Chicago, IL. Teams consisting of up to five students (high school, undergraduate, and/or graduate students) will be given eight to twelve problems from various scientific problem domain areas. To accommodate travel impediments, at least one team member is required to be physically present at XSEDE12, since all program development, testing, and deployment are restricted to the on-site computational resources. The contest will be based on the LittleFe cluster platform (http://LittleFe.net) and the Bootable Cluster CD software stack (http://BCCD.net). Contestants are encouraged to familiarize themselves with them before the contest.<br />
<br />
Problem descriptions will be released one week prior to the on-site competition. Full problem descriptions and data sets will only be accessible to the teams on the day of the actual event. Students will have the bulk of the day, from 8:00 am until 5:00 pm, to submit code and solutions to as many problems as they choose. Part of the judging criteria will involve documentation of the team's activities. Each team will keep an engineering journal using electronic lab notebooks provided by the contest organizers. <br />
<br />
To register a team, ask questions, etc. send email to xsede12-student-contest@cluster.earlham.edu<br />
<br />
=== Team Composition ===<br />
A team consists of up to five students from recognized high school, undergraduate, and/or graduate degree programs. Faculty, and other coaches not part of the student team, are encouraged to mentor students up to, and including, release of the problem descriptions; but should have no involvement with the students on any aspect of the actual competition once the full problem details are released on the day of the event.<br />
<br />
===Hardware/Software Environments===<br />
Every team will be provided access to identical computational resources, a LittleFe v4 unit running the BCCD. Teams may not share resources. Team members may use their own laptops and the contest organizers remote computational resources if they request access to them. Team members will be able to install software on the LittleFe/BCCD unit during the contest.<br />
<br />
===High Level Description of Problems===<br />
<br />
==== Folding, but not your laundry ====<br />
----<br />
This problem is based on the processes and chemistry used by chains of amino acids to "fold" into proteins. Students will design a parallel algorithm considering chains of hydrophobic and polar protein elements.<br />
<br />
[[XSEDE12contest_folding | Full Problem Description]]<br />
<br />
==== Secret message ====<br />
----<br />
Encrypting and decrypting messages has been a long-standing use of a supercomputer of the day. While not a state secret cipher, this problem provides a message in a message in a message to uncover. The moral of the story is while there is a well-established place for high-level, highly-abstracted languages, algorithmic and performance issues may sometimes dictate other solutions.<br />
<br />
This problem challenges you to discover algorithm(s) to simplify and solve a well defined logic puzzle, given that for a contest lasting only a few hours, a brute force algorithm could take days of run-time to complete.<br />
<br />
[[XSEDE12contest_secret_message | Full Problem Description]]<br />
<br />
==== Measure twice, cut once ====<br />
----<br />
In our constantly-evolving, many-core world, the task of load balancing is taking on more and more importance, as is the algorithmic load balancing of computational resources done within the parallel codes that computational scientists have written to implement their mathematical models. This problem offers students the opportunity to develop their algorithm for making load balancing decisions in the universe of hybrid computing, by deciding which tasks will be run together in shared memory mode, communicating between groups using message passing.<br />
<br />
[[XSEDE12contest_measure_twice | Full Problem Description]]<br />
<br />
==== Repulsive gravity ====<br />
----<br />
Problems involving a large number of objects where everything interacts with everything else is found throughout science, from the very small to the very large and a lot in between. This class of problems is called an n-body problem.<br />
<br />
[[XSEDE12contest_repulsive_gravity | Full Problem Description]]<br />
<br />
==== Neurotoxin lab ==== <br />
----<br />
There is a neurotoxin outbreak in an underground laboratory. The scientists inside are completely unprepared for this type of epidemic so their best bet is to get out as fast as possible. The only way out of the lab is through the escape elevators (they’re too high-tech for stairs). This will involve random walking (or running in this case), probability, and spread of poisonous gas.<br />
<br />
[[XSEDE12contest_neurotoxin_lab | Full Problem Description]]<br />
<br />
==== Quasicrystals ====<br />
----<br />
Quasicrystals can be modeled as tilings of two dimensional space. The cardinality of the set of possible tilings, ie the size of state-space, is directly related to the entropy of the crystal. Consequently, the problem of counting the number of tilings of 2-D space with a fixed number of shapes of tiles is as important as it is difficult. Solving the problem requires the application of numerical techniques of discrete math in a physics/materials science context.<br />
<br />
[[XSEDE12contest_quasicrystals | Full Problem Description]]<br />
<br />
==== Has it cooled down yet? ====<br />
----<br />
Simulated Annealing is used in function minimization as a method of finding the global minimum for problems with many free parameters and many local minima.<br />
<br />
[[XSEDE12contest_annealing | Full Problem Description]]<br />
<br />
==== How fast can you run? ====<br />
----<br />
Often the best way to compare two or more computational resources is to analyze how quickly and efficiently they can each solve a given problem. Some of these applications give better light into the resource's performance than others. Be prepared to use some common benchmarking tools.<br />
<br />
[[XSEDE12contest_hpl | Full Problem Description]]<br />
<br />
==== Safe flying ====<br />
----<br />
If you did the air traffic analysis problem, you would see that the data leave a lot to be desired. One way to “fix” the data is to create your own by simulation. This problem is the basis for the real air traffic management systems used in Europe. The USA is still mired in old manual technology. The object here will be to simulate the air traffic in a 2-D square sector.<br />
<br />
[[XSEDE12contest_safeflying | Full Problem Description]]<br />
<br />
==== GFCUDA ====<br />
----<br />
General Purpose Graphical Processing Units (GPGPUs) are developing into a powerful and efficient computing platform. They are especially suited for data-processing applications, many of which can be modeled as matrix operations. In some cases, it can be advantageous to perform operations using groups, rings, or fields other than the integers or reals. Solving this problem requires implementing matrix operations over a Galois field on CUDA-enabled GPGPUs.<br />
<br />
[[XSEDE12contest_gpgpu | Full Problem Description]]<br />
<br />
===Evaluation Criteria===<br />
The following factors will be taken into consideration in ranking and awarding team honors:<br />
<br />
* Process toward a solution<br />
* A complete solution<br />
* Extenuating circumstances of a complete solution, i.e. insightful elegant solutions<br />
* Robustness of the solution.<br />
**Is the code general, so that it will work with other data sets?<br />
**Will perturbations in the data destabilize the code?<br />
*Accuracy of the solution<br />
*Quality of the write-up describing the teams activities to solving the problem<br />
*Engineering journal<br />
**How sound is the documented engineering process?<br />
**Is the documented process consistent with the runs made through the development and scoring queues?<br />
*Resources for Preparation and Team Support<br />
**Computational Resources<br />
**Looking into these resources ahead of time will help prepare students for the challenges they will face during the competition.<br />
<br />
===More Information===<br />
For more information, please direct questions to xsede12-student-contest@cluster.earlham.edu<br />
<br />
===Teams===<br />
Maximum of 15<br />
# Clark Atlanta University (Peter Molnar) - Travon Haynes, Stephen Jones, Jr., David Williams, Zerotti Woods, Jimmy Zhangj, Fatima Ojeda<br />
# XSEDE Scholars 1 (Alice Fisher) - Manuel Zubieta, David Manosalvas, Grace Silva, Nancy Carloa<br />
# XSEDE Scholars 2 (Alice Fisher) - Lindley Graham, Mechel'le Saenz, Agnes Ramos-Beauchamp, Alejandro Weibel<br />
# XSEDE Scholars 3 (Alice Fisher) - Elizabeth Alvarez, Ivy Krystal Jones, Brian Flowers, Kolawole Oni <br />
# XSEDE Scholars 4 (Alice Fisher) - Jasmine Bunch, Mariela Barrera, Malika Harris, Paul Delgado, Jaime Guajardo<br />
# XSEDE Scholars 5 (Alice Fisher) - Amanuel Weldemariam, Alemsthay Abeje, Erika Jones, Ivan Zecena, Julie Pedraza<br />
# XSEDE Scholars 6 (Alice Fisher) - Carla Smith, Abigail Groff, Peter Njenga, Daniel Calderon, Malcom Chitsa<br />
# XSEDE Scholars 7 (Alice Fisher) - Kenisha Ford, Lourdes Espinoza, Joseph Young, Mylo Carter, Eric Santos<br />
# XSEDE Scholars 8 (Alice Fisher) - Melissa Estrada-Maravilla, Alex Grabacki, Carlos Sanchez, Ifueko Igbinedion, J.D. DeVaughn-Brown<br />
# XSEDE Scholars 9 (Alice Fisher) - Nitocris Perez, Adolfo Escobedo-Pinto, Rolando Olivares, Stefano Rensi, Anja Guillory<br />
# University of Michigan (Benson Muite) - Brian Leu (brianleu@umich.edu), Albert Liu (alberliu@umich.edu), Parth Sheth (pssheth@umich.edu), Zheyin Zhang (zeyinzh@umich.edu)<br />
# University of Notre Dame Summer Scholars - Team One (Timothy Stitt, Timothy.Stitt.9@nd.edu) - Rebecca Liu, Jacob Kassman, Evelyn Ding, Anna McMahon, Alex Cao<br />
# University of Notre Dame Summer Scholars - Team Two (Timothy Stitt, Timothy.Stitt.9@nd.edu) - Austin Gwiazdowski, Alex Brizius, Nicholas DeMarshall, Jacob Miller, John Heintschel<br />
<br />
=== Organizers' Notes===<br />
Logistics:<br />
* Tables, chairs, power strips (2 per) from the conference A/V group<br />
* Monitors (we bring or conference A/V group?)<br />
* Disable DHCP<br />
* 15 LittleFes, gigabit switch, jumpers, spares, gear bags</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/File:Quasicrystal.jpgFile:Quasicrystal.jpg2012-07-18T14:54:24Z<p>Amweeden06: </p>
<hr />
<div></div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Xsede12-prog-contestXsede12-prog-contest2012-07-18T14:53:28Z<p>Amweeden06: </p>
<hr />
<div>=== Introduction===<br />
The XSEDE12 Student Programming Contest is a competitive programming event which will take place as part of the XSEDE12 Conference in Chicago, IL. Teams consisting of up to five students (high school, undergraduate, and/or graduate students) will be given eight to twelve problems from various scientific problem domain areas. To accommodate travel impediments, at least one team member is required to be physically present at XSEDE12, since all program development, testing, and deployment are restricted to the on-site computational resources. The contest will be based on the LittleFe cluster platform (http://LittleFe.net) and the Bootable Cluster CD software stack (http://BCCD.net). Contestants are encouraged to familiarize themselves with them before the contest.<br />
<br />
Problem descriptions will be released one week prior to the on-site competition. Full problem descriptions and data sets will only be accessible to the teams on the day of the actual event. Students will have the bulk of the day, from 8:00 am until 5:00 pm, to submit code and solutions to as many problems as they choose. Part of the judging criteria will involve documentation of the team's activities. Each team will keep an engineering journal using electronic lab notebooks provided by the contest organizers. <br />
<br />
To register a team, ask questions, etc. send email to xsede12-student-contest@cluster.earlham.edu<br />
<br />
=== Team Composition ===<br />
A team consists of up to five students from recognized high school, undergraduate, and/or graduate degree programs. Faculty, and other coaches not part of the student team, are encouraged to mentor students up to, and including, release of the problem descriptions; but should have no involvement with the students on any aspect of the actual competition once the full problem details are released on the day of the event.<br />
<br />
===Hardware/Software Environments===<br />
Every team will be provided access to identical computational resources, a LittleFe v4 unit running the BCCD. Teams may not share resources. Team members may use their own laptops and the contest organizers remote computational resources if they request access to them. Team members will be able to install software on the LittleFe/BCCD unit during the contest.<br />
<br />
===High Level Description of Problems===<br />
<br />
==== Folding, but not your laundry ====<br />
----<br />
This problem is based on the processes and chemistry used by chains of amino acids to "fold" into proteins. Students will design a parallel algorithm considering chains of hydrophobic and polar protein elements.<br />
<br />
[[XSEDE12contest_folding | Full Problem Description]]<br />
<br />
==== Secret message ====<br />
----<br />
Encrypting and decrypting messages has been a long-standing use of a supercomputer of the day. While not a state secret cipher, this problem provides a message in a message in a message to uncover. The moral of the story is while there is a well-established place for high-level, highly-abstracted languages, algorithmic and performance issues may sometimes dictate other solutions.<br />
<br />
This problem challenges you to discover algorithm(s) to simplify and solve a well defined logic puzzle, given that for a contest lasting only a few hours, a brute force algorithm could take days of run-time to complete.<br />
<br />
[[XSEDE12contest_secret_message | Full Problem Description]]<br />
<br />
==== Measure twice, cut once ====<br />
----<br />
In our constantly-evolving, many-core world, the task of load balancing is taking on more and more importance, as is the algorithmic load balancing of computational resources done within the parallel codes that computational scientists have written to implement their mathematical models. This problem offers students the opportunity to develop their algorithm for making load balancing decisions in the universe of hybrid computing, by deciding which tasks will be run together in shared memory mode, communicating between groups using message passing.<br />
<br />
[[XSEDE12contest_measure_twice | Full Problem Description]]<br />
<br />
==== Repulsive gravity ====<br />
----<br />
Problems involving a large number of objects where everything interacts with everything else is found throughout science, from the very small to the very large and a lot in between. This class of problems is called an n-body problem.<br />
<br />
[[XSEDE12contest_repulsive_gravity | Full Problem Description]]<br />
<br />
==== Neurotoxin lab ==== <br />
----<br />
There is a neurotoxin outbreak in an underground laboratory. The scientists inside are completely unprepared for this type of epidemic so their best bet is to get out as fast as possible. The only way out of the lab is through the escape elevators (they’re too high-tech for stairs). This will involve random walking (or running in this case), probability, and spread of poisonous gas.<br />
<br />
[[XSEDE12contest_neurotoxin_lab | Full Problem Description]]<br />
<br />
==== Quasicrystals ====<br />
----<br />
Quasicrystals can be modeled as tilings of two dimensional space. The cardinality of the set of possible tilings, ie the size of state-space, is directly related to the entropy of the crystal. Consequently, the problem of counting the number of tilings of 2-D space with a fixed number of shapes of tiles is as important as it is difficult. Solving the problem requires the application of numerical techniques of discrete math in a physics/materials science context.<br />
<br />
[[XSEDE12contest_quasicrystals | Full Problem Description]]<br />
<br />
==== Has it cooled down yet? ====<br />
----<br />
Simulated Annealing is used in function minimization as a method of finding the global minimum for problems with many free parameters and many local minima.<br />
<br />
[[XSEDE12contest_annealing | Full Problem Description]]<br />
<br />
==== How fast can you run? ====<br />
----<br />
Often the best way to compare two or more computational resources is to analyze how quickly and efficiently they can each solve a given problem. Some of these applications give better light into the resource's performance than others. Be prepared to use some common benchmarking tools.<br />
<br />
[[XSEDE12contest_hpl | Full Problem Description]]<br />
<br />
==== Safe flying ====<br />
----<br />
If you did the air traffic analysis problem, you would see that the data leave a lot to be desired. One way to “fix” the data is to create your own by simulation. This problem is the basis for the real air traffic management systems used in Europe. The USA is still mired in old manual technology. The object here will be to simulate the air traffic in a 2-D square sector.<br />
<br />
[[XSEDE12contest_safeflying | Full Problem Description]]<br />
<br />
==== GFCUDA ====<br />
----<br />
General Purpose Graphical Processing Units (GPGPUs) are developing into a powerful and efficient computing platform. They are especially suited for data-processing applications, many of which can be modeled as matrix operations. In some cases, it can be advantageous to perform operations using groups, rings, or fields other than the integers or reals. Solving this problem requires implementing matrix operations over a Galois field on CUDA-enabled GPGPUs.<br />
<br />
===Evaluation Criteria===<br />
The following factors will be taken into consideration in ranking and awarding team honors:<br />
<br />
* Process toward a solution<br />
* A complete solution<br />
* Extenuating circumstances of a complete solution, i.e. insightful elegant solutions<br />
* Robustness of the solution.<br />
**Is the code general, so that it will work with other data sets?<br />
**Will perturbations in the data destabilize the code?<br />
*Accuracy of the solution<br />
*Quality of the write-up describing the teams activities to solving the problem<br />
*Engineering journal<br />
**How sound is the documented engineering process?<br />
**Is the documented process consistent with the runs made through the development and scoring queues?<br />
*Resources for Preparation and Team Support<br />
**Computational Resources<br />
**Looking into these resources ahead of time will help prepare students for the challenges they will face during the competition.<br />
<br />
[[XSEDE12contest_gpgpu | Full Problem Description]]<br />
<br />
===More Information===<br />
For more information, please direct questions to xsede12-student-contest@cluster.earlham.edu<br />
<br />
===Teams===<br />
Maximum of 15<br />
# Clark Atlanta University (Peter Molnar) - Travon Haynes, Stephen Jones, Jr., David Williams, Zerotti Woods, Jimmy Zhangj, Fatima Ojeda<br />
# XSEDE Scholars 1 (Alice Fisher) - Manuel Zubieta, David Manosalvas, Grace Silva, Nancy Carloa<br />
# XSEDE Scholars 2 (Alice Fisher) - Lindley Graham, Mechel'le Saenz, Agnes Ramos-Beauchamp, Alejandro Weibel<br />
# XSEDE Scholars 3 (Alice Fisher) - Elizabeth Alvarez, Ivy Krystal Jones, Brian Flowers, Kolawole Oni <br />
# XSEDE Scholars 4 (Alice Fisher) - Jasmine Bunch, Mariela Barrera, Malika Harris, Paul Delgado, Jaime Guajardo<br />
# XSEDE Scholars 5 (Alice Fisher) - Amanuel Weldemariam, Alemsthay Abeje, Erika Jones, Ivan Zecena, Julie Pedraza<br />
# XSEDE Scholars 6 (Alice Fisher) - Carla Smith, Abigail Groff, Peter Njenga, Daniel Calderon, Malcom Chitsa<br />
# XSEDE Scholars 7 (Alice Fisher) - Kenisha Ford, Lourdes Espinoza, Joseph Young, Mylo Carter, Eric Santos<br />
# XSEDE Scholars 8 (Alice Fisher) - Melissa Estrada-Maravilla, Alex Grabacki, Carlos Sanchez, Ifueko Igbinedion, J.D. DeVaughn-Brown<br />
# XSEDE Scholars 9 (Alice Fisher) - Nitocris Perez, Adolfo Escobedo-Pinto, Rolando Olivares, Stefano Rensi, Anja Guillory<br />
# University of Michigan (Benson Muite) - Brian Leu (brianleu@umich.edu), Albert Liu (alberliu@umich.edu), Parth Sheth (pssheth@umich.edu), Zheyin Zhang (zeyinzh@umich.edu)<br />
# University of Notre Dame Summer Scholars - Team One (Timothy Stitt, Timothy.Stitt.9@nd.edu) - Rebecca Liu, Jacob Kassman, Evelyn Ding, Anna McMahon, Alex Cao<br />
# University of Notre Dame Summer Scholars - Team Two (Timothy Stitt, Timothy.Stitt.9@nd.edu) - Austin Gwiazdowski, Alex Brizius, Nicholas DeMarshall, Jacob Miller, John Heintschel<br />
<br />
=== Organizers' Notes===<br />
Logistics:<br />
* Tables, chairs, power strips (2 per) from the conference A/V group<br />
* Monitors (we bring or conference A/V group?)<br />
* Disable DHCP<br />
* 15 LittleFes, gigabit switch, jumpers, spares, gear bags</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/XSEDE12contest_hplXSEDE12contest hpl2012-07-18T14:26:02Z<p>Amweeden06: </p>
<hr />
<div>Often the best way to compare two or more computational resources is to analyze how quickly and efficiently they can each solve a given problem. Some of these applications give better light into the resource's performance than others. Be prepared to use some common benchmarking tools.<br />
<br />
[http://top500.org Top 500] is the canonical list of the fastest computers in the world, with the most recent version of it released on Sunday. How do they figure out how to rank the machines? They measure how much work each machine can do. In order to make sure every center measures their machine in the same way, they're asked to run the same benchmarking program. For the top500 list, this is [http://www.netlib.org/benchmark/hpl/ HPL, High Performance Linpack].<br />
<br />
You should compile and run the version of HPL that is shipped with LittleFe/BCCD. The goal is to produce the fastest configuration for the LittleFe/BCCD platform that you can. This run will need to be at least 30 minutes long. Note that you can download and install e.g. ATLAS to significantly improve the performance of HPL.<br />
<br />
For your deliverable, you should give us your:<br />
*HPL.dat<br />
*HPL.out; and<br />
*a write up, potentially addressing these issues:<br />
**What do all the numbers in HPL.dat mean?<br />
**How do the results in HPL.out connect to those numbers?<br />
**How do you think you could have gotten better results, given more time?</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/XSEDE12contest_hplXSEDE12contest hpl2012-07-18T14:25:48Z<p>Amweeden06: Created page with "== How fast can you run? == Often the best way to compare two or more computational resources is to analyze how quickly and efficiently they can each solve a given problem. Some ..."</p>
<hr />
<div>== How fast can you run? ==<br />
Often the best way to compare two or more computational resources is to analyze how quickly and efficiently they can each solve a given problem. Some of these applications give better light into the resource's performance than others. Be prepared to use some common benchmarking tools.<br />
<br />
[http://top500.org Top 500] is the canonical list of the fastest computers in the world, with the most recent version of it released on Sunday. How do they figure out how to rank the machines? They measure how much work each machine can do. In order to make sure every center measures their machine in the same way, they're asked to run the same benchmarking program. For the top500 list, this is [http://www.netlib.org/benchmark/hpl/ HPL, High Performance Linpack].<br />
<br />
You should compile and run the version of HPL that is shipped with LittleFe/BCCD. The goal is to produce the fastest configuration for the LittleFe/BCCD platform that you can. This run will need to be at least 30 minutes long. Note that you can download and install e.g. ATLAS to significantly improve the performance of HPL.<br />
<br />
For your deliverable, you should give us your:<br />
*HPL.dat<br />
*HPL.out; and<br />
*a write up, potentially addressing these issues:<br />
**What do all the numbers in HPL.dat mean?<br />
**How do the results in HPL.out connect to those numbers?<br />
**How do you think you could have gotten better results, given more time?</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/JustatestjustatestJustatestjustatest2012-07-18T14:25:41Z<p>Amweeden06: </p>
<hr />
<div>[[XSEDE12contest_folding | fol]]<br />
<br />
[[XSEDE12contest_secret_message | sec]]<br />
<br />
[[XSEDE12contest_measure_twice | mea]]<br />
<br />
[[XSEDE12contest_repulsive_gravity | repul]]<br />
<br />
[[XSEDE12contest_neurotoxin_lab | neuro]]<br />
<br />
[[XSEDE12contest_quasicrystals | quasi]]<br />
<br />
[[XSEDE12contest_annealing | anneal]]<br />
<br />
[[XSEDE12contest_hpl | hpl]]<br />
<br />
[[XSEDE12contest_safeflying | safefly]]<br />
<br />
[[XSEDE12contest_gpgpu | gpgpu]]</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/File:Equation2.jpgFile:Equation2.jpg2012-07-18T14:23:49Z<p>Amweeden06: </p>
<hr />
<div></div>Amweeden06https://cluster.earlham.edu/wiki/index.php/File:Equation1.jpgFile:Equation1.jpg2012-07-18T14:23:33Z<p>Amweeden06: </p>
<hr />
<div></div>Amweeden06https://cluster.earlham.edu/wiki/index.php/File:Rij.jpgFile:Rij.jpg2012-07-18T14:23:17Z<p>Amweeden06: </p>
<hr />
<div></div>Amweeden06https://cluster.earlham.edu/wiki/index.php/File:Formula.jpgFile:Formula.jpg2012-07-18T14:22:23Z<p>Amweeden06: </p>
<hr />
<div></div>Amweeden06https://cluster.earlham.edu/wiki/index.php/XSEDE12contest_repulsive_gravityXSEDE12contest repulsive gravity2012-07-18T14:21:41Z<p>Amweeden06: Created page with "== Background == Problems involving a large number of objects where everything interacts with everything else is found throughout science, from the very small to the very large a..."</p>
<hr />
<div>== Background ==<br />
Problems involving a large number of objects where everything interacts with everything else is found throughout science, from the very small to the very large and a lot in between. This class of problems is called a n-body problem.<br />
<br />
== Required/Recommended Knowledge ==<br />
* Ability to program in C or Fortran<br />
* Some knowledge of physics<br />
<br />
== Problem Description ==<br />
Consider a universe in which gravity includes a repulsive force at close distances, such that:<br />
<br />
[[Image:formula.jpg|600px]]<br />
<br />
How large would alpha need to be in order for the collapse of a 200,000 solar mass cluster initially spread out over 5000 light years to be significantly altered? Users should implement a standard N-body code with the above force law, modified to run in parallel using MPI. A solution should include graphical and statistical interpretation of simulation results.<br />
<br />
If we didn’t make gravity a bit repulsive, you would have been able to find codes throughout the Net. In fact there is even one on every version of the BCCD.<br />
<br />
You are welcome to obtain code from the web you can legally use, such as GalaxSee from the BCCD, and modify it using our modified gravitational equation.<br />
<br />
== Analysis ==<br />
Your report should include a description of the steps taken by the team in working to create your program. You will need to supply your program, including references to any code you have borrowed, and proof of the legality of your use of it, Be sure to include what you mean by significant alteration of the 200,000 solar mass cluster, as well as your interpretation of results from running your code.</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/File:Measure-twice.jpgFile:Measure-twice.jpg2012-07-18T14:21:03Z<p>Amweeden06: </p>
<hr />
<div></div>Amweeden06https://cluster.earlham.edu/wiki/index.php/XSEDE12contest_measure_twiceXSEDE12contest measure twice2012-07-18T14:20:09Z<p>Amweeden06: Created page with "=Background= In our constantly-evolving, many-core world, the task of load-balancing is taking on more and more importance, as is the algorithmic load balancing of computational ..."</p>
<hr />
<div>=Background=<br />
In our constantly-evolving, many-core world, the task of load-balancing is taking on more and more importance, as is the algorithmic load balancing of computational resources done within the parallel codes computational scientists have written to implement their mathematical models. This problem offers students the opportunity to develop their algorithm for making load-balancing decisions in the universe of hybrid computing, by deciding which tasks will be run together in shared memory mode, communicating between groups using message passing.<br />
<br />
=Required/Recommended Knowledge=<br />
Ability to program in the language of your choice.<br />
<br />
=Problem Description=<br />
Eric Shook, a PhD student at the University of Illinois at Urbana-Champaign, has graciously suggested the kernel of a problem loosely based on his dissertation work. You will be given a simplified execution model of a linear boundary problem. An integer value is associated with each processing node representing computational workload. The value on the line connecting nodes represents the additional communication cost from using message passing instead of shared memory exchange of boundary values. For instance, in the example below, if we have three processors, we are then looking to make two cuts in the linear chain, which accomplishes the load balancing of the two pieces to the two processors.<br />
<br />
[[Image:Measure-twice.jpg|600px]]<br />
<br />
Suppose we made a cut at 6 and 496, which might seem perfect at first glance. However the compute time for the first piece is 19+(6), for the second is (6)+42+28+7+496, and 496+2 for the third, i.e. 25, 579, and 498. Since we have to wait till all are done, the overall time is max(25, 579, 498) or 579. This is actually not the best place to do the two cuts. The best is the min(of the cost of all possible combinations of two cuts).<br />
<br />
It turns out a better cut is at 17 and 13, max(19+42+(17), (17)+28+(13), (13)+7+2), which is max(78, 58, 22), which is 78.<br />
<br />
The best cut is at 6 and 17, max(19+(6), (6)+42+(17), (17)+28+7+2), which is max(25, 65, 54), which is 65.<br />
<br />
You are given three files (see below), which you must run against the same code. In all three cases you are looking for the best solution. A less desirable, but possibly more practical solution is to write a code that yields a pretty good solution. You will of course need to describe your algorithm and why it is either the best solution or a pretty good solution.<br />
<br />
The first line of the file gives the number of processors.<br />
<br />
Subsequent lines contain two numbers:<br />
# The execution time of the task.<br />
# The cost to add to the task group on the left and the right, if a cut is made at this spot.<br />
<br />
The last line corresponds to the last task and thus does not have a second number.<br />
<br />
== Analysis == <br />
Your report should include a description of the steps taken by the team in working to obtain your program. You will need to supply your program and the three outputs which includes where the cuts were made, as well as a description/proof why your solution is either the correct solution or a reasonable approximation of the correct solution.<br />
<br />
== Data Files ==<br />
* [http://wiki.sc-education.org/images/4/47/File-1.txt File 1]<br />
* [http://wiki.sc-education.org/images/9/99/File-2.txt File 2]<br />
* [http://wiki.sc-education.org/images/9/9d/File-3.txt File 3]</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/XSEDE12contest_secret_messageXSEDE12contest secret message2012-07-18T14:18:44Z<p>Amweeden06: Created page with "=Secret Message= This problem was inspired by [http://projecteuler.net/problem=185 Project Euler Problem 185]. Encrypting and decrypting messages has been a long standing use of..."</p>
<hr />
<div>=Secret Message=<br />
This problem was inspired by [http://projecteuler.net/problem=185 Project Euler Problem 185].<br />
<br />
Encrypting and decrypting messages has been a long standing use of a supercomputer of the day. While not not a state secret cipher, this problem provides a message in a message in a message to uncover. The moral of the story is while there is a well established place for high level highly abstracted languages, algorithmic and performance issues may sometimes dictate other solutions.<br />
This problem challenges you to discover algorithm(s) to simplify and solve a well defined logic puzzle, given that for a contest lasting only a few hours, a brute force algorithm could take days of run-time to complete.<br />
<br />
===Technology===<br />
Required tools<br />
* Programming ability<br />
* Understanding of algorithms, data structures, and complexity analysis<br />
Suggested tools<br />
* Use of MPI (Message Passing Interface) or OpenMP or CUDA (Compute Unified Device Architecture)<br />
<br />
===Description===<br />
* Use LittleFe to code, run and solve the following logic problem:<br />
<br />
This problem is like the Project Euler 185 (Number mind) problem, except instead of numbers, lowercase letters are used. The integer following each sequence of 15 letters reflects the number of right characters, in the right position.<br />
<br />
This problem could have 0, just 1, or possibly many solutions<br />
whatanswersbein 3<br />
ithecareemplore 3<br />
befreedjustlike 0<br />
howsailoronceto 2<br />
windsaidfreedom 1<br />
vvvvvvvvvvvvvvv 0<br />
naryawordharmed 2<br />
viaourmakingall 2<br />
vvvvvvvvvvvvvvv 0<br />
patternsofgreat 2<br />
worthneedseento 1<br />
beelsefriendnot 0<br />
willtimebetoyou 0<br />
vvvvvvvvvvvvvvv 0<br />
abandonnohopeor 1<br />
startyounotthis 1<br />
taskofmindheart 1<br />
vvvvvvvvvvvvvvv 0<br />
sphinxofblackqu 2<br />
artzjudgemyvowq 1<br />
uickzephyrsblow 0<br />
vexingdaftjimpa 1<br />
ckmyboxwithfive 0<br />
dozenliquorjugs 1<br />
wequicklyseized 0<br />
theblackaxleand 2<br />
justsaveditfrom 1<br />
goingpasthimthe 2<br />
quickbrownfoxju 0<br />
mpsoveralazydog 1<br />
<br />
=== Grading===<br />
In a folder named "SecretMessage":<br />
* Your report of work in an ASCII text file named "ReadMe"<br />
* The source code used to solve the problem<br />
What the graders will be looking for:<br />
* Your report should include a description of the steps taken by the team in working to obtain results. State the problems encountered, the possible solutions considered and tried, and the solution that was implemented and benchmarked.<br />
* Discussion of algorithmic and programming tactics taken to minimize run-time.<br />
* Your report should also include observations on additional steps that might be taken to reduce the overall run-time.</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/XSEDE12contest_foldingXSEDE12contest folding2012-07-18T14:04:15Z<p>Amweeden06: Created page with "= Folding, but not your laundry = This problem is based on the processes and chemistry used by chains of amino acids to "fold" into proteins. The structure of the problem is from..."</p>
<hr />
<div>= Folding, but not your laundry =<br />
This problem is based on the processes and chemistry used by chains of amino acids to "fold" into proteins. The structure of the problem is from [http://projecteuler.net/index.php?section=problems&id=300 Project Euler Problem 300], you should become familiar with their description before proceeding.<br />
<br />
<br />
1) Design a parallel algorithm which, given an arbitrary string of H and P elements, finds the <br />
conformation with the maximum number of H+H bonds.<br />
<br />
<br />
Note that the algorithm can, although doesn't have to be, embarrisingly parallel; that is it can use LittleFe to examine each potential arrangement individually in a parameter space search approach rather than using an algorithm that is parallel for each particular conformation.<br />
<br />
<br />
2) You will likely want to use MPI, OpenMP, or CUDA to solve your problem. Hybrid approaches which combine two or more of these are also permitted.<br />
<br />
<br />
3) Test and refine your implementation using user supplied data sets that conform to the input specifications found in the Project Euler problem.<br />
<br />
<br />
4) Run your program using the test string provided below, your software's output should closely resemble this format (note, this is an example only):<br />
Input string: HHPPHHHPHHPH<br />
Number of H+H bonds in best conformation: 9<br />
Grapical representation (ASCII) of the best conformation: <br />
<br />
PHH<br />
HHHP<br />
HHH<br />
PP<br />
<br />
Turn-in a write-up which describes your approach in detail and your complete source code. Partial credit will be given for partial solutions, that is a reasonable description of an approach/algorithm with a partial implementation of the solution. Source code without a detailed explanation will not earn any credit.<br />
<br />
<br />
5) Test data: HHHPHHPPHHPHH</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/JustatestjustatestJustatestjustatest2012-07-18T14:03:24Z<p>Amweeden06: </p>
<hr />
<div>[[XSEDE12contest_folding | fol]]<br />
<br />
[[XSEDE12contest_secret_message | sec]]<br />
<br />
[[XSEDE12contest_measure_twice | mea]]<br />
<br />
[[XSEDE12contest_repulsive_gravity | repul]]<br />
<br />
[[XSEDE12contest_neurotoxin_lab | neuro]]<br />
<br />
[[XSEDE12contest_quasicrystals | quasi]]<br />
<br />
[[XSEDE12contest_annealing | anneal]]</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/JustatestjustatestJustatestjustatest2012-07-17T21:21:03Z<p>Amweeden06: </p>
<hr />
<div>[[Media:Example.ogg]]</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/JustatestjustatestJustatestjustatest2012-07-17T21:15:15Z<p>Amweeden06: Blanked the page</p>
<hr />
<div></div>Amweeden06https://cluster.earlham.edu/wiki/index.php/JustatestjustatestJustatestjustatest2012-07-17T21:14:45Z<p>Amweeden06: Created page with "File:hi.txt"</p>
<hr />
<div>[[File:hi.txt]]</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Xsede12-prog-contestXsede12-prog-contest2012-07-17T20:21:21Z<p>Amweeden06: </p>
<hr />
<div>=== Introduction===<br />
The XSEDE12 Student Programming Contest is a competitive programming event which will take place as part of the XSEDE12 Conference in Chicago, IL. Teams consisting of up to five students (high school, undergraduate, and/or graduate students) will be given eight to twelve problems from various scientific problem domain areas. To accommodate travel impediments, at least one team member is required to be physically present at XSEDE12, since all program development, testing, and deployment are restricted to the on-site computational resources. The contest will be based on the LittleFe cluster platform (http://LittleFe.net) and the Bootable Cluster CD software stack (http://BCCD.net). Contestants are encouraged to familiarize themselves with them before the contest.<br />
<br />
Problem descriptions will be released one week prior to the on-site competition. Full problem descriptions and data sets will only be accessible to the teams on the day of the actual event. Students will have the bulk of the day, from 8:00 am until 5:00 pm, to submit code and solutions to as many problems as they choose. Part of the judging criteria will involve documentation of the team's activities. Each team will keep an engineering journal using electronic lab notebooks provided by the contest organizers. <br />
<br />
To register a team, ask questions, etc. send email to xsede12-student-contest@cluster.earlham.edu<br />
<br />
=== Team Composition ===<br />
A team consists of up to five students from recognized high school, undergraduate, and/or graduate degree programs. Faculty, and other coaches not part of the student team, are encouraged to mentor students up to, and including, release of the problem descriptions; but should have no involvement with the students on any aspect of the actual competition once the full problem details are released on the day of the event.<br />
<br />
===Hardware/Software Environments===<br />
Every team will be provided access to identical computational resources, a LittleFe v4 unit running the BCCD. Teams may not share resources. Team members may use their own laptops and the contest organizers remote computational resources if they request access to them. Team members will be able to install software on the LittleFe/BCCD unit during the contest.<br />
<br />
===High Level Description of Problems===<br />
<br />
==== Folding, but not your laundry ====<br />
----<br />
This problem is based on the processes and chemistry used by chains of amino acids to "fold" into proteins. Students will design a parallel algorithm considering chains of hydrophobic and polar protein elements.<br />
<br />
==== Secret message ====<br />
----<br />
Encrypting and decrypting messages has been a long-standing use of a supercomputer of the day. While not a state secret cipher, this problem provides a message in a message in a message to uncover. The moral of the story is while there is a well-established place for high-level, highly-abstracted languages, algorithmic and performance issues may sometimes dictate other solutions.<br />
<br />
This problem challenges you to discover algorithm(s) to simplify and solve a well defined logic puzzle, given that for a contest lasting only a few hours, a brute force algorithm could take days of run-time to complete.<br />
<br />
==== Measure twice, cut once ====<br />
----<br />
In our constantly-evolving, many-core world, the task of load balancing is taking on more and more importance, as is the algorithmic load balancing of computational resources done within the parallel codes that computational scientists have written to implement their mathematical models. This problem offers students the opportunity to develop their algorithm for making load balancing decisions in the universe of hybrid computing, by deciding which tasks will be run together in shared memory mode, communicating between groups using message passing.<br />
<br />
==== Repulsive gravity ====<br />
----<br />
Problems involving a large number of objects where everything interacts with everything else is found throughout science, from the very small to the very large and a lot in between. This class of problems is called an n-body problem.<br />
<br />
==== Neurotoxin lab ==== <br />
----<br />
There is a neurotoxin outbreak in an underground laboratory. The scientists inside are completely unprepared for this type of epidemic so their best bet is to get out as fast as possible. The only way out of the lab is through the escape elevators (they’re too high-tech for stairs). This will involve random walking (or running in this case), probability, and spread of poisonous gas.<br />
<br />
==== Quasicrystals ====<br />
----<br />
Quasicrystals can be modeled as tilings of two dimensional space. The cardinality of the set of possible tilings, ie the size of state-space, is directly related to the entropy of the crystal. Consequently, the problem of counting the number of tilings of 2-D space with a fixed number of shapes of tiles is as important as it is difficult. Solving the problem requires the application of numerical techniques of discrete math in a physics/materials science context.<br />
<br />
==== Has it cooled down yet? ====<br />
----<br />
Simulated Annealing is used in function minimization as a method of finding the global minimum for problems with many free parameters and many local minima.<br />
<br />
==== How fast can you run? ====<br />
----<br />
Often the best way to compare two or more computational resources is to analyze how quickly and efficiently they can each solve a given problem. Some of these applications give better light into the resource's performance than others. Be prepared to use some common benchmarking tools.<br />
<br />
==== Safe flying ====<br />
----<br />
If you did the air traffic analysis problem, you would see that the data leave a lot to be desired. One way to “fix” the data is to create your own by simulation. This problem is the basis for the real air traffic management systems used in Europe. The USA is still mired in old manual technology. The object here will be to simulate the air traffic in a 2-D square sector.<br />
<br />
==== GFCUDA ====<br />
----<br />
General Purpose Graphical Processing Units (GPGPUs) are developing into a powerful and efficient computing platform. They are especially suited for data-processing applications, many of which can be modeled as matrix operations. In some cases, it can be advantageous to perform operations using groups, rings, or fields other than the integers or reals. Solving this problem requires implementing matrix operations over a Galois field on CUDA-enabled GPGPUs.<br />
<br />
===Evaluation Criteria===<br />
The following factors will be taken into consideration in ranking and awarding team honors:<br />
<br />
* Process toward a solution<br />
* A complete solution<br />
* Extenuating circumstances of a complete solution, i.e. insightful elegant solutions<br />
* Robustness of the solution.<br />
**Is the code general, so that it will work with other data sets?<br />
**Will perturbations in the data destabilize the code?<br />
*Accuracy of the solution<br />
*Quality of the write-up describing the teams activities to solving the problem<br />
*Engineering journal<br />
**How sound is the documented engineering process?<br />
**Is the documented process consistent with the runs made through the development and scoring queues?<br />
*Resources for Preparation and Team Support<br />
**Computational Resources<br />
**Looking into these resources ahead of time will help prepare students for the challenges they will face during the competition.<br />
<br />
===More Information===<br />
For more information, please direct questions to xsede12-student-contest@cluster.earlham.edu<br />
<br />
===Teams===<br />
Maximum of 15<br />
# Clark Atlanta University (Peter Molnar) - Travon Haynes, Stephen Jones, Jr., David Williams, Zerotti Woods, Jimmy Zhangj, Fatima Ojeda<br />
# XSEDE Scholars 1 (Alice Fisher) - Manuel Zubieta, David Manosalvas, Grace Silva, Nancy Carloa<br />
# XSEDE Scholars 2 (Alice Fisher) - Lindley Graham, Mechel'le Saenz, Agnes Ramos-Beauchamp, Alejandro Weibel<br />
# XSEDE Scholars 3 (Alice Fisher) - Elizabeth Alvarez, Ivy Krystal Jones, Brian Flowers, Kolawole Oni <br />
# XSEDE Scholars 4 (Alice Fisher) - Jasmine Bunch, Mariela Barrera, Malika Harris, Paul Delgado, Jaime Guajardo<br />
# XSEDE Scholars 5 (Alice Fisher) - Amanuel Weldemariam, Alemsthay Abeje, Erika Jones, Ivan Zecena, Julie Pedraza<br />
# XSEDE Scholars 6 (Alice Fisher) - Carla Smith, Abigail Groff, Peter Njenga, Daniel Calderon, Malcom Chitsa<br />
# XSEDE Scholars 7 (Alice Fisher) - Kenisha Ford, Lourdes Espinoza, Joseph Young, Mylo Carter, Eric Santos<br />
# XSEDE Scholars 8 (Alice Fisher) - Melissa Estrada-Maravilla, Alex Grabacki, Carlos Sanchez, Ifueko Igbinedion, J.D. DeVaughn-Brown<br />
# XSEDE Scholars 9 (Alice Fisher) - Nitocris Perez, Adolfo Escobedo-Pinto, Rolando Olivares, Stefano Rensi, Anja Guillory<br />
# University of Michigan (Benson Muite) - Brian Leu (brianleu@umich.edu), Albert Liu (alberliu@umich.edu), Parth Sheth (pssheth@umich.edu), Zheyin Zhang (zeyinzh@umich.edu)<br />
# University of Notre Dame Summer Scholars - Team One (Timothy Stitt, Timothy.Stitt.9@nd.edu) - Rebecca Liu, Jacob Kassman, Evelyn Ding, Anna McMahon, Alex Cao<br />
# University of Notre Dame Summer Scholars - Team Two (Timothy Stitt, Timothy.Stitt.9@nd.edu) - Austin Gwiazdowski, Alex Brizius, Nicholas DeMarshall, Jacob Miller, John Heintschel<br />
<br />
=== Organizers' Notes===<br />
Logistics:<br />
* Tables, chairs, power strips (2 per) from the conference A/V group<br />
* Monitors (we bring or conference A/V group?)<br />
* Disable DHCP<br />
* 15 LittleFes, gigabit switch, jumpers, spares, gear bags</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Xsede12-prog-contestXsede12-prog-contest2012-07-09T15:07:40Z<p>Amweeden06: /* Team Composition */ typo</p>
<hr />
<div>=== Introduction===<br />
The XSEDE12 Student Programming Contest is a competitive programming event which will take place as part of the XSEDE12 Conference in Chicago, IL. Teams consisting of up to five students (high school, undergraduate, and/or graduate students) will be given eight to twelve problems from various scientific problem domain areas. To accommodate travel impediments, at least one team member is required to be physically present at XSEDE12, since all program development, testing, and deployment are restricted to the on-site computational resources. The contest will be based on the LittleFe cluster platform (http://LittleFe.net) and the Bootable Cluster CD software stack (http://BCCD.net). Contestants are encouraged to familiarize themselves with them before the contest.<br />
<br />
Problem descriptions will be released one week prior to the on-site competition. Full problem descriptions and data sets will only be accessible to the teams on the day of the actual event. Students will have the bulk of the day, from 8:00 am until 5:00 pm, to submit code and solutions to as many problems as they choose. Part of the judging criteria will involve documentation of the team's activities. Each team will keep an engineering journal using electronic lab notebooks provided by the contest organizers. <br />
<br />
To register a team, ask questions, etc. send email to xsede12-student-contest@cluster.earlham.edu<br />
<br />
=== Team Composition ===<br />
A team consists of up to five students from recognized high school, undergraduate, and/or graduate degree programs. Faculty, and other coaches not part of the student team, are encouraged to mentor students up to, and including, release of the problem descriptions; but should have no involvement with the students on any aspect of the actual competition once the full problem details are released on the day of the event.<br />
<br />
===Hardware/Software Environments===<br />
Every team will be provided access to identical computational resources, a LittleFe v4 unit running the BCCD. Teams may not share resources. Team members may use their own laptops and the contest organizers remote computational resources if they request access to them. Team members will be able to install software on the LittleFe/BCCD unit during the contest.<br />
<br />
===Evaluation Criteria===<br />
The following factors will be taken into consideration in ranking and awarding team honors:<br />
<br />
* Process toward a solution<br />
* A complete solution<br />
* Extenuating circumstances of a complete solution, i.e. insightful elegant solutions<br />
* Robustness of the solution.<br />
**Is the code general, so that it will work with other data sets?<br />
**Will perturbations in the data destabilize the code?<br />
*Accuracy of the solution<br />
*Quality of the write-up describing the teams activities to solving the problem<br />
*Engineering journal<br />
**How sound is the documented engineering process?<br />
**Is the documented process consistent with the runs made through the development and scoring queues?<br />
*Resources for Preparation and Team Support<br />
**Computational Resources<br />
**Looking into these resources ahead of time will help prepare students for the challenges they will face during the competition.<br />
<br />
===More Information===<br />
For more information, please direct questions to xsede12-student-contest@cluster.earlham.edu<br />
<br />
===Teams===<br />
Maximum of 15<br />
# Clark Atlanta University (Peter Molnar) - Travon Haynes, Stephen Jones, Jr., David Williams, Zerotti Woods, Jimmy Zhangj, Fatima Ojeda<br />
# XSEDE Scholars 1 (Alice Fisher) - Manuel Zubieta, David Manosalvas, Grace Silva, Nancy Carloa<br />
# XSEDE Scholars 2 (Alice Fisher) - Lindley Graham, Mechel'le Saenz, Agnes Ramos-Beauchamp, Alejandro Weibel<br />
# XSEDE Scholars 3 (Alice Fisher) - Elizabeth Alvarez, Ivy Krystal Jones, Brian Flowers, Kolawole Oni <br />
# XSEDE Scholars 4 (Alice Fisher) - Jasmine Bunch, Mariela Barrera, Malika Harris, Paul Delgado, Jaime Guajardo<br />
# XSEDE Scholars 5 (Alice Fisher) - Amanuel Weldemariam, Alemsthay Abeje, Erika Jones, Ivan Zecena, Julie Pedraza<br />
# XSEDE Scholars 6 (Alice Fisher) - Carla Smith, Abigail Groff, Peter Njenga, Daniel Calderon, Malcom Chitsa<br />
# XSEDE Scholars 7 (Alice Fisher) - Kenisha Ford, Lourdes Espinoza, Joseph Young, Mylo Carter, Eric Santos<br />
# XSEDE Scholars 8 (Alice Fisher) - Melissa Estrada-Maravilla, Alex Grabacki, Carlos Sanchez, Ifueko Igbinedion, J.D. DeVaughn-Brown<br />
# XSEDE Scholars 9 (Alice Fisher) - Nitocris Perez, Adolfo Escobedo-Pinto, Rolando Olivares, Stefano Rensi, Anja Guillory<br />
# University of Michigan (Benson Muite) - TBD<br />
# TBD<br />
# TBD<br />
# TBD<br />
# TBD<br />
<br />
=== Organizers' Notes===<br />
Logistics:<br />
* Tables, chairs, power strips (2 per) from the conference A/V group<br />
* Monitors (we bring or conference A/V group?)<br />
* Disable DHCP<br />
* 15 LittleFes, gigabit switch, jumpers, spares, gear bags</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Xsede12-prog-contestXsede12-prog-contest2012-07-09T15:04:46Z<p>Amweeden06: typo</p>
<hr />
<div>=== Introduction===<br />
The XSEDE12 Student Programming Contest is a competitive programming event which will take place as part of the XSEDE12 Conference in Chicago, IL. Teams consisting of up to five students (high school, undergraduate, and/or graduate students) will be given eight to twelve problems from various scientific problem domain areas. To accommodate travel impediments, at least one team member is required to be physically present at XSEDE12, since all program development, testing, and deployment are restricted to the on-site computational resources. The contest will be based on the LittleFe cluster platform (http://LittleFe.net) and the Bootable Cluster CD software stack (http://BCCD.net). Contestants are encouraged to familiarize themselves with them before the contest.<br />
<br />
Problem descriptions will be released one week prior to the on-site competition. Full problem descriptions and data sets will only be accessible to the teams on the day of the actual event. Students will have the bulk of the day, from 8:00 am until 5:00 pm, to submit code and solutions to as many problems as they choose. Part of the judging criteria will involve documentation of the team's activities. Each team will keep an engineering journal using electronic lab notebooks provided by the contest organizers. <br />
<br />
To register a team, ask questions, etc. send email to xsede12-student-contest@cluster.earlham.edu<br />
<br />
=== Team Composition ===<br />
A team consists of up to five students from recognized high school, undergraduate, and/or graduate degree programs. Faculty, and other coaches not part of the student team, are encouraged to mentor students up to, and including, release of the problem descriptions; bus should have no involvement with the students on any aspect of the actual competition once the full problem details are released on the day of the event.<br />
<br />
===Hardware/Software Environments===<br />
Every team will be provided access to identical computational resources, a LittleFe v4 unit running the BCCD. Teams may not share resources. Team members may use their own laptops and the contest organizers remote computational resources if they request access to them. Team members will be able to install software on the LittleFe/BCCD unit during the contest.<br />
<br />
===Evaluation Criteria===<br />
The following factors will be taken into consideration in ranking and awarding team honors:<br />
<br />
* Process toward a solution<br />
* A complete solution<br />
* Extenuating circumstances of a complete solution, i.e. insightful elegant solutions<br />
* Robustness of the solution.<br />
**Is the code general, so that it will work with other data sets?<br />
**Will perturbations in the data destabilize the code?<br />
*Accuracy of the solution<br />
*Quality of the write-up describing the teams activities to solving the problem<br />
*Engineering journal<br />
**How sound is the documented engineering process?<br />
**Is the documented process consistent with the runs made through the development and scoring queues?<br />
*Resources for Preparation and Team Support<br />
**Computational Resources<br />
**Looking into these resources ahead of time will help prepare students for the challenges they will face during the competition.<br />
<br />
===More Information===<br />
For more information, please direct questions to xsede12-student-contest@cluster.earlham.edu<br />
<br />
===Teams===<br />
Maximum of 15<br />
# Clark Atlanta University (Peter Molnar) - Travon Haynes, Stephen Jones, Jr., David Williams, Zerotti Woods, Jimmy Zhangj, Fatima Ojeda<br />
# XSEDE Scholars 1 (Alice Fisher) - Manuel Zubieta, David Manosalvas, Grace Silva, Nancy Carloa<br />
# XSEDE Scholars 2 (Alice Fisher) - Lindley Graham, Mechel'le Saenz, Agnes Ramos-Beauchamp, Alejandro Weibel<br />
# XSEDE Scholars 3 (Alice Fisher) - Elizabeth Alvarez, Ivy Krystal Jones, Brian Flowers, Kolawole Oni <br />
# XSEDE Scholars 4 (Alice Fisher) - Jasmine Bunch, Mariela Barrera, Malika Harris, Paul Delgado, Jaime Guajardo<br />
# XSEDE Scholars 5 (Alice Fisher) - Amanuel Weldemariam, Alemsthay Abeje, Erika Jones, Ivan Zecena, Julie Pedraza<br />
# XSEDE Scholars 6 (Alice Fisher) - Carla Smith, Abigail Groff, Peter Njenga, Daniel Calderon, Malcom Chitsa<br />
# XSEDE Scholars 7 (Alice Fisher) - Kenisha Ford, Lourdes Espinoza, Joseph Young, Mylo Carter, Eric Santos<br />
# XSEDE Scholars 8 (Alice Fisher) - Melissa Estrada-Maravilla, Alex Grabacki, Carlos Sanchez, Ifueko Igbinedion, J.D. DeVaughn-Brown<br />
# XSEDE Scholars 9 (Alice Fisher) - Nitocris Perez, Adolfo Escobedo-Pinto, Rolando Olivares, Stefano Rensi, Anja Guillory<br />
# University of Michigan (Benson Muite) - TBD<br />
# TBD<br />
# TBD<br />
# TBD<br />
# TBD<br />
<br />
=== Organizers' Notes===<br />
Logistics:<br />
* Tables, chairs, power strips (2 per) from the conference A/V group<br />
* Monitors (we bring or conference A/V group?)<br />
* Disable DHCP<br />
* 15 LittleFes, gigabit switch, jumpers, spares, gear bags</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/SysadminContactInfoSysadminContactInfo2011-02-14T18:04:44Z<p>Amweeden06: /* EMail contact */ Adding Aaron Weeden</p>
<hr />
<div>=== EMail contact ===<br />
* Mailing list: [mailto:admin@cs.earlham.edu admin@cs.earlham.edu]<br />
* Personal email addresses:<br />
** [[Fitz|Andrew Fitz Gibbon]]: [mailto:fitzgan@earlham.edu fitz@cs.earlham.edu]<br />
** [[Sam|Sam Wein]]: [mailto:spwein06@earlham.edu spwein06@earlham.edu]<br />
** [[Peter|Peter Flee]]: [mailto:fiee@cs.earlham.edu fiee@cs.earlham.edu]<br />
** [[Kay|Kay Wanous]]: [mailto:kwanous@cs.earlham.edu kwanous@cs.earlham.edu]<br />
** [http://about.me/Aaron_Weeden Aaron Weeden]: [mailto:amweeden.earlham@gmail.com amweeden.earlham@gmail.com]<br />
<br />
=== Telephone contact ===<br />
==== Standard ====<br />
* [[SysadminOffice|Sysadmin office]]: new number??<br />
* Kay's office: 765-983-1784<br />
<br />
==== Emergency only ====<br />
* [[Fitz|Andrew Fitz Gibbon]]: 330-234-9676<br />
* [[Sam|Sam Wein]]: (765) 325-7269<br />
* [[Nick|Nick Mclarnan]]: 765-969-2362 (Cell)<br />
* [[Kay|Kay Wanous]]: 319-504-2600 (Cell)<br />
* [[Randy|Randy Schultz]]: 765-914-5795 (Cell)<br />
* [http://about.me/Aaron_Weeden| Aaron Weeden]: 762-462-9688 (Cell)<br />
* [[Security|Security]]: 765-983-1400 (Main office)<br />
* [[Security|Security]]: 765-914-1130 (Cell)<br />
* [[Bill|Bill Birum]]: 765-914-9680 (Cell)<br />
* [[RPL|Richmond Power and Light]]: 765-973-7200 (Office)<br />
<br />
=== Alums ===<br />
* Chris Hardie<br />
* Alex Reeder<br />
* Hassan Halta<br />
* [[SkylarThompson|Skylar Thompson]]: [mailto:skylar@cs.earlham.edu skylar@cs.earlham.edu] - 920-749-1994 (Home in WI)<br />
* [[Shawn|Shawn Smith]]: [mailto:smithsh1@earlham.edu smithsh1@earlham.edu] - 317-372-2623 (Cell)<br />
* (others too)</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/SysadminContactInfoSysadminContactInfo2011-02-14T18:02:45Z<p>Amweeden06: /* Emergency only */</p>
<hr />
<div>=== EMail contact ===<br />
* Mailing list: [mailto:admin@cs.earlham.edu admin@cs.earlham.edu]<br />
* Personal email addresses:<br />
** [[Fitz|Andrew Fitz Gibbon]]: [mailto:fitzgan@earlham.edu fitz@cs.earlham.edu]<br />
** [[Sam|Sam Wein]]: [mailto:spwein06@earlham.edu spwein06@earlham.edu]<br />
** [[Peter|Peter Flee]]: [mailto:fiee@cs.earlham.edu fiee@cs.earlham.edu]<br />
** [[Kay|Kay Wanous]]: [mailto:kwanous@cs.earlham.edu kwanous@cs.earlham.edu]<br />
<br />
=== Telephone contact ===<br />
==== Standard ====<br />
* [[SysadminOffice|Sysadmin office]]: new number??<br />
* Kay's office: 765-983-1784<br />
<br />
==== Emergency only ====<br />
* [[Fitz|Andrew Fitz Gibbon]]: 330-234-9676<br />
* [[Sam|Sam Wein]]: (765) 325-7269<br />
* [[Nick|Nick Mclarnan]]: 765-969-2362 (Cell)<br />
* [[Kay|Kay Wanous]]: 319-504-2600 (Cell)<br />
* [[Randy|Randy Schultz]]: 765-914-5795 (Cell)<br />
* [http://about.me/Aaron_Weeden| Aaron Weeden]: 762-462-9688 (Cell)<br />
* [[Security|Security]]: 765-983-1400 (Main office)<br />
* [[Security|Security]]: 765-914-1130 (Cell)<br />
* [[Bill|Bill Birum]]: 765-914-9680 (Cell)<br />
* [[RPL|Richmond Power and Light]]: 765-973-7200 (Office)<br />
<br />
=== Alums ===<br />
* Chris Hardie<br />
* Alex Reeder<br />
* Hassan Halta<br />
* [[SkylarThompson|Skylar Thompson]]: [mailto:skylar@cs.earlham.edu skylar@cs.earlham.edu] - 920-749-1994 (Home in WI)<br />
* [[Shawn|Shawn Smith]]: [mailto:smithsh1@earlham.edu smithsh1@earlham.edu] - 317-372-2623 (Cell)<br />
* (others too)</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/SysadminContactInfoSysadminContactInfo2011-02-14T18:02:14Z<p>Amweeden06: /* Emergency only */</p>
<hr />
<div>=== EMail contact ===<br />
* Mailing list: [mailto:admin@cs.earlham.edu admin@cs.earlham.edu]<br />
* Personal email addresses:<br />
** [[Fitz|Andrew Fitz Gibbon]]: [mailto:fitzgan@earlham.edu fitz@cs.earlham.edu]<br />
** [[Sam|Sam Wein]]: [mailto:spwein06@earlham.edu spwein06@earlham.edu]<br />
** [[Peter|Peter Flee]]: [mailto:fiee@cs.earlham.edu fiee@cs.earlham.edu]<br />
** [[Kay|Kay Wanous]]: [mailto:kwanous@cs.earlham.edu kwanous@cs.earlham.edu]<br />
<br />
=== Telephone contact ===<br />
==== Standard ====<br />
* [[SysadminOffice|Sysadmin office]]: new number??<br />
* Kay's office: 765-983-1784<br />
<br />
==== Emergency only ====<br />
* [[Fitz|Andrew Fitz Gibbon]]: 330-234-9676<br />
* [[Sam|Sam Wein]]: (765) 325-7269<br />
* [[Nick|Nick Mclarnan]]: 765-969-2362 (Cell)<br />
* [[Kay|Kay Wanous]]: 319-504-2600 (Cell)<br />
* [[Randy|Randy Schultz]]: 765-914-5795 (Cell)<br />
* [[http://about.me/Aaron_Weeden|Aaron Weeden]]: 762-462-9688 (Cell)<br />
* [[Security|Security]]: 765-983-1400 (Main office)<br />
* [[Security|Security]]: 765-914-1130 (Cell)<br />
* [[Bill|Bill Birum]]: 765-914-9680 (Cell)<br />
* [[RPL|Richmond Power and Light]]: 765-973-7200 (Office)<br />
<br />
=== Alums ===<br />
* Chris Hardie<br />
* Alex Reeder<br />
* Hassan Halta<br />
* [[SkylarThompson|Skylar Thompson]]: [mailto:skylar@cs.earlham.edu skylar@cs.earlham.edu] - 920-749-1994 (Home in WI)<br />
* [[Shawn|Shawn Smith]]: [mailto:smithsh1@earlham.edu smithsh1@earlham.edu] - 317-372-2623 (Cell)<br />
* (others too)</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/AaronAaron2011-02-14T18:00:45Z<p>Amweeden06: </p>
<hr />
<div>amweeden.earlham@gmail.com<br />
<br />
Aaron Weeden<br />
<br />
Post-Baccalaureate Intern 2010-2011<br />
<br />
Computer Science Department<br />
<br />
Earlham College '10</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/AaronAaron2011-02-14T18:00:28Z<p>Amweeden06: New page: amweeden.earlham@gmail.com Aaron Weeden Post-Baccalaureate Intern 2010-2011 Computer Science Department Earlham College '10</p>
<hr />
<div>amweeden.earlham@gmail.com<br />
<br />
Aaron Weeden<br />
Post-Baccalaureate Intern 2010-2011<br />
Computer Science Department<br />
Earlham College '10</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/SysadminContactInfoSysadminContactInfo2011-02-14T17:59:25Z<p>Amweeden06: /* Emergency only */ Adding Aaron Weeden</p>
<hr />
<div>=== EMail contact ===<br />
* Mailing list: [mailto:admin@cs.earlham.edu admin@cs.earlham.edu]<br />
* Personal email addresses:<br />
** [[Fitz|Andrew Fitz Gibbon]]: [mailto:fitzgan@earlham.edu fitz@cs.earlham.edu]<br />
** [[Sam|Sam Wein]]: [mailto:spwein06@earlham.edu spwein06@earlham.edu]<br />
** [[Peter|Peter Flee]]: [mailto:fiee@cs.earlham.edu fiee@cs.earlham.edu]<br />
** [[Kay|Kay Wanous]]: [mailto:kwanous@cs.earlham.edu kwanous@cs.earlham.edu]<br />
<br />
=== Telephone contact ===<br />
==== Standard ====<br />
* [[SysadminOffice|Sysadmin office]]: new number??<br />
* Kay's office: 765-983-1784<br />
<br />
==== Emergency only ====<br />
* [[Fitz|Andrew Fitz Gibbon]]: 330-234-9676<br />
* [[Sam|Sam Wein]]: (765) 325-7269<br />
* [[Nick|Nick Mclarnan]]: 765-969-2362 (Cell)<br />
* [[Kay|Kay Wanous]]: 319-504-2600 (Cell)<br />
* [[Randy|Randy Schultz]]: 765-914-5795 (Cell)<br />
* [[Aaron|Aaron Weeden]]: 762-462-9688 (Cell)<br />
* [[Security|Security]]: 765-983-1400 (Main office)<br />
* [[Security|Security]]: 765-914-1130 (Cell)<br />
* [[Bill|Bill Birum]]: 765-914-9680 (Cell)<br />
* [[RPL|Richmond Power and Light]]: 765-973-7200 (Office)<br />
<br />
=== Alums ===<br />
* Chris Hardie<br />
* Alex Reeder<br />
* Hassan Halta<br />
* [[SkylarThompson|Skylar Thompson]]: [mailto:skylar@cs.earlham.edu skylar@cs.earlham.edu] - 920-749-1994 (Home in WI)<br />
* [[Shawn|Shawn Smith]]: [mailto:smithsh1@earlham.edu smithsh1@earlham.edu] - 317-372-2623 (Cell)<br />
* (others too)</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/SysadminSysadmin2011-01-26T03:36:56Z<p>Amweeden06: /* Works in Progress */</p>
<hr />
<div>__NOTOC__<br />
Important Notes:<br />
* '''''ALL of the admin ''''' '''CVS/SVN stuff has been centralized to trac.cs.earlham.edu/admin'''. You'll need to create a username/password for yourself by running (from quark):<br />
:<code>htpasswd /usr/local/trac/adminontrac.htpasswd <username></code><br />
* To check out the repository, run (from quark):<br />
:<code>svn checkout file:///clients/users/svn/admin</code><br />
* [[Sysadmin:IRC|Chatting on IRC]]<br />
<br />
== Systems Administration Documentation ==<br />
<br />
{|<br />
|- valign="top"<br />
|<br />
<div style="border:10px solid #E3E0FA; padding:5px"><br />
<div style="background-color:#D7D1F8; padding:5px;"><br />
=== Works in Progress ===<br />
</div><br />
<br />
* [[Sysadmin:handbook|Handbook (WIP)]]<br />
* [[Sysadmin:Temporary Page | Temporary Page for Wiki Adjustment]]<br />
* [[Sysadmin: Upgrading FreeBSD | Upgrading FreeBSD]]<br />
* [[Sysadmin:Fail2Ban on FreeBSD | Fail2Ban on FreeBSD]]<br />
* [[Sysadmin:Running Nessus | Running Nessus]]<br />
* [[Sysadmin:SrvcCheck|Things to check when things go down]]<br />
<br />
<!-- This has to stay as part of the formatting --><br />
</div><br />
| style="width:50px;" |<br />
|<br />
<div style="border:10px solid #E0EAF8; padding:5px;"><br />
<div style="background-color:#CEDEF4; padding:5px;"><br />
<br />
=== Admin Tasks ===<br />
</div><br />
<br />
* [[Sysadmin:Backup|Backup]] (needs to be updated after new setup)<br />
* [[Sysadmin:Contacting all users|Contacting all users]]<br />
* [[Sysadmin:AddComputer|Add a computer]]<br />
* [[Sysadmin:New Sysadmins|Welcoming a new sysadmin to the fold]]<br />
* [[Sysadmin:RT Ticketing|RT Ticketing]]<br />
<br />
<!-- This has to stay as part of the formatting --><br />
</div><br />
|}<br />
<br />
<br />
{|<br />
|- valign="top"<br />
|<br />
<br />
<div style="border:10px solid #FFDFFF; padding:5px;"><br />
<div style="background-color:#FFCEFF; padding:5px;"><br />
<br />
=== Services ===<br />
</div><br />
* [[Sysadmin:User Management|User Management]]<br />
* [[Sysadmin:Services:Databases|Databases]]<br />
* [[Sysadmin:Services:Email|Email]]<br />
* [[Sysadmin:Services:Apache2|Apache2]]<br />
* [[Sysadmin:Services:SystemImager|System Imager]]<br />
* [[Sysadmin:Services:TracSVN|Trac + svn]]<br />
* [[Sysadmin:Services:DNS and DHCP|DNS and DHCP]]<br />
* [[Sysadmin:Services:Virtualization | Virtualization]]<br />
* [[Sysadmin:Services:LVM|LVM]]<br />
* [[Sysadmin:Services:Printers|Printers]]<br />
<br />
<!-- This has to stay as part of the formatting --><br />
</div><br />
| style="width:50px;" |<br />
|<br />
<br />
<div style="border:10px solid #DBF0F7; padding:5px;"><br />
<div style="background-color:#C9EAF3; padding:5px;"><br />
<br />
=== Servers ===<br />
</div><br />
* [[Sysadmin:SvcChart|Service Chart]]<br />
* [[Sysadmin:Monitoring|Monitoring]]<br />
* [[Sysadmin:Quark | Quark]]<br />
* [[Sysadmin:Forty-Two | Forty-two]]<br />
* [[Sysadmin:Lovelace | Lovelace]]<br />
* [[Sysadmin:Proto | Proto]]<br />
* [[Sysadmin:RetiredServers | Retired Servers]]<br />
<br />
<!-- This has to stay as part of the formatting --><br />
</div><br />
| style="width:50px;" |<br />
|<br />
<div style="border:10px solid #FFFFC8; padding:5px;"><br />
<div style="background-color:#FFFFB5; padding:5px;"><br />
<br />
=== ACL Workstations ===<br />
</div><br />
* [[Sysadmin:ACL:Installation|ACL Installation procedure]]<br />
* [[Sysadmin:AclImage|ACL Package Information]]<br />
* [[Sysadmin:Acl Locations|ACL Locations]]<br />
* [[Sysadmin:Software for Chemistry ACLs|Software for Chemistry ACLs]]<br />
* [[Sysadmin:ACL:UpProp|Proposed ACL Update policy]]<br />
<br />
<!-- This has to stay as part of the formatting --><br />
</div><br />
|}<br />
<br />
<br />
{|<br />
|- valign="top"<br />
|<br />
<div style="border:10px solid #D6F8DE; padding:5px;"><br />
<div style="background-color:#BDF4CB; padding:5px;"><br />
=== Networking ===<br />
</div><br />
* [[Sysadmin:Networking:NetworkLayout|Network Layout (as of 08/2006)]]<br />
* [[Sysadmin:Networking:D224 cable plant|D224 cable plant]]<br />
* [[Sysadmin:Networking:Fiber plans|Fiber plans]]<br />
* [[Sysadmin:Networking:Switches|Switches]]<br />
* [[Sysadmin:Networking:Rack notes|Rack notes]]<br />
* [[Sysadmin:Networking:Public|Public Network]]<br />
* [[Sysadmin:Networking:NetworkTopo|Old Network Topo Figures]]<br />
* [[Sysadmin:Networking:NetworkDiagram|Network layout (May 2007)]]<br />
* [[Sysadmin:Networking:Alternate Network Path|Alt Network path]]<br />
* [[Sysadmin:UPS Setup]]<br />
<br />
<!-- This has to stay as part of the formatting --><br />
</div><br />
| style="width:50px;" |<br />
|<br />
<div style="border:10px solid #F0DDD5; padding:5px;"><br />
<div style="background-color:#E4C0B1; padding:5px;"><br />
<br />
=== Miscellaneous ===<br />
</div><br />
* [[SysadminContactInfo|Contact Information]]<br />
* [[Sysadmin:ImportantInfo:PhoneNumbers|Phone Numbers]]<br />
* [[Sysadmin:ImportantInfo:WebSites|Web Sites]]<br />
* [[Sysadmin:ImportantInfo:AuthenticationInfo|Authentication Information]]<br />
* [[Sysadmin:ImportantInfo:PowerFailure|Power Failure]]<br />
* [[Sysadmin:ImportantInfo:UPS|UPS]]<br />
* [[Sysadmin:ImportantInfo:SSLcerts|Generating SSL Certificates]]<br />
* [[Sysadmin:Power draws|Power draws]]<br />
* [[Sysadmin:ImportantInfo:SunHardware|Working with Sun Hardware]]<br />
* [[Sysadmin:Passwords]]<br />
* Patching<br />
** [[LinuxKernelPatching|Linux Kernel Patching]]<br />
** [[FreeBSDKernelPatching|FreeBSD Kernel Patching]]<br />
* [[Sysadmin:SerialConsoleCableEnds|Cable Ends]]<br />
<br />
<!-- This has to stay as part of the formatting --><br />
</div><br />
|}</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Sysadmin:Looking_at_DNS_and_DHCPSysadmin:Looking at DNS and DHCP2011-01-26T03:36:31Z<p>Amweeden06: Removing all content from page</p>
<hr />
<div></div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Sysadmin:New_SysadminsSysadmin:New Sysadmins2011-01-21T17:53:04Z<p>Amweeden06: /* Keys */</p>
<hr />
<div>__NOTOC__<br />
There are quite a few areas to update when a new system administrator joins the admin group (and some of these apply to someone leaving the group, actually...).<br />
<br />
=== Keys ===<br />
New sysadmins get a copy of CAA8 (D221) and CAX (Dennis outside door). These need to be requested with a form (which can be picked up in Bobbi's office) and signed by the new sysadmin and by either Charlie, Jim or, Randy.<br />
<br />
=== Bookkeeping ===<br />
Sysadmins need to register for CS281: Applied Groups. They can either take the class for zero, one, or two credit hours. Have the new admins contact Jim with their preferences.<br />
<br />
=== E-mails ===<br />
* The new admins need to be added to the CS-Admin mailing list.<br />
* [[Sysadmin:Nagios|Nagios]] needs to be updated to include the users in e-mails sent out. This doesn't go to the mailing list in case the CS department's e-mail stack is part of the problem. Also there are sys admin alumns on the mailing list who don't need to know about servers going down on a daily basis.<br />
* The usernames need to be added to the root alias on [[Servers:Quark|Quark]] in <code>/etc/aliases</code> '''Update: 6/19/09: Root now goes to the admin mailing list, so this is no longer true.'''<br />
<br />
=== Accounts/Permissions ===<br />
There are a few (physical) machines that don't use NIS and need to have users added by hand:<br />
* [[Servers:FourtyTwo|Forty-Two]] - if it's up and running by then<br />
* [[Servers:Forty_one|Forty-One]]<br />
* [[Servers:Backup|Backup]]<br />
<br />
Users need to have a wiki account created for them on this wiki, and in NIS, users need to be added to the wheel group.<br />
<br />
=== Passwords ===<br />
There are lots of them.</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Sysadmin:New_SysadminsSysadmin:New Sysadmins2011-01-21T16:56:44Z<p>Amweeden06: /* Bookkeeping */</p>
<hr />
<div>__NOTOC__<br />
There are quite a few areas to update when a new system administrator joins the admin group (and some of these apply to someone leaving the group, actually...).<br />
<br />
=== Keys ===<br />
New sysadmins get a copy of CAA8 (D221) and CAX (Dennis outside door). These need to be requested with a form (which can be picked up at campus security or in Bobbi's office) and signed by the new sysadmin and by either Charlie, Jim or, Randy.<br />
<br />
=== Bookkeeping ===<br />
Sysadmins need to register for CS281: Applied Groups. They can either take the class for zero, one, or two credit hours. Have the new admins contact Jim with their preferences.<br />
<br />
=== E-mails ===<br />
* The new admins need to be added to the CS-Admin mailing list.<br />
* [[Sysadmin:Nagios|Nagios]] needs to be updated to include the users in e-mails sent out. This doesn't go to the mailing list in case the CS department's e-mail stack is part of the problem. Also there are sys admin alumns on the mailing list who don't need to know about servers going down on a daily basis.<br />
* The usernames need to be added to the root alias on [[Servers:Quark|Quark]] in <code>/etc/aliases</code> '''Update: 6/19/09: Root now goes to the admin mailing list, so this is no longer true.'''<br />
<br />
=== Accounts/Permissions ===<br />
There are a few (physical) machines that don't use NIS and need to have users added by hand:<br />
* [[Servers:FourtyTwo|Forty-Two]] - if it's up and running by then<br />
* [[Servers:Forty_one|Forty-One]]<br />
* [[Servers:Backup|Backup]]<br />
<br />
Users need to have a wiki account created for them on this wiki, and in NIS, users need to be added to the wheel group.<br />
<br />
=== Passwords ===<br />
There are lots of them.</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Sysadmin:New_SysadminsSysadmin:New Sysadmins2011-01-21T16:55:45Z<p>Amweeden06: /* Keys */</p>
<hr />
<div>__NOTOC__<br />
There are quite a few areas to update when a new system administrator joins the admin group (and some of these apply to someone leaving the group, actually...).<br />
<br />
=== Keys ===<br />
New sysadmins get a copy of CAA8 (D221) and CAX (Dennis outside door). These need to be requested with a form (which can be picked up at campus security or in Bobbi's office) and signed by the new sysadmin and by either Charlie, Jim or, Randy.<br />
<br />
=== Bookkeeping ===<br />
Sysadmins need to register for CS281: Applied Groups. They can either take the class for zero or one credit hour (pass/fail). This can't be done online since it requires instructor permission, but have Charlie sign the sheet.<br />
<br />
=== E-mails ===<br />
* The new admins need to be added to the CS-Admin mailing list.<br />
* [[Sysadmin:Nagios|Nagios]] needs to be updated to include the users in e-mails sent out. This doesn't go to the mailing list in case the CS department's e-mail stack is part of the problem. Also there are sys admin alumns on the mailing list who don't need to know about servers going down on a daily basis.<br />
* The usernames need to be added to the root alias on [[Servers:Quark|Quark]] in <code>/etc/aliases</code> '''Update: 6/19/09: Root now goes to the admin mailing list, so this is no longer true.'''<br />
<br />
=== Accounts/Permissions ===<br />
There are a few (physical) machines that don't use NIS and need to have users added by hand:<br />
* [[Servers:FourtyTwo|Forty-Two]] - if it's up and running by then<br />
* [[Servers:Forty_one|Forty-One]]<br />
* [[Servers:Backup|Backup]]<br />
<br />
Users need to have a wiki account created for them on this wiki, and in NIS, users need to be added to the wheel group.<br />
<br />
=== Passwords ===<br />
There are lots of them.</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Sysadmin:AddComputerSysadmin:AddComputer2010-08-26T18:16:16Z<p>Amweeden06: /* DNS */</p>
<hr />
<div>These are the changes that need to be made if a computer is to be added to the CS network, follow these steps.<br />
<br />
== Software ==<br />
Make sure the following packages installed (through ports or through apt):<br />
* vim<br />
* nano<br />
* bash<br />
* ssh<br />
* sudo<br />
<br />
=== SSH and Sudo ===<br />
* Set up sudo to allow members of the admin group to become root.<br />
* Disable root logins via SSH.<br />
* At some point in the future, we may be disabling the root account entirely (Ubuntu style).<br />
<br />
== DNS and DHCP ==<br />
=== DNS ===<br />
* Add the machine's hostname and IP address to /etc/namedb/master/cs.zone (or public.zone for the public network). Make sure to update the serial number at the top of the file, and to end hostnames with a period so that they are FQDN. Also make sure to use an IP address that is not already taken.<br />
** Add the machine's reverse record to /etc/namedb/master/159.28.230.zone (or 159.28.231.zone for the public zone). The same rules as above apply.<br />
** Restart DNS by sending a SIGHUP to the named process, or using the <tt>rndc reload</tt> command.<br />
'''Update Summer 2010:''' There is now a script in SVN to perform the functions listed above called addhost.sh.<br />
<br />
'''Note on CNAMES:'''<br /><br />
If you want to create a CNAME for foo.public.cs.earlham.edu that is bar.public.cs.earlham.edu, the definition will go into public.zone. On the other hand, if you wanted bar.cs.earlham.edu to be a CNAME for foo.public.cs.earlham.edu, the CNAME definition will go into cs.zone.<br />
<br />
=== DHCP ===<br />
* Add the machine to forty-one:/etc/dhcp3/dhcpd.conf. You will need its Ethernet MAC address for this. Make sure to terminate each field with a semicolon.<br />
** Restart dhcpd by running the command /etc/init.d/dhcp3-server restart<br />
<br />
== Email ==<br />
* In /etc/aliases or similar, set the outgoing e-mail to root@cs.earlham.edu. On quark, this automatically forwards to the admin list. We send it to root instead so that we can have "emergency moderation" and stop it going to the list if need be. Or, in case we need to stop going to the list because mailman is down.</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Sysadmin:AddComputerSysadmin:AddComputer2010-08-26T18:15:04Z<p>Amweeden06: /* DNS */</p>
<hr />
<div>These are the changes that need to be made if a computer is to be added to the CS network, follow these steps.<br />
<br />
== Software ==<br />
Make sure the following packages installed (through ports or through apt):<br />
* vim<br />
* nano<br />
* bash<br />
* ssh<br />
* sudo<br />
<br />
=== SSH and Sudo ===<br />
* Set up sudo to allow members of the admin group to become root.<br />
* Disable root logins via SSH.<br />
* At some point in the future, we may be disabling the root account entirely (Ubuntu style).<br />
<br />
== DNS and DHCP ==<br />
=== DNS ===<br />
* Add the machine's hostname and IP address to /etc/namedb/master/cs.zone (or public.zone for the public network). Make sure to update the serial number at the top of the file, and to end hostnames with a period so that they are FQDN. Also make sure to use an IP address that is not already taken.<br />
** Add the machine's reverse record to /etc/namedb/master/159.28.230.zone (or 159.28.231.zone for the public zone). The same rules as above apply.<br />
** Restart DNS by sending a SIGHUP to the named process, or using the <tt>rndc reload</tt> command.<br />
'''Update Summer 2010: There is now a script to perform the functions listed above in SVN called addhost.sh.'''<br />
<br />
'''Note on CNAMES:'''<br /><br />
If you want to create a CNAME for foo.public.cs.earlham.edu that is bar.public.cs.earlham.edu, the definition will go into public.zone. On the other hand, if you wanted bar.cs.earlham.edu to be a CNAME for foo.public.cs.earlham.edu, the CNAME definition will go into cs.zone.<br />
<br />
=== DHCP ===<br />
* Add the machine to forty-one:/etc/dhcp3/dhcpd.conf. You will need its Ethernet MAC address for this. Make sure to terminate each field with a semicolon.<br />
** Restart dhcpd by running the command /etc/init.d/dhcp3-server restart<br />
<br />
== Email ==<br />
* In /etc/aliases or similar, set the outgoing e-mail to root@cs.earlham.edu. On quark, this automatically forwards to the admin list. We send it to root instead so that we can have "emergency moderation" and stop it going to the list if need be. Or, in case we need to stop going to the list because mailman is down.</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Nxt-python-threadsNxt-python-threads2010-04-27T13:17:22Z<p>Amweeden06: </p>
<hr />
<div>Back to [https://wiki.cs.earlham.edu/index.php/Robotics-2010 Robotics Main Page]<br />
----<br />
=== Thread Basics ===<br />
* Computing device - CPU, RAM, persistant store (two ARM CPUs, etc. in the NXT)<br />
* Stored program; Fetch, decode, execute <br />
* Execution context - instructions, data, program counter, stack <br />
** Processes have all 4 (instructions, data, program counter, stack)<br />
** Threads have PC and stack with shared instructions and data<br />
* Workshop analogy<br />
* Concurrency and locking<br />
** Race conditions<br />
** Deadlock <br />
** Locks, semaphores, barriers<br />
<br />
=== Basics of threads in Python ===<br />
==== Modules ====<br />
* <b>[http://docs.python.org/library/thread.html thread]</b> - low level thread library<br />
* <b>[http://docs.python.org/library/threading.html threading]</b> - higher level library built on thread (addressed on this page)<br />
<br />
====Thread Objects====<br />
When creating a thread, you will must always define a class function called <code>run()</code>. This is the code that will be executed by the thread. When the <code>run()</code> function exits, the thread is no longer alive.<br />
<br />
import threading<br />
<br />
class hello_world_thread( threading.Thread ):<br />
def run( self ):<br />
print "Hello World!"<br />
<br />
Starting the above thread is done by calling the <code>start()</code> function. This will execute the run() function you've defined.<br />
<br />
>>> hw = hello_world_thread() # initialize<br />
>>> hw.start() # run<br />
Hello World!<br />
<br />
If you want to pass arguments to the thread at initialization, define the constructor function: <code>__init__()</code>.<br />
<br />
import threading<br />
<br />
class hello_world_thread( threading.Thread ):<br />
<br />
def __init__( self, message = 'Hello World!' ): # default value for message<br />
threading.Thread.__init__( self ) # init the thread<br />
self.message = message<br />
<br />
def run( self ):<br />
print self.message<br />
<br />
>>> hello_world_thread().start() # initialize and run<br />
Hello World!<br />
<br />
>>> hello_world_thread('Hola Mundo!").start() # init and run with argument<br />
Hola Mundo! <br />
<br />
==== Lock Objects (Lock and RLock) ====<br />
Locks should be used when more than one thread can read or modify a resource. They have two states: locked and unlocked; and they can be blocking or non-blocking. When trying to acquire a lock with blocking enabled (the default behavior), a thread will wait until the lock is available.<br />
<br />
* acquire() - acquire a lock, block until available<br />
* release() - release a lock, making it available for other threads to acquire<br />
<br />
# defined globally<br />
hammer = threading.Lock()<br />
saw = threading.Lock()<br />
<br />
# within a worker thread's run() function<br />
hammer.acquire()<br />
saw.acquire()<br />
<br />
try:<br />
# do some work<br />
<br />
finally: # release locks, no matter what<br />
hammer.release()<br />
saw.release()<br />
<br />
The try clause is not strictly necessary, but it is a recommended safety feature that prevents a thread that errors out from preventing another thread from acquiring the lock.<br />
<br />
There is another type of lock called an RLock (Re-entrant Lock). See the section called [http://effbot.org/zone/thread-synchronization.htm#problems-with-simple-locking Problems with Simple Locking] for a good example of why this more complex lock is sometimes desirable.<br />
<br />
==== Semaphore Objects (Semaphore and BoundedSemaphore) ====<br />
Semaphores are a locking mechanism that can be used to keep a count of resources available based on the number of times it has been acquired and released <br />
<br />
* acquire() - decrement internal counter, block until internal counter is > 0<br />
* release() - increment internal counter<br />
<br />
Imagine a queue of people standing outside a restaurant. There is a limited number of available tables in the restaurant (kept track of by a semaphore). When a group of diners are seated (table is acquired), the semaphore is decremented and when the diners leave(table released), it is incremented. <br />
<br />
When the number of available tables reaches zero, the diners trying to acquire a table are blocked and must wait until a table becomes available.<br />
<br />
import threading<br />
<br />
# defined globally<br />
available_table = threading.BoundedSemaphore( 10 ) # 10 tables in restaurant<br />
<br />
# in diner thread's run function<br />
available_table.acquire()<br />
try:<br />
# eat<br />
finally:<br />
available_table.release()<br />
<br />
Using a bounded semaphore, as in the above example is usually the best practice since it will throw an error when releasing more than its initializing value (sometimes indicating a bug). In the above example, it would mean that an error would be generated if a table was released when none were acquired (i.e. making an 11th table available). The regular semaphore object will continue to increment the count no matter how many times it is called.<br />
<br />
==== Event Objects (Event) ====<br />
Event objects can be used for thread synchronization. When a thread calls <code>wait()</code> for an event that is set, it will continue on immediately. When a thread calls <code>wait()</code> for an event that is not set, it will wait until that event is set. More than one thread can be looking for the same event.<br />
<br />
* set() - set flag to true<br />
* clear() - set flag to false<br />
* wait() - block until flag is true<br />
* is_set() - return True if set; otherwise False<br />
<br />
import threading<br />
<br />
# globally defined<br />
green_light = threading.Event()<br />
<br />
# in traffic controller thread's run function<br />
if driver_is_late():<br />
green_light.clear()<br />
sleep( frustrating_time * 2 )<br />
green_light.set()<br />
<br />
# in driver thread's run function<br />
green_light.wait() # block until green_light is set<br />
# drive on<br />
<br />
==== Condition Objects (Condition) ====<br />
Conditions are more advanced events that can be used to signify a state change. Threads can either wait for a condition to be true or can be notified of a change. <br />
<br />
Condition objects are essentially a combination of locks and events. You can create a condition using an existing lock or a re-entrant lock will be created if one is not specified.<br />
<br />
* acquire() - acquire lock<br />
* release() - release lock<br />
* wait() - release the underlying lock and wait for a notification<br />
* notify() - wake up a thread waiting for the condition<br />
* notifyAll() - wake up all threads waiting for the condition<br />
<br />
More than one thread can wait for a condition to be true (indefinitely or with a timeout). If a queue of objects is being processed by multiple threads, a condition can be used by a consumer to acquire access after an element has been added by a producer.<br />
<br />
# globally defined<br />
candy_bucket = threading.Lock()<br />
candy_available = threading.Conditional( candy_bucket )<br />
<br />
# in homeowner's thread<br />
candy_bucket.acquire()<br />
# put one black or orange peanut butter candy in bucket<br />
candy_available.notify()<br />
candy_bucket.release()<br />
<br />
# in trick-or-treater's thread<br />
candy_bucket.acquire()<br />
candy_available.wait()<br />
# get candy<br />
candy_bucket.release()<br />
<br />
=== Generalized kill-switch threading ===<br />
class thread_wait( threading.Thread ):<br />
def __init__( self, condition, action ):<br />
threading.Thread.__init__( self )<br />
self.condition = condition<br />
self.action = action<br />
<br />
def run( self ):<br />
while not self.condition():<br />
sleep(0.1)<br />
self.action<br />
Usage:<br />
kill_switch_thread = thread_wait( get_kill_switch_function, suicide_function )<br />
kill_switch_thread.start()</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Nxt-python-hintsNxt-python-hints2010-04-27T13:16:37Z<p>Amweeden06: </p>
<hr />
<div>Back to [https://wiki.cs.earlham.edu/index.php/Robotics-2010 Robotics Main Page]<br />
----<br />
== Python Programming Hints ==<br />
*Wrap your code in a try/finally block so that you can stop the motors on control-c.<br />
try:<br />
[your code here]<br />
finally:<br />
[stop all your motors]</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Robotics-2010Robotics-20102010-04-15T12:42:53Z<p>Amweeden06: /* Lab 6 */</p>
<hr />
<div>= Resources for CS282 - Robotics = <br />
== Hardware ==<br />
* [[change-NXT-settings|How to change the name of your NXT]]<br />
<br />
== Software Stack ==<br />
* [http://cs.earlham.edu/~charliep/courses/cs282/packages/ Software Packages (nxt-python, etc)]<br />
* [[nxt-python-iso|Ubuntu with Brad's Live ISO]]<br />
* [[nxt-python-osx|OSX]]<br />
<br />
== Python ==<br />
* [[nxt-python-doc|NXT-Python Documentation]]<br />
* [[nxt-python-hints|Programming Hints]]<br />
* [[nxt-python-threads|Thread Notes]]<br />
<br />
== Sensor Notes ==<br />
* [[bots-hitechnic-compass|HiTechnic Compass]]<br />
<br />
== Non-local Resources ==<br />
* Bluetooth - NXT [http://vikram.eggwall.com/computers/nxt-bluetooth-setup.html setup notes]<br />
<br />
= Lab 6 =<br />
* [http://cs.earlham.edu/~charliep/courses/cs282/mapping.pdf The Official Assignment]<br />
* [[robotics-lab6-tasks|Task Analysis - Oroginal]]<br />
* [[Robotics-lab6-newversion|Task Analysis - Second Go 'Round]]<br />
* [http://github.com/Sleemanmunk/Magnetic-Mapping Software Repository]<br />
* [http://cs.earlham.edu/~carrick/courses/cs282/lab6/visualization Visualization]</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Robotics-lab6-newversionRobotics-lab6-newversion2010-04-15T12:30:27Z<p>Amweeden06: </p>
<hr />
<div>[https://wiki.cs.earlham.edu/index.php/Robotics-2010 Robotics Main Page] > [[Robotics-lab6-tasks|Lab 6 Tasks]] > New Version<br />
----<br />
= [http://www.doodle.com/t34xbp6mtvnuyc2w Doodle] =<br />
= Unclaimed Tasks =<br />
These are certainly important but have yet to be claimed. To claim, cut the text of the task and place it under your name in the table.<br />
<br />
= Standards =<br />
* When collecting data, use magmapper.py.<br />
** The following files must be located in the directory you are running from or your standard python libraries directory:<br />
*** nxt_common.py<br />
*** spinner.py<br />
*** record_data_lib.py<br />
* Data Collection files should be either saved in /tmp/robotics/dat on quark or sent to amweeden06@earlham.edu<br />
* The CSV format is: SensorID, Room, time stamp, x, y, expected readings, actual readings<br />
* The coordinate system works as follows:<br />
** The origin of the room is the big cross in the center of the room.<br />
** North is marked with a diagonal arrow.<br />
** North is positive on the Y axis and East is positive on the X axis.<br />
<br />
= Deadlines =<br />
{| class="wikitable" border="1"<br />
! Name<br />
! Deadlines For Tuesday<br />
! Deadlines For Wednesday<br />
! Deadlines For Thursday<br />
! Deadlines For Friday<br />
|-<br />
! Aaron<br />
| ''Send email about this wiki page''<br />
* Due at 1pm<br />
* Finished at 12:40pm<br />
''Make sure everyone has tasks listed for Wednesday''<br />
* Due at 11:59:59 pm<br />
''Complete Standards List''<br />
* Co-worker: Jeremy<br />
* Due at 11:59:59 pm<br />
* Estimated Time: 1 hour<br />
* Actual Time: <br />
| <br />
|<br />
| <br />
|-<br />
! Jeremy<br />
| ''Complete Standards List''<br />
* Co-worker: Aaron<br />
* Due at 11:59:59 pm<br />
* Estimated Time: 1 hour<br />
* Actual Time: <br />
|<br />
|<br />
|<br />
|-<br />
! Sam<br />
| ''Update magmapper code for new system''<br />
* Due at 11:00 AM<br />
* Finished 10:46 AM<br />
''make [[Data Collection Howto]]''<br />
* Due at 12:00 PM the next day<br />
* Finished 2:00 PM<br />
''Improve magmapper.py user interface to display the current coordinates and the options available''<br />
* Due Wednesday at 12 PM<br />
* Estimated Time: 2 minutes<br />
* Actual Time: ''3'' minutes. Don't feel so good at estimating now, now do you?<br />
''Fix magmapper.py such that the timestamp listed is seconds since the epoch''<br />
* Due Wednesday at 11:59:59 PM<br />
* Estimated Time: 5 minutes<br />
* Actual Time: 5 minutes<br />
''Remain available for resolution of high-urgency bugs and questions''<br />
* Estimated time: Eternal<br />
| <br />
|<br />
|<br />
|-<br />
! Patrick <br />
|<br />
* educate myself on how the mapping program works, due Wednesday at noon.<br />
*be available to in detail inspect data files when they come in, due date not applicable. If you need me use ptraines06@earlham.edu or in the case of urgency (651) 491-6928.<br />
|<br />
|<br />
|<br />
|-<br />
!Gus<br />
|<br />
|<br />
|<br />
| ''Writeup 2.0''<br />
* Due at 5:00 PM<br />
* Estimated time: Forever + 1 year.<br />
|-<br />
!Brad<br />
|<br />
Add form elements to page<br />
* Estimated time: 30 minutes<br />
* Actual time: 30 minutes<br />
| <br />
Change visualization tool to work with new data format<br />
* Estimated time: 1.25 hours<br />
* Actual time: 15 minutes + testing once data is available<br />
<br />
Integrate ability to specify an acceptable range and allowable sensor readings outside range<br />
* Estimated time: 45 minutes<br />
* Actual time: 35 minutes<br />
| <br />
Add additional rollover data to maps<br />
* Estimated time: 1.5 hours<br />
* Actual time: 1 hour<br />
|<br />
|-<br />
!Gil<br />
|<br />
|<br />
Take readings for north in all test regions with analog compass.<br />
* Coworker: Nick C.<br />
* Scheduled: 1:00pm<br />
* Estimated TIME: 45 MINUTES<br />
* Actual Time:<br />
|<br />
|<br />
|-}</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Robotics-lab6-newversionRobotics-lab6-newversion2010-04-14T01:20:10Z<p>Amweeden06: /* Standards */</p>
<hr />
<div>[https://wiki.cs.earlham.edu/index.php/Robotics-2010 Robotics Main Page] > [[Robotics-lab6-tasks|Lab 6 Tasks]] > New Version<br />
----<br />
= Unclaimed Tasks =<br />
These are certainly important but have yet to be claimed. To claim, cut the text of the task and place it under your name in the table.<br />
<br />
''Fix magmapper.py such that the timestamp listed is seconds since the epoch''<br />
* Due Wednesday at 11:59:59 PM<br />
* Estimated Time: 5 minutes<br />
* Actual Time:<br />
''Improve magmapper.py user interface to display the current coordinates and the options available''<br />
* Due Wednesday at 12 PM<br />
* Estimated Time: 2 minutes<br />
* Actual Time:<br />
<br />
= Standards =<br />
* When collecting data, the following files must be located in the nxt-python-1.1.1 directory:<br />
** magmapper.py<br />
** nxt_common.py<br />
** spinner.py<br />
** record_data_lib.py<br />
* Data Collection files should be either saved in /tmp/robotics/dat on quark or sent to Aaron<br />
* The CSV format is: SensorID, Room, time stamp, x, y, expected readings, actual readings<br />
* The coordinate system works as follows:<br />
** The origin of the room is the big cross in the center of the room.<br />
** North is marked with a diagonal arrow.<br />
** North is positive on the Y axis and East is positive on the X axis.<br />
<br />
= Deadlines =<br />
{| class="wikitable" border="1"<br />
! Name<br />
! Deadlines For Tuesday<br />
! Deadlines For Wednesday<br />
! Deadlines For Thursday<br />
! Deadlines For Friday<br />
|-<br />
! Aaron<br />
| ''Send email about this wiki page''<br />
* Due at 1pm<br />
* Finished at 12:40pm<br />
''Make sure everyone has tasks listed for Wednesday''<br />
* Due at 11:59:59 pm<br />
''Complete Standards List''<br />
* Co-worker: Jeremy<br />
* Due at 11:59:59 pm<br />
* Estimated Time: 1 hour<br />
* Actual Time: <br />
| <br />
|<br />
| <br />
|-<br />
! Jeremy<br />
| ''Complete Standards List''<br />
* Co-worker: Aaron<br />
* Due at 11:59:59 pm<br />
* Estimated Time: 1 hour<br />
* Actual Time: <br />
|<br />
|<br />
|<br />
|-<br />
! Sam<br />
| ''Update magmapper code for new system''<br />
* Due at 11:00 AM<br />
* Finished 10:46 AM<br />
''Remain available for resolution of high-urgency bugs and questions''<br />
* Estimated time: Eternal<br />
| ''Post step-by-step instructions for collecting data''<br />
* Due at 12:00 PM<br />
|<br />
|<br />
|-<br />
! Patrick <br />
|<br />
* educate myself on how the mapping program works, due Wednesday at noon.<br />
*be available to in detail inspect data files when they come in, due date not applicable. If you need me use ptraines06@earlham.edu or in the case of urgency (651) 491-6928.<br />
|<br />
|<br />
|<br />
|-<br />
!Gus<br />
|<br />
|<br />
|<br />
| ''Writeup 2.0''<br />
* Due at 5:00 PM<br />
* Estimated time: Forever + 1 year.<br />
|-}</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Robotics-lab6-newversionRobotics-lab6-newversion2010-04-14T01:16:27Z<p>Amweeden06: /* Standards */</p>
<hr />
<div>[https://wiki.cs.earlham.edu/index.php/Robotics-2010 Robotics Main Page] > [[Robotics-lab6-tasks|Lab 6 Tasks]] > New Version<br />
----<br />
= Unclaimed Tasks =<br />
These are certainly important but have yet to be claimed. To claim, cut the text of the task and place it under your name in the table.<br />
<br />
''Fix magmapper.py such that the timestamp listed is seconds since the epoch''<br />
* Due Wednesday at 11:59:59 PM<br />
* Estimated Time: 5 minutes<br />
* Actual Time:<br />
''Improve magmapper.py user interface to display the current coordinates and the options available''<br />
* Due Wednesday at 12 PM<br />
* Estimated Time: 2 minutes<br />
* Actual Time:<br />
<br />
= Standards =<br />
* When collecting data, the following files must be located in the nxt-python-1.1.1 directory:<br />
** magmapper.py<br />
** nxt_common.py<br />
** spinner.py<br />
** record_data_lib.py<br />
* Data Collection files should be either saved in /tmp/robotics/dat on quark or sent to Aaron<br />
* The CSV format is: SensorID, Room, time stamp, x, y, expected readings, actual readings<br />
<br />
= Deadlines =<br />
{| class="wikitable" border="1"<br />
! Name<br />
! Deadlines For Tuesday<br />
! Deadlines For Wednesday<br />
! Deadlines For Thursday<br />
! Deadlines For Friday<br />
|-<br />
! Aaron<br />
| ''Send email about this wiki page''<br />
* Due at 1pm<br />
* Finished at 12:40pm<br />
''Make sure everyone has tasks listed for Wednesday''<br />
* Due at 11:59:59 pm<br />
''Complete Standards List''<br />
* Co-worker: Jeremy<br />
* Due at 11:59:59 pm<br />
* Estimated Time: 1 hour<br />
* Actual Time: <br />
| <br />
|<br />
| <br />
|-<br />
! Jeremy<br />
| ''Complete Standards List''<br />
* Co-worker: Aaron<br />
* Due at 11:59:59 pm<br />
* Estimated Time: 1 hour<br />
* Actual Time: <br />
|<br />
|<br />
|<br />
|-<br />
! Sam<br />
| ''Update magmapper code for new system''<br />
* Due at 11:00 AM<br />
* Finished 10:46 AM<br />
''Remain available for resolution of high-urgency bugs and questions''<br />
* Estimated time: Eternal<br />
| ''Post step-by-step instructions for collecting data''<br />
* Due at 12:00 PM<br />
|<br />
|<br />
|-<br />
! Patrick <br />
|<br />
* educate myself on how the mapping program works, due Wednesday at noon.<br />
*be available to in detail inspect data files when they come in, due date not applicable. If you need me use ptraines06@earlham.edu or in the case of urgency (651) 491-6928.<br />
|<br />
|<br />
|<br />
|-<br />
!Gus<br />
|<br />
|<br />
|<br />
| ''Writeup 2.0''<br />
* Due at 5:00 PM<br />
* Estimated time: Forever + 1 year.<br />
|-}</div>Amweeden06https://cluster.earlham.edu/wiki/index.php/Robotics-lab6-newversionRobotics-lab6-newversion2010-04-14T01:12:15Z<p>Amweeden06: /* Unclaimed Tasks */</p>
<hr />
<div>[https://wiki.cs.earlham.edu/index.php/Robotics-2010 Robotics Main Page] > [[Robotics-lab6-tasks|Lab 6 Tasks]] > New Version<br />
----<br />
= Unclaimed Tasks =<br />
These are certainly important but have yet to be claimed. To claim, cut the text of the task and place it under your name in the table.<br />
<br />
''Fix magmapper.py such that the timestamp listed is seconds since the epoch''<br />
* Due Wednesday at 11:59:59 PM<br />
* Estimated Time: 5 minutes<br />
* Actual Time:<br />
''Improve magmapper.py user interface to display the current coordinates and the options available''<br />
* Due Wednesday at 12 PM<br />
* Estimated Time: 2 minutes<br />
* Actual Time:<br />
<br />
= Standards =<br />
* When collecting data, the following files must be located in the nxt-python-1.1.1 directory:<br />
** magmapper.py<br />
** nxt_common.py<br />
** spinner.py<br />
** record_data_lib.py<br />
* Data Collection files should be either saved in /tmp/robotics/dat on quark or sent to Aaron<br />
<br />
= Deadlines =<br />
{| class="wikitable" border="1"<br />
! Name<br />
! Deadlines For Tuesday<br />
! Deadlines For Wednesday<br />
! Deadlines For Thursday<br />
! Deadlines For Friday<br />
|-<br />
! Aaron<br />
| ''Send email about this wiki page''<br />
* Due at 1pm<br />
* Finished at 12:40pm<br />
''Make sure everyone has tasks listed for Wednesday''<br />
* Due at 11:59:59 pm<br />
''Complete Standards List''<br />
* Co-worker: Jeremy<br />
* Due at 11:59:59 pm<br />
* Estimated Time: 1 hour<br />
* Actual Time: <br />
| <br />
|<br />
| <br />
|-<br />
! Jeremy<br />
| ''Complete Standards List''<br />
* Co-worker: Aaron<br />
* Due at 11:59:59 pm<br />
* Estimated Time: 1 hour<br />
* Actual Time: <br />
|<br />
|<br />
|<br />
|-<br />
! Sam<br />
| ''Update magmapper code for new system''<br />
* Due at 11:00 AM<br />
* Finished 10:46 AM<br />
''Remain available for resolution of high-urgency bugs and questions''<br />
* Estimated time: Eternal<br />
| ''Post step-by-step instructions for collecting data''<br />
* Due at 12:00 PM<br />
|<br />
|<br />
|-<br />
! Patrick <br />
|<br />
* educate myself on how the mapping program works, due Wednesday at noon.<br />
*be available to in detail inspect data files when they come in, due date not applicable. If you need me use ptraines06@earlham.edu or in the case of urgency (651) 491-6928.<br />
|<br />
|<br />
|<br />
|-<br />
!Gus<br />
|<br />
|<br />
|<br />
| ''Writeup 2.0''<br />
* Due at 5:00 PM<br />
* Estimated time: Forever + 1 year.<br />
|-}</div>Amweeden06