Summer 2020 - ENSC 462 D100

Special Topics in Engineering Science (4)

Programming for Heterogeneous Computing Systems

Class Number: 5574

Delivery Method: Distance Education

Overview

  • Course Times + Location:

    May 11 – Aug 10, 2020: Mon, Wed, 8:30–10:20 a.m.
    Burnaby

  • Prerequisites:

    To be determined by the instructor subject to approval by the department chair.

Description

CALENDAR DESCRIPTION:

Studies in areas not included within the undergraduate course offerings of the engineering science program.

COURSE DETAILS:

With the significant slowdown of general-purpose CPU scaling, the computing industry has been actively exploring specialized and programmable hardware accelerators, such as GPUs and FPGAs, to bring orders-of-magnitude performance and energy gains for important application domains. While GPUs have already made a great success in high-performance scientific computing on supercomputers and the recent deep learning revolution, FPGAs have also attracted increasing attention in datacenters in the past few years. In addition to Microsoft's early deployment of FPGA-based datacenters, major cloud service providers, including Amazon, Alibaba, and Huawei, all announced the public access of their FPGA-enabled cloud.Future computing systems will become even more heterogeneous and will featureamix of multicore CPUs, GPUs, FPGAs, and other specialized hardware accelerators(e.g., machine learning acceleratorslike Google TPUand Amazon Inferentia). To get our students prepared and competitive for this hotjob market, it is essential for them to understand the fundamental concepts and designs of such heterogeneous computing systems and master skillsto program such systems.

 

In this course, wewill teach students fundamental concepts, design principles, and programming techniques for heterogenous computing systems, including multicore CPUs, GPUs, and FPGAs. Specially,this course teachesthe following topics:

1.Basic concepts ofgeneral-purpose computing

2.Basic concepts of specialized hardware acceleration

3.Multicore CPU programming using OpenMP

4.GPU programming using CUDA

5.FPGA programming using High-Level Synthesis (HLS) C/C++

6.Comparison between multicore CPU, GPU, and FPGA

 

To those students who might want to use this course as an Elective, please contact your Option Head through coursys appeal for the approval.

Grading

REQUIREMENTS:

Prerequisite(for undergraduate students): ENSC 350, 351

Registrar Notes:

ACADEMIC INTEGRITY: YOUR WORK, YOUR SUCCESS

SFU’s Academic Integrity web site http://www.sfu.ca/students/academicintegrity.html is filled with information on what is meant by academic dishonesty, where you can find resources to help with your studies and the consequences of cheating.  Check out the site for more information and videos that help explain the issues in plain English.

Each student is responsible for his or her conduct as it affects the University community.  Academic dishonesty, in whatever form, is ultimately destructive of the values of the University. Furthermore, it is unfair and discouraging to the majority of students who pursue their studies honestly. Scholarly integrity is required of all members of the University. http://www.sfu.ca/policies/gazette/student/s10-01.html

TEACHING AT SFU IN SUMMER 2020

Please note that all teaching at SFU in summer term 2020 will be conducted through remote methods. Enrollment in this course acknowledges that remote study may entail different modes of learning, interaction with your instructor, and ways of getting feedback on your work than may be the case for in-person classes.

Students with hidden or visible disabilities who believe they may need class or exam accommodations, including in the current context of remote learning, are encouraged to register with the SFU Centre for Accessible Learning (caladmin@sfu.ca or 778-782-3112) as soon as possible to ensure that they are eligible and that approved accommodations and services are implemented in a timely fashion.