Skip to main content

KRATOS Multiphysics ("Kratos") is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.

Project description

Multilevel Monte Carlo Application

MultilevelMonteCarloApplication provides different algorithms, belonging to the Monte Carlo (MC) family, to estimate statistics of scalar and field quantities of interest. The application is designed for running on distributed and high performance computing systems, exploiting both OpenMP and MPI parallel strategies. The application contains several interfaces with external libraries.

Getting started

This application is part of the Kratos Multiphysics Platform. Instructions on how to download, install and run the software in your local machine for development and testing purposes are available for both Linux and Windows systems.

Prerequisites

Build Kratos and make sure to have

add_app ${KRATOS_APP_DIR}/MultilevelMonteCarloApplication

in the compilation configuration, in order to compile the MultilevelMonteCarloApplication application.

Hierarchical Monte Carlo methods

  • Repeatedly generate the random input and solve the associated deterministic problem.
  • Convergence to the exact statistics as the number of realizations grows.
  • Problem under consideration considered as a black-box.
  • Convergence rate independent from stochastic space dimension.

Monte Carlo

  • Monte Carlo (MC) is the reference method in the stochastic analysis of multiphysics problems with uncertainties in the data parameters.
  • Levels of parallelism:
    • Between samples,
    • On each sample at solver level.
  • Hierarchy update:
    • Deterministic,
    • Adaptive.

Multilevel Monte Carlo

  • Multilevel Monte Carlo (MLMC) requires a hierarchy of levels with increasing accuracy to solve the statistical problem. Convergence rate is faster with respect to MC if MLMC hypotheses are satisfied.
  • Computation of a large number of cheap and lower accuracy realizations, while only few expensive high accuracy realizations are run.
    • Low accuracy levels: capture statistical variability,
    • High accuracy levels: capture discretization error.
  • Example of hierarchy of computational grids, showing increasing accuracy levels (by decreasing mesh size):

Solution

  • Levels of parallelism:
    • Between levels,
    • Between samples,
    • On each sample at solver level.
  • Hierarchy update:
    • Deterministic,
    • Adaptive.

Continuation Multilevel Monte Carlo

  • A set of decreasing tolerances is used and updated on the fly to adaptively estimate the hierarchy and run MLMC.
  • Levels of parallelism:
    • Between levels,
    • Between samples,
    • On each sample at solver level.
  • Hierarchy update:
    • Adaptive.

Asynchronous Monte Carlo

  • This algorithm is equivalent to MC, but designed for running in distributed environments. It avoids idle times and keeps at maximum the computational efficiency.
  • Levels of parallelism:
    • Between batches,
    • Between samples,
    • On each sample at solver level.
  • Hierarchy update:
    • Deterministic.

Asynchronous Multilevel Monte Carlo

  • This algorithm is equivalent to MLMC, but designed for running in distributed environments. It avoids idle times and keeps at maximum the computational efficiency.
  • Levels of parallelism:
    • Between batches,
    • Between levels,
    • Between samples,
    • On each sample at solver level.
  • Hierarchy update:
    • Deterministic.

Statistical tools

Power sums

  • Update on the fly of power sums.
  • A power sum of order p is defined as:

    .

h-statistics

  • The h-statistic of order p is the unbiased estimator with minimal variance of the central moment of order p.
  • h-statistic dependencies are

    .

Convergence criteria

  • Convergence is achieved if the estimator of interest reaches a desired tolerance with respect to the true estimator with a given confidence.
  • The failure probability to satisfy (for expected value and MC) is

.

  • Other convergence criteria available:
    • Mean square error,
    • Sample variance criteria (MC only),
    • Higher order (up to the fourth) moments criteria (MC only).

Hierarchy

  • Hierarchy strategies:

    • stochastic adaptive refinement: hierarchy of levels built refining in space, performing solution-oriented adaptive space refinement. The coarsest mesh is shared between all realizations, and for each realization different meshes are generated, accordingly to the random variable. Requires compiling MESHING_APPLICATION.
    • deterministic adaptive refinement: hierarchy of levels built refining in space, performing solution-oriented adaptive space refinement. All meshes are shared between all realizations, and adaptive refinement is done at pre-process, exploiting a user-defined random variable. Requires compiling MESHING_APPLICATION.
    • standard: the user takes care of building the hierarchy, using the strategy he prefers (such as uniform refinement).
  • Metric strategies:

    • geometric error estimate: the analysis of the hessian of the numerical solution controls the mesh refinement.
    • divergence-free error estimate: the analysis of the mass conservation controls the mesh refinement (suitable only for CFD cases). Requires compiling EXAQUTE_SANDBOX_APPLICATION. In progress.

