PUPable Random Number Engines
C++ 11 provides random number engines and
engine adaptors that are widely used
(presumably in Charm Applications).
This commit adds functionality to PUP
these engines and engine adaptors so that
the user canpreserve the state of these
engines and engine adaptors during the
migration of chares.
The commit makes the following six engines
and engine adaptors in Charm++:
Engines
-linear_congruential_engine(C++11)
-mersenne_twister_engine(C++11)
-subtract_with_carry_engine(C++11)
Engine Adaptors
-discard_block_engine(C++11)
-independent_bits_engine(C++11)
-shuffle_order_engine(C++11)
Read more about these on
https://en.cppreference.com/w/cpp/header/random
Algorithm:
While packing an engine, we extract the
state of the engine (String) and PUP it.
While unpacking, we create a new engine
and feed it the unpacked state (String).
Change-Id: I5a670c92f579ef0a1b807266a2c55dbbe30fc7be