Various and Sundry Links for the week of March 15 2023
Hello again! This blog has been dormant for a while because I’ve been super busy with my day job and side job (only so many hours in the day, etc). But! I have been working with a few great communicators to create some cool content, so I figured it’d be good to post the links here so they’re available in one place. I’ve also given a few talks recently, not all of which were recorded. I’m pretty proud of them though (and they were quite well received by the audience), so I thought it could be good to turn my notes and slides into blog posts to make them more widely available. Those aren’t quite ready yet, but I have a folder full of drafts so keep an eye out over the next few months.
Getting started with CMake for Fortran
This guide aims to teach you how to use the CMake build system, with a special focus on Fortran (there are many fine C++ tutorials already around, but not many on Fortran). Instead of trying to cover all of the necessary information to become a CMake expert, it instead aims to get you started with a working build system in as little time as possible. If you want to know more, there’s a list of recommended reading at the end of the document. Finally, this guide uses the command-line throughout because it’s the most portable interface across platforms.
Fortran essentials - useful I/O
This is part one of my series on essential libraries and techniques for modern Fortran. If you need a refresher on what this is all about, check out the last thing I wrote. For this post, I’ll be looking at different solutions for friendly I/O, including options for parsing configuration files and serialised output.
Fortran essentials - introduction
Hello again! I haven’t had a lot of time to post recently, and the OpenMP series has correspondingly fallen by the wayside. I’ll still pick it back up at some point, but for now I wanted to switch focus to something that’s been taking up a lot of my energy at work: how to make Fortran not suck.
OpenMP Internals Part 2: Compilers: How Do They Work?
I am not a compiler expert. But, as we saw last time, if we’re going to learn how OpenMP outlining actually happens, then we’re going to need to crack open the bonnet (or “hood” for any yanks reading this) and see how a compiler actually works. I’ve done my best to ensure this post is relatively well researched, but this is an area in which I have no formal education. This is just one physicist’s view, and putting it together has been as much of a learning exercise for me as it has been anything else. As with all things, I welcome any corrections from more knowledgeable people.
OpenMP internals part 1: Outlining and parallel execution
Please rise for a message from the author
Wow that was a long hiatus - my last blog post was almost three years ago. I’ve been really lax in making content due to the fact that PhDs are really time consuming (who’d have thought?). But I am now Dr Emily and thus finally have some space to focus on fun stuff, so let’s dive back into my favourite topic: OpenMP esoterica!
OpenMP internals part 0: a brief introduction to OpenMP
One of my goals with this whole blog thing is to write things down as I teach myself the internals of OpenMP. Before I start writing this up, though, I think I should at least write up a brief, high-level introduction for anyone who’s never used OpenMP before. There’s already plenty of “How to OpenMP” guides out there on the internet, so I won’t go into too much detail here. This guide from Lawrence Livermore National Laboratory is a pretty good resource if you want to know more, though.
Some thoughts on high-performance computing
My research group recently open-sourced our kickass atomic structure code AMBiT. AMBiT is my baby - I spent the last year and a bit getting it fit for production, which is a bit less than half of my PhD. Along with the usual bug hunting and documentation, I spent the bulk of that time overhauling AMBiT’s parallelism and tracking down performance pathologies to better utilise modern high-performance computing (HPC) architectures.
subscribe via RSS