CS 6504 Fall 2015 Accessible Parallel Computing Wu Feng This course will address making parallel computing in the context of applications (or more immediately, the Berkeley dwarfs or motifs) more accessible or more programmable. Overall, we will seek to address programmability, portability, and performance in the context of parallel computing and as an offshoot of our "Parallel Computing for the Masses" grant from NSF. I would anticipate the first 2-4 weeks of the course looking at studying a range of programming models --- from the simple and visual, i.e., our parallel Scratch/Snap! prototype to library-based, e.g., cuBLAS, cuSPARSE, etc., to pragma-based, e.g., OpenMP or OpenACC, to primitive-based, i.e., CUDA or OpenCL. Underpinning the programming models is our OpenDwarfs suite on github. While everyone would learn about the programming models and the OpenDwarfs, I expect each student to identify an application area that they have expertise for or want to have expertise in, e.g., a physicist taking the class may gravitate to the n-body dwarf and apply it to his/her seismology project. The paper reading portion of the course would occur about 1/4 to 1/3 of the way through the course, where we would look at the different application areas and read and critique papers in parallel computing in support of those areas, particularly at the abstraction level of a dwarf, e.g., much of my own work with dynamic programming, structured and unstructured grid, and n-body dwarfs, Berkeley's work with structured grid dwarf, and so on. We would be critiquing the work and simultaneously students will be leveraging this critiqued work in advanced parallel computing to apply to their own advanced topics project. Loosely, a syllabus would look as follows: Weeks 1-4 Parallel programming models: parallel Scratch/Snap!, library-based programming, MapReduce, OpenMP, OpenACC, CUDA/OpenCL in the context of a n-body dwarf and/or a dense linear algebra dwarf from our OpenDwarfs project Weeks 5-15 Paper reading (including the Landscape of Parallel Architecture and dwarfs), discussion, and occasionally directed hands-on application of readings to code (likely towards the end of the semester).