Date | Topic | Lecture Notes/Lab Files | Reading |
---|---|---|---|
2017-08-22 | Course Information | ||
2017-08-24 | Introduction to C++ | ||
2017-08-29 | Parallel Hardware - Part 1 Chapters 2.1-2.3 (Pacheco) |
Parallel Hardware [pdf] | |
2017-08-31 | Parallel Hardware - Part 2 Chapters 2.3, 2.6 (Pacheco) |
||
2017-09-05 | MPI - Part 1 | MPI [pdf] mpi_hello.cxx mpi_bcast_example.cxx mpi_scatter_gather_example.cxx mpi_scatterv_gatherv_example.cxx |
|
2017-09-07 | Homework 1 Introduction Lab |
||
2017-09-12 | MPI - Part 2 | mpi_reduce_example.cxx mpi_allgather_example.cxx |
|
2017-09-14 | Guest Lecture: David Apostal - Vectorizing a Geological Simulation | auto-compiler-vect.pdf auto-compiler-vect.pptx |
|
2017-09-19 | MPI - Part 3 | using_hodor.pptx | |
2017-09-21 | Lab | ||
2017-09-26 | MPI - part 4 | mpi_process_ring.cxx mpi_asynch_busy_process_ring.cxx mpi_asynch_process_ring.cxx unordered_map_test.cxx |
|
2017-09-28 | Lab | mpi_asynch_mw.cxx | |
2017-10-03 | Guest Lecture - David Apostal (Vectorization Pt. 2) | ||
2017-10-05 | Lab | ||
2017-10-10 | Test 1 Review | ||
2017-10-12 | Test 1 | ||
2017-10-17 | GPU Computing with CUDA - Part 1 (Basics) | CUDA 1 [pdf] vector_sum.readme vector_sum_gpu.cu vector_sum_gpu_v2.cu vector_sum_gpu_v3.cu cuda_device_query.cu |
|
2017-10-19 | No Class - Travel (Potential Guest Lecture) | ||
2017-10-24 | No Class - Travel (Potential Guest Lecture) | ||
2017-10-26 | No Class - Travel (Potential Guest Lecture) | ||
2017-10-31 | GPU Computing with CUDA - Part 1 (continued) | ||
2017-11-02 | Lab | ||
2017-11-07 | GPU Computing with CUDA - Part 2 (Grids, Blocks, Warps, Threads) | CUDA 2 [pdf] | |
2017-11-09 | Lab | ||
2017-11-14 | GPU Computing with CUDA - Part 2 (continued) | ||
2017-11-16 | Lab | ||
2017-11-21 | GPU Computing with CUDA - Part 3 (Synchronization) | CUDA 3 [pdf] | |
2017-11-23 | No Class - Thanksgiving Recess | ||
2017-11-28 | GPU Computing with OpenCL (Basics) | OpenCL 1 [pdf] opencl_matrix_add.zip |
|
2017-11-30 | Lab | ||
2017-12-05 | Test 2 Review | ||
2017-12-07 | Test 2 |
This course introduces the basics of cluster and supercomputing with MPI (the message passing interface) and the basics of GPU computing with OpenCL and OpenCL. This course will also review current research being done in the areas of high performance distributed computing and GPU computing.
At the completion of this course, students should be proficient in GPU computing and programming in MPI; as well as knowledgeable of the current research being done in the area of high performance distributed computing and GPU computing. Main objectives include:
Students will gain knowledge/understanding of the following:
None.
The following texts are suggested for this course:
The course grade will consist of one group research project, one research paper presentation, four programming assignments and one test. The grade will be calculated as follows:
There will be the following grade distribution:
The development of the individual problem solving skills needed for computer programming is one of the major objectives of this course. Students are to work independently of each other in completing the programming assignments. Any exception to this rule will require documentation signed by me allowing the collaborative work.
If you need help, you are welcome to consult with your instructor, your teaching assistant, or the staff of the department's Instructional Help Desk in 109A Streibel Hall. A submission of source code that you did not develop or homework assignments that was not your individual writing will be treated as plagiarism. These assignments will receive zero points and you may be referred to the Associate Dean of Student Life as a case of Scholastic Dishonesty.
Class attendance and lab attendance are required. Any student missing more than 6 classes without a doctors excuse will fail the course. The classroom is the primary venue for course material, announcements, and other information relevant to the course. An on-line course management system may be used to make some information available to students, but this is intended to enhance, not replace, classroom interaction.
Code for homeworks and labs must be commented and properly formatted (see different coding styles, I prefer 1TBS) or points will be taken away. The final homework submission must be submitted through Moodle. Each homework will list its grading criteria.
Late assignments will have their grades penalized by 15% the first day, and 30% the second day. No assignments will be accepted more than two days late. Homeworks are to be done individually (see Academic Integrity) and may involve a significant amount of programming, so start them early.
All lab assignments must be completed by the end of the lab session. Any exception will require proper excuse with permission granted before the end of the lab session. Partial credit may be given to incomplete work.
Any issues related to the machines in the computer labs can be sent to cslabs@cs.und.edu.
Upon request, the Computer Science Department will provide reasonable accommodations for students with disabilities as specified in the policies of the UND office of Disability Services for Students (DSS). You must contact your instructor to request and arrange accommodations.