High-performance computing terminology
In high-performance computing, various terms are used that are related to each other, but mean different things. Here we list some of them and try to explain what they mean.
Software performance determines how fast software executes a task. Performance is related to the runtime platform (hardware and operating system) the software executes on. Given a platform and a task, the performance of two pieces of software can be compared by measuring the amount of time they take to perform the same task.
Software efficiency determines how much resources are required to execute a task. Efficiency is important when we want to save on battery life of a mobile phone or a laptop, or power consumption of a cluster, for example. Efficient software does not imply high performance. Efficient software may perform less than less efficient alternatives (see below).
Software concurrency determines how much work can be done at the same time. Whether or not this work is actually executed in parallel is dependent on the hardware platform the software is run on. Without parallel hardware resources, concurrent software executes its task sequentially.
Software scalability determines how well software is capable of using additional hardware resources, for example accelerators (GPUs) or nodes in a computer cluster. Scalable software makes optimal use of the additional hardware, therefore increasing the overall performance of the software. The ideal scalable task is one that can be split in any number of concurrent sub-tasks that don't need to wait for each other.
A scalable modelling engine is capable of defining concurrent tasks that can be distributed over the available hardware resources. This increases the performance of the software, but because the concurrent tasks need to be managed by the software, which implies more work to be done, in theory this decreases the efficiency. But, since a non-scalable, sequential process keeps relatively many system resources busy, even when they are not strictly necessary for the process, in practice a scalable process often uses up less resources (energy) and therefore is more efficient.