Modular implementation of adaptive decisions in stochastic simulations

We present a modular approach to implement adaptive decisions with existing scientific codes. Using a sophisticated system software tool based on the function call interception technique, an external code module is transparently combined with the given program without altering the original code structure, resulting in a newly composed application with extended behavior. This is useful for generalizing codes into using different parameter values or to switch algorithms or implementations at runtime. Applying the proposed method on a biochemical stochastic simulation software package to implement a set of exemplary use cases, which includes changing program parameters, substituting random number generators, and dynamically changing the stochastic simulation method, we demonstrate how effectively new code modules can be plugged in to construct an application with enhanced capabilities.

[1]  Jeffrey K. Hollingsworth,et al.  An API for Runtime Code Patching , 2000, Int. J. High Perform. Comput. Appl..

[2]  William L. Sousan,et al.  Using common off-the-shelf tools to implement dynamic aspects , 2007, SIGP.

[3]  Wolfgang Schröder-Preikschat,et al.  AspectC++: an aspect-oriented extension to the C++ programming language , 2002 .

[4]  Michael Alan Heffner A Runtime Framework for Adaptive Compositional Modeling , 2004 .

[5]  Viktor K. Decyk,et al.  Why Fortran? , 2007, Computing in Science & Engineering.

[6]  Pierre L'Ecuyer,et al.  Implementing a random number package with splitting facilities , 1991, TOMS.

[7]  Naren Ramakrishnan,et al.  PYTHIA-II: a knowledge/database system for managing performance data and recommending scientific software , 2000, TOMS.

[8]  Paul F. Dubois,et al.  Ten Good Practices In Scientific Programming , 1999, Computing in Science & Engineering.

[9]  John R. Rice,et al.  Recommender Systems for Problem Solving Environments , 1997 .

[10]  D. Gillespie A General Method for Numerically Simulating the Stochastic Time Evolution of Coupled Chemical Reactions , 1976 .

[11]  Takuji Nishimura,et al.  Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator , 1998, TOMC.

[12]  D. Gillespie Approximate accelerated stochastic simulation of chemically reacting systems , 2001 .

[13]  Jim Hugunin,et al.  Advice weaving in AspectJ , 2004, AOSD '04.

[14]  D. Gillespie,et al.  Accelerated stochastic simulation of the stiff enzyme-substrate reaction. , 2005, The Journal of chemical physics.

[15]  Meir M. Lehman,et al.  Program evolution: processes of software change , 1985 .

[16]  Muruhan Rathinam,et al.  Stiffness in stochastic chemically reacting systems: The implicit tau-leaping method , 2003 .

[17]  Linda R Petzold,et al.  The slow-scale stochastic simulation algorithm. , 2005, The Journal of chemical physics.

[18]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[19]  Nicholas Nethercote,et al.  Valgrind: A Program Supervision Framework , 2003, RV@CAV.

[20]  Harish Patil,et al.  Pin: building customized program analysis tools with dynamic instrumentation , 2005, PLDI '05.

[21]  D. Gillespie Exact Stochastic Simulation of Coupled Chemical Reactions , 1977 .

[22]  Makoto Matsumoto,et al.  SIMD-Oriented Fast Mersenne Twister: a 128-bit Pseudorandom Number Generator , 2008 .

[23]  Michael Mascagni,et al.  SPRNG: A Scalable Library for Pseudorandom Number Generation , 1999, PP.

[24]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[25]  Hans-Arno Jacobsen,et al.  TinyC2: Towards building a dynamic weaving aspect language for C , 2003 .