tddd56
play

TDDD56 Lab 3: Skeleton programming with SkePU August Ernstsson - PowerPoint PPT Presentation

TDDD56 Lab 3: Skeleton programming with SkePU August Ernstsson august.ernstsson@liu.se Labs schedule WebReg Week Lab 1 v46 Load Balancing Responsible: August Lab 2 v47 CPU Non-blocking Data Structures Lesson 2 Lab 3 v48 High-level


  1. TDDD56 Lab 3: Skeleton programming with SkePU August Ernstsson august.ernstsson@liu.se

  2. Labs schedule WebReg Week Lab 1 v46 Load Balancing Responsible: August Lab 2 v47 CPU Non-blocking Data Structures Lesson 2 Lab 3 v48 High-level Parallel Programming Lab 4 v49 CUDA 1 Responsible: Ingemar GPU Lab 5 v50 CUDA 2 Lab 6 v51 OpenCL TDDD56 Lab 3 August Ernstsson 2020

  3. C++11 • Shift in the labs from C to C++11 (”modern” C++) // ”auto” type specifier auto addOneMap = skepu::Map<1>(addOneFunc); skepu::Vector<float> input(size), res(size); capture by input.randomize(0, 9); reference // Lambda expression auto dur = skepu::benchmark::measureExecTime( [&] { addOneMap(res, input); } ); TDDD56 Lab 3 August Ernstsson 2020

  4. SkePU • Skeleton programming framework • C++11 library with skeleton and data container classes • A source-to-source translator tool • Smart containers: Vector<T>, Matrix<T>, tensors • For heterogeneous multicore systems and clusters • Multiple backends • Active research tool (A good topic for your thesis?) TDDD56 Lab 3 August Ernstsson 2020

  5. SkePU architecture C++ interface (skeletons, smart containers, …) StarPU + C++ OpenMP OpenCL CUDA MPI CPU Multi-core CPU Accelerator GPU Cluster TDDD56 Lab 3 August Ernstsson 2020

  6. SkePU skeletons • Parametrizable higher-order functions implemented as C++ template classes • Map • Reduce • MapReduce • MapOverlap • MapPairs • MapPairsReduce • Scan Mult Map TDDD56 Lab 3 August Ernstsson 2020

  7. SkePU skeletons Sequential algorithm Map Mult 1 2 2 Mult 2 4 2 Mult 3 2 6 Mult 4 8 2 Mult 5 2 10 Mult 6 2 12 Mult 7 2 14 Mult 8 2 16 Mult TDDD56 Lab 3 August Ernstsson 2020

  8. SkePU skeletons Parallel algorithm Map Mult 1 2 2 Mult 2 2 4 Mult 3 2 6 Mult 4 2 8 Mult 5 2 10 Mult 6 2 12 Mult 7 2 14 Mult 8 2 16 Mult TDDD56 Lab 3 August Ernstsson 2020

  9. SkePU syntax int add( int a, int b, int m) { add return (a + b) % m; } auto vec_sum = Map<2>(add); Map add Mult Mult Mult vec_sum(result, v1, v2, 5); Mult Mult Mult Mult Mult TDDD56 Lab 3 August Ernstsson 2020

  10. SkePU syntax, advanced template < typename T> T abs(T input) { return input < 0 ? -input : input; } template < typename T> T userfunc(Index1D row, const Mat<T> m, const Vec<T> v) { T res = 0; for (size_t i = 0; i < v.size; ++i) res += m[row.i * m.cols + i] * v[i]; return abs(res); } TDDD56 Lab 3 August Ernstsson 2020

  11. SkePU containers • Smart containers: Vector<T>, Matrix<T>, etc • Manages data across CPU and GPU • No data transfers unless necessary (lazy copying) • Keeps track of most recent writes • Memory consistency through software TDDD56 Lab 3 August Ernstsson 2020

  12. SkePU build process Program sources Handled by lab Makefiles Source-to-source compiler Backend sources SkePU runtime (C++, OpenCL, etc.) library Backend compiler (e.g., GCC) Executable TDDD56 Lab 3 August Ernstsson 2020

  13. Lab structure • Three exercises: 1. Warm-up: dot product 2. Averaging image filter + gaussian filter 3. Median filter TDDD56 Lab 3 August Ernstsson 2020

  14. 1. Dot product • Implement two variants of dot product: • With MapReduce skeleton • With Map + Reduce skeletons • Compare and contrast the variants • Why does SkePU have the MapReduce skeleton? • Measure with di ff erent backends and problem sizes TDDD56 Lab 3 August Ernstsson 2020

  15. 2. Averaging filters • Averaging filter: find average color value in surrounding region • Gaussian filter: averaging filter with non-uniform weights • Use the MapOverlap skeleton Original Average Gaussian TDDD56 Lab 3 August Ernstsson 2020

  16. 3. Median filter • Median filter: find median color value in surrounding region • Requires sorting the pixel values in some way Original Median TDDD56 Lab 3 August Ernstsson 2020

  17. Image filters • Layout of image data in memory 1 pixel = 3 bytes! TDDD56 Lab 3 August Ernstsson 2020

  18. Lab installation • Get from course website as usual • Slightly di ff erent from public SkePU distribution! • Pre-built binary • Runs on 64-bit Linux TDDD56 Lab 3 August Ernstsson 2020

  19. Lab build process Build lab program: > make bin/addone Run lab program: > bin/addone 100 CPU CPU : Use sequential backend OpenMP : Use multithreaded backend OpenCL : Use GPU backend TDDD56 Lab 3 August Ernstsson 2020

  20. A warning about warnings (and errors) • SkePU is a C++ template library • As such, gets very long and unreadable diagnostic messages if used incorrectly! • Following the structure of the lab files should minimize errors • Otherwise, be careful, and avoid using const ! TDDD56 Lab 3 August Ernstsson 2020

  21. Questions? TDDD56 Lab 3 August Ernstsson 2020

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend