competencies
parallelization
Efficient execution of programs on a High Performance Computer (HPC) requires parallelization and optimization of the code. Without parallelization, programs in the HPC environment would not run in parallel, which would result in processing speeds similar to a group of ordinary servers. This, however, is detrimental to the cost/efficiency equation.
The acceleration of data processing in an HPC system is achieved through a well-implemented parallelization of algorithms and proper division of work. In the simplest case, we parcel out mutually independent pieces of data that can be processed by separate processors simultaneously. This allows faster data processing than if a single large data-set was used.
Data processing in one server can be parceled out to available processor cores that run in a multi-threaded mode such as OpenMP. In this case, we are talking of parallel programming on a single computer with shared memory, since all processor cores on the server share the RAM.
The processing in a supercomputer cluster, such as Arctur-1, can be divided among the available server nodes (for example; with the help of OpenMPI). This is parallel programming on a computer with shared memory, since each server node has its own separate memory.
Arctur’s computer science and mathematical experts can assist customers by analyzing their code and developing technological solutions for hybrid parallelization. The most effective parallelization is achieved when the code is optimized at the beginning of the algorithm-planning stage. Subsequent attempts of parallelization are usually significantly more difficult and prolonged.