Loading...
Searching...
No Matches
Halide::Runtime::Internal Namespace Reference

## Namespaces

namespace | Constants
namespace | Metal
namespace | Cuda
namespace | Qurt
namespace | Synchronization
namespace | Vulkan

## Classes

struct | CpuFeatures
struct | device_copy
struct | DefaultAllocatorFns
struct | CacheEntry
struct | HashMap
struct | THashMap
class | BlockAllocator
| Allocator class interface for managing large contiguous blocks of memory, which are then sub-allocated into smaller regions of memory. More...
class | BlockStorage
class | LinkedList
class | MemoryArena
struct | MemoryProperties
struct | MemoryBlock
struct | MemoryRange
struct | MemoryRegion
struct | MemoryRequest
struct | BlockResource
struct | BlockRegion
struct | SystemMemoryAllocatorFns
struct | HalideSystemAllocatorFns
struct | MemoryBlockAllocatorFns
struct | MemoryRegionAllocatorFns
class | PointerTable
class | RegionAllocator
| Allocator class interface for sub-allocating a contiguous memory block into smaller regions of memory. More...
struct | StringUtils
class | StringStorage
class | StringTable
class | PrinterBase
struct | ScopedMutexLock
struct | ScopedSpinLock
struct | halide_cond_with_spinning
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 }

## Functions

ALWAYS_INLINE void | halide_set_known_cpu_feature (CpuFeatures *features, int i)
ALWAYS_INLINE void | halide_set_available_cpu_feature (CpuFeatures *features, int i)
ALWAYS_INLINE bool | halide_test_known_cpu_feature (CpuFeatures *features, int i)
ALWAYS_INLINE bool | halide_test_available_cpu_feature (CpuFeatures *features, int i)
WEAK int | halide_get_cpu_features (CpuFeatures *features)
WEAK void | copy_memory_helper (const device_copy &copy, int d, int64_t src_off, int64_t dst_off)
WEAK void | copy_memory (const device_copy &copy, void *user_context)
WEAK device_copy | make_buffer_copy (const halide_buffer_t *src, bool src_host, const halide_buffer_t *dst, bool dst_host)
WEAK device_copy | make_host_to_device_copy (const halide_buffer_t *buf)
WEAK device_copy | make_device_to_host_copy (const halide_buffer_t *buf)
ALWAYS_INLINE int64_t | calc_device_crop_byte_offset (const struct halide_buffer_t *src, struct halide_buffer_t *dst)
ALWAYS_INLINE int64_t | calc_device_slice_byte_offset (const struct halide_buffer_t *src, int slice_dim, int slice_pos)
template<typename Container>
bool | any_zero (const Container &c)
bool | keys_equal (const uint8_t *key1, const uint8_t *key2, size_t key_size)
uint32_t | djb_hash (const uint8_t *key, size_t key_size)
ALWAYS_INLINE bool | is_power_of_two_alignment (size_t x)
ALWAYS_INLINE size_t | aligned_offset (size_t offset, size_t alignment)
ALWAYS_INLINE size_t | conform_alignment (size_t requested, size_t required)
ALWAYS_INLINE size_t | aligned_size (size_t offset, size_t size, size_t alignment)
ALWAYS_INLINE size_t | conform_size (size_t offset, size_t size, size_t alignment, size_t nearest_multiple)
ALWAYS_INLINE size_t | clamped_size (size_t value, size_t min_value, size_t max_value)
ALWAYS_INLINE const void * | offset_address (const void *address, size_t byte_offset)
ALWAYS_INLINE void * | offset_address (void *address, size_t byte_offset)
ALWAYS_INLINE void * | native_system_malloc (void *user_context, size_t bytes)
ALWAYS_INLINE void | native_system_free (void *user_context, void *ptr)
WEAK objc_id | create_autorelease_pool ()
WEAK void | drain_autorelease_pool (objc_id pool)
WEAK void | retain_ns_object (objc_id obj)
WEAK void | release_ns_object (objc_id obj)
WEAK objc_id | wrap_string_as_ns_string (const char *string, size_t length)
size_t | strlen (const char *string)
WEAK void | ns_log_utf8_string (const char *string)
WEAK void | ns_log_object (objc_id obj)
ALWAYS_INLINE int | clamp_num_threads (int threads)
WEAK int | default_desired_num_threads ()
WEAK void | worker_thread (void *)
WEAK void | worker_thread_stall (work *owned_job)
WEAK void | worker_thread_idle ()
WEAK void | worker_thread_already_locked (work *owned_job)
WEAK void | enqueue_work_already_locked (int num_jobs, work *jobs, work *task_parent)
size_t | get_allocated_system_memory ()
void * | allocate_system (void *user_context, size_t bytes)
void | deallocate_system (void *user_context, void *aligned_ptr)

