James Smith is the lead Digital Signal Processing (DSP) engineer for the MeerKAT Extension GPU correlator project. He has worked at the South African Radio Astronomy Observatory (SARAO) for the past 7 years, initially cutting his radio astronomy teeth on FPGA-based DSP systems, and then moving over to GPU-based correlator development as requirements and data rates have gotten bigger and bigger. Python has been a faithful companion along the way, from automation of routine tasks, to handling management of FPGA-based hardware correlators, to the entire implementation of the next-generation software correlator.
When James isn't in front of a computer, he can usually be found trying to adjust the gear shifting on his bicycle, which he can never seem to get right. Competence in one domain obviously doesn't carry over in this case.
In this talk, to give context to the audience, I will start by briefly introducing the MeerKAT radio telescope, and describing the functionality and purpose of its correlator, which makes up the majority of the scientific signal-processing power of the telescope.
I'll then describe how we have utilised Pytest and a few related libraries in the development of the next-generation GPU-based software correlator, and I'll contrast this with how testing and verification were done in previous generations of hardware-based correlators (where unit-testing is not impossible but it is considerably more difficult). By being able to do regression testing, we have already mitigated several instances of fixing one bug while breaking something else.
I'll show how we have used the same technology to facilitate automatic end-to-end testing of the correlator against its spec (something that system engineers would call qualification), including automatic report generation (greatly reducing the amount of typing that we have to do!). I'll describe some tricks and optimisations that we have used in order to speed up the process without compromising the validity of the tests.
Finally, I'll spend some time talking about the caveats of unit testing, such as potentially allowing for false confidence, and how they don't catch every problem before it gets to "production", but I'll also discuss some ways to address this, and why they shouldn't deter you from testing as thoroughly as you can anyway.
In this talk I present what is (as far as we know) the world's first (nearly) All-Python radio astronomy correlator/beamformer, which is currently in development for the MeerKAT Extension radio telescope (currently under construction in the Karoo).
I'll briefly explain what a correlator/beamformer is and its role in radio astronomy, along with some of the typical engineering challenges associated with building them. I'll talk about why recent technology trends have been a boon to the science of radio astronomy, effectively enabling us to build a correlator entirely in software, utilising commodity hardware.
Key to this process has been the Python ecosystem, and how it has enabled us to build our system quickly, cheaply and reliably. I'll talk about how we've used some familiar favourite Python modules and how we've rolled some of our own when suitable tools haven't been available. I'll discuss the main challenges involved in performing correlation in software using GPUs (spoiler: it's not so much the compute as the data bandwidth), and some neat Python tricks that have helped quite nicely along the way. I'll also mention some of the challenges that we've faced in the development process.
Finally, I'll rouse some enthusiasm for the science of radio astronomy in South Africa by mentioning some of the good work done by MeerKAT so far, and what improvements can be expected from MeerKAT Extension's shiny new correlator.