In this video, Jesús Labarta from the Barcelona Supercomputing Center describes the POP (Performance Optimization and Productivity) Centre of Excellence. According to Labarta, POP’s performance analysis results in performance improvements ranging from 10-15% to more than 10 times. Aimed at both developers and users of applications, as well as infrastructure providers, POP’s services centre around an external assessment of parallel codes.”
The Performance Optimization and Productivity Centre of Excellence provides performance optimization and productivity services for academic and industrial code in all domains.
Best of all, the POP services are free of charge to organizations / SMEs / ISVs / companies in the EU!
Full Interview Transcript:
What first got you interested in computer science?
Jesús Labarta: I trained as a telecommunications engineer. I’d always been fascinated by the world of electromagnetism and the elegant mathematical formulas it uses to give form to physical processes. It wasn’t until my final year at university that Mateo Valero, now the director of Barcelona Supercomputing Center, invited me to join him on a project, and I’ve been working in computer science ever since.
What is your area of specialism in computer science?
Jesús Labarta: There are two topics which I think are particularly important: performance analysis – understanding machines’ behaviour– and programming models – how to express the ideas to be solved and computed by machines. What keeps me interested is the fact that there is always one more question to be answered.
Why do we need programming models?
Jesús Labarta: To sum up my philosophy, computer code is a mechanism to express ideas. The mistake we often make is that we believe the code has to tell machines exactly what they need to do and in what order. Instead, rather than focusing on specific details, we should express things in fundamental terms and let the machine execute them in the way that best fits the task and the resources available.
If we compare computers to the way humans think and interact, we have a mass of disorganized ideas in our minds, but we have to structure these ideas in order to express them and we communicate in series, one word after another. In computing, we need to structure what it is we need to compute in order to express it properly using the syntax of the programming model.
For me, programming models should offer a simple mechanism to support this approach. They should enable programmers to understand when code includes things in a particular order because it has an effect on something which comes later, or whether it was written in that order because of the specific mindset of the writer and the limited resources available. Using the analogy of a book, some things may have been written first because they have an effect on what follows, whereas in other cases it may be simply because there was only one pencil. The reader should be given the ability to understand when something could be placed in a different order, to allow the book to be written in the most natural way possible.
Why is it so important to evaluate the performance of code?
Jesús Labarta: In order to improve a program, we need a profound understanding of why the machine behaves in the way it does. There are many interlinked factors influencing the behaviour of an application on the computer, and we need to identify the fundamental causes of different outputs through precise measurement.
We may believe that things work a certain way, but this is not always the case in practice. Programs work differently on different computers, and people program in accordance with their own particular concept of how the machine works. Once we know how something is actually behaving we can adapt our approach and determine the most appropriate direction in which to restructure the code.
In society as a whole, we are seeing more and more emphasis on conserving natural resources and reducing energy consumption, for example. In computing, it should be no different: we should make the very best use of these valuable resources. However, there is often a tendency to think that, in order to improve a computer’s performance, it is sufficient to simply acquire more processors. In fact, by improving the performance of the code, it may be possible to achieve the same performance on far fewer processors.
What services does the POP Centre of Excellence offer?
Jesús Labarta: POP offers code assessments and programming models for all kinds of applications, from materials modelling to genomics, and from climate change to machine learning. Target clients include code developers, application users, infrastructure operators and vendors.
Thanks to our significant experience in developing analysis tools, we are able to provide an external overview and make recommendations for changes.
What kind of codes can POP analyse? What applications are these used for?
Jesús Labarta: POP analyses codes which are already parallel and tries to maximize their efficiency. Most of them are MPI and OpenMP, but we’re also seeing a huge increase in demand for Python codes, for example.
Some of the applications which POP has helped improve through improving software efficiency include studies of how fires spread, car design tools, weather forecasts or the development of new materials.
What kind of improvement could a user expect from POP’s consultancy services?
Jesús Labarta: It depends a great deal on the context, but we have seen performance improvements of 10% to 20% in some cases, while in others the changes we recommended have resulted in speeds of six times faster or even more. The latter increase is unusual, but even an increase of 10% or 20% isn’t bad – we’d all like to have a 20% pay rise!
You’ve talked about a revolution from the age of latency to the age of throughput. What do you mean by this?
Jesús Labarta: Today, when we program machines, we’re obsessed by latency: the main concern of programmers is to get a response as quickly as possible. We are like kids with a toy: we say we want something now, and we cry if we don’t get it immediately. We need to change to an approach which is more throughput-oriented, in which we need to be more flexible with regard to the order in which instructions are fulfilled, rather than requiring individual orders to be carried out straight away.
This may seem like a simple change, but it requires a fundamental shift in mentality. We need mechanisms to achieve this change, and so it’s important to develop appropriate tools; but above all, as with any revolution, it is first necessary to change our way of thinking.
This means that the education system needs to be changed in order to train computer scientists, engineers and programmers to take a holistic view. They need to think about the fundamental objectives of the program and how these can be achieved, rather than focusing on the details, and they should also think about which elements could be performed concurrently from the start.
This is a significant challenge, which is not helped by the speed at which technology is developing. Programmers often adapt to the latest technology to achieve faster computing rates without considering the full picture. The danger of focusing exclusively on a particular piece of technology today is that tomorrow it might be obsolete. It’s also really important to know why things have to be executed in a particular order, which is sometimes difficult as computer scientists often work in silos.
At POP, we promote programming models which are designed to enable a new approach to programming, where programmers think globally but provide precise specifications of what each task requires and produces. This both allows other programmers to program tasks more easily and allows the system to determine the most effective order of tasks.
Source: HiPEAC blog