## Variables

constexpr uint64_t | default_printer_buffer_length = 1024
WEAK work_queue_t | work_queue = {}
WEAK halide_do_task_t | custom_do_task = halide_default_do_task
WEAK halide_do_loop_task_t | custom_do_loop_task = halide_default_do_loop_task
WEAK halide_do_par_for_t | custom_do_par_for = halide_default_do_par_for
WEAK halide_do_parallel_tasks_t | custom_do_parallel_tasks = halide_default_do_parallel_tasks
WEAK halide_semaphore_init_t | custom_semaphore_init = halide_default_semaphore_init
WEAK halide_semaphore_try_acquire_t | custom_semaphore_try_acquire = halide_default_semaphore_try_acquire
WEAK halide_semaphore_release_t | custom_semaphore_release = halide_default_semaphore_release

## Typedef Documentation

## copy_value_func

typedef void(* Halide::Runtime::Internal::copy_value_func) (uint8_t *dst, const uint8_t *src, size_t size)

Definition at line 38 of file hashmap.h.

## destroy_value_func

typedef void(* Halide::Runtime::Internal::destroy_value_func) (uint8_t *value, size_t size)

Definition at line 39 of file hashmap.h.

## AllocateSystemFn

typedef void *(* Halide::Runtime::Internal::AllocateSystemFn) (void *, size_t)

Definition at line 182 of file memory_resources.h.

## DeallocateSystemFn

typedef void(* Halide::Runtime::Internal::DeallocateSystemFn) (void *, void *)

Definition at line 183 of file memory_resources.h.

## AllocateBlockFn

typedef int(* Halide::Runtime::Internal::AllocateBlockFn) (void *, MemoryBlock *)

Definition at line 203 of file memory_resources.h.

## DeallocateBlockFn

typedef int(* Halide::Runtime::Internal::DeallocateBlockFn) (void *, MemoryBlock *)

Definition at line 204 of file memory_resources.h.

## ConformBlockRequestFn

typedef int(* Halide::Runtime::Internal::ConformBlockRequestFn) (void *, MemoryRequest *)

Definition at line 205 of file memory_resources.h.

## AllocateRegionFn

typedef int(* Halide::Runtime::Internal::AllocateRegionFn) (void *, MemoryRegion *)

Definition at line 213 of file memory_resources.h.

## DeallocateRegionFn

typedef int(* Halide::Runtime::Internal::DeallocateRegionFn) (void *, MemoryRegion *)

Definition at line 214 of file memory_resources.h.

## ConformBlockRegionFn

typedef int(* Halide::Runtime::Internal::ConformBlockRegionFn) (void *, MemoryRequest *)

Definition at line 215 of file memory_resources.h.

## Enumeration Type Documentation

## AllocationStatus

enum class Halide::Runtime::Internal::AllocationStatus

strong

Enumerator
InvalidStatus |
InUse |
Available |
Purgeable |
Dedicated |

Definition at line 14 of file memory_resources.h.

## MemoryVisibility

enum class Halide::Runtime::Internal::MemoryVisibility

strong

Enumerator
InvalidVisibility |
HostOnly |
DeviceOnly |
DeviceToHost |
HostToDevice |
DefaultVisibility |

Definition at line 24 of file memory_resources.h.

## MemoryUsage

enum class Halide::Runtime::Internal::MemoryUsage

strong

Enumerator
InvalidUsage |
StaticStorage |
DynamicStorage |
UniformStorage |
TransferSrc |
TransferDst |
TransferSrcDst |
DefaultUsage |

Definition at line 35 of file memory_resources.h.

## MemoryCaching

enum class Halide::Runtime::Internal::MemoryCaching

strong

Enumerator
InvalidCaching |
Cached |
Uncached |
CachedCoherent |
UncachedCoherent |
DefaultCaching |

Definition at line 47 of file memory_resources.h.

## PrinterType

enum Halide::Runtime::Internal::PrinterType

Enumerator
BasicPrinterType |
ErrorPrinterType |
StringStreamPrinterType |

Definition at line 21 of file printer.h.

## Function Documentation

## halide_set_known_cpu_feature()

ALWAYS_INLINE void Halide::Runtime::Internal::halide_set_known_cpu_feature | ( | CpuFeatures * | features,
|  | int | i )

Definition at line 23 of file cpu_features.h.

