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:


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.