Halide 17.0.2
Halide compiler and libraries
|
Vulkan Memory Allocator class interface for managing large memory requests stored as contiguous blocks of memory, which are then sub-allocated into smaller regions of memory to avoid the excessive cost of vkAllocate and the limited number of available allocation calls through the API. More...
#include <vulkan_memory.h>
Public Member Functions | |
VulkanMemoryAllocator (const VulkanMemoryAllocator &)=delete | |
VulkanMemoryAllocator & | operator= (const VulkanMemoryAllocator &)=delete |
VulkanMemoryAllocator ()=delete | |
~VulkanMemoryAllocator ()=delete | |
MemoryRegion * | reserve (void *user_context, const MemoryRequest &request) |
int | conform (void *user_context, MemoryRequest *request) |
int | release (void *user_context, MemoryRegion *region) |
int | reclaim (void *user_context, MemoryRegion *region) |
int | retain (void *user_context, MemoryRegion *region) |
bool | collect (void *user_context) |
int | release (void *user_context) |
int | destroy (void *user_context) |
void * | map (void *user_context, MemoryRegion *region) |
int | unmap (void *user_context, MemoryRegion *region) |
MemoryRegion * | create_crop (void *user_context, MemoryRegion *region, uint64_t offset) |
int | destroy_crop (void *user_context, MemoryRegion *region) |
MemoryRegion * | owner_of (void *user_context, MemoryRegion *region) |
VkDevice | current_device () const |
VkPhysicalDevice | current_physical_device () const |
const VkAllocationCallbacks * | callbacks () const |
size_t | bytes_allocated_for_blocks () const |
size_t | blocks_allocated () const |
size_t | bytes_allocated_for_regions () const |
size_t | regions_allocated () const |
Static Public Member Functions | |
static VulkanMemoryAllocator * | create (void *user_context, const VulkanMemoryConfig &config, VkDevice dev, VkPhysicalDevice phys_dev, const SystemMemoryAllocatorFns &system_allocator, const VkAllocationCallbacks *alloc_callbacks=nullptr) |
static int | destroy (void *user_context, VulkanMemoryAllocator *allocator) |
static const VulkanMemoryConfig & | default_config () |
static int | allocate_block (void *instance_ptr, MemoryBlock *block) |
static int | deallocate_block (void *instance_ptr, MemoryBlock *block) |
static int | conform_block_request (void *instance_ptr, MemoryRequest *request) |
static int | allocate_region (void *instance_ptr, MemoryRegion *region) |
static int | deallocate_region (void *instance_ptr, MemoryRegion *region) |
static int | conform_region_request (void *instance_ptr, MemoryRequest *request) |
Vulkan Memory Allocator class interface for managing large memory requests stored as contiguous blocks of memory, which are then sub-allocated into smaller regions of memory to avoid the excessive cost of vkAllocate and the limited number of available allocation calls through the API.
Definition at line 42 of file vulkan_memory.h.
|
delete |
|
delete |
|
delete |
|
delete |
|
static |
Definition at line 134 of file vulkan_memory.h.
References Halide::Runtime::Internal::SystemMemoryAllocatorFns::allocate.
|
static |
Definition at line 156 of file vulkan_memory.h.
References Halide::Runtime::Internal::BlockAllocator::current_allocators(), Halide::Runtime::Internal::SystemMemoryAllocatorFns::deallocate, Halide::Runtime::Internal::BlockAllocator::destroy(), destroy(), halide_error_code_internal_error, halide_error_code_success, and Halide::Runtime::Internal::BlockAllocator::MemoryAllocators::system.
Referenced by destroy().
MemoryRegion * Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::reserve | ( | void * | user_context, |
const MemoryRequest & | request ) |
Definition at line 210 of file vulkan_memory.h.
References Halide::Runtime::Internal::BlockAllocator::reserve(), and Halide::Runtime::Internal::MemoryRequest::size.
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::conform | ( | void * | user_context, |
MemoryRequest * | request ) |
Definition at line 849 of file vulkan_memory.h.
References Halide::Runtime::Internal::aligned_offset(), Halide::Runtime::Internal::MemoryRequest::alignment, VkMemoryRequirements::alignment, Halide::Runtime::Internal::conform_alignment(), Halide::Runtime::Internal::conform_size(), halide_error_code_success, VkPhysicalDeviceLimits::minStorageBufferOffsetAlignment, VkPhysicalDeviceLimits::minUniformBufferOffsetAlignment, Halide::Runtime::Internal::MemoryProperties::nearest_multiple, Halide::Runtime::Internal::Vulkan::VulkanMemoryConfig::nearest_multiple, Halide::Runtime::Internal::MemoryRequest::offset, Halide::Runtime::Internal::MemoryRequest::properties, Halide::Runtime::Internal::MemoryRequest::size, VkMemoryRequirements::size, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, and VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT.
Referenced by conform_region_request().
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::release | ( | void * | user_context, |
MemoryRegion * | region ) |
Definition at line 430 of file vulkan_memory.h.
References halide_error_code_generic_error, Halide::Runtime::Internal::MemoryRegion::offset, Halide::Runtime::Internal::BlockAllocator::release(), and Halide::Runtime::Internal::MemoryRegion::size.
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::reclaim | ( | void * | user_context, |
MemoryRegion * | region ) |
Definition at line 449 of file vulkan_memory.h.
References halide_error_code_generic_error, Halide::Runtime::Internal::MemoryRegion::offset, Halide::Runtime::Internal::BlockAllocator::reclaim(), and Halide::Runtime::Internal::MemoryRegion::size.
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::retain | ( | void * | user_context, |
MemoryRegion * | region ) |
Definition at line 468 of file vulkan_memory.h.
References halide_error_code_generic_error, Halide::Runtime::Internal::MemoryRegion::offset, Halide::Runtime::Internal::BlockAllocator::retain(), and Halide::Runtime::Internal::MemoryRegion::size.
bool Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::collect | ( | void * | user_context | ) |
Definition at line 487 of file vulkan_memory.h.
References Halide::Runtime::Internal::BlockAllocator::collect().
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::release | ( | void * | user_context | ) |
Definition at line 498 of file vulkan_memory.h.
References halide_error_code_generic_error, and Halide::Runtime::Internal::BlockAllocator::release().
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::destroy | ( | void * | user_context | ) |
Definition at line 515 of file vulkan_memory.h.
References Halide::Runtime::Internal::BlockAllocator::destroy(), and halide_error_code_success.
void * Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::map | ( | void * | user_context, |
MemoryRegion * | region ) |
Definition at line 233 of file vulkan_memory.h.
References Halide::Runtime::Internal::RegionAllocator::block_resource(), Halide::Runtime::Internal::RegionAllocator::find_allocator(), Halide::Runtime::Internal::MemoryBlock::handle, Halide::Runtime::Internal::MemoryRange::head_offset, Halide::Runtime::Internal::BlockResource::memory, Halide::Runtime::Internal::MemoryRegion::offset, owner_of(), Halide::Runtime::Internal::MemoryRegion::range, Halide::Runtime::Internal::MemoryRegion::size, Halide::Runtime::Internal::MemoryRange::tail_offset, VK_SUCCESS, and vkMapMemory().
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::unmap | ( | void * | user_context, |
MemoryRegion * | region ) |
Definition at line 299 of file vulkan_memory.h.
References Halide::Runtime::Internal::RegionAllocator::block_resource(), Halide::Runtime::Internal::RegionAllocator::find_allocator(), halide_error_code_generic_error, halide_error_code_internal_error, halide_error_code_success, Halide::Runtime::Internal::MemoryBlock::handle, Halide::Runtime::Internal::MemoryRange::head_offset, Halide::Runtime::Internal::BlockResource::memory, Halide::Runtime::Internal::MemoryRegion::offset, owner_of(), Halide::Runtime::Internal::MemoryRegion::range, Halide::Runtime::Internal::MemoryRegion::size, and vkUnmapMemory().
MemoryRegion * Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::create_crop | ( | void * | user_context, |
MemoryRegion * | region, | ||
uint64_t | offset ) |
Definition at line 338 of file vulkan_memory.h.
References Halide::Runtime::Internal::SystemMemoryAllocatorFns::allocate, Halide::Runtime::Internal::BlockAllocator::current_allocators(), Halide::Runtime::Internal::RegionAllocator::find_allocator(), halide_error_code_success, Halide::Runtime::Internal::MemoryRegion::handle, Halide::Runtime::Internal::MemoryRange::head_offset, Halide::Runtime::Internal::MemoryRegion::is_owner, memcpy(), Halide::Runtime::Internal::MemoryRegion::offset, owner_of(), Halide::Runtime::Internal::MemoryRegion::range, Halide::Runtime::Internal::RegionAllocator::retain(), Halide::Runtime::Internal::MemoryRegion::size, and Halide::Runtime::Internal::BlockAllocator::MemoryAllocators::system.
int Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::destroy_crop | ( | void * | user_context, |
MemoryRegion * | region ) |
Definition at line 391 of file vulkan_memory.h.
References Halide::Runtime::Internal::BlockAllocator::current_allocators(), Halide::Runtime::Internal::SystemMemoryAllocatorFns::deallocate, Halide::Runtime::Internal::RegionAllocator::find_allocator(), halide_error_code_generic_error, halide_error_code_internal_error, halide_error_code_success, owner_of(), Halide::Runtime::Internal::RegionAllocator::release(), and Halide::Runtime::Internal::BlockAllocator::MemoryAllocators::system.
MemoryRegion * Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::owner_of | ( | void * | user_context, |
MemoryRegion * | region ) |
Definition at line 421 of file vulkan_memory.h.
References Halide::Runtime::Internal::MemoryRegion::handle, and Halide::Runtime::Internal::MemoryRegion::is_owner.
Referenced by create_crop(), destroy_crop(), map(), and unmap().
|
inline |
Definition at line 76 of file vulkan_memory.h.
|
inline |
Definition at line 79 of file vulkan_memory.h.
|
inline |
Definition at line 82 of file vulkan_memory.h.
|
static |
Definition at line 531 of file vulkan_memory.h.
|
static |
Definition at line 611 of file vulkan_memory.h.
References Halide::Runtime::Internal::MemoryProperties::caching, Halide::Runtime::Internal::MemoryBlock::dedicated, halide_error_code_device_malloc_failed, halide_error_code_generic_error, halide_error_code_internal_error, halide_error_code_out_of_memory, halide_error_code_success, halide_memory_caching_name(), halide_memory_usage_name(), halide_memory_visibility_name(), Halide::Runtime::Internal::MemoryBlock::handle, Halide::Runtime::Internal::MemoryBlock::properties, Halide::Runtime::Internal::MemoryBlock::size, Halide::Runtime::Internal::MemoryProperties::usage, Halide::Runtime::Internal::MemoryProperties::visibility, VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, VK_SUCCESS, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT, and vkAllocateMemory().
|
static |
Definition at line 675 of file vulkan_memory.h.
References Halide::Runtime::Internal::MemoryProperties::caching, Halide::Runtime::Internal::MemoryBlock::dedicated, halide_error_code_internal_error, halide_error_code_success, halide_memory_caching_name(), halide_memory_usage_name(), halide_memory_visibility_name(), Halide::Runtime::Internal::MemoryBlock::handle, Halide::Runtime::Internal::MemoryBlock::properties, Halide::Runtime::Internal::MemoryBlock::size, Halide::Runtime::Internal::MemoryProperties::usage, Halide::Runtime::Internal::MemoryProperties::visibility, and vkFreeMemory().
|
static |
Definition at line 569 of file vulkan_memory.h.
References Halide::Runtime::Internal::MemoryProperties::alignment, VkMemoryRequirements::alignment, Halide::Runtime::Internal::MemoryRequest::dedicated, halide_error_code_internal_error, halide_error_code_success, VkPhysicalDeviceLimits::minStorageBufferOffsetAlignment, VkPhysicalDeviceLimits::minUniformBufferOffsetAlignment, Halide::Runtime::Internal::MemoryRequest::properties, Halide::Runtime::Internal::MemoryRequest::size, and VkMemoryRequirements::size.
|
static |
Definition at line 941 of file vulkan_memory.h.
References VkMemoryRequirements::alignment, Halide::Runtime::Internal::RegionAllocator::block_resource(), Halide::Runtime::Internal::MemoryProperties::caching, Halide::Runtime::Internal::MemoryRegion::dedicated, Halide::Runtime::Internal::RegionAllocator::find_allocator(), halide_error_code_device_malloc_failed, halide_error_code_generic_error, halide_error_code_internal_error, halide_error_code_out_of_memory, halide_error_code_success, halide_memory_caching_name(), halide_memory_usage_name(), halide_memory_visibility_name(), Halide::Runtime::Internal::MemoryBlock::handle, Halide::Runtime::Internal::MemoryRegion::handle, Halide::Runtime::Internal::MemoryRegion::is_owner, Halide::Runtime::Internal::BlockResource::memory, Halide::Runtime::Internal::MemoryRegion::offset, Halide::Runtime::Internal::MemoryRegion::properties, Halide::Runtime::Internal::MemoryRegion::size, VkBufferCreateInfo::size, VkMemoryRequirements::size, Halide::Runtime::Internal::MemoryProperties::usage, Halide::Runtime::Internal::MemoryProperties::visibility, VK_SHARING_MODE_EXCLUSIVE, VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, VK_SUCCESS, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT, vkBindBufferMemory(), vkCreateBuffer(), vkDestroyBuffer(), and vkGetBufferMemoryRequirements().
|
static |
Definition at line 1066 of file vulkan_memory.h.
References Halide::Runtime::Internal::MemoryProperties::caching, Halide::Runtime::Internal::MemoryRegion::dedicated, halide_error_code_internal_error, halide_error_code_success, halide_memory_caching_name(), halide_memory_usage_name(), halide_memory_visibility_name(), Halide::Runtime::Internal::MemoryRegion::handle, Halide::Runtime::Internal::MemoryRegion::offset, Halide::Runtime::Internal::MemoryRegion::properties, Halide::Runtime::Internal::MemoryRegion::size, Halide::Runtime::Internal::MemoryProperties::usage, Halide::Runtime::Internal::MemoryProperties::visibility, and vkDestroyBuffer().
|
static |
Definition at line 909 of file vulkan_memory.h.
References Halide::Runtime::Internal::MemoryProperties::caching, conform(), Halide::Runtime::Internal::MemoryRequest::dedicated, halide_error_code_internal_error, halide_memory_caching_name(), halide_memory_usage_name(), halide_memory_visibility_name(), Halide::Runtime::Internal::MemoryRequest::offset, Halide::Runtime::Internal::MemoryRequest::properties, Halide::Runtime::Internal::MemoryRequest::size, Halide::Runtime::Internal::MemoryProperties::usage, and Halide::Runtime::Internal::MemoryProperties::visibility.
size_t Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::bytes_allocated_for_blocks | ( | ) | const |
Definition at line 747 of file vulkan_memory.h.
size_t Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::blocks_allocated | ( | ) | const |
Definition at line 743 of file vulkan_memory.h.
size_t Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::bytes_allocated_for_regions | ( | ) | const |
Definition at line 1139 of file vulkan_memory.h.
size_t Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::regions_allocated | ( | ) | const |
Definition at line 1135 of file vulkan_memory.h.