MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ analyze_access_pattern()

std::unordered_map< std::string, std::any > MayaFlux::Kakshya::analyze_access_pattern ( const Region region,
const std::shared_ptr< SignalSourceContainer > &  container 
)

Determine optimal memory access pattern for region.

Parameters
regionRegion to analyze.
containerContainer providing layout information.
Returns
Recommended access pattern information.

Definition at line 76 of file ContainerUtils.cpp.

78{
79 std::unordered_map<std::string, std::any> analysis;
80
81 if (!container) {
82 throw std::invalid_argument("Container is null");
83 }
84
85 const auto dimensions = container->get_dimensions();
86 const auto memory_layout = container->get_memory_layout();
87
88 analysis["is_contiguous"] = is_region_access_contiguous(region, container);
89 analysis["memory_layout"] = static_cast<int>(memory_layout);
90
91 uint64_t region_size = 1;
92 for (size_t i = 0; i < region.start_coordinates.size() && i < region.end_coordinates.size(); ++i) {
93 region_size *= (region.end_coordinates[i] - region.start_coordinates[i] + 1);
94 }
95 analysis["region_size"] = region_size;
96
97 if (!dimensions.empty()) {
98 auto strides = calculate_strides(dimensions);
99 analysis["access_stride"] = strides[0]; // Primary dimension stride
100 }
101
102 return analysis;
103}
std::vector< uint64_t > end_coordinates
Ending frame index (inclusive)
Definition Region.hpp:72
std::vector< uint64_t > start_coordinates
Starting frame index (inclusive)
Definition Region.hpp:69

References calculate_strides(), MayaFlux::Kakshya::Region::end_coordinates, is_region_access_contiguous(), and MayaFlux::Kakshya::Region::start_coordinates.

+ Here is the call graph for this function: