MayaFlux 0.3.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 229 of file NDData.cpp.

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