Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
workshops:tutorial3 [2018/09/11 16:16]
sbs
workshops:tutorial3 [2018/11/14 12:00] (current)
tema
Line 12: Line 12:
  
 ===== Schedule (Saturday, November 3rd 2018)  ===== ===== Schedule (Saturday, November 3rd 2018)  =====
-|14:00 - 16:00| Getting started with array programming in SaC.| + 
-|16:00 16:30| Coffee break| +| 14:30 - 16:30  ​| Getting started with array programming in SaC.                                       ​
-|16:30 - 18:00| Live coding session "How to implement your parallel CNN from scratch in 90 minutes"​|+| 16:30 17:00  ​| Coffee break                                                                         ​
 +17:00 - 18:30  ​| Live coding session "How to implement your parallel CNN from scratch in 90 minutes" ​ | 
 + 
 + 
 +===== Useful Links ===== 
 + 
 +  * Login to Jupyter Hub [[https://​sachub.oi.pe/​jhub|here]]. ​ Pick any username; use the password that will be announced during the tutorial. ​ This will create a session (persists for 24 hours) where you can run notebooks or work via the terminal. 
 +  * The notebook with code snippets from the first part of the tutorial is [[https://​www.macs.hw.ac.uk/​gitlab/​tema/​pact-slides|here]] 
 +  * Full code for the CNN is [[https://​github.com/​SacBase/​CNN|here]]. ​ The ''​cnn.sac''​ is a version without set comprehension,​ and it uses a few tricks to make it run faster. ​ The ''​cnn_template.sac''​ replaces all the with-loops with set-comprehensions;​ this becomes more readable but it may have a bit more runtime overheads. 
 + 
 +==== Some publications about SaC internals ==== 
 + 
 +=== General overview of the compiler === 
 +  * **Sac: A Functional Array Language for Efficient Multithreaded Execution**. //Clemens Grelck, Sven-Bodo Scholz (2006). International Journal of Parallel Programming 34 (4) pp. 383–427// [[http://​www.sac-home.org/​lib/​exe/​fetch.php?​media=publications:​pdf:​safalfeme.pdf|pdf]] 
 + 
 +=== Use cases and performance evaluations === 
 +  * **Combining High Productivity and High Performance in Image Processing Using Single Assignment C on Multi-core CPUs and Many-core GPUs**. //V. Wieser, C. Grelck, P. Haslinger, J. Guo, F. Korzeniowski,​ R. Bernecky, B. Moser, S.B. Scholz (2012). Journal of Electronic Imaging 21 (2)// [[http://​www.sac-home.org/​lib/​exe/​fetch.php?​media=publications:​pdf:​wiesgrelhasl_jei12.pdf|pdf]] 
 +  * **SaC/C Formulations of the All-pair N-body Problem and Their Performance on SMPs and GPGPUs**. //A. Šinkarovs, S.B. Scholz, R. Bernecky, R. Douma, C. Grelck (2014). Concurrency and Computation:​ Practice and Experience 26 (4) pp. 952–971.//​ [[http://​www.sac-home.org/​lib/​exe/​fetch.php?​media=publications:​pdf:​2014_0.pdf|pdf]] 
 + 
 +=== Code generation === 
 +  * For SMPs: **Shared Memory Multiprocessor Support for Functional Array Processing in SaC**. //Clemens Grelck (2005). Journal of Functional Programming 15 (3) pp. 353–401.//​ [[http://​www.sac-home.org/​lib/​exe/​fetch.php?​media=publications:​pdf:​smmsffapis.pdf|pdf]] 
 +  * For GPUs: **Breaking the Gpu Programming Barrier with the Auto-parallelising Sac Compiler**. //Jing Guo, Jeyarajan Thiyagalingam,​ Sven-Bodo Scholz (2011). In 6th Workshop on Declarative Aspects of Multicore Programming (DAMP'​11),​ Austin, USA. pp. 15–24. ACM Press.// [[http://​www.sac-home.org/​lib/​exe/​fetch.php?​media=publications:​pdf:​2011_5.pdf|pdf]] 
 + 
 +=== Some key optimisations === 
 +  * **With-loop-folding in SaC — Condensing Consecutive Array Operations**. //Sven-Bodo Scholz (1998). In Implementation of Functional Languages, 9th International Workshop (IFL'​97),​ St. Andrews, UK, Selected Papers. pp. 72–92. Springer.// [[http://​www.sac-home.org/​lib/​exe/​fetch.php?​media=publications:​pdf:​wlf-st-andrews-97.pdf|pdf]] 
 +  * **With-loop Scalarization:​ Merging Nested Array Operations**. //Clemens Grelck, Sven-Bodo Scholz, Kai Trojahner (2004). In Implementation of Functional Languages, 15th International Workshop (IFL'​03),​ Edinburgh, Scotland, UK, Revised Selected Papers. Springer.// [[http://​www.sac-home.org/​lib/​exe/​fetch.php?​media=publications:​pdf:​wlsmnao.pdf|pdf]] 
 +  * **With-loop Fusion for Data Locality and Parallelism**. //Clemens Grelck, Karsten Hinckfuß, Sven-Bodo Scholz (2006). In Implementation and Application of Functional Languages, 17th International Workshop (IFL'​05),​ Dublin, Ireland, Revised Selected Papers. pp. 178–195. Springer.// [[http://​www.sac-home.org/​lib/​exe/​fetch.php?​media=publications:​pdf:​wlffdlap.pdf|pdf]] 
 +  * **Index Vector Elimination:​ Making Index Vectors Affordable**. //Robert Bernecky, Stephan Herhut, Sven-Bodo Scholz, Kai Trojahner, Clemens Grelck, Alex Shafarenko (2007). In Implementation and Application of Functional Languages, 18th International Symposium (IFL'​06),​ Budapest, Hungary, Revised Selected Papers. pp. 19–36. Springer.// [[http://​www.sac-home.org/​lib/​exe/​fetch.php?​media=publications:​pdf:​ivemiva.pdf|pdf]] 
 + 
 +For more SaC-related publications please refer [[http://​www.sac-home.org/​doku.php?​id=publications|here]].
  
 ===== Rationale ===== ===== Rationale =====
Line 45: Line 74:
  
 [[http://​www.macs.hw.ac.uk/​~sbs/​|Sven-Bodo Scholz]] and [[http://​ashinkarov.github.io/​|Artjoms ​ Šinkarovs]] are computer science researchers working in the area of high-performance compilers and functional languages. ​ Sven-Bodo Scholz is the original author of the SaC compiler and Artjoms ​ Šinkarovs is one of the main contributors. [[http://​www.macs.hw.ac.uk/​~sbs/​|Sven-Bodo Scholz]] and [[http://​ashinkarov.github.io/​|Artjoms ​ Šinkarovs]] are computer science researchers working in the area of high-performance compilers and functional languages. ​ Sven-Bodo Scholz is the original author of the SaC compiler and Artjoms ​ Šinkarovs is one of the main contributors.
 +
 +
 +