====== Seminar „Effiziente Programmierung“ ======
===== Beschreibung =====
In diesem Seminar geht es um die effiziente Programmierung im weiteren Sinne.
Dazu gehören sowohl die eigentliche Entwicklung und das Debugging aber auch der Energieverbrauch und die Laufzeit des Programms.
Dabei sollen Informationen zu den verschiedenen Themen recherchiert werden und anhand von konkreten Beispielen dargestellt werden.
Es können auch die Ergebnisse kleiner vergleichender Untersuchungen zur Auswirkung verschiedener Konstrukte und Methoden gezeigt werden.
Beachten Sie auch unsere allgemeinen organisatorischen [[:teaching:organisatorische_hinweise:seminar_proseminar#seminare|Hinweise zu Seminaren]].
===== Zielgruppe =====
Das Seminar eignet sich für Studierende der Informatik in den Diplom- und Bachelorstudiengängen.
Studierende anderer Studiengänge müssen die Anrechnung mit dem jeweiligen Prüfungsausschuss klären.
Interessierte Zuhörer sind auch herzlich willkommen.
===== Daten der Veranstaltung =====
|| Zeit || Donnerstag, 10--12 Uhr ||
|| Ort || [[https://www.uni-hamburg.de/onTEAM/campus/index.html?loc=i12340438|DKRZ]], Raum 034 ||
|| Mailingliste || [[https://wr.informatik.uni-hamburg.de/listinfo/ep-1819|EP-1819]] ||
===== Dozenten =====
* [[People:Alumni:Michael Kuhn]] (Ansprechpartner)
* [[People:Alumni:Kira Duwe]]
* [[People:Jannek Squar]]
* [[People:Externals:Jakob Lüttgau]]
* [[People:Alumni:Eugen Betke]]
===== Zeitplan =====
Bei einem allgemeinen Einführungstermin werden Grundlagen vermittelt und die Themen zugewiesen.
Nach der Festlegung der Themen soll der Inhalt mit dem jeweiligen Betreuer diskutiert werden.
* 18.10. **(Raum 023)**
* Einführung und Themenvergabe
* 25.10. **Fällt aus**
* 01.11. **Fällt aus**
* 08.11. **Fällt aus**
* 15.11.
* Visualisierung -- Joshua Schimmelpfennig ((Eugen Betke)) {{ :teaching:wintersemester_2018_2019:ep-1819-schimmelpfennig-visualisierung-praesentation.pdf | Folien }} {{ :teaching:wintersemester_2018_2019:ep-1819-schimmelpfennig-visualisierung-von-leistungsdaten-ausarbeitung.pdf | Ausarbeitung }}
* Compiler und Compiler-Optimierungen ((Jannek Squar))
* 22.11. **(Raum 023)**
* Threading Building Blocks -- Robin Mirow ((Jannek Squar)){{:teaching:wintersemester_2018_2019:ep1819-robin-mirow-intel-threading-building-blocks.pdf| Folien}}
* 29.11.
* Speicherverwaltung und -optimierung -- Mirko Hartung ((Kira Duwe)) {{:teaching:wintersemester_2018_2019:ep-1819-hartung-speicherverwaltung-praesentation.pdf| Folien}} {{:teaching:wintersemester_2018_2019:ep-1819-hartung-speicherverwaltung-ausarbeitung.pdf| Ausarbeitung}}
* http://www.catb.org/esr/structure-packing/#_proof_and_exceptionalcases
* http://pages.cs.wisc.edu/~remzi/OSTEP/ (Address spaces, Memory API, Segmentation, Free space management)
* Caches -- Robin Wannags ((Kira Duwe)) {{:teaching:wintersemester_2018_2019:ep-1819-wannags-cache-praesentation.pdf| Folien}} {{:teaching:wintersemester_2018_2019:ep-1819-wannags-cache-ausarbeitung.pdf| Ausarbeitung}}
* http://pages.cs.wisc.edu/~remzi/OSTEP/vm-beyondphys-policy.pdf
* http://article.sapub.org/10.5923.j.ajca.20120103.01.html ("A Survey on Computer System Memory Management and Optimization Techniques")
* 06.12. **(Raum 023)**
* Roofline-Modell -- Theodor Wulff ((Jannek Squar)) {{ :teaching:wintersemester_2018_2019:ep-1819-wulff-praesentation.pdf |Folien}} {{ :teaching:wintersemester_2018_2019:ep-1819-wulff-ausarbeitung.pdf |Ausarbeitung}}
* 13.12.
* Nicht-blockierende Synchronisation -- Joshua Krüger ((Eugen Betke)) {{ :teaching:wintersemester_2018_2019:ep-1819-krueger-non-blocking-synchronization-praesentation.pdf | Folien }} {{ :teaching:wintersemester_2018_2019:ep-1819-krueger-non-blocking-synchronization-ausarbeitung.pdf | Ausarbeitung }}
* Debugging -- Philip Kohlmann ((Eugen Betke)) {{ :teaching:wintersemester_2018_2019:ep-1819-kohlmann-debugging-praesentation.pdf | Folien }} {{ :teaching:wintersemester_2018_2019:ep-1819-kohlmann-debugging-ausarbeitung.pdf | Ausarbeitung }}
* 20.12.
* Netzwerkkommunikation -- Vadim Assayev ((Jakob Lüttgau))
* E/A-Profiling -- Helen Schloh ((Jakob Lüttgau))
* http://smackerelofopinion.blogspot.com/2015/02/fnotifystat-tool-to-show-file-system.html
* 10.01.
* LZ-Familie (LZ77, LZ78, LZSS, LZW, LZRW, LZS, LZO, LZMA, LZ4, ...) -- Hendrik Pfennig-Winkelsträter ((Kira Duwe)){{:teaching:wintersemester_2018_2019:ep-1819-evert-lz_familie-praesentation.pdf| Folien}} {{:teaching:wintersemester_2018_2019:ep-1819-evert-lz-familie-ausarbeitung.pdf| Ausarbeitung}}
* Deflate (ZIP, GZIP) -- Lennart Uhrmacher ((Kira Duwe)) {{:teaching:wintersemester_2018_2019:ep-1819-uhrmacher-deflate_bzip2-praesentation.pdf| Folien}} {{:teaching:wintersemester_2018_2019:ep-1819-uhrmacher-deflate-bzip2-ausarbeitung.pdf| Ausarbeitung}}
* Deduplikation ((Michael Kuhn))
* 17.01.
* Weitere Ansätze zur Datenreduktion -- Miriam Strulik ((Jakob Lüttgau))
* Kokkos -- Esquivias Rodrigo ((Jannek Squar))
* https://github.com/kokkos/kokkos
* 24.01.
* Deduplikation -- Leonhard Reichenbach ((Michael Kuhn)) {{:teaching:wintersemester_2018_2019:ep-1819-reichenbach-deduplikation-praesentation.pdf|Folien}}
* E/A-Profiling -- Julius Plehn ((Jakob Lüttgau))
* Compiler und Compiler-Optimierungen -- Michael Blesel ((Jannek Squar)) {{ :teaching:wintersemester_2018_2019:ep-189-blesel-folien.pdf |Folien}} {{ :teaching:wintersemester_2018_2019:ep-1819-blesel-ausarbeitung.pdf |Ausarbeitung}}
* Verlustbehaftete Kompression -- Oliver Pola ((Michael Kuhn))
* 31.01.
* HDF5 -- Frank Röder ((Jakob Lüttgau))
* Zukünftige E/A -- Ruben Felgenhauer ((Michael Kuhn))
* DAOS-Interna -- Tronje Krabbe ((Michael Kuhn))
===== Literaturhinweise =====
* http://www.brendangregg.com/perf.html
* http://smackerelofopinion.blogspot.de/2012/09/striving-for-better-code-quality.html
* https://www.kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.2011.01.02a.pdf
* http://www.brendangregg.com/Perf/linux_perf_tools_full.png
* https://github.com/ascar-io/pilot-bench
* https://www.nylas.com/blog/performance/
* http://pages.cs.wisc.edu/~remzi/OSTEP/vm-beyondphys-policy.pdf (Vergleich von Cache Policies, Hitrate verbessern)
* http://www.catb.org/esr/structure-packing/ (sehr guter Einstieg, Beispielprogramm zum Experimentieren)
* https://dl.acm.org/citation.cfm?id=375978 (detaillierte Darstellung von Code Rewritings)
* http://article.sapub.org/10.5923.j.ajca.20120103.01.html
* https://link.springer.com/content/pdf/10.1007%2F978-3-540-31985-6_10.pdf
* https://link.springer.com/content/pdf/10.1007%2F978-3-319-10572-7_6.pdf