MayaFlux 1.0.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 289 of file NDData.cpp.

292{
293 if (shape.empty())
294 return {};
295
296 std::vector<uint64_t> strides(shape.size());
297
298 if (layout == MemoryLayout::ROW_MAJOR) {
299 auto reversed_shape = shape | std::views::reverse;
300 std::exclusive_scan(
301 reversed_shape.begin(),
302 reversed_shape.end(),
303 strides.rbegin(),
304 uint64_t(1),
305 std::multiplies<uint64_t> {});
306 } else {
307 std::exclusive_scan(
308 shape.begin(),
309 shape.end(),
310 strides.begin(),
311 uint64_t(1),
312 std::multiplies<uint64_t> {});
313 }
314
315 return strides;
316}
@ 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: