CSEN 916

4 lecture hours

5  ECTS credits

Multi/Many-Core Processors Programming & Architecture




    Multi/many-cores processors are now omnipresent in all computing devices, starting from embedded devices, such as cell phones, up to the super computers. They are the computer scientists’ response to the scalability walls uni-core processors faced few years ago. However, multi/many-cores processors are introducing new challenges and making older challenges of concurrency and parallel programming more complicated. Programmers came to a point that they have to understand the underlying architecture to get the most out of it. This course is exploring the architectural features of multi-core processors and introduces different programming techniques to effectively utilize great performance tools within multi/many-cores microprocessors.



    1.      Emergence of multi-core processors
    §         Why multi/many-cores processors?
    §         Are they to stay forever?
    §         Implementations of multi/many-cores processors.
    2.      Basic Architectural Properties of Multi-Core processors: cache, interconnections, heterogeneity of cores, instructions sets, memory interfacing.
    3.      Challenges of Multi-Core processors
    4.      Case Studies of Multi/Many-Cores processors
    §         The Cell Broadband Engine
    §         NVIDIA GPGPUS
    §         ATI GPGPUs
    §         Intel’s GPGPUs
    5.      Programming Models for the multi/many-cores architectures
    §         Threading Models
    §         Events Models
    §         Shared Memory Parallel Models
    §         Message Passing Parallel Models
    6.      Programming Frameworks
    §         CUDA Framework
    §         IBM Multi-Core Acceleration Framework
    §         Intel Parallel Studio
    7.      Applications of the Multi/Many-Cores Architectures.
    §         Scientific Algorithms
    §         Discrete Algorithms
    §         Data Visualization
    8.      The Future of Multi/Many-Cores Processors
    §         The Era of thousands of cores on a single die
    §         The Era of Exascale and stream computing



    At the end of this course students should:
    • Know and appreciate how and why multi/many-cores processors emerged.
    • Be able to appreciate performance effect among different multi/many-cores architectures.
    • Have the ability to measure and characterize their performance
    • Be able to program multi/many-cores architectures for different applications such as scientific workloads, discrete algorithms, and data visualization.
    • Realize programming difficulties and best strategies to overcome performance bottlenecks through algorithmic optimization and architectural properties of these microprocessors.

Course Editions