UCSD CSE 160: Introduction to Parallel Computing ================================================ This course aims to provide knowledge and hands-on experience in developing software for processors with massively parallel computing resources. A massively parallel processor has the hardware ability to allow many threads to execute simultaneously. Many commercial offerings from NVIDIA, Intel, AMD, Qualcomm, Google, and ARM offer such levels of concurrency. Effectively programming these processors requires in-depth knowledge of parallel programming principles and the parallelism models, communication models, and resource limitations of these processors. In addition, this course also prepares the students to use the parallelism models of modern programming languages. The target audiences of the course are students who want to develop applications for these processors for fun, work, and research, as well as those who want to develop programming tools and future processors. The course involves a series of programming assignments of steadily growing complexity. All assignments will involve programming a massively parallel GPU system using OpenCL, a popular open source language extension of C/C++ for GPU programming. Gradescope Autograder ^^^^^^^^^^^^^^^^^^^^^ .. toctree:: :maxdepth: 2 :caption: Debugging Gradescope Autograder Gradescope Rate Limiting Data Science & Machine Learning Platform ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. toctree:: :maxdepth: 2 :caption: Getting Started with DSMLP DSMLP PyTorch and OpenCL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. toctree:: :maxdepth: 2 :caption: Getting Started with DSMLP PyTorch Qualcomm Innovators Development Kit ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. toctree:: :maxdepth: 2 :caption: Getting Started with QIDK QIDK .. toctree:: :maxdepth: 2 :caption: Getting Started with Qualcomm RB3 Gen2 RB3_Linux RB3_Mac Developing on your Computer ^^^^^ .. toctree:: :maxdepth: 2 :caption: Visual Studio Code with DevContainers devcontainers amdwsl Assignments ^^^^^^^^^^^ .. toctree:: :maxdepth: 2 :caption: Programming Assignments PA1 - Device Query & Raytracer PA2 - Vector Addition PA3 - Matrix Multiplication PA4 - Tiled Matrix Multiplication PA5 - Convolution PA6 - Reinventing the (Pytorch) Wheel (CNNs) PA7 - Rounding Out the (Pytorch) Wheel PA8 - Softmaxing the (Pytorch) Wheel .. toctree:: :maxdepth: 2 :caption: Project Assignments .. PA9 - Implicit GeMM Convolution