|
Computer Science 338 Parallel Processing Williams College Spring 2006
|
|
Tutorial Assignment 1: Introduction to Parallel Programming and the Williams CS
Clusters
Due: Tuesday, February 7, 2006 at 9:00 AM
As with all tutorial assignments, this document tells you what you
will need to read, write, code, and otherwise prepare for the
following week's tutorial meeting. It includes some work (in the
"Lab Tasks" section) that should be submitted by the deadline in the
header. Readings and other preparation for your tutorial meeting
must be done before the actual meeting.
Readings
Be prepared to discuss the readings from the text and the notes on
this handout during your tutorial meeting on February 7 and 8. In
particular, we will discuss some of the questions in this section
during the meetings.
Read Quinn Chapter 1.
Let's consider a few "real world" examples:
In each of these cases, we have taken what we might normally think of
as a sequential process, and taken advantage of the availability
of concurrent processing to make use of multiple workers
(processing units).
Parallelism adds complexity (as we will see in great detail), so why
bother?
Sequential Program:
sequence of actions that produce a result (statements + variables),
called a process, task, or thread (of control). The state of the program is determined by the code, data, and a single program counter.
Concurrent Program:
two or more processes that work together. Big difference: multiple program counters.
To cooperate, the processes need communication and synchronization, which can be achieved through shared
variables, or message passing.
Hardware to run concurrent processes:
Computers may be classified as:
Some examples:
See http://www.top500.org/.
How to Achieve Parallelism
Lab Tasks
There are several files to turn in for this assignment. They should
all be included in a file named tut01.tar that will extract into
a directory tut01 that contains files as specified below. You
will submit tut01.tar using the turnin utility. Please use the filenames specified and be sure to include your name
in each file. Please ask if you have any questions about creating the
tar file or using the turnin utility.
Get started on these as soon as you can. You will need to ask
questions. You should feel free to ask for help from and offer help
to your classmates on all parts of this week's assignment. However,
everyone should submit their own work.
- Send me mail at terescoj@cs.williams.edu with a brief (a
couple sentences) description of your level of experience with the
Unix operating system and its variants. Also include list programming
languages you have used and your proficiency in each, any experience
you've had with parallel programming, and anything else you'd like me
to know about your background.
- Log into and familiarize yourself with your CSLab Unix account.
- First, make sure you can log into the FreeBSD systems in the
lab (see the list of names under "Resources" on the Williams CS web
pages if you wish to do this remotely).
- Read the links in the FreeBSD section of the
"Documentation and FAQ for all
platforms"
on the Williams CS web page under "Resources." You may ignore
the links related to "GJ".
- Forward your CSLab electronic mail to an address you read
regularly, as I or the queueing systems may sometimes use your @cs.williams.edu address.
- Create a directory in your account for work from this class.
Change the permissions on the directory so only the only operations
permitted are reading and writing by you. Have your tutorial partner
verify that he or she cannot access this directory.
- Log into the Solaris "Bullpen" cluster (login node: bullpen). This system uses a different password scheme, so you may
need to see Mary in TCL 312 to get your account set up to be able to
log in. Once you're in, you should find your regular CSLab Unix
account files there.
- Log into the Linux "Dhanni" cluster (login node: cscluster). This uses the same password scheme as the FreeBSD lab,
so you should have no trouble logging in. However, you should be placed
in your "cluster home directory" under /dists/cscluster. If you don't, see Mary to get your account set
up correctly. Make a directory here for your course work and set
appropriate permissions.
- Read the web page for the Bullpen cluster here.
Don't worry if some of the terminology is not yet familiar.
- Copy the C program here that computes the late
penalties for this course to your CSLab Unix account. Compile and run
it, redirecting your output to a file late.txt. Include this
file in the tar file that you submit when you are finished. (1 point)
- Copy the file /home/faculty/terescoj/shared/make-example.tar to your directory. It
is a "tar file" of a small C program that demonstrates the use of
multiple source files and Makefiles. Extract the files (tar xvf make-example.tar) and compile the program with make.
Breifly describe in a plain text file tut01.txt how make
uses the rules in the Makefile to produce the executable main. (1 point)
- The Bullpen web page includes a simple parallel program called
mpihello.c.
- Copy mpihello.c to your account.
- Create a Makefile that builds an executable called
mpihello when you type make or gmake. Be sure
to create a 64-bit MPICH executable and use the Sun compilers.
- Run the program with two processes interactively on bullpen and redirect the output to a file mpihello.out.
- Run the program three ways through the PBS batch system:
- Include the files mpihello.c, Makefile, mpihello.out, twoonone.pbs, twoonone.out,
fouronfour.pbs, fouronfour.out, all23.pbs, and all23.out in a subdirectory called
bullpen in your submitted tar file. Do not include any ".o"
files or the mpihello executable.
- Read the web page for the "CS
Cluster"
under "Resources" on the Williams CS web page.
- Next, write, compile and run a simple "Hello, World" program
hello.c on the Dhanni cluster. To do this, you will need to
create and submit a PBS script (compile.pbs) and write an
appropriate Makefile to compile the program on a cluster node,
then create and submit a PBS script to run the program on one of the
nodes of the cluster. Call this script dhanni.pbs and save the
output to a file dhanni.out. Submit these two PBS scripts,
hello.c, your Makefile, and dhanni.out in a
subdirectory dhanni in your tar file.
Remember, your tar file should be named tut01.tar, and when
extracted should create a directory tut01 that contains the
files you wish to submit. tut01.txt should be in the tut01 directory, and the bullpen-related and dhanni-related files
should be in subdirectories bullpen and dhanni,
respectively.