Strumenti Utente

Strumenti Sito


Journal of Lessons, SPD year 2018-2019


  • 18/02/2019 Course introduction – Parallel programming frameworks and high-level approach to parallel programming over different platforms: MPI, TBB and OpenCL as main examples; course organization and prerequisites; reference books and studying material.
    MPI (Message Passing Interface) standard – brief history and aim of the standard, single program / multiple data execution model, compilation and linkage model; issues in supporting multiple programming languages and uses (application, utility library and programming language support) with a static compilation and linkage approach. Portability in parallel programming: functional and non-functional aspects, performance tuning and performance debugging. MPI basic concepts MPI as a parallel framework that supports a structured approach to parallel programming. Basic concepts of MPI: communicators (definition, purpose, difference between inter and intra-communicators, process ranks).
  • 22/02/2019 MPI basic concepts – Point to point communication (concepts of envelope, local/global completion, blocking/non-blocking primitive, send modes); collective communications (definition, communication scope, global serialization, freedom of implementation in the standard); MPI datatypes (basic meaning and use, primitive / derived datatypes).
  • 25/02/2019 MPI – MPI Datatypes relationship with sequential language types. MPI library initialization and basic MPI usage; point to point communication semantics (buffer behaviour, receive, status objects, MPI_PROC_NULL), basic and derived MPI datatypes (purpose as explicitly defined meta-data provided to the MPI implementation, multiple language bindings, code-instantiated metadata, examples). MPI datatypes semantics: typemap and type signature.
  • 27/02/2019 MPI – MPI datatypes (matching rules for communication, role in MPI-performed packing and unpacking); core primitives for datatype creation ( MPI_Type_* : contiguous, vector, hvector, indexed, hindexed, struct; commit, free) and examples. ( Lesson held in room C40 at CNR )
  • 04/03/2019 MPI – Point to point communication modes (MPI_BSEND, MPI_SSEND; MPI_RSend usage); non-blocking communication (Wait and Test group of primitives, semantics, MPI_Request object handles to active requests); canceling and testing cancellation of non-blocking primitives (issues and pitfalls, interaction with MPI implementation, e.g. MPI_finalize). Communicators and groups (communicator design aim and programming abstraction, local and global information, groups as local objects, primitives for locally creating and managing groups); intracommunicators (basic primitives concerning size, rank, comparison); communicator creation as a collective operation.
  • 06/03/2019 MPI – MPI_Comm_create basic and general case; MPI_Comm_split; MPI collective communications (definition and semantics, execution environment, basic features, agreement of key parameters among the processes, constraints on Datatypes and typemaps for collective op.s, overall serialization vs synchronization, potential deadlocks).
  • 11/03/2019 MPI Lab – Basic program structure. Simple ping-pong example, generalization. Examples with derived datatypes. Structured parallel programming in MPI, separation of concerns in practice. Assigned task for next LAB time: MPI matrix multiplication.
  • 14/03/2019 Rescheduled
  • 18/03/2019 MPI Lab – Matrix Multiplication. Implementing communication with assigned asynchronicity degree.
  • 21/03/2019 MPI Extent and modification for derived datatypes. Collective operation for communication and computation. Taxonomy of MPI collectives (blocking/non-blocking, synchronization/communication/communication+computation, asymmetry of the communication pattern, variable size versions, all- versions). Blocking collectives. MPI collectives with both computation and communication: Reduce (and variants) and Scan (and variants). Using MPI operators with Reduce and Scan. Defining custom user operators, issues and implementation of operator functions.
  • 25/03/2019 MPI Lab
  • 28/03/2019
  • 08/04/2019
  • 11/04/2019
  • 15/04/2019
  • 18/04/2019
  • 29/04/2019
  • 02/05/2019
  • 06/05/2019
  • 09/05/2019
  • 13/05/2019
  • 16/05/2019
  • 20/05/2019
  • 23/05/2019
  • 27/05/2019
  • 30/05/2019

Slides, Notes and References to papers

Date Slides Notes References / Info
18/02 Course introduction
18/02, 22/02, 25/02, 27/02 MPI lesson 1 MPI lesson 2
27/02 MPI Lab
04/03 MPI lesson 3
04/03, 06/03 mpi-lesson4.pdf
06/03, 13/03 MPI lesson 5
11/03, 18/03, 25/03 Collection of exercises The list will be updated for future Lab sessions
21/03 MPI Lesson 6
25/03 Introductory notes about Data Mining Dhillon and Modha Tech.R. on K-means Sequential reference code for K-means
magistraleinformaticanetworking/spd/lezioni18.19.txt · Ultima modifica: 25/03/2019 alle 12:43 (8 ore fa) da Massimo Coppola