External Libraries

MultilevelMonteCarloApplication makes use of third part libraries. Information about these libraries can be found in their respective pages, which are listed below.

XMC

XMC is a Python library, with BSD 4 license, designed for hierarchical Monte Carlo methods. The library develops the above-mentioned algorithms, statistical tools and convergence criteria. The library presents a natural integration with Kratos, which is XMC default solver. By default, an internal version of the library is used. If one wants to use an external version of the library, the environment variable XMC_BACKEND=external should be set.

PyCOMPSs

PyCOMPSs is the Python library required in order to use task-based programming software COMPSs in a Python environment. By default PyCOMPSs is not required in order to run the application. In case one wants to run using this library, the environment variable EXAQUTE_BACKEND=pycompss must be set. The current version is able to run several thousands of samples at once exploiting PyCOMPSs in distributed systems, maximizing parallelism and computational efficiency. Optimal scalability up to 128 working nodes (6144 CPUs) has been demonstrated with both OpenMP and MPI parallelisms.

Instructions for the installation can be found in the Kratos wiki. To run with runcompss, the environment variable EXAQUTE_BACKEND=pycompss must be set to use the distributed computing capabilities. Additionally, running with runcompss requires to add to the PYTHONPATH the path of the XMC library, that is /path/to/Kratos/applications/MultilevelMonteCarloApplication/external_libraries/XMC. You can add the library to the PYTHONPATH either in the .bashrc file, or directly when running the code using the runcompss key --pythonpath. We refer to the Kratos wiki for details.

Mmg and ParMmg

Mmg is an open source software for simplicial remeshing. It provides 3 applications and 4 libraries. Instructions for installing Mmg can be found in the Kratos wiki. ParMmg is the MPI parallel version of the remeshing library Mmg. Instructions for installing ParMmg can be found in the Kratos wiki.

Scalability

AMC and AMLMC denote the asynchronous Monte Carlo and the asynchronous Multilevel Monte Carlo methods, respectively. Sources: [1] and [4].

Examples

Many examples can be found in the Kratos Multiphysics Examples repository.

License

The MultilevelMonteCarloApplication is OPEN SOURCE. The main code and program structure are available and aimed to grow with the need of any user willing to expand it. The BSD (Berkeley Software Distribution) licence allows to use and distribute the existing code without any restriction, but with the possibility to develop new parts of the code on an open or close basis depending on the developers.

Main References

[1] Tosi, R., Amela, R., Badia, R. M. & Rossi, R. (2021). A Parallel Dynamic Asynchronous Framework for Uncertainty Quantification by Hierarchical Monte Carlo Algorithms. Journal of Scientific Computing. https://doi.org/10.1007/s10915-021-01598-6

[2] Amela, R., Ayoul-Guilmard, Q., Badia, R. M., Ganesh, S., Nobile, F., Rossi, R., & Tosi, R. (2019). ExaQUte XMC. https://doi.org/10.5281/zenodo.3235833

[3] Krumscheid, S., Nobile, F., & Pisaroni, M. (2020). Quantifying uncertain system outputs via the multilevel Monte Carlo method — Part I: Central moment estimation. Journal of Computational Physics. https://doi.org/10.1016/j.jcp.2020.109466

[4] Ejarque, J., Böhm, S., Tosi, R., Núñez, M., & Badia, R. M. (2021). D4.5 Framework development and release. ExaQUte consortium.

Contact

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

KratosMultilevelMonteCarloApplication-9.1.2-cp39-cp39-win_amd64.whl (428.9 kB view details)

Uploaded CPython 3.9 Windows x86-64

KratosMultilevelMonteCarloApplication-9.1.2-cp38-cp38-win_amd64.whl (429.1 kB view details)

Uploaded CPython 3.8 Windows x86-64

KratosMultilevelMonteCarloApplication-9.1.2-cp37-cp37m-win_amd64.whl (429.3 kB view details)

Uploaded CPython 3.7m Windows x86-64

KratosMultilevelMonteCarloApplication-9.1.2-cp36-cp36m-win_amd64.whl (429.2 kB view details)

Uploaded CPython 3.6m Windows x86-64

File details

Details for the file KratosMultilevelMonteCarloApplication-9.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for KratosMultilevelMonteCarloApplication-9.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a0585fa098eaf799d602b0d1dceed14b942d527f66f2ab992c332a0465540b3d
MD5 c5f00fc96f5f7d869cb3272d2a471955
BLAKE2b-256 0fe43c981bb197ac42dd210a68d81fefc2fa714e2de9da7adc0aa1337d355166

