In this project students (Learners) will become familiar with the basic paradigms of high performance computing. Students will understand take a look at the differences between writing and debugging serial and parallel code, optimizing applications, and working with large scale data with a focus on graphics and visualization tasks.
Job Description
Student Duties: Students will be responsible for working a minimum of 12 weeks (a full semester) for 8-10 hours a week. Students will be meeting with me once a week for a weekly check-in for feedback, demonstration of progress, ask questions, and make forward progress on the next guided training tasks.
There are two scientific applications for this proposal: 1. Scientific Application: It is my goal to generate 'Nifty' assignments as a result of the student work which can be presented at SIGCSE conference on the best practices for learning HPC computing. These can further be shared with the HPC community at large. 2. Scientific Application: Students final project through their learnings will serve as a launching point for another semester of this program. Successful applicants for this proposal would want to further work in graphics and visualization and generate a workshop or short paper.
Computational Resources
Students will make use of XSEDE trainings available online [1]. Additionally, an Education Allocation request will be used for these students to perform work primarily at the end of their training[2].
The training plan is to bring in students(ideally in pairs of 2) who are currently sophomores/junior and have taken a Computer Systems course using C/C++. Students need not have any previous research experience, but generally should be interested in pursuing future research in the HPC/Visualization/Graphics domain.
Work will first be done at Northeastern's Discovery Cluster as a 'training ground' to acquaint students with the Linux environment and working in supercomputer environments.
Students will be covering the following topics:
- Inherently serial versus parallel code - How to connect to clusters in a Linux Environment and render data remotely - Introduction to GPGPU OpenCL/CUDA (Image Processing tasks) - Debugging GPU applications - Optimization of programs (Measurement using profilers) - Final Project (Graphics/Vis related)