Modern compute-intensive applications such as those in computer vision, autonomous decision-making, AR/VR exhibit a high level of parallelism and computing requirements. Heterogeneous multicore embedded systems employ accelerators such as GPUs in addition to CPUs working in unison to execute massively parallel programs. In this course students focus on the application of parallel programming languages, techniques, models and tools to leverage the performance of heterogeneous multicore processors to implement such applications. Students learn to parallelize a problem, select and implement parallel algorithms, apply optimization techniques and articulate the use of standard APIs. Case studies and current research topics in this area will be introduced. Through a course project, students will work on a real-world compute-intensive problem in engineering or science. This course is application-oriented and covers the underlying hardware architecture concepts as needed.
Technical Option Stream: Embedded Systems