MayaFlux 0.4.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 244 of file RegionUtils.cpp.

246{
247 if (!container) {
248 return false;
249 }
250
251 const auto dimensions = container->get_dimensions();
252 const auto memory_layout = container->get_memory_layout();
253
254 // For row-major layout, contiguous access means the last dimension spans its full range
255 // For column-major layout, contiguous access means the first dimension spans its full range
256
257 if (memory_layout == MemoryLayout::ROW_MAJOR) {
258 if (!dimensions.empty() && !region.start_coordinates.empty() && !region.end_coordinates.empty()) {
259 size_t last_dim = dimensions.size() - 1;
260 return (region.start_coordinates[last_dim] == 0 && region.end_coordinates[last_dim] == dimensions[last_dim].size - 1);
261 }
262 } else if (memory_layout == MemoryLayout::COLUMN_MAJOR) {
263 if (!dimensions.empty() && !region.start_coordinates.empty() && !region.end_coordinates.empty()) {
264 return (region.start_coordinates[0] == 0 && region.end_coordinates[0] == dimensions[0].size - 1);
265 }
266 }
267
268 return false;
269}
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 COLUMN_MAJOR, MayaFlux::Kakshya::Region::end_coordinates, ROW_MAJOR, and MayaFlux::Kakshya::Region::start_coordinates.

Referenced by analyze_access_pattern().

+ Here is the caller graph for this function: