Strumenti Utente

Strumenti Sito


Journal of Lessons, SPD year 2013-2014


  • 24/02/2014 Course introduction. Message Passing Interface - Evolution of the MPI standard, linked library approach, integration with other software layers: MPI as a support for parallel applications, parallel libraries and parallel languages.
  • 27/02/2014 MPI - Basic concepts: communicators, point-to-point and collective communications, data types.
  • 04/03/2014 MPI - Communication semantics and buffers; primitive datatypes, data conversion and packing; derived datatypes, typemaps and type signatures, constructors: contiguous, vector, Hvector, Indexed, Hindexed; MPI_Type_Commit and MPI_Type_Free.
  • 05/03/2014 MPI - Point to point communication modes for the send (standard, buffered, synchronous, ready); blocking and non-blocking behaviour (incomplete send and recv); request objects; waiting and testing.
  • 11/03/2014 Lab Time - MPI - basic communications, datatypes, asynchronous communications with defined buffering degree via non-blocking primitives.
  • 18/03/2014 MPI - communicators and groups, motivation and use as programming / implementation abstraction; basic groups, extracting information, construction of groups; communicator operations : duplication, creation (MPI1 and MPI2 semantics), free, splitting.
  • 19/03/2014 MPI - Collective communications : definition, semantics and relationship with communicators; implicit serialization and potential deadlocks; classes of primitives (synhronization, one-to-all, all-to-one, all-to-all, computing collectives). In-place communications. Variable versions of common collectives.
  • 25/03/2014 TBB - Thread Building Blocks purpose, runtime, supported abstractions; tasks vs threads; parallel_for, ranges and partitioners; task scheduling and grain size; quick survey of use of lambda expression, containers and mutexes.
  • 26/03/2014 MPI - reduce, scan and custom operators. Struct derived datatypes, extent and size related primitives.

midterm test break

  • 08/04/2014 Short introduction to Knowledge Discovery in Databases and Data Mining. Parallelism exploitation in data mining algorithms.
  • 09/04/2014 Lab time - MPI - K-means: sequential K-means and its parallelization.
  • 15/04/2014 Lab time - MPI - K-means. (reference to Montecarlo method, use of parallel pseudorandom number generators)
  • 16/04/2014 Lab time - MPI - K-means.

Easter break

  • 29/04/2014 (Didactic activity stopped due to elections of representatives of students)
  • 30/04/2014 Introduction to GPU computing and OpenCL - Evolution of modern GPU subsystems: 2D/3D graphics and the basic graphic pipeline; implementation in Hardware/firmware; parallelization and load balancing among GPU stages, unification of the stage model and transition to firmware and software pipelines; first programmable GPUs and GPGPU via exploitation of graphics primitives. Modern GPU computational model and its hardware optimizations: absence of R/W conflicts, memory bus optimization for bandwidth over latency, large block of cores with high ALU density, common instruction logic and hardware threading support. SIMD-like programming model, non deterministic thread scheduling of threads to cores. Proprietary programming environments vs OpenCL.
  • 06/05/2014 Introduction to OpenCL - Purpose, relationship with other standards. Platform model, execution model. Mapping OpenCL 1.2 abstractions on top of GPUs and CPUs: resource allocation, work items and work groups. OpenCL primitives, kernels and command queues, data transfers.
  • 07/05/2014 lesson canceled (illness)
  • 09/05/2014 lesson canceled (illness) (Teaching Room B, 14-18)
  • 13/05/2014 Project and final examination replanning For the current year the final examination will be based on the project alone. A project topic can still be proposed by the student, otherwise a standard project will be assigned by default. Please see the main page for this year's course for further detail.
  • 14/05/2014 OpenCL - OpenCL 1.2 to 2.0. Memory Model, Execution, built-in kernels; virtual memory and logic address translation in OpenCL; types of memory sharing and related consistency models (coarse / fine sharing and system sharing); nested parallelism via child kernel activation; generic address space in OpenCL 2 and cast rules; built in functions; C11 atomics in local and global memory (memory orders, scope, supported types); 2D and 3D images; pipes
  • 16/05/2014 (Teaching Room B, 14-16, and Lab. M, 16-18) TBB - Reduce pattern, functional and object oriented forms; reduce deterministic variant; pipeline pattern: pipeline and filter classes; strongly typed parallel_pipeline form; parallel_do.
  • 20/05/2014 TBB - extending containers to container ranges; generic TBB containers: various concurrent map and set templates, and differences from STL equivalents (hash map, unordered map and multimap, concurrent set, bounded queue and concurrent priority queue, concurrent vector); thread local storage.
  • 21/05/2014 TBB / TBB lab : TBB/C++11 atomics, TBB mutexes; K-means with TBB.
  • 27/05/2014 Lab Time – OpenCL – implementation of the K-means core algorithm in OpenCL.

Slides, Notes and References to papers

Date Slides Notes Other information
24–27/02/14 Course intro
MPI slides part 1
04/03/14 MPI slides part 2
05/03/14 MPI slides part 3
11/03/14 MPI Lab slides
18–19/03/14 MPI slides part 4
MPI slides part 5
25/03/14 Slides on TBB, part 2
08/04/14 no slides parallel data mining notes
08–09/04/14 TBA K-means sequential code See the Dhillon/Modha paper on the main page.
15/04/14 16/04/14 TBA For a quick introduction to Montecarlo methods in the parallel see chapter 3 of the Wilkinson-Allen (sect. 3.2.3 in 2nd edition).
30/04/14 06/05/14 14/05/14 GPGPU introduction
Overview of OpenCL 1.2 from Khronos Group (2010) used during the lessons
Overview of OpenCL 2.0 from Khronos Groups (2013)
Slides on OpenCL from NVidia (2009)
Overviews about related technologies can be found in the Khronos presentation library
more details about the different OpenCL specifications (specs, reference cards, online manuals) in the Khronos OpenCL main page
16/05/14 Slides on TBB, part 3
20/05/14 Slides on TBB, part 4
21/05/14 Slides on TBB, part 5 Example code for k-means from the McCool-Robinson-Reinders textbook
27/05/14 Slides about the OpenCL exercises a simple tutorial about installing OpenCL on Linux
magistraleinformaticanetworking/spd/lezioni13.14.txt · Ultima modifica: 20/02/2015 alle 17:52 (4 anni fa) da Massimo Coppola