MayaFlux 0.2.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 228 of file NDData.cpp.

231{
232 if (shape.empty())
233 return {};
234
235 std::vector<uint64_t> strides(shape.size());
236
237 if (layout == MemoryLayout::ROW_MAJOR) {
238 auto reversed_shape = shape | std::views::reverse;
239 std::exclusive_scan(
240 reversed_shape.begin(),
241 reversed_shape.end(),
242 strides.rbegin(),
243 1U,
244 std::multiplies<uint64_t> {});
245 } else {
246 std::exclusive_scan(
247 shape.begin(),
248 shape.end(),
249 strides.begin(),
250 1U,
251 std::multiplies<uint64_t> {});
252 }
253
254 return strides;
255}
@ 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: