A personal hobby of mine, and a pastime I am particularly interested in, is
exploring the hidden layers of local history. There is something uniquely
rewarding about uncovering how a familiar landscape has evolved over decades, or
even centuries, and seeing the traces of the past that still linger in the
present.
In this post, I will be showing some before and after comparisons of Roehampton,
the area where I grew up. By matching archival photographs with modern-day
views, we can trace the transformation of the village from a quiet Victorian hub
into a bustling London suburb, uncovering everything from “lost” industrial
landmarks to forgotten coaching roads hidden in plain sight.
The second part of the Performance Programming module (EPCC11009), was to
manually optimise a C-based molecular dynamics simulation code. The project
required the transformation of a suboptimal legacy codebase into a
high-performance solution, prioritising runtime reduction without compromising
the integrity of the simulation results. A key restriction imposed by the
project was that all optimisations must be done using a single thread i.e no
multi-threading.
We were provided with two codes which implement the same algorithm in two
different ways. The algorithm is an adaptive quadrature method that computes the
integral of a function on a closed interval using a divide-and-conquer method.
The algorithm starts by applying two quadrature rules (3-point and 5-point
Simpson’s rules) to the whole interval. If the difference between the integral
estimates from the two rules is small enough (or the interval is too short), the
result in added to the total integral estimate. If it is not small enough, the
interval is split into two equal halves, and the method is applied recursively
to each half. In the case supplied, evaluating the function requires the
solution of an ODE (ordinary differential equation) which is relatively
expensive in time.