A C toolkit for multiplepoint simulation Alexandre Boucher Advanced Resources and Risk Technology LLC Stanford University ERE Toan Tran Stanford University EE Objectives of the toolkit ID: 583175
Download Presentation The PPT/PDF document "m ps-tk" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
m
ps-tk : A C++ toolkit for multiple-point simulation
Alexandre
Boucher
Advanced Resources and Risk Technology, LLC
Stanford University, ERE
Toan
Tran
Stanford University, EESlide2
Objectives of the toolkitA SGeMS-based C++ library to ease development of
mps algorithmsPresent abstraction of mps components
Provide a set of coherent
mps
building blocks to developersProvide implementation examplesStepping stone for the next generation of mps algorithmsTarget user is a developer not a geomodeler
NOTE:
goal is to develop tools to build
mps
algorithms not write new algorithms.Slide3
Generic mps simulation algorithm
Patterns
Database
The patterns database is typically built from training
images
A sequential simulation algorithm builds and queries that
database
The simulation is not based on the training
image per se, but
from the
patterns extracted from that training image
Imposition of
a spatial texture (geology)
on a grid such
that it conforms to data.Slide4
Generic sequential simulation algorithm
Pattern
DatabaseSlide5
Generic sequential simulation algorithm
Pattern
DatabaseSlide6
Texture is function of the patterns database
The
pattern database
controls the look
of the simulated geology
The
data control the locations
of some texture elementSlide7
Generic abstraction of mps
Known values and ancillary data (trends, regions, angles, …)
Data event extracted from the grid and ancillary data
Patterns database
Replicates returned from the database that match the data event. May take different forms (e.g. distributions)
Sampler
Select a replicate from the list returned from the pattern database
Probability field adjustmentSlide8
Abstraction components
Data event
Pattern and information retrieved from the simulation grid
Pattern database
Find patterns matching the data-event
Replicates
Outputs from the database
Sampler
Select a replicate from the collection of replicatesSlide9
Libraries included in mps-tk
mps_dataevent
Contains all the
dev
related functionalities
mps_pattern_database
Database and functionalities to build new database
mps_replicate
Sampler, servo-system and collection of replicates
mps_app_utility
Base classes and utilities that link mps-tk
together
mps_parallelism
Task manager for multi-threading
Unit testing
Functionality and regression testingSlide10
mps_dataevent
Dataevent_distance
Compute the similarity between two data events
Distance
,
Created with either
?
Geovalue_dataevent
Data-event around a central location (+ ancillary data)
Fixed_template_geodev_builder
Global_template_geodev_builder
Directional_overlap_dataevent
Directional_overlap_dev_builder
?
Created withSlide11
mps_pattern_database
Scanning_pattern_database
Search the TI for any data configuration.
Searched with
Fixed_template_pattern_database
Decompose the TI into patterns with fixed shape
Cross_correlation_pattern_database
Fourier space
TI values ready for convolution
Search_tree_pattern_database
Build a search tree
Multigrid_pattern_database
patDB-1
,
, … ,
patDB-1
patDB-1
One database per multi-gridSlide12
mps_replicate
Cdf_servo_sampler
Updating_cdf_servo_sampler
Random_replicate_sampler
Draw from a distribution given the constraint of a servo system
Draw from a distribution given the constraint of a servo system with a probability field
Draw a replicate from a collection of replicates
Pixel-based simulation
Patch-based simulation
,
,
,
,
,
Collection_replicate
Results from the pattern database
Cdf_replicate
Conditional distribution from the pattern database
Monte Carlo drawing from replicatesSlide13
Mps_parallelism
Computational_task_manager
Uses threads
to execute tasks
Computational_task
E
ncapsulates
data and a processing
method to be executed
by a computational
resource (thread or process).
Currently uses the Boost thread library for shared memory machine. Designed to be extended to distributed memory applications.Platform-independent (Windows, Linux)To run in parallel, write cpu-intensive process as a Computational_taskSlide14
Type of parallelisms implemented
patDB
Task 1
Task 2
…
Task N
…
patDB-1
Task 1
patDB-1
Task N
Parallel task manager applied within a data base (e.g. patterns scanning )
Parallel task manager applied to a full simulation (e.g. CCSIM)Slide15
A note on hard data conditioningLack of standard approach for conditioning in mps
Copy data on gridBuilt-in conditioning (
snesim
)
Distance-weighted function (filtersim)Adaptive data event (ccsim)Rejection approachObjectives: mps-tk does not interfere
with conditioning approaches.
mps-tk
offers flexibility
to implement the appropriate conditioning technique.Slide16
Build a scanning pattern database// set basic data event builder
dataevent_builder->
grid_is
(
training_image_);dataevent_builder->neighborhood_is(subgrid_ti_neighborhoods_);
// set trend data event builder
trend_dev_builder
-
>
dataevent_builder_is
(dataevent_builder
);trend_dev_builder->trend_property_is(training_image_trend_property_);fixed_template_pattern_db_->dataevent_builder_is(
trend_dev_builder
);
// set
dev_distance
to pattern database
fixed_template_pattern_db
_->
dataevent_distance_is
(
trend_dataevent_distance
_);
// Create and set
dev_selector
to pattern database
dataevent_selector
-
>
k_number_is
(
k_number
);
// set
dev_selector
to pattern database
fixed_template_pattern_db
_->
dataevent_selector_is
(
dataevent_selector
_); Slide17
Pattern database with multiple gridMultigrid_pattern_database
A collection of database; one for each multiple gridEach multi-grid can use a different pattern database
multigrid_scanning_pattern_db
_ =
Multigrid_pattern_database< Geovalue_dataevent, Collection_replicate<
Geovalue_dataevent
> >::
Ptr_new
();
for
(int
mgrid = 0; mgrid <= nb_mgrids_; mgrid++)
{
scanning_pattern_db
_ =
Scanning_pattern_database
::
Ptr_new
();
// … initialize individual pattern database …
// add database to the
mgrid
database
multigrid_scanning_pattern_db
_->
pattern_database_add
(
scanning_pattern_db
_);
}Slide18
Multi-grid simulation with a scanning database/* Loop for all multiple grids */
for (
int
mgrid = nb_mgrids_; mgrid >= 0; mgrid
--){
/* initialize simulation path */
RGrid
::
random_path_iterator
path_begin = simul_grid_->random_path_begin(); RGrid::random_path_iterator path_end
=
simul_grid
_->
random_path_end
();
/* Set
subgrid
to
multigrid_pattern_databases
*/
multigrid_fixed_template_pattern_db
_->
current_subgrid_is
(
subgrid
);
/* Run simulation */
pixel_based_simulate
(
path_begin
,
path_end
,
fixed_template_dev_builder_.get
(),
multigrid_fixed_template_pattern_
db
_.get
(),
sampler
_.get
()
);
}Slide19
CCSIM algorithmfor
(; _path_begin != _
path_end
; _
path_begin++) { /* Create the data event */ Directional_overlap_dataevent::
Ptr
simul_dev
= simul_dev_builder
_->dataevent(*_path_begin); /* Get the collection of replicates from the pattern database*/
Lazy_collection_replicate
<
Directional_overlap_dataevent
>::
Ptr
replicates
=
ccsim_pattern_db
_->replicate(
simul_dev
);
/* Randomly draw a replicate from the selected set of replicates*/
sampler
_->
sample(replicates);
}
The data event builder and the FFT-based database were previously initializedSlide20
Development and perspectivesImmediate goal is to provide tools to develop new algorithmsWrite more examples to expand and test the components and the design libraries
GPU-powered pattern databaseParallelism on server with MPIComplex gridding
Offer new perspectives
Meta-pattern database : a database of several databases
Pattern database not derived from a TI: e.g. process-based equationsCloud-based pattern database