![]() ![]() ![]() ![]() Next: CCTK Hyperslab API Specification Up: PUGHSlab Previous: Abstract Contents IntroductionMany I/O thorns output data from distributed CCTK array variables. If - in a multiprocessor run - output is done by only one processor, it needs to collect the data from the others. This ties the I/O thorn to the driver since it has to know about domain-decomposed data layout, interprocessor ghostzones, etc.
A clean way of separating the I/O code from the driver is to use
a thorn which provides a generic interface to get/put the distributed
data on/from the I/O processor for writing/reading. This interface can also
provide more features such as downsampling, datatype conversions,
or hyperslab selections. A hyperslab is defined in this context a subset of a
global CCTK array, with its own dimension, origin, direction, and extents.
Another possible use of hyperslabs is the implementation of certain boundary
conditions (e.g. reflection). By having the boundary condition code calling
generic hyperslab get/put calls, it can be written without special knowledge
about driver specifics.
This thorn documentation describes the complete generic hyperslab API.
All routines use CCTK data types in their argument lists and as return codes
exclusively. This allows actual implementations of this API to be realized as
CCTK function aliases. Different hyperslab thorns can then implementing the API
using the same function names, and other thorns using the API can be independent
of the actual hyperslab thorns which are compiled in.
The current version of thorn PUGHSlab implements only parts of the CCTK hyperslab API. Please refer to section I4.4 for implementation details.
![]() ![]() ![]() ![]() Next: CCTK Hyperslab API Specification Up: PUGHSlab Previous: Abstract Contents |