Sequential Requests

A data area may consist of a region that conforms to one type, followed by a region that conforms to another. Example might include a strided region where one wants to begin and/or end in the middle of a group, rather than have a integral number of whole groups, or may be two unrelated segments of data. For this, a sequence of PINT_Request structures is specified using the stype field to determine the sequence. The offset is specified relative to the beginning of the data area.

In this example we have a strided region shown in D. We want to start 8 bytes into the first group (yellow), then have 15 whole groups (blue), and finally end 4 bytes into the last group (green). Each group is 6 elements, and each element is a float (4 bytes). The stride between groups is 48 bytes (12 floats).

   FIRST-PTYPE:
      offset = OFFSET
      num_ereqs = 4
      stride = 1
      num_blocks = 1
      ub = 764
      lb = 0
      aggregate_size = 380
      depth = 1
      num_contig_chunks = 17
      etype = PVFS_Request_float
      stype = NEXT-PTYPE
   
   NEXT-PTYPE:
      offset = OFFSET + 40
      num_ereqs = 6
      stride = 48
      num_blocks = 15
      ub = 764
      lb = 40
      aggregate_size = 364
      depth = 1
      num_contig_chunks = 16
      etype = PVFS_Request_float
      stype = LAST-PTYPE
   
   LAST-PTYPE:
      offset = OFFSET + 760
      num_ereqs = 1
      stride = 1
      num_blocks = 1
      ub = 764
      lb = 760
      aggregate_size = 4
      depth = 1
      num_contig_chunks = 1
      etype = PVFS_Request_float
      stype = NULL

Note that ub, lb, aggregate_size, depth, and num_contig_chunks always refers to the region represented down stream of the current PINT_Request record, and not the whole region, however ub and lb are still expressed in terms of the entire data area.