| CPC G06F 12/0802 (2013.01) [G06F 5/06 (2013.01); G06F 13/28 (2013.01); G06F 2212/1016 (2013.01)] | 20 Claims |

|
1. A computer-implemented method executed by one or more processing elements, comprising:
receiving, by a network interface card (NIC), a plurality of packets corresponding to a read request or a write request, wherein the packets are associated with a datatype descriptor stored in a datatype engine of the NIC,
wherein each packet is associated with a precomputed context which indicates a value for each dimension of a multi-dimensional array and a start location of the respective packet within a block of a host memory,
wherein the datatype descriptor comprises at least one of:
a representation of the multi-dimensional array which includes a number of elements in each dimension, a size of a block to be transferred, and a stride in each dimension, wherein the representation of the multi-dimensional array indicates a handle to a previous datatype and a name for a new datatype; or
a reference to an input/output vector (IOVEC) which indicates addresses and lengths of data to be read from or written to the host memory;
generating, for a respective packet, a datatype handle corresponding to the datatype descriptor and an offset indicating a position of the respective packet within the plurality of packets;
determining, based on the datatype handle and the offset, that a context for the respective packet is cached;
initializing the datatype engine based on the cached context;
generating, by the datatype engine based on the precomputed and cached context, a plurality of read requests or write requests comprising addresses and lengths, thereby allowing the NIC to process out-of-order packets based on the precomputed and cached context; and
caching a current context when processing for the respective packet is complete.
|