Major changes:
- Added NullTimer to use for default Timer value, it is a disabled timer which cannot be enabled (raises NotImplementedError)
Fixes:
- Fixed bug where ZarrMonitor depended on dict
.items()
always returning items in the same order
Major changes:
- Use
cftime.datetime
objects to represent datetimes instead ofdatetime.datetime
objects. This results in times stored in a format compatible with the fortran model, and accurate internal representation of times with the calendar specified in thecoupler_nml
namelist. Timer
class is added, with methodsstart
andstop
, and propertiesclock
(context manager), andtimes
(dictionary of accumulated timing)CubedSphereCommunicator
instances now have a.timer
attribute, which accumulates times for "pack", "unpack", "Isend", and "Recv" during halo updates- make
SubtileGridSizer.from_tile_params
public API - New method
CubedSphereCommunicator.synchronize_vector_interfaces
which synchronizes edge values on interface variables which are duplicated between adjacent ranks - Added
.sel
method to corner views (e.g.quantity.view.northeast.sel(x=0, y=1)
) to allow indexing these corner views with arbitrary dimension ordering. - Halo updates now use tagged send/recv operations, which prevents deadlocks in certain situations
- Quantity.data is now guaranteed to be a numpy or cupy array matching its
.np
module, and will no longer be a gt4py Storage - Quantity accepts a
gt4py_backend
on initialize which is used to create its.storage
if one was not used on initialize - parent MPI rank now referred to as "root" rank in variable names and documentation
- Added TILE_DIM constant for tile dimension of global quantities
- Added Partitioner base class implementing features necessary for scatter/gather
- Moved scatter and gather from TileCommunicator to the Communicator base class, so its code can be re-used by the CubedSphereCommunicator
- Implemented subtile_slice, global_extent, and subtile_extent routines on CubedSpherePartitioner necessary for scatter/gather in CubedSphereCommunicator
- Renamed argument
tile_extent
andtile_dims
toglobal_extent
andglobal_dims
in routines to refer generically to the tile in the case of tile scatter/gather or cube in the case of cube scatter/gather - Fixed a bug where initializing a Quantity with a numpy array and a gpu backend would give CPUStorage
- raise TypeError if initializing a quantity with both a storage and a gt4py_backend argument
- eagerly create storage object when initializing Quantity
- make data type of quantity and storage reflect the gt4py_backend chosen, instead of being determined based on the data type being numpy/cupy
Fixes:
- If
only_names
is provided toopen_restart
, it will return those fields and nothing more. Previously it would include"time"
in the returned state even if it was not requested. - Fixed a bug where quantity.storage and quantity.data could be out of sync if the quantity was initialized using data and a gt4py backend string
- Default slice for corner views when not given at all as an index (e.g. when providing one index to a 2D view) now gives the same result as providing an empty slice (:)
- Fixed a bug where quantity.view could refer to a different array than quantity.data if the quantity was initialized using data and a gt4py backend string, and then quantity.storage was accessed
- enable MPI tests on CircleCI
Breaking changes:
send_buffer
andrecv_buffer
are modified to take in acallable
, which is more easily serialized than anumpy
-like module (necessary because we serialize the arguments to re-use buffers), and allows custom specification of the initialization if zeros are needed instead of empty.
Major changes:
- Added additional regional views to Quantity as attributes on Quantity.view, including
northeast
,northwest
,southeast
,southwest
, andinterior
- Separated fv3util into its own repository and began tracking history separately from fv3gfs-python
- Added getters and setters for additional dynamics quantities needed to call an alternative dynamical core
- Added
storage
property to Quantity, implemented as short-term shortcut to .data until gt4py GDP-3 is implemented
Deprecations:
Quantity.values
is deprecated
Last release of fv3util with history contained in fv3gfs-python.