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:

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:

 

 HyperDrive initialization

 

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 parallelism

 

 

HyperDrive library includes several functions that are shown in the following table according to their application field:

 

Molecular modelling functions    
  • Generic functions to build molecules.
  • Functions to manage ATDL templates and assign the atom types.
  • Bond management, connectivity build and chirality detection.
  • Functions to check and assign the partial atomic charges.
  • Lipophilicity prediction.
  • Molecular mechanics.
  • Surface calculation (SSE and OpenCL accelerated).
Mathematical and statistical functions
  • Discrete Fourier transformation.
  • Linear regression.
  • Matrix manipulation
  • Receiver Operating Characteristic curve calculation.
  • Generic statistics functions.
Low level
  • Accelerated memory management.
  • Argument parser.
  • Base64 encoding/decoding.
  • Cyclic redundancy check (CRC16, CRC32, CRC64 and MD5).
  • Directory manipulation.
  • Endian management.
  • File management.
  • Interchange File Format (IFF) management.
  • Memory lists.
  • Memory streams.
  • Multithreading (threads, mutex, semaphore barriers and CPU detection).
  • Network (sockets, HTTP client, WOL client).
  • OpenCL helper (to simplify the OpenCL programming).
  • Process management .
  • Pseudo-random number generator.
  • Secure Socket Layer (SSL).
  • Sort (Insert sort, quick sort and fast parallel quick sort for large data sets).
  • Internal spreadsheet implementation.
  • String manipulation.
  • Time functions.