Computer Science Foundations of Computational Science CS/CMDA 3634 Spring 2020 Overview
Contents
1 Organization
2
Instructor Location Time
Russell J. Hewett GBJ 104
TR 3:30pm-4:45pm
1.1 Objectives.. 2 1.2 Prerequisites 2 1.3 OfficeHours. 3 1.4 In-classExpectations.. 3 1.5 Professionalism&CommunicationStandards 3
2 Virginia Tech Honor Code 5
2.1 HonorCodePledgeforAssignments .. 6 2.2 CMDAStatementonAcademicIntegrity .. 6
3 Accommodations 7
4 Assignments 8
4.1 Grades. 9 4.2 AssignedTextbooks .. 9 4.3 WebResources .. 10
5 Final Notes
10
1
1 Organization 1.1 Ob jectives
The goal of this course is to introduce a set of basic tools for exploiting the phenomenal computing power that even a regular modern laptop possesses today. The emphasis of the course is to introduce parallel programming concepts in a practical way while paying attention to measuring performance of your computer codes. At the end of the course each student will have written distributed and multi-threading code that is capable of solving problems with O(1010) degrees of freedom on Virginia Tech high-performance computing clusters.
You are required to bring your laptop to every lecture (with a fully charged battery) and to be prepared
to code! In the first week we will create a virtual machine for running Ubuntu Linux on your laptop. Initially, you will develop code on your laptop using the virtual machine. Once you are comfortable with some parallel development concepts, we will move on to developing for the Virginia Tech high-performance computing clusters. You will make use of code.vt.edu, Virginia Techs GitLab instance, for source code version control.
Overall the goal is to enable students to fully utilize the latest parallel computing platforms in their advanced degrees and in their eventual careers. A student who has met the objectives of the course will be able to:
Identify parallelism in a scientific computing problem.
Evaluate applicability of massively parallel processing to a specific scientific problem.
Estimate the likely possible outcome for a parallel implementation.
Write MPI based parallel programs and understand and correctly apply collective and point-to-point communication strategies.
Write OpenMP based parallel programs using parallel for loops.
Understand the fork and join threading model.
Identify parallel bottlenecks through profiling.
Understand the impact of computer and HPC architecture on parallel performance.
Apply these concepts to understand how scientific problems can map to modern massively parallel architectures.
1.2 Prerequisites
The formal prerequisites for CMDA 3634 are CS 1114 (Intro. to Software Design) and CS 2114 (Software Design & Data Structures). All students should have some experience with programming in a compiled language for instance C, C++, Fortran, or Java. The primary languages used in the course will be C and Python. Students who have taken CS 2505 or are taking that course concurrently will have an easier time with the programming aspects of the course.
The lecture material will include lectures on the structure of a C program, variables, functions, scope, algebraic operations, pointers, referencing, dereferencing, dynamic memory allocation, and control flow (for loops, if statements). C programming concepts that you need will be introduced and practiced in class lectures. You will become familiar with the process of searching and reading language, library, and software documentation for concepts introduced in the course.
2
1.3 Office Hours
The instructor, GTA, and ULAs will hold regular office hours, per the following table. Additionally, we may occasionally hold additional office hours to provide assistance on projects at times and locations that will be announced using Canvas.
For office hours:
Please try to resolve technical (e.g., git and VM), programming, and debugging issues with the GTA and ULAs prior to meeting with the instructor.
Please bring conceptual issues to the instructor or the GTA.
For any office hours, be prepared to describe the problem, explain the steps you have already taken to
resolve it, and any advice you have received from the course assistants.
1.4 In-class Expectations
1. Attendance is key to success. If you miss a lecture, you are responsible for getting all notes/materials and announcements from a fellow classmate and/or Canvas. Attendance will be taken at every class meeting.
2. Be an active, nondisruptive participant in the class. Take notes, ask/answer questions, and be respectful of others.
3. Please do not talk, text, etc. during class. Silence or turn off your phone.
4. Recording (voice, video, pictures) of the lecture is NOT allowed without permission granted for special circumstances.
5. Be prepared for class. Read any assigned textbook sections before class.
6. Be prepared for in-class labs. Read them prior to class and complete any specified pre-lab.
1.5 Professionalism & Communication Standards
When you graduate and go on to your first job, or if you take a summer internship, you will find that the company or institute that you work for will have its own requirements for code formatting, documentation, version control, and other technical communications. This class is no different. These skills take time and experience to develop, so we will start now.
1. Assignment deadlines are final.
2. Written communication to the course staff, and to fellow students, must be respectful and must use business appropriate language, greetings, and salutations with correct grammar and spelling.
3. Respect the time and availability of course staff. Be on time to class, office hours, and scheduled meetings. Be prepared for class, office hours, and meetings. Have the necessary tools (computer, power cord, notes, etc.) ready and prepare your thoughts in advance of the meeting. Do not leave class early, it is disrespectful to the instructor and to your classmates.
4. Communicate in a timely manner. Do not wait until the last minute to ask questions or to ask for clarification.
5. Contact course staff at your leisure, but do not expect responses outside of normal business hours.
Role Person Location Hours Contact
Instructor Russell J. Hewett McBryde 418 W 3-4pm; F 10-11am [email protected]
GTA Jonathan Baker CMDA Collab. Center Th 10am-noon [email protected]
Michael Deely ULAs Thomas Grady
David Parks
McBryde 136 McBryde 136
CMDA Collab. Center
T 5-7pm
Th 5-7pm
F 12:30-2:30pm
[email protected] [email protected] [email protected]
3
6. Written portions of assignments must use proper grammar and spelling, as well as logical ordering (i.e., the assigned order) for answering questions. Answers need to contain complete explanations and justifications.
7. Plots, figures, and tables should be correctly scaled and explained. Lines should be thick enough to see on screen and in print. Labels should be large enough to read clearly. Use legends where appropriate.
8. Source code, documentation, and git history messages must follow the CMDA 3634 Development Style Guide.
4
2 Virginia Tech Honor Code
The following is extracted from the Virginia Tech Syllabus Guidelines and Requirements document published by Office of Undergraduate Academic Integrity:
The Undergraduate Honor Code pledge that each member of the university community agrees to abide by states: As a Hokie, I will conduct myself with honor and integrity at all times. I will not lie, cheat, or steal, nor will I accept the actions of those who do.
Students enrolled in this course are responsible for abiding by the Honor Code. A student who has doubts about how the Honor Code applies to any assignment is responsible for obtaining spe- cific guidance from the course instructor before submitting the assignment for evaluation. Ignorance of the rules does not exclude any member of the University community from the requirements and expectations of the Honor Code. For additional information about the Honor Code, please visit: http://www.honorsystem.vt.edu
Assignments submitted shall be considered graded work and all aspects of your coursework are covered by the Honor Code. All projects and homework assignments are to be completed individually unless otherwise specified.
Commission of any of the following acts shall constitute academic misconduct. This listing is not, however, exclusive of other acts that may reasonably be said to constitute academic misconduct. Clari- fication is provided for each definition with some examples of prohibited behaviors in the Undergraduate Honor Code Manual located at https://www.honorsystem.vt.edu/
A. CHEATING: Cheating includes the intentional use of unauthorized materials, information, notes, study aids or other devices or materials in any academic exercise, or attempts thereof.
B. PLAGIARISM: Plagiarism includes the copying of the language, structure, programming, computer code, ideas, and/or thoughts of another and passing off the same as ones own original work, or attempts thereof.
C. FALSIFICATION: Falsification includes the statement of any untruth, either verbally or in writing, with respect to any element of ones academic work, or attempts thereof.
D. FABRICATION: Fabrication includes making up data and results, and recording or reporting them, or submitting fabricated documents, or attempts thereof.
E. MULTIPLE SUBMISSION: Multiple submission involves the submission for credit without autho- rization of the instructor receiving the workof substantial portions of any work (including oral reports) previously submitted for credit at any academic institution, or attempts thereof.
F. COMPLICITY: Complicity includes intentionally helping another to engage in an act of academic misconduct, or attempts thereof.
G. VIOLATION OF UNIVERSITY, COLLEGE, DEPARTMENTAL, PROGRAM, COURSE, OR FACULTY RULES: The violation of any University, College, Departmental, Program, Course, or Fac- ulty Rules relating to academic matters that may lead to an unfair academic advantage by the student violating the rule(s).
5
2.1 Honor Code Pledge for Assignments
The Virginia Tech honor pledge for assignments is as follows: I have neither given nor received unauthorized assistance on this assignment.
The pledge is to be written out on all graded assignments at the university and signed by the student. The honor pledge represents both an expression of the students support of the honor code and an unambiguous acknowledgment that the student has, on the assignment in question, abided by the obligation that the Honor Code entails. In the absence of a written honor pledge, the Honor Code still applies to an assignment.
2.2 CMDA Statement on Academic Integrity
The field of Computational Modeling and Data Analytics requires professionals who act with the highest ethical standards. CMDA teaches skills that empower you to have a tremendous impact upon the world. We teach you these skills with the expectation that you will exercise them responsibly.
Responsible practice is a habit forged during your undergraduate studies. CMDA majors demonstrate their sound ethical foundation by completely adhering to the Virginia Tech Honor Code in all of their courses. Not only do these policies prepare you for a rewarding professional life; they are designed to help you learn as much as possible from your courses.
Unless a faculty member explicitly states a different policy, the following rules apply to all work submitted in your CMDA classes.
1. You are free to discuss general ideas about projects and homework problems with your classmates. You may not show a completed solution to another classmate, nor may you view theirs.
2. You must state the names of any classmates whom you have helped or received help from. State these names clearly at the top of your assignment.
3. The work you turn in must be your own write-up: you may not copy solutions from another student, even if you worked together to understand the underlying techniques. Your write-up must be prepared separately from your classmates.
4. The use of solutions or assignments from prior sections of the class (or similar classes at other insti- tutions, GitHub, Stack Overflow, rent-a-coder sites, etc.) is strictly prohibited, regardless of how they are obtained.
5. Be sure to clean up your public workspace when you are done: for example, erase the whiteboards and do not leave code print-outs behind in the CMDA Collaboration Center.
6. You are free to discuss general ideas about computer programming, algorithms, and debugging strate- gies at a conceptual level.
7. You may not view one anothers code. You may not debug someone elses code. You may not share code or receive code. This rule applies to source code and scripts, as well as LaTeX code. Copying from a screenshot, a photo of a screen, a print-out, or by any other mechanism, electronic or otherwise, is prohibited. You cannot provide this assistance to students in classes you have already taken, unless you are serving in an official capacity as an Undergraduate Learning Assistant or CMDA Computing Consultant.
8. You are free to get help on programming issues and assignments from the course instructor, Graduate Teaching Assistants (GTAs), Undergraduate Learning Assistants (ULAs), and CMDA Computing Consultants (provided they are not enrolled in your class).
9. You may not post solutions (or any other course material) online, outside of Canvas. Sharing any course materials on third party study resource sites is strictly prohibited.
10. You are expected to report any violations of the Virginia Tech Honor Code and this policy to the course instructor, the CMDA academic advisors, or the CMDA division leader.
If you are uncertain or concerned that a behavior might be a violation of the Honor Code, please ask your instructor for clarification. The CMDA faculty are eager to help.
6
3 Accommodations
If you are a student with special needs or circumstances, if you have emergency medical information to share with me, or if you need special arrangements in case the building must be evacuated, please make an appointment with me as soon as possible during my office hours.
Additional information is available online here.
Persons who have religious or cultural observances that coincide with this class should let the instructor know in writing by January 30, 2020. I strongly encourage you to honor your cultural and religious holidays! However, if I do not hear from you by the above date, I will assume that you plan to attend all class meetings and that there will be no conflicts with assignment due dates.
7
4 Assignments
The breakdown for assignments is as follows:
All assignments will count toward your final grade.
In general, lab assignments will be due the day that they are assigned.
Programming projects are due at the prescribed due date and time. Start your submission process early and do not miss the assignment close date on Canvas.
Usually, there will be a 24 hour grace period after the submission deadline and you may submit during this time without penalty. Any submissions after the grace period will not be accepted without prior approval.
The solutions may be posted any time after the grace period. No submissions will be accepted, in any circumstance, after the solutions have been posted.
During the grace period, the instructor, GTA, and ULAs will not provide assistance, technical
support, or feedback on assignments.
Start programming projects early, as they will take longer than you anticipate. We will be using
shared computing resources and there may be some wait time for your jobs to run. You need to run you experiments early enough that you can generate data on these shared resources.
A number of aspects of these assignments may be evaluated using automatic grading software and scripts. If you do not follow directions in naming files, directories, repositories, or the like, and the scripts fail, the instructor and teaching assistants will not grade your work and you will receive no credit. Follow directions precisely!
Follow the programming style guide, documentation requirements, and git commit formatting guide- lines. When in doubt, err on the side of readability and good communication. Poor code, documenta- tion, and commit history quality may result in point deduction on assignments. We cannot help debug messy, disorganized code in office hours.
Unless otherwise specified, all parts of assignments requiring mathematical derivation, analysis, graphs, figures, tables, or textual answers must be typeset using LATEX.
All written components of assignments must be submitted via Canvas. Source code (tex files, figures, experiment data, etc.) must be in your git repository on https://code.vt.edu.
All coding components of assignments must be available in your git repository on https://code.vt. edu. Commits after the prescribed due date and time will not be considered.
For assignments involve coding exercises, it is each students responsibility to test their implementations for correctness. If your code does not work and you run out of time you should explain briefly in your report what you think the remaining issues are. Do not wait until the last minute to submit an assignment. Push your code often to ensure that you have something submitted by the deadline.
Assignments will include instructions on what outside resources you may use. Be advised that you must cite any outside resources (with a reasonable definition of any). Use the bibliography environment in LATEXto manage your citations and bibliography.
Read the preamble and instructions for each assignment carefully, especially the portion specifying deliverables and submission instructions.
Category
Weight
Programming projects
50%
In-class labs
25%
In-class quizzes
10%
Fundamental skills activities
10%
Attendance and in-class participation
5%
8
Unauthorized duplication of other students work, unauthorized (or authorized but uncited) use of external resources (copying code from stack overflow, github, etc.), and dishonest reporting of execution results, is an honor code violation.
All honor code violations will be submitted to the Office of Academic Integrity for adjudication.
The university policy for the penalty for honor code violations is an F* as final grade. Instructors are permitted to recommend a reduced penalty. You will have a fundamental skills activity on academic integrity. If you do not complete this assignment, instructors in this class will not consider
recommending reduced penalties in the event of violations.
Questions about grading must be made in writing and may not be submitted until 24 hours after grades have been released. Submit questions to the GTA first and then to the instructor if there is no satisfactory resolution.
4.1 Grades
The minimum letter grade divisions are
A [93,100]. A- [90,93). B+ [87,90). B [83,87). B- [80,83). C+ [77,80). C [73,77). C- [70,73). D [60,70).
The instructor reserves the right to adjust grades upwards on the inter-grade boundaries to recognize excep- tional class participation, attempting extra credit exercises, and general effort. Any adjustments will be in your favor.
4.2 Assigned Textbooks
The primary study resources for this class will be the course slides and the course notes. The course slides are by Prof. Hewett and Prof. Martin and evolve with the class. The Course Notes are by Prof. Tim Warburton and many others and are continuously evolving. The latest version slides and course notes will be available on Canvas.
These notes and slides are for current CMDA 3634 students. Do not share them outside of the context of this class.
The following texts are all useful study aides for learning how to code in parallel. Some additional texts may be referenced in individual assignments.
1. Introduction to High Performance Computing, D.L. Chopp, ISBN: 978-1-611975-63-5.
2. Introduction to High Performance Computing for Scientists and Engineers, G. Hager & G. Wellein,
ISBN: 978-1-439-81192-4.
Every C programmer should have a copy of this text
1. The C Programming Language, Brian W. Kernighan & Dennis M. Ritchie, Prentice Hall, ISBN: 978-
0-131-10362-7.
9
4.3 Web Resources
The internet is big. Use it. Some useful resources:
ANL: MPI page http://www.mcs.anl.gov/research/projects/mpi/
Open-MPI: http://www.open-mpi.org/
GPGPU: Community web page http://gpgpu.org/
PETSc: ANL Portable, Extensible Toolkit for Scientific Computation http://www.mcs.anl.gov/petsc/ OpenMP: OpenMP API specification for parallel programming http://openmp.org
Some example quick start guides:
5
Virtualbox: Oracle Virtualbox online manual. Ubuntu Linux: Ubuntu desktop guide.
MPI: Dongarras quick start guide.
OpenMP: quick start guide.
CUDA: NVIDIA CUDA quick start guide. Final Notes
The policies in this syllabus and related course schedule are subject to reasonable adjustments as the class progresses. In such instances, the instructor will provide students with sufficient notice in the form of announcements in class and on Canvas.
10
Reviews
There are no reviews yet.