Before and After: Roehampton #1

[Zakariya Oulhadj] - - 6 mins read

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.

Optimising a Molecular Dynamics Application

[Zakariya Oulhadj] - - 15 mins read

The full source code is available on GitHub.

Problem Statement

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.

OpenMP Thread Queue Contention Analysis

[Zakariya Oulhadj] - - 5 mins read

The full source code is available on GitHub.

Problem Statement

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.