You are in: Home » Teaching » APAI 2020-2021

Architectures and Platforms for Artificial Intelligence (2nd module)
Department of Computer Science and Engineering, University of Bologna, 2020/2021

[ News | About the course | Final exam | Teaching material]


This edition of the course is over. The content of this page should be considered archival copy.

About the course

This is the Web page of the Architectures and platforms for Artificial Intelligence (2nd module) for the second cycle degree in Artificial Intelligence, University of Bologna.

Multi- and many-core processors, once found on expensive supercomputers, are now ubiquitous; however, parallel programming paradigms must be used to benefit from the processing power of multi- and many-core processors, but those paradigms are little known to the majority of programmers. In this module we introduce the basic techniques for programming shared-memory multi-core processors (CPUs) and graphics processing units (GPUs). For the former we will use OpenMP/C, i.e., the OpenMP extensions to the C programming language. For the latter, we will introduce programming general-purpose graphics processing units (GPGPUs) using CUDA/C, a proprietary extension of the C programming language for GPGPU programming.


  1. Parallel architectures and Flynn's taxonomy
  2. Parallel programming patterns (embarassingly parallel, decomposition, scatter/gather, scan, reduce, ...)
  3. Shared-Memory programming with OpenMP
    • OpenMP programming model
    • The "omp parallel" costruct
    • Scoping costructs
    • Other work-sharing costructs
    • Some examples of applications
  4. GPU programming with CUDA
    • CUDA architecture and terminology
    • CUDA programming model
    • CUDA memory hierarchy
    • CUDA/C programming costructs
    • Some examples of applications


Online resources on C programming:

Tutorials on the Linux shell

Final exam

The final exam of this module consists of a programming assignment using OpenMP and CUDA. The project must include a written report at most six pages long. The project can be handed in at any time during the academic year, up to september 2021 (when the new edition of this course will begin).

The specification of the assignment are available on virtuale.

The final grade of the Architectures and Platforms for Artificial Intelligence course will be determined as the weighted average of the grades of modules 1+3 and module 2, rounded to the nearest integer. Honors (lode) will be awarded at the discretion of the instructors for outstanding exams.

Teaching material

Sample code

Sample code discussed during the lectures is available here.


Introduction (Pacheco ch. 1)
[ODP] [PDF] [video]
Additional material
Parallel architectures (Pacheco ch. 2, excluding 2.3.3)
[ODP] [PDF] [video]
Per approfondire
Parallel Programming Patterns
[ODP] [PDF] [video]
Additional material
Shared-Memory Programming with OpenMP (Pacheco ch. 5)
[ODP] [PDF] [video]
[Instructions on how to get an account on the server are on]
Additional material
Shared-Memory Programming with OpenMP (cont.) [video]
Performance Evaluation of Parallel Programs (Pacheco ch. 2.6)
[ODP] [PDF] [video]
Per approfondire
CUDA Programming
[ODP] [PDF] [video]
CUDA Programming (cont.) [video]
CUDA Programming (cont.) [video]
Conclusions and wrap-up
This page validates as XHTML 1.0 strict This page validates as CSS Check the accessibility of this page with WAVE
This page was last updated on September 14 2022 informativa sulla privacy