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.4-cp39-cp39-win_amd64.whl (430.4 kB view details)

Uploaded CPython 3.9 Windows x86-64

KratosMultilevelMonteCarloApplication-9.1.4-cp38-cp38-win_amd64.whl (430.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

KratosMultilevelMonteCarloApplication-9.1.4-cp37-cp37m-win_amd64.whl (430.8 kB view details)

Uploaded CPython 3.7m Windows x86-64

KratosMultilevelMonteCarloApplication-9.1.4-cp36-cp36m-win_amd64.whl (430.7 kB view details)

Uploaded CPython 3.6m Windows x86-64

File details

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

File metadata

File hashes

Hashes for KratosMultilevelMonteCarloApplication-9.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2985dcafadc785ccb3df1f0c7d1d3ced0fe35d739b75e82235076b63b3b2ae1b
MD5 2a8960925a8a9a96ee896f081e11cfe7
BLAKE2b-256 c4ff141ed8084d2b5a85691c6d64048e15c830f156a1418451fdbd0f510eeb40

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: KratosMultilevelMonteCarloApplication-9.1.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 430.4 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.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 4f220534a4896da416f1b308f9f36747162338a9a741dc311a3d05e7ba8e7a39
MD5 1a79d864152e8e5368e53b27b72724c4
BLAKE2b-256 e9ba610b0346aeaaaacdbe64364c7c3ef4b9da0056d499fc546df6728be7465d

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for KratosMultilevelMonteCarloApplication-9.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 498dee4156acb525c1d442bf916c62f5cdb12bf77ec83351caeca9b20af11b1d
MD5 8b932a1e6a3533524573ce97d7d9c271
BLAKE2b-256 39e90cdc6c3271139b1f322f3c73707e8ddbe9f984cb10d2ed09a92490ec5356

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: KratosMultilevelMonteCarloApplication-9.1.4-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 430.7 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.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 500a7dc38acba383c326950dc75a96ba0ce1a07fff427b708a39e32cd1e166a2
MD5 6b2d4f4fd4f24b5aa40b6b02a65d590a
BLAKE2b-256 de7c50e6f465caff7709827fd143e854991ad4a843c93991ed7d44fa14677bd3

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for KratosMultilevelMonteCarloApplication-9.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6f917ea3731d874f00e401b6e6cf6522edb44e6e3fd153ef32bddbe3ebe2923c
MD5 39d0494f5cab7556fe56b4e02289f967
BLAKE2b-256 1f1f4380c3a67fcd4740d2a0d02712b9647a68c6d318f35bc320ec33a75e519d

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: KratosMultilevelMonteCarloApplication-9.1.4-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 430.8 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.4-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 65913cff02a9b4c7ade83cdc2b146df741121bf4ddc88887c0312db55265ca1d
MD5 770c4eac4249addf4eef0b7e48fa3411
BLAKE2b-256 1b7497d57e4b059cdc769a18791130a7c5f106196dac876e4a74d21b743710a2

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for KratosMultilevelMonteCarloApplication-9.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 22b21ae0edc431bf0aec67d0993eeef01210133626e5e95ed9a21e9c78d1440c
MD5 61f98f7ab634608f58d47e8ce84455d2
BLAKE2b-256 54ffa4a5ce0e09c573998803ffa6bff0c06f53b8315065714900e956cd888842

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: KratosMultilevelMonteCarloApplication-9.1.4-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 430.7 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.4-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 1a66e88ebfcc93a4662ce61d5f271408748f9c45762518767a97fba2f9f8543e
MD5 30a6531b307a7addf3d79ebdef145df6
BLAKE2b-256 933cb196693119599fb04444bad20c9181823e0ab21f14b5117e0330018d9f92

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for KratosMultilevelMonteCarloApplication-9.1.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7749fbeaca695f50f6945a813e17e5bbd6762d2b142dfe7724440b343272a3e4
MD5 e4f30e74364a887e438dca3c90072db7
BLAKE2b-256 9dc593f931fc3a53d6a766860c6e79b998b56da1e67dccf0bb2239dc9cc25771

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