A supercomputer is a very fast and extremely parallel computer. Many of its technological properties are comparable to those of your laptop or even smartphone but there are important differences.
There is no clear agreement on the exact definition of the term ‘supercomputer’. Some say a supercomputer is a computer with at least 1% of the computing power of the fastest computer in the world. But according to this definition, there are currently only a few hundred supercomputers in the world. The TOP500 list is a list of the supposedly 500 fastest computers in the world, updated twice a year.
One could take 1‰ of the performance of the fastest computer as the criterion, but it is an arbitrary criterion. Stating that a supercomputer should perform at least X trillion computations per second, is not a useful definition. Because of the fast evolution of the technology, this definition would be outdated in a matter of years. The first smartphone of a well-known manufacturer launched in 2007 had about the same computing power and more memory than the computer used to predict the weather in Europe 30 years earlier.
So what is considered as a ‘supercomputer’ is very time-bound, at least in terms of absolute compute power. So let us just agree that a supercomputer is a computer that is hundreds or thousands times faster than your smartphone or laptop.
But is a supercomputer so different from your laptop or smartphone? Yes and no. Since roughly 1975 the key word in supercomputing is parallelism. But this also applies for your PC or smartphone. PC processor manufacturers started to experiment with simple forms of parallelism at the end of the nineties. A few years later the first processors appeared with multiple cores that could perform calculations independently from each other. A laptop has mostly 2 or 4 cores and modern smartphones have 2, 4 or in some rare cases 8 cores. Although it must be added that they are a little slower than the ones on a typical laptop.
Around 1975 manufacturers started to experiment with vector processors. These processors perform the same operation to a set of numbers simultaneously. Shortly thereafter supercomputers with multiple processors working independently from each other, appeared on the market. Similar technologies are nowadays used in the processor chips of laptops and smartphones. In the eighties, supercomputer designers started to experiment with another kind of parallelism. Several rather simple processors - this was sometimes just standard PC processors like the venerable Intel 80386 were linked together with fast networks and collaborated to solve large problems. These computers were cheaper to develop, much simpler to build, but required frequent changes to the software.
In modern supercomputers, parallelism is pushed to extremes. In most supercomputers, all forms of parallelism mentioned above are combined at an unprecedented scale and can take on extreme forms. All modern supercomputers rely on some form of vector computing or related technologies and consist of building blocks - nodes - uniting tens of cores and interconnecting through a fast network to a larger whole. Hence the term ‘compute cluster’ is often used.
Supercomputers must also be able to read and interpret data is ‘at a very high speed. Here the key word is also parallellism. Many supercomputers have several network connections to the outside world. Their permanent storage system consists of hundreds or even thousands of hard disks or SSDs linked together to one extremely large and extremely fast storage system. This type of technology has probably not influenced significantly the development of laptops as it would not be very practical to carry a laptop around with 4 hard drives. Yet this technology does appear to some extent in modern, fast SSD drives in some laptops and smartphones. The faster ones use several memory chips in parallel to increase their performance and it is a standard technology in almost any server storing data.
As we have already indicated to some extent in the text above, a supercomputer is more than just hardware. It also needs properly written software. or Java program you wrote during your student years will not run a 10. 000 times faster because you run it on a supercomputer. On the contrary, there is a fair chance that it won't run at all or run slower than on your PC. Most supercomputers - and all supercomputers at the VSC - use a variant of the Linux operating system enriched with additional software to combine all compute nodes in one powerful supercomputer. Due to the high price of such a computer, you're rarely the only user but will rather share the infrastructure with others.
So you may have to wait a little before your program runs. Furthermore your monitor is not directly connected to the supercomputer. Proper software is also required here with your application software having to be adapted to run well on a supercomputer. Without these changes, your program will not run much faster than on a regular PC. You may of course still run hundreds or thousands copies simultaneously, when you for example wish to explore a parameter space. This is called ‘capacity computing’.
If you wish to solve truly large problems within a reasonable timeframe, you will have to adapt your application software to maximize every form of parallellism within a modern supercomputer and use several hundreds, or even thousands, of compute cores simultaneously to solve one large problem. This is called ‘capability computing’. Of course, the problem you wish to solve has to be large enough for this approach to make sense. Every problem has an intrinsic limit to the speedup you can achieve on a supercomputer. The larger the problem, the higher speedup you can achieve.
This also implies that a software package that was cutting edge in your research area 20 years ago, is unlikely to be so anymore because it is not properly adapted to modern supercomputers, while new applications exploit supercomputers much more efficiently and subsequently generate faster, more accurate results.
To some extent this also applies to your PC. Here again you are dealing with software exploiting the parallelism of a modern PC quite well or with software that doesn't. As a ‘computational scientist’ or supercomputer user you constantly have to be open to new developments within this area. Fortunately, in most application domains, a lot of efficient software already exists which succeeds in using all the parallellism that can be found in modern supercomputers.