Homework 1
Given out 9/9/13, due 9/18/13.Often a significant stumbling block in high-performance computing is simply figuring out what resources to use and how to access them. Since few of us have large clusters under our desks, remote computing is the norm. Thus the purpose of this assignment is to make first contact with an HPC resource and solve a modest problem in parallel.
In this class we try to be flexible about languages, tools, and environments. We will provide some suggested infrastructure, but if you'd like to strike out on your own this assignment is your chance to figure out what tools you'd like to use and make sure they are set up and usable.
The suggested platform for this course is Julia via the IJulia notebook (based on IPython), running on servers we have set up. For the adventurous, or those with specific needs, several variations are possible:
- Julia running on a traditional cluster, via SSH access
- IPython parallel (for programming in Python), via IPython's notebook or terminal interfaces
- Running on Amazon EC2, for example via StarCluster
Of course, you may want to explore different environments such as MPI
in C or Fortran, or Hadoop in various languages. If your goal is to learn
one of these environments, then your task in this homework is to convince
us that you have it set up and can use it. You must do something comparable
to the problems in this homework. The rest of this document will
assume our suggested environment.
1. Software Setup
Although not strictly required, we recommend installing Julia on your
own machine. Most of you probably already have access to a machine with
2, 4, or maybe even more processors (cores) — that also counts as parallel
computing! See Steve Johnson's page
on how to install Julia. If you like being on the bleeding edge of open source
projects, then you will want to
clone our source from GitHub.
If you're curious about Julia, the fastest way to get questions answered is to join the user's list or development list, where you will find around-the-clock Julia-related chatter of all kinds.
You can access a live IJulia notebook using the URLs given out in class.
Let us know if you would like access to some other kinds of machines for running different software.
2. Parallel Hello World
Take a look at the notebook for this assignment.
You can also read it here using nbviewer.
You may want to skim over the parallel Julia docs.
Import the notebook into an IJulia session using the "click here" link on the dashboard. Make sure the example code in the notebook works. Try running cells using shift-enter.
3. Problems
Solve the three problems in the notebook. When you are done, rename the notebook
to USERNAME-HW1 (substituting your username) by clicking on the title next
to the IJ banner at the top of the page. Use the File menu to download as
an .ipynb file, and email this file to the TA.