UCL for Code in Research

UCL for Code in Research

By Peter SchmidtTechnology
Download on the App Store

UCL for Code in Research episodes

  • 9/9 Research Software Engineering with Python (COMP233) - Performance

    In this last episode of this course, I talk to Itamar Turner-Trauring who created the website PythonSpeed and spent a considerable time on finding ways to make Python code faster and more efficient. Python and its ecosystem also have great tools how you can measure performance.

    Links:

    • https://pythonspeed.com a set of articles and recommendations on how to improve your performance
    • https://blog.sentry.io/python-performance-testing-a-comprehensive-guide/ a general blog post on performance testing
    • https://uwpce-pythoncert.github.io/SystemDevelopment/profiling.html 
      • https://uwpce-pythoncert.github.io/SystemDevelopment/index.html
    • https://en.wikipedia.org/wiki/Computer_performance
    • https://python-102.readthedocs.io/en/latest/performance.html
    • https://docs.python.org/3/tutorial/datastructures.html
    • https://www.green-algorithms.org
    • https://doi.org/10.1145/356635.356640 Donald Knuth's paper on over optimisation
    • https://wiki.python.org/moin/TimeComplexity
    • https://blog.jetbrains.com/dataspell/2023/08/polars-vs-pandas-what-s-the-difference/ comparing Polars with Panda

    Profiling tools

    • https://pyinstrument.readthedocs.io/en/latest/
    • https://docs.python.org/3/library/profile.html
    • https://docs.python.org/3/library/time.html the time function in Python
    • https://docs.python.org/3/library/timeit.html another function to measure time in Python
    • https://jiffyclub.github.io/snakeviz/ a graphic profile viewer
    • https://bloomberg.github.io/memray/ flexible memory profiler
    • https://github.com/benfred/py-spy
      • https://www.wrighters.io/profiling-python-code-with-py-spy/
    • https://github.com/P403n1x87/austin-python The Python wrapper for the Austin profiler


    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

    23 min
  • 8/9 Research Software Engineering with Python (COMP233) - Design and Patterns

    In this episode I talk to Jeremiah Miller - a software engineer - and Max Albert - a research software engineer in the research software group at the University of Southampton about refactoring and design patterns.

    • https://en.wikipedia.org/wiki/Design_Patterns
    • https://en.wikipedia.org/wiki/Spaghetti_code
    • https://www.distributed-systems.net/index.php/books/ds4/ book by A Tanenbaum
    • https://refactoring.com The Refactoring book by Martin Fowler
      • https://martinfowler.com/architecture/
      • https://martinfowler.com/eaaDev/
      • https://martinfowler.com
    • https://www.patternlanguage.com the original book by Christopher Alexander on design patterns in architecture - for towns, cities etc. This book inspired software engineers to define a set of design patterns on how to structure code
    • https://refactoring.guru/design-patterns Max recommended Sandi and her tips and recommendations on coding
    • https://sandimetz.com/99bottles the idea of making things as identical as possible to sniff out design breaks or changes
    • https://refactoring.guru/design-patterns another website on design patterns and refactoring

    Some books:

    • Design Patterns - Elements of Reusable Object-Oriented Software Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Addison-Wesley, 1995, ISBN 0-201-63361-2
    • Enterprise Integration Patterns Gregor Hohpe, Bobby Woole, Addison-Wesley, 2004, ISBN 0-321-20068-3

    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

    28 min
  • 7/9 Research Software Engineering with Python (COMP233) - Project Management

    In this episode I talk to Monika Byrne Svata, Agile Delivery Manager at UCL about project management and in particular Scrum and Kanban. GitHub has features, like Issues and Projects that can help you stay on top of your software projects.

    Links

    • http://www.linkedin.com/in/monikabyrnesvata Monika's LinkedIn profile
    • https://docs.github.com/en/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects GitHub projects documentation
    • https://www.atlassian.com/software/jira JIRA
    • https://trello.com/home Trello
    • https://agilemanifesto.org Agile Manifesto
    • https://www.scrum.org/resources/what-scrum-module Scrum, a popular agile methodology
      • https://www.agile42.com/en/blog/scrum-history Scrum history
    • https://www.atlassian.com/agile/kanban Kanban methodology
      • https://en.wikipedia.org/wiki/Kanban a bit of background to Kanban
    • https://beza1e1.tuxen.de/waterfall.html Waterfall methods
    • https://digital.ai/resource-center/analyst-reports/state-of-agile-report/ annual report on all things agile

    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

    30 min
  • 6/9 Research Software Engineering with Python (COMP233) - Documentation

    Documentating software is part of the life of software engineers. But what kind of documentation do we need? In this episode I take you through three levels of documentation: the basic README and LICENSE files everyone should have, how to be good at writing git commit messages and using tools to turn your source code comments into browsable documentation.

    Links

    • https://www.sphinx-doc.org/
    • https://pdoc.dev/docs/pdoc.html
      • https://docs.python.org/3/library/pydoc.html
    • https://wiki.python.org/moin/DocumentationTools
    • https://peps.python.org/pep-0287/ reStructuredText Docstring Format
    • https://github.com/matiassingers/awesome-readme some README examples
      • https://dev.to/documatic/awesome-readme-examples-for-writing-better-readmes-3eh3
    • https://www.gitkraken.com/learn/git/best-practices/git-commit-message GIT commit messaging
    • https://www.warp.dev/terminus/git-commit-history Git Commit history

    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

    17 min
  • 10/10 C++: Wrapping it up

    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

    39 min
  • 9/10 - Distributed Memory and Parallel Computing

    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

    39 min
  • 8/10 When things happen all ... in parallel

    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

    38 min
  • 7/10 Oh please, make it faster...performance in C++

    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

    32 min
  • 6/10 The code you're looking for is in ... the library

    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

    34 min
  • TEASER: Research Computing with C++

    Welcome to the new podcast from the Advanced Research Computing Centre of the University College London, UK.  A companion podcast for courses on Research Computing at UCL.

    In this first season we'll be presenting the course on Research Computing with C++. And this short teaser explains how it all works. Have fun!

    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

    17 min

About UCL for Code in Research

From the publisher's feed

The companion podcast for courses on programming from the Advanced Research Computing Centre of the University College of London, UK.