References ALWAYS_INLINE, and Halide::Runtime::Internal::CpuFeatures::known.

## halide_set_available_cpu_feature()

ALWAYS_INLINE void Halide::Runtime::Internal::halide_set_available_cpu_feature | ( | CpuFeatures * | features,
|  | int | i )

Definition at line 27 of file cpu_features.h.

References ALWAYS_INLINE, and Halide::Runtime::Internal::CpuFeatures::available.

## halide_test_known_cpu_feature()

ALWAYS_INLINE bool Halide::Runtime::Internal::halide_test_known_cpu_feature | ( | CpuFeatures * | features,
|  | int | i )

Definition at line 31 of file cpu_features.h.

References ALWAYS_INLINE, and Halide::Runtime::Internal::CpuFeatures::known.

## halide_test_available_cpu_feature()

ALWAYS_INLINE bool Halide::Runtime::Internal::halide_test_available_cpu_feature | ( | CpuFeatures * | features,
|  | int | i )

Definition at line 35 of file cpu_features.h.

References ALWAYS_INLINE, and Halide::Runtime::Internal::CpuFeatures::available.

## halide_get_cpu_features()

WEAK int Halide::Runtime::Internal::halide_get_cpu_features | ( | CpuFeatures * | features | ) |

References WEAK.

## copy_memory_helper()

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, Halide::Runtime::Internal::device_copy::src_stride_bytes, and WEAK.

Referenced by copy_memory(), and copy_memory_helper().

## copy_memory()

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(), debug, Halide::Runtime::Internal::device_copy::dst, Halide::Runtime::Internal::device_copy::dst_begin, MAX_COPY_DIMS, Halide::Runtime::Internal::device_copy::src, Halide::Runtime::Internal::device_copy::src_begin, and WEAK.

## make_buffer_copy()

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 85 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_begin, 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::min(), 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, halide_buffer_t::type, and WEAK.

Referenced by make_device_to_host_copy(), and make_host_to_device_copy().

## make_host_to_device_copy()

WEAK device_copy Halide::Runtime::Internal::make_host_to_device_copy | ( | const halide_buffer_t * | buf | ) |

Definition at line 180 of file device_buffer_utils.h.

References make_buffer_copy(), and WEAK.

## make_device_to_host_copy()

WEAK device_copy Halide::Runtime::Internal::make_device_to_host_copy | ( | const halide_buffer_t * | buf | ) |

Definition at line 184 of file device_buffer_utils.h.

References make_buffer_copy(), and WEAK.

## calc_device_crop_byte_offset()

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 189 of file device_buffer_utils.h.

References ALWAYS_INLINE, halide_buffer_t::dim, halide_buffer_t::dimensions, halide_dimension_t::min, halide_dimension_t::stride, and halide_buffer_t::type.

## calc_device_slice_byte_offset()

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 200 of file device_buffer_utils.h.

References ALWAYS_INLINE, halide_buffer_t::dim, halide_dimension_t::min, halide_dimension_t::stride, and halide_buffer_t::type.

## any_zero()

template<typename Container>

bool Halide::Runtime::Internal::any_zero | ( | const Container & | c | ) |

Definition at line 151 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().

## keys_equal()

bool Halide::Runtime::Internal::keys_equal | ( | const uint8_t * | key1,
|  | const uint8_t * | key2,
|  | size_t | key_size )

inline

Definition at line 26 of file hashmap.h.

References memcmp().

Referenced by Halide::Runtime::Internal::HashMap::lookup(), and Halide::Runtime::Internal::HashMap::store().

## djb_hash()

uint32_t Halide::Runtime::Internal::djb_hash | ( | const uint8_t * | key,
|  | size_t | key_size )

inline

Definition at line 30 of file hashmap.h.

Referenced by Halide::Runtime::Internal::HashMap::lookup(), and Halide::Runtime::Internal::HashMap::store().

## is_power_of_two_alignment()

ALWAYS_INLINE bool Halide::Runtime::Internal::is_power_of_two_alignment | ( | size_t | x | ) |

Definition at line 122 of file memory_resources.h.

References ALWAYS_INLINE.

Referenced by aligned_offset().

## 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 ALWAYS_INLINE, 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().

## conform_alignment()

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 ALWAYS_INLINE, and Halide::max().

Referenced by Halide::Runtime::Internal::RegionAllocator::conform(), and Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::conform().

## aligned_size()

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(), and ALWAYS_INLINE.

Referenced by conform_size().

## 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(), and ALWAYS_INLINE.

