Home News Downloads Documentation
Home Downloads Introduction Getting Started Examples
Contact Publications
 

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:

  1. 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).
  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.

Download OpenCS

The software is available for download from the Downloads section or from the Source Forge website.

October 2023

OpenCS 2.3.0
The new version introduces new code verification tests, improved support for auto- and explicitly vectorised equation kernels, single source languages (Kokkos, SYCL) and the experimental support for FPGA devices.

Read more...

Start using OpenCS

Learn more about the software in the Introduction, Getting Started, Examples and Python examples sections.

Join the OpenCS discussion group to find out more on OpenCS and ask questions.

Code Verification

Not sure that OpenCS can perform the job?

OpenCS apply formal code verification methods such as the the Method of Manufactured Solutions (MMS) to test the code capabilities in full generality.

OpenCS Publications

Details on how to reference OpenCS and articles on the implementation, algorithms and data structures can be found in the Publications section.

Contact

The main developer and project leader is Dragan Nikolić .

Copyright: Dragan D. Nikolić, DAE Tools Project 2009-2023