Halide 19.0.0
Halide compiler and libraries
Loading...
Searching...
No Matches
Halide::Runtime::Internal Namespace Reference

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 }
 

Functions

WEAK CpuFeatures halide_get_cpu_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_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

Enumerator
InvalidStatus 
InUse 
Available 
Purgeable 
Dedicated 

Definition at line 14 of file memory_resources.h.

◆ MemoryVisibility

Enumerator
InvalidVisibility 
HostOnly 
DeviceOnly 
DeviceToHost 
HostToDevice 
DefaultVisibility 

Definition at line 24 of file memory_resources.h.

◆ MemoryUsage

Enumerator
InvalidUsage 
StaticStorage 
DynamicStorage 
UniformStorage 
TransferSrc 
TransferDst 
TransferSrcDst 
DefaultUsage 

Definition at line 35 of file memory_resources.h.

◆ MemoryCaching

Enumerator
InvalidCaching 
Cached 
Uncached 
CachedCoherent 
UncachedCoherent 
DefaultCaching 

Definition at line 47 of file memory_resources.h.

◆ PrinterType

Enumerator
BasicPrinterType 
ErrorPrinterType 
StringStreamPrinterType 

Definition at line 21 of file printer.h.

Function Documentation

◆ halide_get_cpu_features()

WEAK CpuFeatures Halide::Runtime::Internal::halide_get_cpu_features ( )
extern

◆ copy_memory_helper()

◆ copy_memory()

◆ make_buffer_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 168 of file device_buffer_utils.h.

References make_buffer_copy().

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

◆ 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 )

◆ 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 )

◆ any_zero()

template<typename Container >
bool Halide::Runtime::Internal::any_zero ( const Container & c)

◆ keys_equal()

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

◆ djb_hash()

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

◆ 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.

Referenced by aligned_offset().

◆ aligned_offset()

◆ conform_alignment()

ALWAYS_INLINE size_t Halide::Runtime::Internal::conform_alignment ( size_t requested,
size_t required )

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

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 )

◆ 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.

◆ offset_address() [1/2]

◆ 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.

◆ native_system_malloc()

ALWAYS_INLINE void * Halide::Runtime::Internal::native_system_malloc ( void * user_context,
size_t bytes )

◆ native_system_free()

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

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

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

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

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

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

Referenced by ns_log_object(), and ns_log_utf8_string().

◆ strlen()

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

Referenced by enqueue_work_already_locked(), and halide_set_num_threads().

◆ default_desired_num_threads()

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

◆ worker_thread()

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

◆ worker_thread_already_locked()

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

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

◆ enqueue_work_already_locked()

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

◆ 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

◆ custom_do_task

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

◆ custom_do_loop_task

◆ custom_do_par_for

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

◆ custom_do_parallel_tasks

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

◆ custom_semaphore_init

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

◆ custom_semaphore_try_acquire

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

◆ custom_semaphore_release

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