Referenced by Halide::Runtime::Internal::RegionAllocator::conform(), and Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::conform().

## clamped_size()

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.

References ALWAYS_INLINE.

## offset_address() [1/2]

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.

References ALWAYS_INLINE.

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().

## offset_address() [2/2]

ALWAYS_INLINE void * Halide::Runtime::Internal::offset_address | ( | void * | address,
|  | size_t | byte_offset )

Definition at line 175 of file memory_resources.h.

References ALWAYS_INLINE.

## native_system_malloc()

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 ALWAYS_INLINE, and malloc().

Referenced by Halide::Runtime::Internal::BlockStorage::default_allocator(), and Halide::Runtime::Internal::PointerTable::default_allocator().

## native_system_free()

ALWAYS_INLINE void Halide::Runtime::Internal::native_system_free | ( | void * | user_context,
|  | void * | ptr )

Definition at line 189 of file memory_resources.h.

References ALWAYS_INLINE, and free().

Referenced by Halide::Runtime::Internal::BlockStorage::default_allocator(), and Halide::Runtime::Internal::PointerTable::default_allocator().

## create_autorelease_pool()

WEAK objc_id Halide::Runtime::Internal::create_autorelease_pool | ( |  | ) |

Definition at line 42 of file objc_support.h.

References objc_getClass(), objc_msgSend(), sel_getUid(), and WEAK.

## drain_autorelease_pool()

WEAK void Halide::Runtime::Internal::drain_autorelease_pool | ( | objc_id | pool | ) |

Definition at line 50 of file objc_support.h.

References objc_msgSend(), sel_getUid(), and WEAK.

## retain_ns_object()

WEAK void Halide::Runtime::Internal::retain_ns_object | ( | objc_id | obj | ) |

Definition at line 56 of file objc_support.h.

References objc_msgSend(), sel_getUid(), and WEAK.

## release_ns_object()

WEAK void Halide::Runtime::Internal::release_ns_object | ( | objc_id | obj | ) |

Definition at line 62 of file objc_support.h.

References objc_msgSend(), sel_getUid(), and WEAK.

Referenced by ns_log_object(), and ns_log_utf8_string().

## wrap_string_as_ns_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(), sel_getUid(), and WEAK.

Referenced by ns_log_object(), and ns_log_utf8_string().

## strlen()

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().

## ns_log_utf8_string()

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(), WEAK, and wrap_string_as_ns_string().

## ns_log_object()

WEAK void Halide::Runtime::Internal::ns_log_object | ( | objc_id | obj | ) |

Definition at line 88 of file objc_support.h.

References NSLog(), release_ns_object(), WEAK, and wrap_string_as_ns_string().

## clamp_num_threads()

ALWAYS_INLINE int Halide::Runtime::Internal::clamp_num_threads | ( | int | threads | ) |

Definition at line 125 of file thread_pool_common.h.

References ALWAYS_INLINE.

Referenced by enqueue_work_already_locked(), and halide_set_num_threads().

## default_desired_num_threads()

WEAK int Halide::Runtime::Internal::default_desired_num_threads | ( |  | ) |

Definition at line 135 of file thread_pool_common.h.

References atoi(), getenv(), halide_host_cpu_count(), and WEAK.

Referenced by enqueue_work_already_locked(), and halide_set_num_threads().

## worker_thread()

WEAK void Halide::Runtime::Internal::worker_thread | ( | void * | arg | ) |

Definition at line 485 of file thread_pool_common.h.

References halide_mutex_lock(), halide_mutex_unlock(), WEAK, work_queue, and worker_thread_already_locked().

Referenced by enqueue_work_already_locked().

## worker_thread_stall()

WEAK void Halide::Runtime::Internal::worker_thread_stall | ( | work * | owned_job | ) |

Definition at line 256 of file thread_pool_common.h.

References Halide::Runtime::Internal::work::owner_is_sleeping, WEAK, and work_queue.

Referenced by worker_thread_already_locked().

## worker_thread_idle()

WEAK void Halide::Runtime::Internal::worker_thread_idle | ( |  | ) |

Definition at line 264 of file thread_pool_common.h.

References WEAK, and work_queue.

Referenced by worker_thread_already_locked().

## worker_thread_already_locked()

WEAK void Halide::Runtime::Internal::worker_thread_already_locked | ( | work * | owned_job | ) |

Definition at line 277 of file thread_pool_common.h.

