=====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==== ^ Date ^ Slides ^ Notes ^ Other information | | 24--27/02/14 | {{:magistraleinformaticanetworking:spd:spd-13-14-course_intro.pdf|Course intro}} \\ {{:magistraleinformaticanetworking:spd:spd-13-14-mpi-lesson1.pdf|MPI slides part 1}} | | | | 04/03/14 | {{:magistraleinformaticanetworking:spd:spd-13-14-mpi-lesson2.pdf|MPI slides part 2}} | | | | 05/03/14 | {{:magistraleinformaticanetworking:spd:spd-13-14-mpi-lesson3.pdf|MPI slides part 3}} | | | | 11/03/14 | {{:magistraleinformaticanetworking:spd:spd-13-14-mpi-lab-1.pdf|MPI Lab slides }} | | | | 18--19/03/14 | {{:magistraleinformaticanetworking:spd:spd-13-14-mpi-lesson4.pdf|MPI slides part 4}} \\ {{:magistraleinformaticanetworking:spd:spd-13-14-mpi-lesson5.pdf|MPI slides part 5}} | | | | 25/03/14 | {{:magistraleinformaticanetworking:spd:spd-13-14-tbb-2.pdf|Slides on TBB, part 2}} | | | | 26/03/14 | | | | | 08/04/14 | no slides | {{:magistraleinformaticanetworking:spd:spd13-14-paralleldatamining_notes_ch2_3.pdf|parallel data mining notes}} | | | 08--09/04/14 | //TBA// | {{:magistraleinformaticanetworking:spd:spd11-12-k-means-code.tgz|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| {{:magistraleinformaticanetworking:spd:spd-13-14-gpgpu_intro.pdf|GPGPU introduction}} \\ {{:magistraleinformaticanetworking:spd:opencl-overview-khronos-jun10.pdf| Overview of OpenCL 1.2 from Khronos Group (2010) used during the lessons}} \\ [[https://www.khronos.org/assets/uploads/developers/library/overview/opencl_overview.pdf| Overview of OpenCL 2.0 from Khronos Groups (2013)]] | | [[http://www.cc.gatech.edu/~vetter/keeneland/tutorial-2011-04-14/06-intro_to_opencl.pdf| Slides on OpenCL from NVidia (2009)]] \\ Overviews about related technologies can be found in the Khronos presentation library [[https://www.khronos.org/developers/library/]]) \\ more details about the different OpenCL specifications (specs, reference cards, online manuals) in the Khronos OpenCL main page [[https://www.khronos.org/opencl/]] | | 16/05/14 | {{:magistraleinformaticanetworking:spd:spd-13-14-tbb-3.pdf|Slides on TBB, part 3}} | | | | 20/05/14 | {{:magistraleinformaticanetworking:spd:spd-13-14-tbb-4.pdf|Slides on TBB, part 4}} | | | | 21/05/14 | {{:magistraleinformaticanetworking:spd:spd-13-14-tbb-5.pdf|Slides on TBB, part 5}} | | {{:magistraleinformaticanetworking:spd:spd-13-14-example-tbb-kmeans.zip|Example code for k-means from the McCool-Robinson-Reinders textbook}} | | 27/05/14 | {{:magistraleinformaticanetworking:spd:spd-13-14-opencl-lab.pdf|Slides about the OpenCL exercises}} | | [[http://wiki.tiker.net/OpenCLHowTo| a simple tutorial about installing OpenCL on Linux]] |