You need to describe the data layout here.  How does the global layout map onto the local layout (both direct, and when accessed through maps).  Additionally, there's no description of the flatten optional argument to arg construction (and what that means for the data layout in the kernel).