Halide 19.0.0
Halide compiler and libraries
|
Namespaces | |
namespace | Constants |
namespace | Cuda |
namespace | Metal |
namespace | Qurt |
namespace | Synchronization |
namespace | Vulkan |
Classes | |
class | BlockAllocator |
Allocator class interface for managing large contiguous blocks of memory, which are then sub-allocated into smaller regions of memory. More... | |
struct | BlockRegion |
struct | BlockResource |
class | BlockStorage |
struct | CacheEntry |
struct | CpuFeatures |
struct | DefaultAllocatorFns |
struct | device_copy |
struct | halide_cond_with_spinning |
struct | HalideSystemAllocatorFns |
struct | HashMap |
class | LinkedList |
class | MemoryArena |
struct | MemoryBlock |
struct | MemoryBlockAllocatorFns |
struct | MemoryProperties |
struct | MemoryRange |
struct | MemoryRegion |
struct | MemoryRegionAllocatorFns |
struct | MemoryRequest |
class | PointerTable |
class | PrinterBase |
class | RegionAllocator |
Allocator class interface for sub-allocating a contiguous memory block into smaller regions of memory. More... | |
struct | ScopedMutexLock |
struct | ScopedSpinLock |
class | StringStorage |
class | StringTable |
struct | StringUtils |
struct | SystemMemoryAllocatorFns |
struct | THashMap |
struct | work |
struct | work_queue_t |
Typedefs | |
typedef void(* | copy_value_func) (uint8_t *dst, const uint8_t *src, size_t size) |
typedef void(* | destroy_value_func) (uint8_t *value, size_t size) |
typedef void *(* | AllocateSystemFn) (void *, size_t) |
typedef void(* | DeallocateSystemFn) (void *, void *) |
typedef int(* | AllocateBlockFn) (void *, MemoryBlock *) |
typedef int(* | DeallocateBlockFn) (void *, MemoryBlock *) |
typedef int(* | ConformBlockRequestFn) (void *, MemoryRequest *) |
typedef int(* | AllocateRegionFn) (void *, MemoryRegion *) |
typedef int(* | DeallocateRegionFn) (void *, MemoryRegion *) |
typedef int(* | ConformBlockRegionFn) (void *, MemoryRequest *) |
Enumerations | |
enum class | AllocationStatus { InvalidStatus , InUse , Available , Purgeable , Dedicated } |
enum class | MemoryVisibility { InvalidVisibility , HostOnly , DeviceOnly , DeviceToHost , HostToDevice , DefaultVisibility } |
enum class | MemoryUsage { InvalidUsage , StaticStorage , DynamicStorage , UniformStorage , TransferSrc , TransferDst , TransferSrcDst , DefaultUsage } |
enum class | MemoryCaching { InvalidCaching , Cached , Uncached , CachedCoherent , UncachedCoherent , DefaultCaching } |
enum | PrinterType { BasicPrinterType = 0 , ErrorPrinterType = 1 , StringStreamPrinterType = 2 } |
typedef void *(* Halide::Runtime::Internal::AllocateSystemFn) (void *, size_t) |
Definition at line 182 of file memory_resources.h.
typedef void(* Halide::Runtime::Internal::DeallocateSystemFn) (void *, void *) |
Definition at line 183 of file memory_resources.h.
typedef int(* Halide::Runtime::Internal::AllocateBlockFn) (void *, MemoryBlock *) |
Definition at line 203 of file memory_resources.h.
typedef int(* Halide::Runtime::Internal::DeallocateBlockFn) (void *, MemoryBlock *) |
Definition at line 204 of file memory_resources.h.
typedef int(* Halide::Runtime::Internal::ConformBlockRequestFn) (void *, MemoryRequest *) |
Definition at line 205 of file memory_resources.h.
typedef int(* Halide::Runtime::Internal::AllocateRegionFn) (void *, MemoryRegion *) |
Definition at line 213 of file memory_resources.h.
typedef int(* Halide::Runtime::Internal::DeallocateRegionFn) (void *, MemoryRegion *) |
Definition at line 214 of file memory_resources.h.
typedef int(* Halide::Runtime::Internal::ConformBlockRegionFn) (void *, MemoryRequest *) |
Definition at line 215 of file memory_resources.h.
|
strong |
Enumerator | |
---|---|
InvalidStatus | |
InUse | |
Available | |
Purgeable | |
Dedicated |
Definition at line 14 of file memory_resources.h.
|
strong |
Enumerator | |
---|---|
InvalidVisibility | |
HostOnly | |
DeviceOnly | |
DeviceToHost | |
HostToDevice | |
DefaultVisibility |
Definition at line 24 of file memory_resources.h.
|
strong |
Enumerator | |
---|---|
InvalidUsage | |
StaticStorage | |
DynamicStorage | |
UniformStorage | |
TransferSrc | |
TransferDst | |
TransferSrcDst | |
DefaultUsage |
Definition at line 35 of file memory_resources.h.
|
strong |
Enumerator | |
---|---|
InvalidCaching | |
Cached | |
Uncached | |
CachedCoherent | |
UncachedCoherent | |
DefaultCaching |
Definition at line 47 of file memory_resources.h.
|
extern |
WEAK void Halide::Runtime::Internal::copy_memory_helper | ( | const device_copy & | copy, |
int | d, | ||
int64_t | src_off, | ||
int64_t | dst_off ) |
Definition at line 47 of file device_buffer_utils.h.
References Halide::Runtime::Internal::device_copy::chunk_size, copy_memory_helper(), Halide::Runtime::Internal::device_copy::dst, Halide::Runtime::Internal::device_copy::dst_stride_bytes, Halide::Runtime::Internal::device_copy::extent, MAX_COPY_DIMS, memcpy(), Halide::Runtime::Internal::device_copy::src, and Halide::Runtime::Internal::device_copy::src_stride_bytes.
Referenced by copy_memory(), and copy_memory_helper().
WEAK void Halide::Runtime::Internal::copy_memory | ( | const device_copy & | copy, |
void * | user_context ) |
Definition at line 70 of file device_buffer_utils.h.
References copy_memory_helper(), Halide::Runtime::Internal::device_copy::dst, MAX_COPY_DIMS, Halide::Runtime::Internal::device_copy::src, Halide::Runtime::Internal::device_copy::src_begin, and user_context.
WEAK device_copy Halide::Runtime::Internal::make_buffer_copy | ( | const halide_buffer_t * | src, |
bool | src_host, | ||
const halide_buffer_t * | dst, | ||
bool | dst_host ) |
Definition at line 80 of file device_buffer_utils.h.
References Halide::Runtime::Internal::device_copy::chunk_size, halide_buffer_t::device, halide_buffer_t::dim, halide_buffer_t::dimensions, Halide::Runtime::Internal::device_copy::dst, Halide::Runtime::Internal::device_copy::dst_stride_bytes, Halide::Runtime::Internal::device_copy::extent, halide_dimension_t::extent, halide_buffer_t::host, MAX_COPY_DIMS, halide_dimension_t::min, Halide::Runtime::Internal::device_copy::src, Halide::Runtime::Internal::device_copy::src_begin, Halide::Runtime::Internal::device_copy::src_stride_bytes, halide_dimension_t::stride, and halide_buffer_t::type.
Referenced by make_device_to_host_copy(), and make_host_to_device_copy().
WEAK device_copy Halide::Runtime::Internal::make_host_to_device_copy | ( | const halide_buffer_t * | buf | ) |
Definition at line 168 of file device_buffer_utils.h.
References make_buffer_copy().
WEAK device_copy Halide::Runtime::Internal::make_device_to_host_copy | ( | const halide_buffer_t * | buf | ) |
Definition at line 172 of file device_buffer_utils.h.
References make_buffer_copy().
ALWAYS_INLINE int64_t Halide::Runtime::Internal::calc_device_crop_byte_offset | ( | const struct halide_buffer_t * | src, |
struct halide_buffer_t * | dst ) |
Definition at line 177 of file device_buffer_utils.h.
References halide_buffer_t::dim, halide_buffer_t::dimensions, halide_dimension_t::min, halide_dimension_t::stride, and halide_buffer_t::type.
ALWAYS_INLINE int64_t Halide::Runtime::Internal::calc_device_slice_byte_offset | ( | const struct halide_buffer_t * | src, |
int | slice_dim, | ||
int | slice_pos ) |
Definition at line 188 of file device_buffer_utils.h.
References halide_buffer_t::dim, halide_dimension_t::min, halide_dimension_t::stride, and halide_buffer_t::type.
bool Halide::Runtime::Internal::any_zero | ( | const Container & | c | ) |
Definition at line 149 of file HalideBuffer.h.
Referenced by Halide::Runtime::Buffer< T, Dims, InClassDimStorage >::Buffer(), Halide::Runtime::Buffer< T, Dims, InClassDimStorage >::Buffer(), and Halide::Runtime::Buffer< T, Dims, InClassDimStorage >::Buffer().
|
inline |
Definition at line 26 of file hashmap.h.
References memcmp().
Referenced by Halide::Runtime::Internal::HashMap::lookup(), and Halide::Runtime::Internal::HashMap::store().
Definition at line 30 of file hashmap.h.
Referenced by Halide::Runtime::Internal::HashMap::lookup(), and Halide::Runtime::Internal::HashMap::store().
ALWAYS_INLINE bool Halide::Runtime::Internal::is_power_of_two_alignment | ( | size_t | x | ) |
Definition at line 122 of file memory_resources.h.
Referenced by aligned_offset().
ALWAYS_INLINE size_t Halide::Runtime::Internal::aligned_offset | ( | size_t | offset, |
size_t | alignment ) |
Definition at line 128 of file memory_resources.h.
References halide_abort_if_false, and is_power_of_two_alignment().
Referenced by aligned_size(), Halide::Runtime::Internal::RegionAllocator::conform(), and Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::conform().
ALWAYS_INLINE size_t Halide::Runtime::Internal::conform_alignment | ( | size_t | requested, |
size_t | required ) |
Definition at line 135 of file memory_resources.h.
References Halide::max().
Referenced by Halide::Runtime::Internal::RegionAllocator::conform(), and Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::conform().
ALWAYS_INLINE size_t Halide::Runtime::Internal::aligned_size | ( | size_t | offset, |
size_t | size, | ||
size_t | alignment ) |
Definition at line 142 of file memory_resources.h.
References aligned_offset().
Referenced by conform_size().
ALWAYS_INLINE size_t Halide::Runtime::Internal::conform_size | ( | size_t | offset, |
size_t | size, | ||
size_t | alignment, | ||
size_t | nearest_multiple ) |
Definition at line 151 of file memory_resources.h.
References aligned_size().
Referenced by Halide::Runtime::Internal::RegionAllocator::conform(), and Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::conform().
ALWAYS_INLINE size_t Halide::Runtime::Internal::clamped_size | ( | size_t | value, |
size_t | min_value, | ||
size_t | max_value ) |
Definition at line 163 of file memory_resources.h.
ALWAYS_INLINE const void * Halide::Runtime::Internal::offset_address | ( | const void * | address, |
size_t | byte_offset ) |
Definition at line 169 of file memory_resources.h.
Referenced by Halide::Runtime::Internal::BlockStorage::back(), Halide::Runtime::Internal::BlockStorage::back(), Halide::Runtime::Internal::BlockStorage::insert(), Halide::Runtime::Internal::BlockStorage::operator[](), Halide::Runtime::Internal::BlockStorage::operator[](), Halide::Runtime::Internal::MemoryArena::reclaim(), Halide::Runtime::Internal::BlockStorage::remove(), and Halide::Runtime::Internal::BlockStorage::replace().
ALWAYS_INLINE void * Halide::Runtime::Internal::offset_address | ( | void * | address, |
size_t | byte_offset ) |
Definition at line 175 of file memory_resources.h.
ALWAYS_INLINE void * Halide::Runtime::Internal::native_system_malloc | ( | void * | user_context, |
size_t | bytes ) |
Definition at line 185 of file memory_resources.h.
References malloc().
Referenced by Halide::Runtime::Internal::BlockStorage::default_allocator(), and Halide::Runtime::Internal::PointerTable::default_allocator().
ALWAYS_INLINE void Halide::Runtime::Internal::native_system_free | ( | void * | user_context, |
void * | ptr ) |
Definition at line 189 of file memory_resources.h.
References free().
Referenced by Halide::Runtime::Internal::BlockStorage::default_allocator(), and Halide::Runtime::Internal::PointerTable::default_allocator().
Definition at line 42 of file objc_support.h.
References objc_getClass(), objc_msgSend(), and sel_getUid().
Definition at line 50 of file objc_support.h.
References objc_msgSend(), and sel_getUid().
Definition at line 56 of file objc_support.h.
References objc_msgSend(), and sel_getUid().
Definition at line 62 of file objc_support.h.
References objc_msgSend(), and sel_getUid().
Referenced by ns_log_object(), and ns_log_utf8_string().
WEAK objc_id Halide::Runtime::Internal::wrap_string_as_ns_string | ( | const char * | string, |
size_t | length ) |
Definition at line 68 of file objc_support.h.
References objc_getClass(), objc_msgSend(), and sel_getUid().
Referenced by ns_log_object(), and ns_log_utf8_string().
size_t Halide::Runtime::Internal::strlen | ( | const char * | string | ) |
Referenced by Halide::Runtime::Internal::StringStorage::append(), Halide::Runtime::Internal::StringStorage::assign(), Halide::Runtime::Internal::StringTable::assign(), Halide::Runtime::Internal::StringUtils::contains(), Halide::Runtime::Internal::StringUtils::count_tokens(), ns_log_utf8_string(), Halide::Runtime::Internal::StringTable::parse(), and Halide::Runtime::Internal::StringStorage::prepend().
WEAK void Halide::Runtime::Internal::ns_log_utf8_string | ( | const char * | string | ) |
Definition at line 80 of file objc_support.h.
References NSLog(), release_ns_object(), strlen(), and wrap_string_as_ns_string().
Definition at line 88 of file objc_support.h.
References NSLog(), release_ns_object(), and wrap_string_as_ns_string().
ALWAYS_INLINE int Halide::Runtime::Internal::clamp_num_threads | ( | int | threads | ) |
Definition at line 125 of file thread_pool_common.h.
Referenced by enqueue_work_already_locked(), and halide_set_num_threads().
WEAK int Halide::Runtime::Internal::default_desired_num_threads | ( | ) |
Definition at line 135 of file thread_pool_common.h.
References atoi(), getenv(), and halide_host_cpu_count().
Referenced by enqueue_work_already_locked(), and halide_set_num_threads().
WEAK void Halide::Runtime::Internal::worker_thread | ( | void * | arg | ) |
Definition at line 474 of file thread_pool_common.h.
References halide_mutex_lock(), halide_mutex_unlock(), Halide::Runtime::Internal::work_queue_t::mutex, work_queue, and worker_thread_already_locked().
Referenced by enqueue_work_already_locked().
Definition at line 256 of file thread_pool_common.h.
References Halide::Runtime::Internal::work_queue_t::a_team_size, Halide::Runtime::Internal::work::active_workers, Halide::Runtime::Internal::halide_cond_with_spinning::broadcast(), halide_parallel_task_t::closure, dump_job_state, Halide::Runtime::Internal::work::exit_status, halide_parallel_task_t::extent, halide_parallel_task_t::fn, halide_do_loop_task(), halide_do_task(), halide_error_code_success, halide_mutex_lock(), halide_mutex_unlock(), Halide::Runtime::Internal::work_queue_t::jobs, log_message, Halide::Runtime::Internal::work::make_runnable(), halide_parallel_task_t::min, halide_parallel_task_t::min_threads, Halide::Runtime::Internal::work_queue_t::mutex, halide_parallel_task_t::name, Halide::Runtime::Internal::work::next_job, Halide::Runtime::Internal::work::owner_is_sleeping, Halide::Runtime::Internal::work_queue_t::owners_sleeping, Halide::Runtime::Internal::work::parent_job, print_job, Halide::Runtime::Internal::work::running(), halide_parallel_task_t::serial, Halide::Runtime::Internal::work_queue_t::shutdown, Halide::Runtime::Internal::work::sibling_count, Halide::Runtime::Internal::work::siblings, Halide::Runtime::Internal::work_queue_t::target_a_team_size, Halide::Runtime::Internal::work::task, Halide::Runtime::Internal::work::task_fn, Halide::Runtime::Internal::work_queue_t::threads_created, Halide::Runtime::Internal::work::threads_reserved, Halide::Runtime::Internal::work_queue_t::threads_reserved, Halide::Runtime::Internal::work::user_context, Halide::Runtime::Internal::halide_cond_with_spinning::wait(), Halide::Runtime::Internal::work_queue_t::wake_a_team, Halide::Runtime::Internal::work_queue_t::wake_b_team, Halide::Runtime::Internal::work_queue_t::wake_owners, work_queue, and Halide::Runtime::Internal::work_queue_t::workers_sleeping.
Referenced by halide_default_do_par_for(), halide_default_do_parallel_tasks(), and worker_thread().
WEAK void Halide::Runtime::Internal::enqueue_work_already_locked | ( | int | num_jobs, |
work * | jobs, | ||
work * | task_parent ) |
Definition at line 480 of file thread_pool_common.h.
References Halide::Runtime::Internal::work_queue_t::a_team_size, Halide::Runtime::Internal::work::active_workers, Halide::Runtime::Internal::work_queue_t::assert_zeroed(), Halide::Runtime::Internal::halide_cond_with_spinning::broadcast(), clamp_num_threads(), default_desired_num_threads(), Halide::Runtime::Internal::work_queue_t::desired_threads_working, halide_parallel_task_t::extent, halide_abort_if_false, halide_spawn_thread(), Halide::Runtime::Internal::work_queue_t::initialized, Halide::Runtime::Internal::work_queue_t::jobs, log_message, halide_parallel_task_t::min_threads, halide_parallel_task_t::name, Halide::Runtime::Internal::work::next_job, Halide::Runtime::Internal::work_queue_t::owners_sleeping, Halide::Runtime::Internal::work::sibling_count, Halide::Runtime::Internal::work::siblings, Halide::Runtime::Internal::work_queue_t::target_a_team_size, Halide::Runtime::Internal::work::task, Halide::Runtime::Internal::work_queue_t::threads, Halide::Runtime::Internal::work_queue_t::threads_created, Halide::Runtime::Internal::work::threads_reserved, Halide::Runtime::Internal::work_queue_t::threads_reserved, Halide::Runtime::Internal::work_queue_t::wake_a_team, Halide::Runtime::Internal::work_queue_t::wake_b_team, Halide::Runtime::Internal::work_queue_t::wake_owners, work_queue, worker_thread(), and Halide::Runtime::Internal::work_queue_t::workers_sleeping.
Referenced by halide_default_do_par_for(), and halide_default_do_parallel_tasks().
size_t Halide::Runtime::Internal::get_allocated_system_memory | ( | ) |
void * Halide::Runtime::Internal::allocate_system | ( | void * | user_context, |
size_t | bytes ) |
void Halide::Runtime::Internal::deallocate_system | ( | void * | user_context, |
void * | aligned_ptr ) |
|
constexpr |
WEAK work_queue_t Halide::Runtime::Internal::work_queue = {} |
Definition at line 219 of file thread_pool_common.h.
Referenced by enqueue_work_already_locked(), halide_default_do_par_for(), halide_default_do_parallel_tasks(), halide_default_semaphore_release(), halide_get_num_threads(), halide_set_num_threads(), halide_shutdown_thread_pool(), worker_thread(), and worker_thread_already_locked().
WEAK halide_do_task_t Halide::Runtime::Internal::custom_do_task = halide_default_do_task |
Definition at line 608 of file thread_pool_common.h.
Referenced by halide_do_task(), halide_set_custom_do_task(), and halide_set_custom_parallel_runtime().
WEAK halide_do_loop_task_t Halide::Runtime::Internal::custom_do_loop_task = halide_default_do_loop_task |
Definition at line 609 of file thread_pool_common.h.
Referenced by halide_do_loop_task(), halide_set_custom_do_loop_task(), and halide_set_custom_parallel_runtime().
WEAK halide_do_par_for_t Halide::Runtime::Internal::custom_do_par_for = halide_default_do_par_for |
Definition at line 610 of file thread_pool_common.h.
Referenced by halide_do_par_for(), halide_set_custom_do_par_for(), and halide_set_custom_parallel_runtime().
WEAK halide_do_parallel_tasks_t Halide::Runtime::Internal::custom_do_parallel_tasks = halide_default_do_parallel_tasks |
Definition at line 611 of file thread_pool_common.h.
Referenced by halide_do_parallel_tasks(), and halide_set_custom_parallel_runtime().
WEAK halide_semaphore_init_t Halide::Runtime::Internal::custom_semaphore_init = halide_default_semaphore_init |
Definition at line 612 of file thread_pool_common.h.
Referenced by halide_semaphore_init(), and halide_set_custom_parallel_runtime().
WEAK halide_semaphore_try_acquire_t Halide::Runtime::Internal::custom_semaphore_try_acquire = halide_default_semaphore_try_acquire |
Definition at line 613 of file thread_pool_common.h.
Referenced by halide_semaphore_try_acquire(), and halide_set_custom_parallel_runtime().
WEAK halide_semaphore_release_t Halide::Runtime::Internal::custom_semaphore_release = halide_default_semaphore_release |
Definition at line 614 of file thread_pool_common.h.
Referenced by halide_semaphore_release(), and halide_set_custom_parallel_runtime().