Episodes

  • 10/10 C++: Wrapping it up
    Mar 30 2025

    In this last episode of the companion podcast for the C++ course at UCL, I invited both Klaus Iglberger and Marc Hartung (Dive, Berlin) to go through some aspects of parallel computing. But also to look a little bit ahead of what's in store for C++ in future standards. And how the language may help you in your career.

    Links:

    • https://www.youtube.com/watch?v=NReDubvNjRg&list=PLY_qIufNHc2-Dk9IVNtgoF4uhKRszjJPz Cpp Conference (Cpp Con) Back to basics YouTube 2023
    • https://www.youtube.com/watch?v=VRGRTvfOxb4&list=PLY_qIufNHc2950NLOeUFuO0DsqjAZ6cG0 Cpp Conference (Cpp Con) Back to basics YouTube 2024
    • https://cppcast.com/ A podcast dedicated to all things C++
    • https://adspthepodcast.com/ ADSP (Algorithms + Data Structures = Programs) Podcast
    • https://learning.oreilly.com/library/view/c-software-design/9781098113155/ Klaus Iglberger's book on "C++ Software Design"
    • https://blogs.fau.de/hager/hpc-book HPC book with lots of material on parallel computing Georg Hager, Gerhard Wellein

    I'd like to thank UCL and the UCL Advanced Research Computing Centre for their support and creating this show. In particular David Perez-Suarez, Michael McLeod and Mashy Green.

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK.
    Producer and Host: Peter Schmidt

    Show more Show less
    39 mins
  • 9/10 - Distributed Memory and Parallel Computing
    Mar 26 2025

    Marc Hartung and I will discuss distributed memory in parallel computing in this episode, with tools like OpenMPI. We also discuss some of the hardware aspects around HPC systems and how shared and distributed memory computations differ.

    Links:

    • https://www.open-mpi.org OpenMPI homepage
      • https://docs.open-mpi.org/ the docs for OpenMPI
    • https://www.mpi-forum.org The MPI Forum (who write the MPI standard)
    • http://openshmem.org/site/ OpenSHMEM
    • https://en.wikipedia.org/wiki/Distributed_memory summary page on distributed memory
    • https://en.wikipedia.org/wiki/InfiniBand InfiniBand network solution
    • https://www.nextplatform.com/2022/01/31/crays-slingshot-interconnect-is-at-the-heart-of-hpes-hpc-and-ai-ambitions/ Slingshot network solution
    • https://en.wikipedia.org/wiki/Partitioned_global_address_space
    • https://www.techtarget.com/whatis/definition/von-Neumann-bottleneck the bottleneck named after John von Neumann
    • https://en.wikipedia.org/wiki/Floating_point_operations_per_second overview of FLOPS (floating point operations per second)
    • https://www.openmp.org/wp-content/uploads/HybridPP_Slides.pdf OpenMP and OpenMPI working together in a hybrid solution
    • https://blogs.fau.de/hager/hpc-book Georg Hager/Gerhard Wellein book on HPC for scientists and engineers

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK.
    Producer and Host: Peter Schmidt

    Show more Show less
    38 mins
  • 8/10 When things happen all ... in parallel
    Mar 19 2025

    Parallel programming is a huge, exciting and evolving field. Together with my guest Marc Hartung from Dive in Berlin, Germany, we try to cover some aspects of it: including OpenMP, how to synchronise data etc.

    Links:

    • https://en.cppreference.com/w/cpp/language/memory_model the C++ memory model
    • https://www.openmp.org OpenMP home page
    • https://www.openmp.org/resources/openmp-compilers-tools/ Compilers for OpenMP
      • https://gcc.gnu.org/projects/gomp/ the GNU OpenMP compiler
    • https://en.wikipedia.org/wiki/Amdahl%27s_law Amdahl's "law"
      • https://dl.acm.org/doi/pdf/10.1145/1465482.1465560 the paper from Amdahl
    • https://en.wikipedia.org/wiki/Threading_Building_Blocks TBB
      • https://github.com/uxlfoundation/oneTBB GitHub link for TBB
    • https://eigen.tuxfamily.org/dox/TopicMultiThreading.html Eigen
    • https://help.rc.ufl.edu/doc/Memory:_Shared_vs_Distributed one of the links discussing shared and distributed memory in parallel computing

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK.
    Producer and Host: Peter Schmidt

    Show more Show less
    37 mins
  • 7/10 Oh please, make it faster...performance in C++
    Mar 12 2025

    How can we measure the performance (run-time, memory usage etc) of our C++ code? And what does performance mean, anyway. These and other questions are the topic of this episode - with my guest Klaus Iglberger, C++ engineer, tutor and mentor.

    Memory

    • https://en.wikipedia.org/wiki/Non-uniform_memory_access something about memory access
    • https://dl.acm.org/doi/10.1145/216585.216588 Ań article on 'Hitting the memory wall' how fast can memory access be?
    • https://www.ibm.com/docs/en/xl-c-and-cpp-aix/13.1.3?topic=performance-managing-memory-efficiently-c-only what can we do to make memory usage more efficient

    Tools

    • https://valgrind.org Valgrind profiler
    • https://www.intel.com/content/www/us/en/developer/tools/oneapi/vtune-profiler.html vtune profiler
    • https://ftp.gnu.org/old-gnu/Manuals/gprof-2.9.1/html_mono/gprof.html gprof profiler from GNU
    • https://quick-bench.com Quick online Benchmarking tool
    • https://godbolt.org see what your compiler actually does
    • https://github.com/google/googletest Google C++ test framework
    • https://github.com/boost-ext/ut UT test framework
    • https://github.com/google/benchmark Google benchmark tool
    • https://github.com/catchorg/Catch2 catch2 framework
    • https://learn.microsoft.com/en-us/visualstudio/profiling Profiling with Visual Studio

    Misc

    • https://medium.com/swlh/reliable-performance-testing-in-c-1df7a3ba398 article on performance testing
    • https://scholarworks.umt.edu/cgi/viewcontent.cgi?referer=&httpsredir=1&article=1375&context=tme Historical review of complexity evaluations
    • https://web.mit.edu/16.070/www/lecture/big_o.pdf The Big O Notation

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK.
    Producer and Host: Peter Schmidt

    Show more Show less
    32 mins
  • 6/10 The code you're looking for is in ... the library
    Mar 5 2025

    Software libraries play a crucial role in software development, and C++ is no exception. Klaus and I walk through the different aspects of building, using and selecting libraries.

    Links:

    • https://cmake.org CMake tool
    • https://en.wikipedia.org/wiki/Library_(computing) write up on software libraries with a bit of history
    • https://en.wikipedia.org/wiki/Executable_and_Linkable_Format the ELF Format for shared libs (executable and linkable format)
    • https://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc/Link-Options.html Link options of the g++ compiler
    • https://www.toptal.com/c-plus-plus/c-plus-plus-understanding-compilation An overview of how compilation works
    • https://cplusplus.com/articles/Gw6AC542/ a write up on headers and includes - with a mention of header guards
    • https://en.wikipedia.org/wiki/Z23_(computer) the Zuse Z23 computer I mentioned

    Oh, and the title is inspired by a book from the Japanese author M Aoyama called 'What You're Looking For Is In The Library'. https://en.wikipedia.org/wiki/What_You_Are_Looking_For_Is_in_the_Library

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK.
    Producer and Host: Peter Schmidt

    Show more Show less
    34 mins
  • 5/10 Classes and Design
    Feb 19 2025

    Here we touch on some ways to build classes in C++ and how class design such as class hierarchies can help to make code more readable, more maintainable and less error prone (amongst other things). Klaus Iglberger and I also touch on design patterns and briefly what other programming paradigms exist apart from object oriented programming (OOP).

    Links

    • https://medium.com/javascript-scene/the-forgotten-history-of-oop-88d71b9b2d9f The forgotten history of OOP
    • https://medium.com/@ryan_forrester_/struct-inheritance-in-c-comprehensive-guide-2027689d10ed structs and classes
    • https://www.enterpriseintegrationpatterns.com/index.html Enterprise Integration Patterns by Gregory Hohpe
    • https://martinfowler.com Martin Fowler author of so many books, including one on enterprise patterns
      • https://martinfowler.com/bliki/GangOfFour.html Martin F's write-up of the Gang of Four book
    • https://en.wikipedia.org/wiki/Design_Patterns Wiki page on the book 'Design Patterns - Elements of Reusable Object Oriented Software' written by E Gamma, R Helm, R Johnson and J Vlissides.
      • https://openlibrary.org/books/OL7408317M/Design_Patterns
    • https://www.amazon.co.uk/Software-Design-Principles-Patterns-High-Quality/dp/1098113160 book by Klaus Iglberger: "C++ Software Design: Design Principles and Patterns for High-Quality Software"

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK.
    Producer and Host: Peter Schmidt

    Show more Show less
    34 mins
  • 4/10 On Polymorphism
    Feb 12 2025

    Inheritance, templates, function overloading - they all fall into the category of polymorphism in programming. My guest Klaus Iglberger and I discuss the different aspects of how this could be done with C++.

    Links

    • https://www.stroustrup.com/glossary.html#Gpolymorphism Glossary provided by Bjarne Stroustrup
    • https://cplusplus.com/doc/tutorial/polymorphism/
    • https://ics.uci.edu/~jajones/INF102-S18/readings/05_stratchey_1967.pdf Christian Strachey's article where he introduces polymorphism
    • https://dl.acm.org/doi/pdf/10.1145/6041.6042 Article by Cardelli and Wegner On Understanding Type, Data Abstraction and Polymorphism
    • https://en.wikipedia.org/wiki/Virtual_method_table virtual tables (vtables)
    • https://pabloariasal.github.io/2017/06/10/understanding-virtual-tables/
    • https://www.geeksforgeeks.org/vtable-and-vptr-in-cpp/
    • https://belaycpp.com/2021/10/01/history-of-c-templates-from-c-style-macros-to-concepts/ A history of templates
    • https://www.stroustrup.com/dne.html Bjarne Stroustrup: the Design and Evolution of C++

    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK.
    Producer and Host: Peter Schmidt

    Show more Show less
    27 mins
  • 3/10 Throw, try, catch...test
    Feb 5 2025

    Exceptions are essentials, as are error codes. Writes Bjarnes Stroustrup. And so on our 3rd stop through C++ I talk about what you could do when things go wrong. And what you can do to prevent errors - with testing. My guest is, again Klaus Iglberger.

    The sounds you're hearing are from the excellent https://sound-effects.bbcrewind.co.uk BBC sound library - free of use for non-commercial purposes.

    Links:

    • https://en.wikipedia.org/wiki/Exception_handling_(programming)
    • https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1947r0.pdf B Stroustrup's article 'C++ exceptions and alternatives'
    • https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_exceptions.html GNU exception manual
    • https://en.wikipedia.org/wiki/Errno.h the macro
    • https://www.gnu.org/software/libc/manual/html_node/Error-Codes.html
    • https://archive.org/details/working-effectively-with-legacy-code/ Michael Feathers "Working Effectively with Legacy Code"
    • https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0003r0.html#2.0 what went on with C++98 exceptions?
    • https://devblogs.microsoft.com/oldnewthing/20180928-00/?p=99855 another discussion on the "old" exception handling in C++

    Tools:

    • https://undo.io/products/undo-c-plusplus/ Undo
    • https://github.com/catchorg/Catch2 Catch2
    • https://google.github.io/googletest/ Google tests
    • https://github.com/emil-e/rapidcheck RapidCheck property based testing


    Don't be shy - say Hi

    This podcast is brought to you by the Advanced Research Computing Centre of the University College London, UK.
    Producer and Host: Peter Schmidt

    Show more Show less
    32 mins
adbl_web_global_use_to_activate_webcro768_stickypopup