Closed bena-nasa closed 3 years ago
I think we should talk about this. It is very unusual in ESMF to need to specify PET lists explicitly, except for when you are setting up a component context itself. I don't think I fully understand the issue, so maybe we can take it up on a call when looking at code? It might be helpful to think about the superstructure part for a bit (i.e., what are the component boundaries) and get that set before creating the distributed data structures.
What about this, the factories all end up calling a routine to create from parameters from the create_from_metdata, config, etc ... We could add pet list to the underlying create from parameters function so if the user wants to use it they have to invoke the constructor for the grid factory. Don't worry about making it available via config for example. This would be less intrusive and an easy way to create these for testing.
I think we should talk about this. It is very unusual in ESMF to need to specify PET lists explicitly, except for when you are setting up a component context itself. I don't think I fully understand the issue, so maybe we can take it up on a call when looking at code? It might be helpful to think about the superstructure part for a bit (i.e., what are the component boundaries) and get that set before creating the distributed data structures.
In order to use the VMEpoch framework, and stuff a FieldRegrid inside the epoch, I thought it said that you can't have a sender and receiver on the same PET, ergo the source and destination field can't be on the same PET's, which means you have to have grids that don't have DE's on the same pets. So either passing a PetList to a GridCreate call or passing a petList to a component.
Closing this for now as it was decided that we would not put this in the factories for now, but rather make some simple module to make a few grids select we can use for testing. If needed we can revisit this.
Closing, see previous comment
As part of the project to make an ESMF or NUOPC based History component, if we go the ESMF route it sounds like this will involve the ESMF_VMEpoch. If we do plan on using the ESMF_VMEpoch that must be called on the same VM across all PET's making the call, and therefore anything called in the epoch. So this would necessitate creating different fields on a subset of PETs in the VM for the application/client and the server. So for initial performance testing and prototyping this would be needed.
The ESMF_GridCreate that we would use for Lat-Lon and Tripolar can take a PetList argument so control the DE placement. Unfortunately the cubed-sphere creation API does not. In that case you have to pass a DELayout (which can be created from the PetList).
I'm proposing that we give the ability to pass a PetList to the factories. Some thought on how to do this is needed but could be a good first project for Gian to provide a useful feature as well as understand the code.