MayaFlux 0.5.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 317 of file NDData.cpp.

320{
321 if (shape.empty())
322 return {};
323
324 std::vector<uint64_t> strides(shape.size());
325
326 if (layout == MemoryLayout::ROW_MAJOR) {
327 auto reversed_shape = shape | std::views::reverse;
328 std::exclusive_scan(
329 reversed_shape.begin(),
330 reversed_shape.end(),
331 strides.rbegin(),
332 uint64_t(1),
333 std::multiplies<uint64_t> {});
334 } else {
335 std::exclusive_scan(
336 shape.begin(),
337 shape.end(),
338 strides.begin(),
339 uint64_t(1),
340 std::multiplies<uint64_t> {});
341 }
342
343 return strides;
344}
@ 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: