Install the MULTICORE module

Multicore solver module for Chrono.

Features

The MULTICORE module provides features for performing multibody simulations using shared-memory parallel computing within Chrono

  • introduces a custom ChSystemMulticore class
  • implements a high-performance multicore collision detection algorithm
  • uses efficient APIs for parallelism (OpenMP, Thrust, etc.)

Requirements

  • To build this module you need:
    • the Blaze library
    • the Boost library (only for Blaze 3.1 or older)
    • the Thrust (also included in CUDA SDK)
The easiest way to obtain the Thrust library is by installing the CUDA SDK. Alternatively, you can download or clone Thrust from its GitHub repository. In that case, you will need to manually specify the path to the Thrust headers during CMake configuration (set the variable THRUST_INCLUDE_DIR).

Building instructions

  1. Download the following libraries (depending on the platform, the process can be different)

    • the Blaze library
    • the Boost library (if using Blaze 3.1 or older)
    • the Thrust (also included in CUDA SDK)

    For use with the Chrono::Multicore module, no installation is required for the above headers-only libraries. However, if so desired, they can be installed in the appropriate system directories (on platforms that support them).

  2. Repeat the instructions for the full installation, with the following additional steps:
  3. Set the ENABLE_MODULE_MULTICORE as 'on', then press 'Configure' (to refresh the variable list)
  4. If prompted, set the path for BLAZE_DIR, the press 'Configure'
  5. If using an older version of Blaze (pre 3.2) and if so prompted, set the path for BOOST_DIR
  1. Press 'Configure' again, then 'Generate', and proceed as usual in the installation instructions.
Not all the features of the standard serial version of Chrono::Engine are supported.

How to use it

  • Look at the API section of this module for documentation about classes and functions.
  • Look at the C++ source of demos to learn how to use the functions of this module.