Instructor
Dr. Elise de Doncker
Department of Computer Science
College of Engineering and Applied Sciences
B-240 Parkview Campus
Kalamazoo, MI-49008
Phone: (269) 276-3102 (office), 276-3101 (Dept. office) 276-3122 (fax)
e-mail: elise.dedoncker [at] wmich.edu
Office hours
MW 12:00-13:00,
or by appointment
Texts
(best to get the most recent version)
Required:
An Introduction to Parallel Programming. Peter S. Pacheco, Morgan Kaufman Elsevier, Inc. (978-0-12-374260-5) OR
An Introduction to Parallel Programming. Peter S. Pacheco and Matthew Malensek, 2022 Elsevier, Inc. (978-0-12-804605)
CUDA by Example - An Introduction to General-Purpose GPU Programming. Jason Sanders and Edward Kandrot, Addison-Wesley (ISBN: 978-0-13-138768-3)
OR
CUDA for Engineers: An Introduction to High-Performance Parallel Computing. Duane Storti and Mete Yurtoglu, 1st Edition, Addison-Wesley (ISBN: 978-0134177410)
Recommended:
Parallel Programming - Techniques and Applications. B. Wilkinson and M. Allen, Prentice Hall
Parallel Programming in C with MPI and OpenMP. Micheal J. Quinn, McGraw-Hill
Parallel Programming for Multicore and Cluster Systems. Thomas Rauber and Gudula Rünger, Springer 2010 (ISBN: 978-3-642-04817-3)
Using MPI - Portable Parallel Programming with the Message-Passing Interface. W. Gropp, E. Lusk and A. Skjellum, The MIT Press
Introduction to Parallel Computing. A. Grama et al., Benjamin/Cummings Publishing Company
Course contents and goals
CS 5260 will cover cutting-edge topics, on multi-core
computing and threaded programming, distributed systems, graphics processing
units (GPUs) and CUDA. Other topics may include cloud computing
with infrastructure as a service and on-demand resource provisioning;
"ubiquitous" computing, web based systems and technologies;
grid computing;
as well as working on the parallel systems in our department
and handling classical problems and algorithms.
We will get hands-on experience on our thor cluster with 21 nodes,
which have shared memory, multi-core processors, and GPUs.
We will also use our new cluster with 10 GPU workstations.
Computer usage
For program implementations on distributed processors, the class will use the computer cluster
in the Department of Computer Science Research lab in room B-217 CEAS, with the MPI (Message
Passing Interface) system and GPU access, and the GPU workstation cluster in
B-208. For OpenMP (multi-threading),
the students can use their C compiler on their laptop.
Learning outcomes
- Students will be able to use parallel tools and environments.
- Students will understand the effects of parallel overhead on performance.
- Students will be able to apply parallel strategies and paradigms to design
parallel/distributed algorithms.
- Students will study and explain the topic of their presentations in detail.
- Students will have the opportunity to participate in research projects.
Students' progress and achievements towards reaching the course goals and
objectives will be apparent from such measures as: the results and
creativity displayed in course assignments, and the contents of and performance
on certain exam portions.
Evaluation
There will be two tests and a final examination.
Tentatively, the tests will carry between 40% and 50% of the grade; student assignments
and a semester project with presentations will count for the remaining percentage.
The lowest of the two test scores will be dropped (not the
final).
The following scale will be used to determine your final grade on the
basis of your final average:
A: 92.0 - 100.0,
BA: 88.0 - 91.9,
B: 82.0 - 87.9,
CB: 78.0 - 81.9,
C: 72.0 - 77.9,
DC: 68.0 - 71.9,
D: 60.0 - 67.9,
E: below 60.0.
Academic integrity policies
You are responsible for making yourself aware of and understanding the
policies and procedures in the Undergraduate Catalog that
pertain to Academic Integrity. These policies include cheating, fabrication,
falsification and forgery, multiple submission, plagiarism, complicity
and computer misuse. If there is reason to believe you have been involve in academic dishonesty, you will be referred to the Office of Student
Judicial Affairs. You will be given the opportunity to review the charge(s).
If you believe you are not responsible, you will have the opportunity
for a hearing. You should consult with me if you are uncertain about an
issue of academic honesty prior to the submission of an assignment or
test.
Additional instructor's notes: Unless permission is given explicitly, the above policy includes cheating by submitting tests, programming assignments or projects where the work (even in part) has been downloaded from the internet; this also applies to text in assignments and project reports. Cooperation among students on submitted work is not allowed. If you are caught there will be consequences.
Links
http://www.cs.wmich.edu/hpcs High Performance Computational Science Laboratory (HPCS), home of thor
http://www.cs.usfca.edu/~peter/ipp/index.html Pacheco text book site (1st edition), with link to source code archive
http://www.elsevierdirect.com/companion.jsp?ISBN=9780123742605 Pacheco book companion website, with links to source code archive, figures, etc.
https://www.semanticscholar.org/paper/An-Introduction-to-Parallel-Programming-Pacheco/51927ed8395a523a413d4fb5c4a2dd116527c6ec#featured-content Pacheco book resources (Elsevier, Morgan Kaufman)
https://www.cs.usfca.edu/~peter/ipp2/index.html Pacheco and Malensek text book site (book 2nd edition)
https://developer.nvidia.com/cuda-example NVIDIA site for the book "CUDA by Example" (where the book's source code is available for download)
http://www.cs.wmich.edu/elise/courses/cs526/sample-t1-526.pdf Sample exam I
http://www.cs.wmich.edu/elise/courses/cs526/questions1.pdf Study questions(1)
https://www.valgrind.org/docs/manual/cg-manual.html Valgrind site
https://www.valgrind.org/docs/manual/cg-manual.html#cg-manual.running-cachegrind Cachegrind (cache and branch prediction profiler)
http://www.cs.wmich.edu/elise/courses/cs526/time.c Sample timing program
http://www.cs.wmich.edu/elise/courses/cs526/time_rand.c Sample timing program with random number generation
http://www.cs.wmich.edu/elise/courses/cs526/time2_rand.c Sample average timing program with random number generation
http://www.netlib.org Top 500 supercomputers, software repository and more
http://www.netlib.org/utk/people/JackDongarra/talks.htm Jack Dongarra talks
https://medium.com/@smallfishbigsea/basic-concepts-in-gpu-computing-3388710e9239 Basic Concepts in GPU Computing, Hao Gao
http://www.hpcwire.com HPCwire
http://technews.acm.org/archives.cfm Archive ACM Technews
http://www.linuxjournal.com Linux journal
http://www.linux-mag.com Linux today
http://www.globus.org Globus (grid computing)
https://geant3plus.archive.geant.net/Pages/default.aspx Géant network Europe
http://www.ibm.com/developerworks/web/library/wa-cloudgrid
Article on Cloud versus Grid Computing
kumar.pdf Paper on load balancing and scalability
http://www.mcs.anl.gov/research/projects/mpi/ MPI homepage. Download and install MPICH2.
http://www.cs.wmich.edu/~elise/courses/cs626/presentations.htm
Presentations CS 6260 Spring 2009
Android-tutorial.docx Lawrence's tutorial on development for Android
|