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/11/03 10:05] temaworkshops:tutorial3 [2018/11/14 13:00] (current) tema
Line 16: Line 16:
 | 16:30 - 17:00  | Coffee break                                                                         | | 16:30 - 17:00  | Coffee break                                                                         |
 | 17:00 - 18:30  | Live coding session "How to implement your parallel CNN from scratch in 90 minutes"  | | 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 48: Line 76:
  
  
-===== 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.