Skip to content

Latest commit

 

History

History
32 lines (27 loc) · 1.41 KB

README.md

File metadata and controls

32 lines (27 loc) · 1.41 KB

coalesced_ptr

A smart pointer that automatically provides coalesced memory transcations for arrays of arbitrary structures. Given a structure T, of size S bytes, e.g.,

struct T {                                                                                                                     
  char a[S];                                                                                                                   
};

in an array with sites elements

T t[sites];

using a coalesced_ptr will split the structure for reading writing to memory as an array of structures of array of structures (AoSoAoS), where:

  • the inner structure size is given by memory_word_size
  • the inner array size is given by site_vector
  • the outer structure size is given by sizeof(T)/memory_word_size
  • the outer array size is given by sites/site_vector

If size_vector=0, then we do a full transposition with respect to the number of sites, and we have a structure of arrays of structures (SoAoS)

  • the inner structure size is given by memory_word_size
  • the array size is given by sites
  • the outer structure size is given by sizeof(T)/memory_word_size

Note that there is the implicit assumption that the structure size is uniform along all sites.