References Halide::Runtime::Internal::work::active_workers, 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(), log_message, Halide::Runtime::Internal::work::make_runnable(), halide_parallel_task_t::min, halide_parallel_task_t::min_threads, halide_parallel_task_t::name, Halide::Runtime::Internal::work::next_job, Halide::Runtime::Internal::work::owner_is_sleeping, Halide::Runtime::Internal::work::parent_job, print_job, Halide::Runtime::Internal::work::running(), halide_parallel_task_t::serial, Halide::Runtime::Internal::work::sibling_count, Halide::Runtime::Internal::work::siblings, Halide::Runtime::Internal::work::task, Halide::Runtime::Internal::work::task_fn, Halide::Runtime::Internal::work::threads_reserved, Halide::Runtime::Internal::work::user_context, WEAK, work_queue, worker_thread_idle(), and worker_thread_stall().

Referenced by halide_default_do_par_for(), halide_default_do_parallel_tasks(), and worker_thread().

## enqueue_work_already_locked()

WEAK void Halide::Runtime::Internal::enqueue_work_already_locked | ( | int | num_jobs,
|  | work * | jobs,
|  | work * | task_parent )

Definition at line 491 of file thread_pool_common.h.

References Halide::Runtime::Internal::work::active_workers, clamp_num_threads(), default_desired_num_threads(), halide_parallel_task_t::extent, halide_abort_if_false, halide_spawn_thread(), log_message, halide_parallel_task_t::min_threads, halide_parallel_task_t::name, Halide::Runtime::Internal::work::next_job, Halide::Runtime::Internal::work::sibling_count, Halide::Runtime::Internal::work::siblings, Halide::Runtime::Internal::work::task, Halide::Runtime::Internal::work::threads_reserved, WEAK, work_queue, and worker_thread().

Referenced by halide_default_do_par_for(), and halide_default_do_parallel_tasks().

## get_allocated_system_memory()

size_t Halide::Runtime::Internal::get_allocated_system_memory | ( |  | ) |

## allocate_system()

void * Halide::Runtime::Internal::allocate_system | ( | void * | user_context,
|  | size_t | bytes )

## deallocate_system()

void Halide::Runtime::Internal::deallocate_system | ( | void * | user_context,
|  | void * | aligned_ptr )

## Variable Documentation

## default_printer_buffer_length

uint64_t Halide::Runtime::Internal::default_printer_buffer_length = 1024

constexpr

Definition at line 25 of file printer.h.

## work_queue

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(), worker_thread_already_locked(), worker_thread_idle(), and worker_thread_stall().

## custom_do_task

WEAK halide_do_task_t Halide::Runtime::Internal::custom_do_task = halide_default_do_task

Definition at line 619 of file thread_pool_common.h.

Referenced by halide_do_task(), halide_set_custom_do_task(), and halide_set_custom_parallel_runtime().

## custom_do_loop_task

WEAK halide_do_loop_task_t Halide::Runtime::Internal::custom_do_loop_task = halide_default_do_loop_task

Definition at line 620 of file thread_pool_common.h.

Referenced by halide_do_loop_task(), halide_set_custom_do_loop_task(), and halide_set_custom_parallel_runtime().

## custom_do_par_for

WEAK halide_do_par_for_t Halide::Runtime::Internal::custom_do_par_for = halide_default_do_par_for

Definition at line 621 of file thread_pool_common.h.

Referenced by halide_do_par_for(), halide_set_custom_do_par_for(), and halide_set_custom_parallel_runtime().

## custom_do_parallel_tasks

WEAK halide_do_parallel_tasks_t Halide::Runtime::Internal::custom_do_parallel_tasks = halide_default_do_parallel_tasks

Definition at line 622 of file thread_pool_common.h.

Referenced by halide_do_parallel_tasks(), and halide_set_custom_parallel_runtime().

## custom_semaphore_init

WEAK halide_semaphore_init_t Halide::Runtime::Internal::custom_semaphore_init = halide_default_semaphore_init

Definition at line 623 of file thread_pool_common.h.

Referenced by halide_semaphore_init(), and halide_set_custom_parallel_runtime().

## custom_semaphore_try_acquire

WEAK halide_semaphore_try_acquire_t Halide::Runtime::Internal::custom_semaphore_try_acquire = halide_default_semaphore_try_acquire

Definition at line 624 of file thread_pool_common.h.

Referenced by halide_semaphore_try_acquire(), and halide_set_custom_parallel_runtime().

## custom_semaphore_release

WEAK halide_semaphore_release_t Halide::Runtime::Internal::custom_semaphore_release = halide_default_semaphore_release

Definition at line 625 of file thread_pool_common.h.

Referenced by halide_semaphore_release(), and halide_set_custom_parallel_runtime().