CESE4010 Advanced computing systems
Recent developments in computing systems have resulted in the emergence of a number of different computational platforms that provide various performance, cost and power advantages in different application domains. This course discusses the most widely used computational platforms (CPUs, GPUs, FPGAs and DSPs), while addressing the theoretical and practical trade-offs in computer system organization and the latest developments and trends in computer architecture. The course will help the students in quantifying architectural design decisions in terms of performance, cost and power. An accompanying lab aids the students in applying this knowledge to create powerful heterogeneous (CPU, GPU, FPGA and/or DSP) computational solutions in computationally intensive application domains, such as multimedia and scientific computing.
After completing this course, students are able to:
- Analyze the computational characteristics of the application (available parallelism and memory access). This helps students to understand the algorithmic limitations of running them on a multicore platform.
- Identify the components of a multicore architecture (processing elements, memory system, interconnect network). This helps students to estimate how their application will perform on an architecture built with these components.
- Determine the potential performance of implementing an application on various available multicore architectures. This helps students to select an optimal architecture for their application.
- Use profiling tools to identify bottlenecks in running applications on a system. This helps students to optimize their implementation.
- Select a specific multicore system and implement the application using various techniques such as OpenMP, CUDA/OpenCL, and SIMD extensions. This helps students to select optimal multicore platforms for their target applications.
Last modified: 2023-11-04