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

◆ is_region_access_contiguous()

bool MayaFlux::Kakshya::is_region_access_contiguous ( const Region region,
const std::shared_ptr< SignalSourceContainer > &  container 
)

Check if region access will be contiguous in memory.

Parameters
regionRegion to check.
containerContainer providing layout information.
Returns
True if access is contiguous, false otherwise.

Definition at line 225 of file RegionUtils.cpp.

227{
228 if (!container) {
229 return false;
230 }
231
232 const auto dimensions = container->get_dimensions();
233 const auto memory_layout = container->get_memory_layout();
234
235 // For row-major layout, contiguous access means the last dimension spans its full range
236 // For column-major layout, contiguous access means the first dimension spans its full range
237
238 if (memory_layout == MemoryLayout::ROW_MAJOR) {
239 if (!dimensions.empty() && !region.start_coordinates.empty() && !region.end_coordinates.empty()) {
240 size_t last_dim = dimensions.size() - 1;
241 return (region.start_coordinates[last_dim] == 0 && region.end_coordinates[last_dim] == dimensions[last_dim].size - 1);
242 }
243 } else if (memory_layout == MemoryLayout::COLUMN_MAJOR) {
244 if (!dimensions.empty() && !region.start_coordinates.empty() && !region.end_coordinates.empty()) {
245 return (region.start_coordinates[0] == 0 && region.end_coordinates[0] == dimensions[0].size - 1);
246 }
247 }
248
249 return false;
250}
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 MayaFlux::Kakshya::Region::end_coordinates, is_region_access_contiguous(), and MayaFlux::Kakshya::Region::start_coordinates.

Referenced by analyze_access_pattern(), and is_region_access_contiguous().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: