CSC 435 / S18
High Performance Scientific Computing



Dr. Andrew Pounds, 

Office: Rm. 438 Godsey Science Center, (478) 301-5627
Rm. 203 Computer Science Building
e-mail: pounds_aj@mercer.edu
Alt Phone (SMS): (478) 227-3444
Office Hours: WF 10 a.m, F 3 p.m. (or by appointment)


I feel the need, the need for speed. - Maverick and Goose, ``Top Gun''

CSC 435 is a course to introduce students the foundational principles of High Performance Scientific Computing. Students in CSC 435 will be exposed to the fundamentals of single machine code optimization as well as coding techniques for shared memory parallel programming, distributed memory parallel programming, and massively parallel architectures. Much of the course will focus on parallel programming strategies for large scale numerical problems encountered in science and engineering. The use of public domain libraries and packages for message passing and numerical computation will be demonstrated. Commercial symbolic algebra packages like MuPad and Mathematica will also be used in the class to develop parallel numerical algorithms.

Students taking CSC 435 are expected to have a working knowledge of a high level programming language such as C, C++, Fortran, or JAVA. All coding will be done in either C/C++ or a modern implementation of Fortran. Strategies for high performance code development and project management with these languages will be discussed during the course. Students in CSC 435 are expected to read at the college level and also have a working knowledge of differential and integral calculus. Topics from multivariable calculus, linear algebra, and differential equations will be introduced as needed.


Class Meeting Times and Locations 

Lecture: TR 10:50 a.m. - 12:05 p.m., Room 204 CSB.


Course Materials 

