Open Compute Stack (OpenCS) framework
The Open Compute Stack (OpenCS) framework is a common platform for equation-based modelling of problems described by large-scale systems of differential and algebraic equations (ODE or DAE), parallel evaluation of model equations on diverse types of computing devices (including heterogeneous setups), parallel simulation on shared and distributed memory systems, and model exchange.
The framework provides a platform-independent binary interface for model description with the data structures to describe, store in computer memory and evaluate large scale ODE/DAE systems of equations. The same model specification can be used on different high performance computing systems and architectures. Model equations are specified in a symbolic form using the OpenCS API, transformed into the bytecode instructions or kernels using the operator overloading technique and stored as an array of binary data (a Compute Stack) for direct evaluation by simulators on all platforms/operating systems (including heterogeneous systems) with no additional processing nor compilation steps.
Models can contain a coupled set of kernel equations and grouped auxiliary algebraic and differential equations. Each group or kernel can be assigned to a different computing device (processor or accelerator). The framework automatically generates C++ and OpenCL source code for kernels. The source code for C++ shared library kernels is automatically compiled and loaded by the framework.
The OpenCS framework supports different architectural designs of modern supercomputers:
- Large number of processors having many cores and hardware threads and wide SIMD registers
(i.e. Fugaku machine installed at RIKEN in Japan).
The framework provides vectorised compute kernels. Apart from 512 bit AVX-512, the framework offers variable width vector kernels (i.e. for vector extensions such as SVE 2). - Large number of processors equipped with GPU accelerators (most supercomputers in USA).
The framework supports heterogeneous CPU/GPU systems where compute kernels can be executed using the OpenMP API and the OpenCL framework.
OpenCS is free software and you can redistribute it and/or modify it under the terms of the GNU Lesser General Public Licence version 3 as published by the Free Software Foundation.