15. The HyperDrive technology
HyperDrive is a core library including several time-critical functions required by VEGA ZZ for high speed computing. The highly optimized and and parallel code, especially designed for the modern CPUs, allows to speed-up the programs and make faster the development without deep skills in programming. Moreover, the library offers features that are useful not only in developing of molecular modelling software, but also of generic application. In particular, the key features are here summarized:
Hardware independent.
You can develop the same application for Linux (ARM, x86 and x64) and Windows
(x86 and x64) without changes in the source code.
Same software for single or
multiprocessor systems.
The library checks the number of CPUs and automatically switches itself from
sequential to parallel mode.
OpenCL support
Some routines (such as virtual LogP calculation) are written to run on
the GPU thanks to OpenCL abstraction layer.
Simultaneous multithreading (SMT)
ready
It uses the full power of modern multiscalar CPUs with hardware
multithreading such as Intel i5, i6, i9 and AMD Ryzen 5, 7, Threadripper.
Multi core CPU ready
The latest multi core CPUs provided by AMD and Intel are detected and the
parallel execution is automatically enabled.
SIMD optimization
The functions that are more frequently called, are written in assembly and
optimized by using SSE SIMD instruction set.
No special compiler required.
You can use your preferred C/C++ compiler. C++ envelops are included in the
headers.
HyperDrive requires an initialization phase that is executed by the host application when it starts. The host application can choose the appropriate HyperDrive version for the installed microprocessor and the HyperDrive detects the number of CPUs switching itself to run in sequential mode (one CPU) or in parallel mode:
After the initialization phase, the host application can call the HyperDrive functions in transparent mode as a normal library: the HyperDrive library select internally the most appropriate code for that hardware/software system and if it can run more than one thread at the same time at hardware level such as for multicore or SMT CPUs, the code is executed in parallel:
HyperDrive library includes several functions that are shown in the following table according to their application field:
Molecular modelling functions |
|
|
Mathematical and statistical functions |
|
|
Low level |
|