Adrian Jackson's blog
Posted: 24 May 2017 | 19:30
When we parallelise and optimise computational simulation codes we always have choices to make. Choices about the type of parallel model to use (distributed memory, shared memory, PGAS, single sided, etc), whether the algorithm used needs to be changed, what parallel functionality to use (loop parallelisation, blocking or non-blocking communications, collective or point-to-point messages, etc).
Posted: 11 May 2017 | 00:06
As part of the ARCHER Knights Landing (KNL) processor testbed, we have produced and collected a set of benchmark reports on the performance of various scientific applications on the system. This has involved the ARCHER CSE team, EPCC's Intel Parallel Computing Center (IPCC) team, and various users of the system all benchmarking and documenting the performance they have experienced.
Posted: 11 Apr 2017 | 17:59
Shall I compare thee...
Performance comparisons are always tricky to get exactly right. They are needed to ensure that we can demonstrate the performance improvements that optimisations, new hardware, new algorithms, etc... have had on an application or benchmark, but there is a lot of latitude in what can be compared, which makes it easy to get a performance comparison wrong and not properly demonstrate whatever it is you're trying to show.
Posted: 10 Mar 2017 | 15:39
Measuring performance is a key part of any code optimisation or parallelisation process. Without knowing the baseline performance, and what has been achieved after the work, it's impossible to judge how successful any intervention has been. However, it's something that we, as a community, get wrong all the time, at least when we present our results in papers, presentation, blog posts, etc... I'm not suggesting that people aren't measuring performance correctly, or are deliberately falsifying performance improvements, but the incentives to make your work look as impressive as possible causes people to present results in a way that really isn't justified.
Posted: 10 Mar 2017 | 13:54
Thread and process binding
Note, this post was updated on the 23rd March 2017 to include how to bind threads correctly on Cray systems (aprun -cc rather than taskset)
Making sure threads and processes are correctly placed, or bound, on cores or processors is essential to ensure good performance for a range of parallel applications.
This is not a new topic, and has been covered well by others before, ie http://www.glennklockwood.com/hpc-howtos/process-affinity.html. Generally this is just handled for you; if you're running an MPI program then your mpirun/mpiexec/aprun job launcher will do sensible process binding to cores.
Posted: 2 Feb 2017 | 11:37
Fluidity for tidal modelling
Figure 1: Mesh for the Sound of Islay tidal simulation. Courtesy Dr Creech.
We were recently involved in a project to optimise the CFD modelling package Fluidity for tidal modelling. This ARCHER eCSE project was primarily carried out by Dr Angus Creech from the Institute of Energy Systems in Edinburgh.
Posted: 27 Jan 2017 | 14:30
For those of you not acquainted with OpenFOAM, it's a large open source CFD package used by a wide variety of scientists and companies to investigate a whole range of scientific and engineering problems.
We support it on ARCHER and have a number of different versions available and in use on the machine. As part of our IPCC work we are interested in looking at the performance of OpenFOAM on the latest Xeon Phi processor, Knights Landing (KNL).
Posted: 8 Nov 2016 | 23:59
Posted: 27 Sep 2016 | 16:47
Developing for the real world
As part of a recent ARCHER eCSE project I developed a new parallelisation strategy for a computational simulation application to enable it to scale efficiently to larger process counts. We managed to significantly reduce the parallel overheads, so the code was accepted into the main repository for users to exploit.
Posted: 16 Sep 2016 | 11:34
Recently EPCC's Alan Gray and I attended a workshop at Donington Park held by Roborace. For those who've not heard of Roborace, it's a project to build and race autonomous cars, along the lines of Formula 1 but without any drivers or human control of the cars. Actually, it's more like Formula E but without drivers, as the plan is for the cars to be electric.