Well, thanks very much.
For the invitation, I'm looking forward to talking to you about C++.
I tried to come up with a title that maybe was quite provocative, so it's good to see
so many of you here to come and see what I mean by this.
So for me, one of the big challenges that as a community of people trying to use these
large scale computers to do interesting and useful research and science is the challenge
of actually programming the things and getting the best performance out of them.
And that leads us to a question, which is, so what heterogeneous programming model should
I use?
And there are many options.
And in recent history, I guess we've sort of seen it a little bit like this boxing match
Which one is going to win out overall?
Which one's going to be the one that's going to last everything?
And there's lots of pros and cons to this.
Some of them are open standards, some of them are not.
Some of them may be open source projects.
Some nuance there between a standard versus an open source project, mainly in terms of
governance.
Who are the people behind the ship that's steering the progress of that parallel programming
model is a difference there.
Maybe they only support one vendor, maybe they support lots of different vendors, maybe
they don't support GPUs at all.
Maybe they only support CPUs.
And then is the syntax actually the same if you want to support different types of devices
or not?
And there's all these different choices and trade offs.
But throughout all of this, this sort of thing at the bottom left is this key observation
that we start with a serial programming language, something like C or C++ or Fortran.
And then because we want to program a large scale system, we add in MPI and that gives
us some distributed memory abstractions and message passing, all that good stuff.
And then we also plug in a load of other stuff, whether it's directives or another framework
or a programming model to enable us to program the multi-cores or the accelerators that are
available on that node.
So what's interesting then is that serial programming language is not serial anymore.
And since the release of C++17, it builds in these abstractions for shared memory and
accelerated parallel programming.
So maybe the question, the sort of research question that I had at the beginning was maybe
we don't need this blue box on the right hand side.
Maybe we can just get away with parallel C++ or parallel Fortran or whatever, and MPI for
distributed memory.
So this talk is about C++, but I should mention Fortran.
C++ is the second here, right?
It's Fortran got their first back in 2010.
They added DoConcurrent to Fortran 2008.
They also added CoArrays.
So maybe Fortran is just all you need and C++ is nearly all you need.
So obviously Fortran is a very important language.
Many of the cycles in the UK national machines are running Fortran code.
It's interesting that Fortran as a standard is still developing.
See, the Fortran 2023 adding lots of extra features, mainly the reduction clause, the
Presenters
Zugänglich über
Offener Zugang
Dauer
00:53:00 Min
Aufnahmedatum
2025-07-15
Hochgeladen am
2025-07-22 16:36:06
Sprache
en-US