magistraleinformaticanetworking:spd:lezioni13.14
Journal of Lessons, SPD year 2013-2014
Journal
- 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
magistraleinformaticanetworking/spd/lezioni13.14.txt · Ultima modifica: 20/02/2015 alle 17:52 (10 anni fa) da Massimo Coppola