components and concurrency in esmf nancy collins nancy@ucar.edu nancy@ucar.edu 2005 community...

Post on 26-Dec-2015

219 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Components and Concurrency in ESMF

Nancy Collins nancy@ucar.edu 2005 Community Meeting

July 21, 2005

http://www.esmf.ucar.edu

GMAO Seasonal Forecast

NCAR/LANL CCSM NCEP ForecastGFDL FMS Suite

MITgcmNASA GSFC GSI

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.

Sequential vs Concurrent

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.

top related