Home - eecse4750/e4750_2024Fall_students_repo GitHub Wiki

EECS E4750: Heterogeneous Computing for Signal and Data Processing (Fall 2024)

This is the course wiki. In the sidebar you will find navigation links to reference material, including environment setup instructions, tutorials and upcoming (and eventually, past) assignments.

Here are some quick links that you may be looking for:

Course Information

Instructor

Zoran Kostic, PhD

Professor of Professional Practice, Electrical Engineering Dept., Columbia University.

Office Hours: time, location see on website.

For email communication use the heading subject "E4750 Heterogeneous Computing Student Question".

Email: [email protected]

Teaching Assistant(s)

2024 Fall: Pranav Kumar Kota

Office Hours: TBD, link on courseworks

Course Assistant email: [email protected]

Course Overview

Methods for deploying signal and data processing algorithms on contemporary general purpose graphics processing units (GPGPUs) and heterogeneous computing infrastructures. Using programming languages such as OpenCL and CUDA for computational speedup in audio, image and video processing and computational data analysis. Course engagement through assignments, and a midterm. Significant design project expected.

Course Content

  • Applications of Parallel Computing

  • Graphics Processing Unit (GPU) architecture and programming

  • Heterogeneous Parallel Computing (HPC)

  • Parallel SW development in OpenCL and CUDA, discussion of other similar standards

  • Motivating examples from imaging, audio, multimedia, deep learning

  • Cross section of mobile processor architectures: Nvidia, AMD, Intel

  • General Purpose Processors, Graphic Processing Units (GPU), DSPs ARM architecture

  • Parallel programming concepts for mobile platforms CUDA and OpenCL language

  • Tools: development environments, code development, profiling

Setup steps

  • Use the GCP setup wiki page to enable a GPU based virtual machine on GCP. Usage of a T4 GPU is recommended. However, when facing a severe lack of compute resources for the T4 GPU, one can use other architectures as well - L4, etc. Note that the cost of usage increases by a lot for more advanced GPUs. So choose the VM wisely and manage resources well by shutting down the VM when not in use.

  • After installing the required software in the VM, one can begin developing code with the jupyter environment.

  • Everyone will receive an invitation to an assignments repository from GitHub classroom. When one accepts the invite, a personal private fork is created that is used for submitting the course assignments. Each new assignment will be updated in a new folder in the format 'Assignment x'. One is expected to develop solutions and include them in a solution folder named 'Assignment x solution'.