See more details on using hashes here.

Provenance

File details

Details for the file KratosMultilevelMonteCarloApplication-9.1.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: KratosMultilevelMonteCarloApplication-9.1.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 428.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.11

File hashes

Hashes for KratosMultilevelMonteCarloApplication-9.1.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 0692a57e17f8354f6ff55d2b401972506a44e604e76e9b3e3a0880aaf684bf6b
MD5 87c6c4194f4566d0dfd900c5b9df5e49
BLAKE2b-256 fa2cd162bca8296d9a3cc5bfc99d7ebd1240c7756dda490bac8f850d38b33a34

See more details on using hashes here.

Provenance

File details

Details for the file KratosMultilevelMonteCarloApplication-9.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for KratosMultilevelMonteCarloApplication-9.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a322517bb1ae0c612525386c88a0aa3cd9db093e0d1f711d5610f43aaa5ebf4d
MD5 80248efc56dedc9642e01aaa73dd5470
BLAKE2b-256 716a21eeefb7b02d71840effd5141e5468280b7a35e172aad523f373851e6869

See more details on using hashes here.

Provenance

File details

Details for the file KratosMultilevelMonteCarloApplication-9.1.2-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: KratosMultilevelMonteCarloApplication-9.1.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 429.1 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.11

File hashes

Hashes for KratosMultilevelMonteCarloApplication-9.1.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 9b25c3250fd7e0b3e88d665777ecd897f848ddfce748f34c7806fd6c5d511fd3
MD5 81c2ac8b9e00be47411a3e69ec5098b1
BLAKE2b-256 15c689b87cc0b59175b78ffb0df5afd1e13307e33b4624e483ecfb0724c2b783

See more details on using hashes here.

Provenance

File details

Details for the file KratosMultilevelMonteCarloApplication-9.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for KratosMultilevelMonteCarloApplication-9.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cbee994b0d8700b8e8771f76b0a8160b3b4dbabb9fa181f44e03acdf8a7b3d40
MD5 a643642cb939be5d86a81ccf5dde764e
BLAKE2b-256 c7ec9e0c74553ff6dc969af4676869eee23cc7d9284197b7b939b78e2d68bf15

See more details on using hashes here.

Provenance

File details

Details for the file KratosMultilevelMonteCarloApplication-9.1.2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: KratosMultilevelMonteCarloApplication-9.1.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 429.3 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.11

File hashes

Hashes for KratosMultilevelMonteCarloApplication-9.1.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 aadd358a17a3ec7b90f821fea7e390354f00a3e5f9cbd2a14553ae6d6e1f4874
MD5 b187a677a32e1530c525014dad6306cd
BLAKE2b-256 1e6e7a91134c1cea51eb2f51daa3244274817841792bccf0385d66928122a8cb

See more details on using hashes here.

Provenance

File details

Details for the file KratosMultilevelMonteCarloApplication-9.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for KratosMultilevelMonteCarloApplication-9.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 74f30dc4b876346be2cee3fc73bc2a9d031311a8134fad9156c213c3cc07b9ee
MD5 139c27bbe986c5132cd1655555533535
BLAKE2b-256 78101fd70c5157a304693d79ab96295698e7f20539de31e0798d593a36ac5e2b

See more details on using hashes here.

Provenance

File details

Details for the file KratosMultilevelMonteCarloApplication-9.1.2-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: KratosMultilevelMonteCarloApplication-9.1.2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 429.2 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.1 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.11

File hashes

Hashes for KratosMultilevelMonteCarloApplication-9.1.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 6a36a1364f3a191ea094ff2245c3d471f69081f391832d59a34043899d6f46c7
MD5 071ca9c9e1d72b71b6ecd7894c4c2e1b
BLAKE2b-256 d64ff96ad4124a48ba584d1a32603438b4ad4e770008cad3fa3654ae7d4c5581

See more details on using hashes here.

Provenance

File details

Details for the file KratosMultilevelMonteCarloApplication-9.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for KratosMultilevelMonteCarloApplication-9.1.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 93cd7eeb7dc1df4c9c435628c1826bd731805fa733fca1afb7ae6ed560a14ace
MD5 9e397813b8214c2e4b2bbdd5b9fd28df
BLAKE2b-256 386822309c6f9f8dea2ab9767fbcc99e4abaaed57bfe1dd9fc356221b9599814

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page