fullrmc runs a stochastic engine that runs as a sequential process. To speed up the calculation for big systems, pthreads are used to parallelize certain parts of the computation blocks. This turns out to be beneficial when the number of atoms in the system is big enough to compensate for the overhead of launching the parallel processing on every and each step.
On the other hand when the studied atomic system is constituted of a mixture of different structures (distribution of nanoparticles size, local structures and nanograins, distribution of structure faults, interface structures, etc.) and systems then a single atomic system simulation will never be enough to get an accurate solution. For that particular reason in fullrmc we introduce the concept of ‘multiframe’ and we use softgrid to enable running fullrmc’s multiframe on any set of connected commodity hardware to perform synchronous and asynchronous multiframe computation.
softgrid is not open sourced and it can’t be distributed along with fullrmc. Therefore fullrmc softgrid enabled will be available as software as as solution on cloud infrastructures such as Microsoft AZURE.
fullrmc.MultiframeUtils.
WorkersManagement
(repoTimeout=10, requestTimeout=60)Bases: object
Used by remote softgrid worker to run fullrmc stochastic engine
from fullrmc.Engine import Engine
from fullrmc import MultiframeUtils
# create engine
ENGINE = Engine().load(path)
# run on grid
WM = MultiframeUtils.WorkersManagement()
WM.start(engine=ENGINE, multiframe='size_distribution', orchestrator=None)
# run independant.
WM.run_independant(self, nCycle=10, numberOfSteps=1000, saveFrequency=1)
# run dependant
WM.run_dependant(nCycle=200, firstNAccepted=1, subframesWeight=None, numberOfSteps=100, saveFrequency=10)
start
(engine, multiframe, orchestrator=None, workerRequestLoopTimeout=3600)stop
()Stop WorkersManagement by disconnecting softgrid computation
run_dependant
(nCycle=100, firstNAccepted=1, numberOfSteps=100, subframesWeight=10, normalize=1, driftTolerance=1, saveFrequency=10, cycleTimeout=900)Run all remote subframes as whole dependant structure. Subframes weighted (subframesWeight) atomic configuration will be used to compute stochastic engine’s total standard error. Subframes constraints will also be using subframesWeight and prior to compute constraints standard error. This computation is valid under the assumption that all subframes might exist in the measured and modeled atomic system but they are far enough from each other to neglect any cross structural interactions and correlation
Parameters: 


run_independant
(nCycle=10, numberOfSteps=1000, saveFrequency=1, cycleTimeout=3600)run all remote subframes as totally independant structures
Parameters: 


save
()Call all remote subFrames to save.