REQUIRED: Introduction to High Performance Computing for Scientists and Engineers , Hager and Wellein
REQUIRED: Pthreads Programming, Buttlar, Ferrill, and Nichols
Scientific Calculator
Reference Material from Class Webpage (http://theochem.mercer.edu/csc435)


Course Structure 

Topics from fourteen chapters of the texts will be covered during the semester in the order listed on the class schedule. The lecture time will be used to expound on and augment the text, discuss problem solving strategies, and demonstrate algorithms. A significant amount of the class period will be devoted to actually utilizing the parallel computing cluster and HPC systems. Students are responsible for all material covered in class as well as the material from the textual sections listed in the class schedule. Several small exercises and three semester-long projects will be submitted for grading. Each of the semester long projects will have multiple deliverables and due dates. One of the semester-long projects will be a group collaborative project. Students will also be required to do a presentation related to their components of the group project. The details of each project and the description of the deliverables for each project will be provided to the students in writing. A midterm and a final exam will be administered per the class schedule.

Grading 

Programming Projects and Exercises 60%
Group Project 20%
Midterm Exam 10%
Final Exam 10%
   
Total Possible 100 %


 		 The following grading scale is assured but may be slightly lowered based on test results. 

A $\geq$90 %
B $\geq$80 %
C $\geq$70 %
D $\geq$60 %
F $<$60 %


General Information

Honor Code: All students in CSC 435 are expected to adhere to the Mercer University Honor Code. Any suspected violations will be reported to the Honor Council for further investigation.

Many students have difficulty in determining how to apply the Mercer honor code to Computer Science courses. A few general guidelines should help you in deciding whether you are violating the honor code or not.

  1. You are allowed to receive help on your programs from other students, provided the purpose of the help is to help you understand your own program better, not to write your program for you.

  2. You are NOT allowed to use copies of programs written by other students, or copies of programs from published sources unless you are explicitly given permission to do so, even if you plan to modify them extensively.

  3. You are NOT allowed to give copies of your programs, or parts of your programs, to other students in any form.

  4. In short - YOU MUST WRITE YOUR OWN CODE. DO NOT COPY PROGRAMS OR PARTS OF PROGRAMS FROM ANY SOURCE UNLESS I TELL YOU TO DO SO. If you have any questions about using a published resource, just ask me.

  5. Any attempt to gain unauthorized access to the computing systems or to in any way damage the parallel computing systems and job schedulers so as to hinder the work of others will not only result in an honor code violation but will infringe upon intellectual property rights and result in criminal prosecution.

Any violation of the above policies will be treated as academic dishonesty and a violation of the Mercer Honor Code.

Attendance: Attendance will be taken the first three weeks of class and then randomly during the semester. The attendance grade will based on the percentage of absences on the randomly chosen days. For each 10 pecentage points below 100%, the students final letter grade will drop one letter grade. At a minimum, attendance will be taken on ten days of class. Students are still accountable for all material covered in class as well as any announcements made during the lecture period.

Missed Exams: Anyone missing an exam for any reason (personal illness, death in the immediate family, or other emergency) must notify Dr. Pounds in advance. The absence will be considered unexcused otherwise. Make-up exams will be individually scheduled.

Partial Credit: Partial credit will not be awarded on any exam unless individuals show their work and clearly delineate how they arrived at their answers.

Re-grading Policy: If a student suspects that an error was made in the grading of a submitted work, they may return the paper for re-grading with the understanding that the entire work will be re-graded and not only the portion in question.

Posting of Grades: Grades will not be posted. If you are curious about your cumulative grade, see Dr. Pounds.

E-mail Listserve: I maintain an e-mail listserve which I use use copiously to send information to the class and which you can use to communicate with each other. To sign up for the listserve and to learn how to send information to it, please go to: http://theochem.mercer.edu/mailman/listinfo/csc435.

American Disability Act: ``Students requiring accommodations or modifications for a disability should inform the instructor at the close of the first class meeting or as soon as possible. The instructor will refer you to the ACCESS and Accommodation Office to document your disability, determine eligibility for accommodations under the ADAAA/Section 504 and to request a Faculty Accommodation Form. Disability accommodations or status will not be indicated on academic transcripts. In order to receive accommodations in a class, students with sensory, learning, psychological, physical or medical disabilities must provide their instructor with a Faculty Accommodation Form to sign. Students must return the signed form to the ACCESS Director. A new form must be requested each semester. Students with a history of a disability perceived as having a disability or with a current disability who does not wish to use academic accommodations are also strongly encouraged to register with the ACCESS and Accommodation Office and request a Faculty Accommodation Form each semester. For further information, please contact Katie Johnson, Director and ADA/504 Coordinator, at 301-2778 or visit the ACCESS and Accommodation Office website at http://www.mercer.edu/disabilityservices.''

Electronic Submission of Materials: ``Students bear sole responsibility for ensuring that papers or assignments submitted electronically to a professor are received in a timely manner and in the electronic format(s) specified by the professor. Students are therefore obliged to have their e-mail client issue a receipt verifying that the document has been received. Students are also strongly advised to retain a copy of the dated submission on a separate disk. Faculty members are encouraged, but not required, to acknowledge receipt of the assignment.''

GitLab: Students must maintain their programming projects on the departmental GitLab server name anvil.cs.mercer.edu. Specific instructions on how the repositories should be structured will be included in in each assignment description. Code for this class will be submitted via anvil.

Tentative Class Schedule1
Week Starting Chapter Lecture Topics
January 7$^{\rm th}$ Chapter 1 [HPC] Introduction
    Code Maintenance
    Code Timing
January 14$^{\rm th}$ Chapter 2 [HPC] Single Processor Tuning
    Performance Tuning Tools
    Cache and Memory Optimization
    Compiler Switches and a review of makefiles
January 21$^{\rm st}$ Chapter 3 [HPC] Data Access
    Loop Optimization
    Interlanguage Communication
    Vector Computers, SIMD, and Pipelines
January 28$^{\rm th}$ Chapters 4 and 5 [HPC] Parallel Computers
    Basics of Writing Parallel Code
February 4$^{\rm th}$ Chapter 6 [HPC] Introduction to OpenMP
    Embarassingly Parallel Computations
    Monte Carlo Integration
February 11$^{\rm th}$ Chapter 7 [HPC] Data Dependencies
February 18$^{\rm th}$ Chapters 1 and 2 [PTH] Introduction to Pthreads
    Designing Threaded Programs
February 25$^{\rm th}$ Chapter 3 [PTH] Mutexes, Deadlock, Barriers,
    and Syncronization
    Revisiting Data Dependence
    MIDTERM EXAM, 3/1/18
March 4$^{\rm th}$   SPRING BREAK
March 11$^{\rm th}$ Chapter 9 [HPC] Introduction to MPI
    Preparations for Parallel Cluster Work
    Network Mapping and Characteristics
March 18$^{\rm th}$ Chapter 10 [HPC] Data Dependence, Location, and Placement
    Work and Data Decomposition
    Locating Parallel Regions
March 25$^{\rm th}$   Barriers and Synchronization
    Performance Tuning
April 1$^{\rm st}$ Special Topic - CUDA Introduction to Massively Parallel Computations
    Environment Setup
    Code Management
April 8$^{\rm th}$   CUDA Hardware and Memory Structure
    Data Locality, Placement, and
    Memory Management
April 15$^{\rm th}$   Optimizing CUDA Code
    CUDA Kernels
April 22$^{\rm nd}$ Chapter 11 [HPC] Hybrid High Performance Computing
April 29$^{\rm th}$   FINAL EXAM, 5/1/18, 2 p.m.
    (Tuesday)

About this document ...

This document was generated using the LaTeX2HTML translator Version 2012 (1.2)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -split 0 -no_navigation -local_icons syl_s18.tex

The translation was initiated by Andrew J. Pounds on 2018-01-09


Footnotes

... Schedule1
I reserve the right to modify this schedule as situations warrant.


Andrew J. Pounds 2018-01-09