160 likes | 178 Views
Learn how ESMF release 2.1.0 supports concurrent execution, ensemble runs, and efficient communication between components for improved performance in computational modeling. Understand the benefits of threading for enhanced processing capabilities.
E N D
Components and Concurrency in ESMF NASA GSFC GSI Nancy Collinsnancy@ucar.edu 2005 Community Meeting July 21, 2005 http://www.esmf.ucar.edu MITgcm GFDL FMS Suite NCAR/LANL CCSM NCEP Forecast GMAO Seasonal Forecast
Current Status • Starting with ESMF release 2.1.0 ESMF Components can be executed concurrently as well as serially. • Child components can be created on a subset of the parent component’s PETs (new petList argument to the ESMF_ComponentCreate() call) • The main loop looks very much the same, but a new Blocking flag can be set to return immediately on all PETs which do not run the component. They can then start another component. • Ensemble runs are now supported as well.
ESMF_StateReconcile() • New ESMF_State call • ESMF Communications are all computed in parallel by each PET. • Each PET computes independently what data needs to be sent and to who, and what data will be received and from whom. • The reconcile process ensures all PETs have the global grid information for all data items, even those without local data. • Then they can compute who they will be receiving data from, or to whom they need to send data.
Creating Ensembles Multiple Components running the same module code. Each can compute with a different set of input parameters.
Ensembles seem: But they are:
Get/SetInternalState Each component derived type maintains a private pointer to an allocated user data block. Think shared vs private variables in OpenMP, for example.
Futures: Threading Threads allow a single processor to have more than one stream of execution. Threading is enabled in the Child component at SetServices time by making a VM Set call.