Scientific computing

Scientific computing optimizes performance

Scientific computing is a chain of operations. The foundation of scientific computing is the high-performance processing of huge data sets accompanied by the creation and the navigation in complex data structures. On this basis, scientific computing builds a platform to gain knowledge by applying scientific methods to the given raw data. The thus created knowledge has to be kept in appropriate data structures, has to be aggregated and filtered and last but not least has to be visualized to be presented. A chain of data processing steps is formed by scientific computing that leads from the raw data to the presentation of knowledge in terms of graphical images in papers and on websites.

Scientific computing is individual. The nature of the scientific problem and the structure of the data determines which technology, data formats, algorithms, programming languages or programs in which combination are appropriate to ensure the minimal resource utilisation and the frictionless flow of the chain of operation. A deep technical and scientific understanding of the (measurement) principles and the observed phenomena is essential.

Scientific computing is a process itself. Often the processing of the data does not end after some knowledge (in terms of refined data) has been wrung out of the raw data. The refined data anew is input data or a parameter set for complex derivations and simulations which again produce raw data that has to be processed. Therefore, it is indispensable to know different simulation techniques and a bunch of numerical methods. The process like nature of scientific computing requires automated steering of the individual processing steps where the steering not only deals with the distribution of processes to free CPU/server capacity. Often software packages on different platforms/OSes have to be orchestrated by the steering software.

Scientific computing is modular. There is no singular big general solution that can deal with every problem. Therefore, it is a good strategy to build up modular systems that consist out of reusable open-source software components. These components can be maintained and developed independently of each other thus saving lots of time and production costs. Also, modularity plays well with the process steering. Experience shows that modular systems can be adjusted better to changing requirements and are more simple to test and debug. The software components can be reused and stacked together in varying patterns to adapt to complete different requirements.

Scientific computing requires highest software quality. The constant knowledge gain during the application of scientific computing accounts for steadily changing requirements. Additionally, performance problems are more common than the exception, causing changes of data structures and algorithms at crucial positions. Taking these circumstances in account software development for scientific computing can only succeed if it itself is understood as a process. The applied development techniques and programming paradigms and the code quality have to ensure that the software can be maintained and developed further for many years.

Scientific computing as performance optimization tool. Programs, computer systems, and networks can be treated as objects of scientific observation. Using scientific methods like statistical procedures and the measurement and interpretation of performance data performance issues can be measured, identified and overcome. This branch of scientific computing requires deep knowledge on the internal operation of microcontrollers, computers, data storage systems, network components, protocols, operational systems, numerical methods and simulation techniques.

Scientific computing reduces costs. It looks like there is no scientific computing without large and expensive high-performance-clusters, today. This is not the truth since by undergoing performance optimization some scientific computing projects can be shrunk back to reasonable domains and resource usage.