MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ calculate_strides()

std::vector< uint64_t > MayaFlux::Kakshya::DataDimension::calculate_strides ( const std::vector< uint64_t > &  shape,
MemoryLayout  layout 
)
static

Calculate memory strides based on shape and layout.

Parameters
shapeDimensional sizes
layoutMemory layout strategy
Returns
Vector of stride values for each dimension

Definition at line 190 of file NDData.cpp.

193{
194 if (shape.empty())
195 return {};
196
197 std::vector<uint64_t> strides(shape.size());
198
199 if (layout == MemoryLayout::ROW_MAJOR) {
200 auto reversed_shape = shape | std::views::reverse;
201 std::exclusive_scan(
202 reversed_shape.begin(),
203 reversed_shape.end(),
204 strides.rbegin(),
205 1U,
206 std::multiplies<uint64_t> {});
207 } else {
208 std::exclusive_scan(
209 shape.begin(),
210 shape.end(),
211 strides.begin(),
212 1U,
213 std::multiplies<uint64_t> {});
214 }
215
216 return strides;
217}
@ ROW_MAJOR
C/C++ style (last dimension varies fastest)

References MayaFlux::Kakshya::ROW_MAJOR.

Referenced by create_dimensions().

+ Here is the caller graph for this function: