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 271 of file NDData.cpp.

274{
275 if (shape.empty())
276 return {};
277
278 std::vector<uint64_t> strides(shape.size());
279
280 if (layout == MemoryLayout::ROW_MAJOR) {
281 auto reversed_shape = shape | std::views::reverse;
282 std::exclusive_scan(
283 reversed_shape.begin(),
284 reversed_shape.end(),
285 strides.rbegin(),
286 uint64_t(1),
287 std::multiplies<uint64_t> {});
288 } else {
289 std::exclusive_scan(
290 shape.begin(),
291 shape.end(),
292 strides.begin(),
293 uint64_t(1),
294 std::multiplies<uint64_t> {});
295 }
296
297 return strides;
298}
@ 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: