Software development

ExTASY: a flexible and scalable approach to biomolecular simulation

Author: Iain Bethune
Posted: 18 Jul 2016 | 12:20

Over the last 10 years, the growth in performance of HPC systems has come largely from increasing core counts, which poses a question of application developers and users – how to best make use of the parallelism on offer?

If you're only going to learn one programming language, you should learn...

Author: Adrian Jackson
Posted: 21 Jun 2016 | 07:59

Choice, choice, choice A Piper

I'm often asked "What programming language should I learn for scientific computing?".  Or I get involved in religious-like discussions about the best programming language for a particular task, or of all time (think Python vs Fortran, Go vs C, etc...). What's my answer?

Just recently I realised that, to me, programming languages are like musical instruments.

ExTASY: smarter simulations for chemists

Author: Mario Antonioletti
Posted: 23 May 2016 | 14:43

Last week I attended an ExTASY tutorial here in Edinburgh. The project aims to build a set of Extensible Tools for Advanced Sampling and Analysis (hence the name) to allow chemists who use computational methods and off-the-shelf molecular dynamics (MD) packages (such as GROMACS, AMBER and NAMD) to be cleverer and more efficient with their simulations.

The Extasy-based tools are well worth considering if you are doing MD calculations. If you want to be smarter about how you do your simulations, take a look at ExTASY.

Software design in scientific computing

Author: Adrian Jackson
Posted: 10 May 2016 | 00:07

Useful software design

Prompted by a recent discussion of a blog post discussing applying commercial development techniques to academic software development, I've been trying to formalise the software design process I'd recommend to academic software developers.

Just the term, software design, puts a lot of people off. It sounds like a long, elaborate process, full of requirements capture and storyboards, but it really doesn't have to be. I think anyone who is writing programs will be doing some form of software design, even if that design is just following the process they've always used, but are just not formalising it. However, formalising your software design could bring important benefits.

Better programming languages for HPC

Author: Stephen Booth
Posted: 5 May 2016 | 16:43

Recently I seem to have had many conversations about programming languages for HPC. In some ways this is not a new subject - I have been having similar conversations for the last 20 years. However as HPC hardware evolves, machines become more complex and the issues that need to be addressed by programmers also become more complex. So it is not surprising that we are wondering if there is more the compiler could be doing to help us.

Mozilla Science Lab Global Sprint 2016

Author: Mario Antonioletti
Posted: 5 May 2016 | 15:51

We will be one of the participating sites at this year's Mozilla Science Lab Global Sprint here in Edinburgh.

The event will take place from 2nd-3rd of June, and will bring together researchers, developers, librarians and the general public from all over the world to hack on open science and open data projects.

Code for failure

Author: Adrian Jackson
Posted: 14 Apr 2016 | 21:02

Writing programs assuming that they will be incorrect

I was thinking about development methodologies and software design principles recently and have decided that one of the things I've learned is that it is essential to write programs with the assumption they are going to fail.

I don't think that any of us like to think that the programs we write or maintain will go wrong, or have mistakes/problems in them. However, as I've discussed previously, it is very hard to develop code without making mistakes: coding mistakes, algorithmic errors, mistaken assumptions, etc...

Managing Makefiles in git

Author: Mario Antonioletti
Posted: 7 Apr 2016 | 16:36

I have become a bit of a fan of the distributed revision control provided by git. In my day-to-day work at EPCC, I find myself developing and running code across multiple machines. Trying to keep a code base coherent across all these systems would be a bit of a nightmare were it not for git or any other source control revision system. Arguably, SVN would work as well but I somewhat lost my faith in SVN after trying to commit files over a slow and unstable connection while travelling on a train.

Collaborations Workshop 2016

Author: Mario Antonioletti
Posted: 31 Mar 2016 | 09:30

The Software Sustainability Institute's Collaborations Workshop 2016 is now over. If you blinked, you missed it. You shall now have to wait until 27-29th March 2017 for the next one, to be held at the Leeds Business School.  I still think that this is one of the best networking conferences around and well worth attending, though for the purposes of full disclosure I have to admit that I have a dual role: as a peripheral organiser as well as a full workshop attendee. The workshop runs over two days and is followed by a hack day which I was unable to attend because of other commitments.

Array index order matters, right?

Author: Adrian Jackson
Posted: 30 Mar 2016 | 17:46

Does array index order affect performance?

A couple of weeks ago I was teaching an ARCHER Modern Fortran course, and one of the things we discuss during the course is index ordering for multi-dimension arrays.  This course is an introduction to modern Fortran (primarily F90/F95), so we don't go into lots of details about parallel or performance programming, but as attendees are likely to be using Fortran for computational simulation it is important they understand which array dimensions are contiguous in memory so that they don't accidentally write code that is much slower than it should be.

GNU compiler performance

Figure 1: Performance using the GNU compiler

During one of the practical sessions on the course, one of the students wrote a little program to investigate the performance impact of iterating through array elements in a non-contiguous order.  They also included some code to investigate if there is a performance impact when using allocatable array rather than static arrays (I'd mentioned it shouldn't impact performance but I obviously wasn't convincing enough...).

Pages