Halide 22.0.0 Halide compiler and libraries

Classes | Namespaces | Macros | Typedefs | Functions | Variables
runtime_internal.h File Reference

Go to the source code of this file.

## Classes
struct | halide_pseudostack_slot_t

## Namespaces
namespace | Halide
| This file defines the class FunctionDAG, which is our representation of a Halide pipeline, and contains methods to using Halide's bounds tools to query properties of it.
namespace | Halide::Runtime
namespace | Halide::Runtime::Internal

## Macros
#define | WEAK __attribute__((weak))
#define | NEVER_INLINE __attribute__((noinline))
#define | ALWAYS_INLINE inline __attribute__((always_inline))
#define | WEAK_INLINE __attribute__((weak, always_inline))
#define | STDOUT_FILENO 1
#define | STDERR_FILENO 2
#define | _halide_stringify(x) #x
| halide_abort_if_false() is a macro that calls halide_print if the supplied condition is false, then aborts. More...
#define | _halide_expand_and_stringify(x) _halide_stringify(x)
#define | halide_abort_if_false(user_context, cond)
#define | halide_debug_assert(user_context, cond)
| halide_debug_assert() is like halide_assert(), but only expands into a check when DEBUG_RUNTIME is defined. More...

## Typedefs
typedef signed __INT64_TYPE__ | int64_t
typedef unsigned __INT64_TYPE__ | uint64_t
typedef signed __INT32_TYPE__ | int32_t
typedef unsigned __INT32_TYPE__ | uint32_t
typedef signed __INT16_TYPE__ | int16_t
typedef unsigned __INT16_TYPE__ | uint16_t
typedef signed __INT8_TYPE__ | int8_t
typedef unsigned __INT8_TYPE__ | uint8_t
typedef __SIZE_TYPE__ | size_t
typedef __PTRDIFF_TYPE__ | ptrdiff_t
typedef ptrdiff_t | ssize_t
typedef __UINTPTR_TYPE__ | uintptr_t
typedef __INTPTR_TYPE__ | intptr_t

## Functions
void * | halide_malloc (void *user_context, size_t x)
void | halide_free (void *user_context, void *ptr)
WEAK int64_t | halide_current_time_ns (void *user_context)
WEAK void | halide_print (void *user_context, const char *msg)
WEAK void | halide_error (void *user_context, const char *msg)
char * | getenv (const char *)
void | free (void *)
void * | malloc (size_t)
const char * | strstr (const char *, const char *)
int | atoi (const char *)
int | strcmp (const char *s, const char *t)
int | strncmp (const char *s, const char *t, size_t n)
size_t | strlen (const char *s)
const char * | strchr (const char *s, int c)
void * | memcpy (void *s1, const void *s2, size_t n)
void * | memmove (void *dest, const void *src, size_t n)
int | memcmp (const void *s1, const void *s2, size_t n)
void * | memset (void *s, int val, size_t n)
WEAK_INLINE void * | halide_fopen (const char *filename, const char *type)
int | fileno (void *)
int | fclose (void *)
int | close (int)
size_t | fwrite (const void *, size_t, size_t, void *)
ssize_t | write (int fd, const void *buf, size_t bytes)
int | remove (const char *pathname)
int | ioctl (int fd, unsigned long request,...)
char * | strncpy (char *dst, const char *src, size_t n)
void | abort ()
WEAK char * | halide_string_to_string (char *dst, char *end, const char *arg)
WEAK char * | halide_double_to_string (char *dst, char *end, double arg, int scientific)
WEAK char * | halide_int64_to_string (char *dst, char *end, int64_t arg, int digits)
WEAK char * | halide_uint64_to_string (char *dst, char *end, uint64_t arg, int digits)
WEAK char * | halide_pointer_to_string (char *dst, char *end, const void *arg)
WEAK char * | halide_buffer_to_string (char *dst, char *end, const halide_buffer_t *arg)
WEAK char * | halide_type_to_string (char *dst, char *end, const halide_type_t *arg)
WEAK void * | halide_get_symbol (const char *name)
WEAK void * | halide_load_library (const char *name)
WEAK void * | halide_get_library_symbol (void *lib, const char *name)
WEAK int | halide_start_clock (void *user_context)
WEAK void | halide_sleep_us (void *user_context, int us)
WEAK void | halide_device_free_as_destructor (void *user_context, void *obj)
WEAK void | halide_device_and_host_free_as_destructor (void *user_context, void *obj)
WEAK void | halide_device_host_nop_free (void *user_context, void *obj)
WEAK void | halide_profiler_stack_peak_update (void *user_context, halide_profiler_instance_state *instance, uint64_t *f_values)
WEAK void | halide_profiler_memory_allocate (void *user_context, halide_profiler_instance_state *instance, int func_id, uint64_t incr)
WEAK void | halide_profiler_memory_free (void *user_context, halide_profiler_instance_state *instance, int func_id, uint64_t decr)
WEAK int | halide_profiler_instance_start (void *user_context, const char *pipeline_name, int num_funcs, const uint64_t *func_names, halide_profiler_instance_state *instance)
WEAK int | halide_profiler_instance_end (void *user_context, halide_profiler_instance_state *instance)
WEAK void | halide_start_timer_chain ()
WEAK void | halide_disable_timer_interrupt ()
WEAK void | halide_enable_timer_interrupt ()
WEAK int | halide_host_cpu_count ()
WEAK int | halide_device_and_host_malloc (void *user_context, struct halide_buffer_t *buf, const struct halide_device_interface_t *device_interface)
WEAK int | halide_device_and_host_free (void *user_context, struct halide_buffer_t *buf)
WEAK int | halide_trace_helper (void *user_context, const char *func, void *value, int *coords, int type_code, int type_bits, int type_lanes, int code, int parent_id, int value_index, int dimensions, const char *trace_tag)
WEAK void | halide_use_jit_module ()
WEAK void | halide_release_jit_module ()
WEAK_INLINE int | halide_internal_malloc_alignment ()
WEAK_INLINE void * | halide_internal_aligned_alloc (size_t alignment, size_t size)
WEAK_INLINE void | halide_internal_aligned_free (void *ptr)
void | halide_thread_yield ()
template<typename T >
ALWAYS_INLINE T | align_up (T p, size_t alignment)
template<typename T >
ALWAYS_INLINE T | is_power_of_two (T value)

## Variables
WEAK void(*)(void *, const char *) | halide_set_custom_print (void(*print)(void *, const char *))
WEAK void(*)(void *, const char *) | halide_set_error_handler (void(*handler)(void *, const char *))

## Macro Definition Documentation

## ◆ WEAK

#define WEAK __attribute__((weak))

Definition at line 52 of file runtime_internal.h.

## ◆ NEVER_INLINE

#define NEVER_INLINE __attribute__((noinline))

Definition at line 54 of file runtime_internal.h.

## ◆ ALWAYS_INLINE

#define ALWAYS_INLINE inline __attribute__((always_inline))

Definition at line 57 of file runtime_internal.h.

## ◆ WEAK_INLINE

#define WEAK_INLINE __attribute__((weak, always_inline))

Definition at line 60 of file runtime_internal.h.

## ◆ STDOUT_FILENO

#define STDOUT_FILENO 1

Definition at line 81 of file runtime_internal.h.

## ◆ STDERR_FILENO

#define STDERR_FILENO 2

Definition at line 82 of file runtime_internal.h.

## ◆ _halide_stringify

#define _halide_stringify | ( |  | x | ) | #x

halide_abort_if_false() is a macro that calls halide_print if the supplied condition is false, then aborts.

Used for unrecoverable errors, or should-never-happen errors.

Note that this is NOT a debug-only macro; the condition will be checked in all build modes!

Definition at line 269 of file runtime_internal.h.

## ◆ _halide_expand_and_stringify

#define _halide_expand_and_stringify | ( |  | x | ) | _halide_stringify(x)

Definition at line 270 of file runtime_internal.h.

## ◆ halide_abort_if_false

#define halide_abort_if_false | ( |  | user_context,
|  |  | cond
| ) |  |

Value:
do { \
if (!(cond)) { \
halide_print(user_context, __FILE__ ":" _halide_expand_and_stringify(__LINE__) " halide_abort_if_false() failed: " #cond "\n"); \
abort(); \
} \
} while (0)
_halide_expand_and_stringify
#define _halide_expand_and_stringify(x)
Definition: runtime_internal.h:270
user_context
void * user_context
Definition: vulkan_resources.h:178

Definition at line 271 of file runtime_internal.h.

## ◆ halide_debug_assert

#define halide_debug_assert | ( |  | user_context,
|  |  | cond
| ) |  |

halide_debug_assert() is like halide_assert(), but only expands into a check when DEBUG_RUNTIME is defined.

It is what you want to use in almost all cases.

Definition at line 290 of file runtime_internal.h.

## Typedef Documentation

## ◆ int64_t

typedef signed __INT64_TYPE__ int64_t

Definition at line 22 of file runtime_internal.h.

## ◆ uint64_t

typedef unsigned __INT64_TYPE__ uint64_t

Definition at line 23 of file runtime_internal.h.

## ◆ int32_t

typedef signed __INT32_TYPE__ int32_t

Definition at line 24 of file runtime_internal.h.

## ◆ uint32_t

typedef unsigned __INT32_TYPE__ uint32_t

Definition at line 25 of file runtime_internal.h.

## ◆ int16_t

typedef signed __INT16_TYPE__ int16_t

Definition at line 26 of file runtime_internal.h.

## ◆ uint16_t

typedef unsigned __INT16_TYPE__ uint16_t

Definition at line 27 of file runtime_internal.h.

## ◆ int8_t

typedef signed __INT8_TYPE__ int8_t

Definition at line 28 of file runtime_internal.h.

## ◆ uint8_t

typedef unsigned __INT8_TYPE__ uint8_t

Examples
  tutorial/lesson_09_update_definitions.cpp.

Definition at line 29 of file runtime_internal.h.

## ◆ size_t

typedef __SIZE_TYPE__ size_t

Definition at line 31 of file runtime_internal.h.

## ◆ ptrdiff_t

typedef __PTRDIFF_TYPE__ ptrdiff_t

Definition at line 32 of file runtime_internal.h.

## ◆ ssize_t

typedef ptrdiff_t ssize_t

Definition at line 34 of file runtime_internal.h.

## ◆ uintptr_t

typedef __UINTPTR_TYPE__ uintptr_t

Definition at line 75 of file runtime_internal.h.

## ◆ intptr_t

typedef __INTPTR_TYPE__ intptr_t

Definition at line 76 of file runtime_internal.h.

## Function Documentation

## ◆ halide_malloc()

void * halide_malloc | ( | void * | user_context,
|  | size_t | x
| ) |  |

## ◆ halide_free()

void halide_free | ( | void * | user_context,
|  | void * | ptr
| ) |  |

## ◆ halide_current_time_ns()

WEAK int64_t halide_current_time_ns | ( | void * | user_context | ) |

## ◆ halide_print()

WEAK void halide_print | ( | void * | user_context,
|  | const char * | msg
| ) |  |

## ◆ halide_error()

WEAK void halide_error | ( | void * | user_context,
|  | const char * | msg
| ) |  |

## ◆ getenv()

char * getenv | ( | const char * |  | ) |

Referenced by Halide::Runtime::Internal::default_desired_num_threads(), Halide::Internal::Test::get_env_variable(), Halide::Runtime::Internal::Vulkan::halide_vulkan_get_symbol(), and Halide::SimdOpCheckTest::main().

## ◆ free()

void free | ( | void * |  | ) |

Examples
  tutorial/lesson_09_update_definitions.cpp.

Referenced by Halide::Runtime::Buffer< T, Dims, InClassDimStorage >::allocate(), Halide::Internal::Test::get_current_directory(), Halide::Runtime::Internal::native_system_free(), and Halide::Internal::GPUCompilationCache< ContextT, ModuleStateT >::release_all().

## ◆ malloc()

void * malloc | ( | size_t |  | ) |

Examples
  tutorial/lesson_09_update_definitions.cpp.

Referenced by Halide::Runtime::Buffer< T, Dims, InClassDimStorage >::allocate(), and Halide::Runtime::Internal::native_system_malloc().

## ◆ strstr()

const char * strstr | ( | const char * | ,
|  | const char * |
| ) |  |

Referenced by Halide::Runtime::Internal::StringUtils::count_tokens(), Halide::Runtime::Internal::StringTable::parse(), and Halide::Internal::GpuObjectLifetimeTracker::record_gpu_debug().

## ◆ atoi()

int atoi | ( | const char * |  | ) |

Referenced by Halide::Runtime::Internal::default_desired_num_threads(), Halide::Var::implicit_index(), Halide::SimdOpCheckTest::main(), and Halide::SimdOpCheckTest::num_worker_threads().

## ◆ strcmp()

int strcmp | ( | const char * | s,
|  | const char * | t
| ) |  |

## ◆ strncmp()

int strncmp | ( | const char * | s,
|  | const char * | t,
|  | size_t | n
| ) |  |

Referenced by Halide::Runtime::Internal::StringStorage::operator==(), and cmdline::parser::parse().

## ◆ strlen()

size_t strlen | ( | const char * | s | ) |

## ◆ strchr()

const char * strchr | ( | const char * | s,
|  | int | c
| ) |  |

Referenced by cmdline::parser::parse().

## ◆ memcpy()

void * memcpy | ( | void * | s1,
|  | const void * | s2,
|  | size_t | n
| ) |  |

Referenced by Halide::Runtime::Internal::LinkedList::append(), Halide::Runtime::Internal::BlockStorage::BlockStorage(), Halide::Runtime::Internal::copy_memory_helper(), Halide::Runtime::Internal::StringUtils::copy_up_to(), Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::create_crop(), Halide::Runtime::Internal::PointerTable::fill(), Halide::Runtime::Internal::BlockStorage::fill(), Halide::float16_t::float16_t(), Halide::Runtime::Internal::LinkedList::insert_after(), Halide::Runtime::Internal::LinkedList::insert_before(), Halide::Internal::Autoscheduler::BoundContents::make_copy(), Halide::Runtime::Internal::BlockStorage::operator=(), Halide::Runtime::Internal::PointerTable::operator=(), Halide::Runtime::Internal::PointerTable::PointerTable(), Halide::Runtime::Internal::LinkedList::prepend(), Halide::Internal::reinterpret_bits(), Halide::Runtime::Internal::PointerTable::replace(), Halide::Runtime::Internal::BlockStorage::replace(), Halide::Parameter::scalar(), Halide::Parameter::set_scalar(), Halide::Runtime::Internal::BlockStorage::shrink_to_fit(), and Halide::Runtime::Internal::PointerTable::shrink_to_fit().

## ◆ memmove()

void * memmove | ( | void * | dest,
|  | const void * | src,
|  | size_t | n
| ) |  |

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

## ◆ memcmp()

int memcmp | ( | const void * | s1,
|  | const void * | s2,
|  | size_t | n
| ) |  |

Referenced by Halide::Runtime::Internal::keys_equal(), Halide::Runtime::Internal::BlockStorage::operator==(), and Halide::Runtime::Internal::PointerTable::operator==().

## ◆ memset()

void * memset | ( | void * | s,
|  | int | val,
|  | size_t | n
| ) |  |

Referenced by halide_mutex_array_create(), Halide::Runtime::Internal::HashMap::init(), Halide::Runtime::Internal::MemoryArena::reserve(), and Halide::Runtime::Internal::work_queue_t::reset().

## ◆ halide_fopen()

WEAK_INLINE void * halide_fopen | ( | const char * | filename,
|  | const char * | type
| ) |  |

## ◆ fileno()

int fileno | ( | void * |  | ) |

## ◆ fclose()

int fclose | ( | void * |  | ) |

## ◆ close()

int close | ( | int |  | ) |

## ◆ fwrite()

size_t fwrite | ( | const void * | ,
|  | size_t | ,
|  | size_t | ,
|  | void * |
| ) |  |

## ◆ write()

ssize_t write | ( | int | fd,
|  | const void * | buf,
|  | size_t | bytes
| ) |  |

## ◆ remove()

int remove | ( | const char * | pathname | ) |

## ◆ ioctl()

int ioctl | ( | int | fd,
|  | unsigned long | request,
|  |  | ...
| ) |  |

## ◆ strncpy()

char * strncpy | ( | char * | dst,
|  | const char * | src,
|  | size_t | n
| ) |  |

## ◆ abort()

void abort | ( |  | ) |

## ◆ halide_string_to_string()

WEAK char * halide_string_to_string | ( | char * | dst,
|  | char * | end,
|  | const char * | arg
| ) |  |

Referenced by Halide::Runtime::Internal::PrinterBase::operator<<().

## ◆ halide_double_to_string()

WEAK char * halide_double_to_string | ( | char * | dst,
|  | char * | end,
|  | double | arg,
|  | int | scientific
| ) |  |

Referenced by Halide::Runtime::Internal::PrinterBase::operator<<().

## ◆ halide_int64_to_string()

WEAK char * halide_int64_to_string | ( | char * | dst,
|  | char * | end,
|  | int64_t | arg,
|  | int | digits
| ) |  |

Referenced by Halide::Runtime::Internal::PrinterBase::operator<<().

## ◆ halide_uint64_to_string()

WEAK char * halide_uint64_to_string | ( | char * | dst,
|  | char * | end,
|  | uint64_t | arg,
|  | int | digits
| ) |  |

Referenced by Halide::Runtime::Internal::PrinterBase::operator<<().

## ◆ halide_pointer_to_string()

WEAK char * halide_pointer_to_string | ( | char * | dst,
|  | char * | end,
|  | const void * | arg
| ) |  |

Referenced by Halide::Runtime::Internal::PrinterBase::operator<<().

## ◆ halide_buffer_to_string()

WEAK char * halide_buffer_to_string | ( | char * | dst,
|  | char * | end,
|  | const halide_buffer_t * | arg
| ) |  |

Referenced by Halide::Runtime::Internal::PrinterBase::operator<<().

## ◆ halide_type_to_string()

WEAK char * halide_type_to_string | ( | char * | dst,
|  | char * | end,
|  | const halide_type_t * | arg
| ) |  |

Referenced by Halide::Runtime::Internal::PrinterBase::operator<<().

## ◆ halide_get_symbol()

WEAK void * halide_get_symbol | ( | const char * | name | ) |

## ◆ halide_load_library()

WEAK void * halide_load_library | ( | const char * | name | ) |

## ◆ halide_get_library_symbol()

WEAK void * halide_get_library_symbol | ( | void * | lib,
|  | const char * | name
| ) |  |

## ◆ halide_start_clock()

WEAK int halide_start_clock | ( | void * | user_context | ) |

## ◆ halide_sleep_us()

WEAK void halide_sleep_us | ( | void * | user_context,
|  | int | us
| ) |  |

## ◆ halide_device_free_as_destructor()

WEAK void halide_device_free_as_destructor | ( | void * | user_context,
|  | void * | obj
| ) |  |

## ◆ halide_device_and_host_free_as_destructor()

WEAK void halide_device_and_host_free_as_destructor | ( | void * | user_context,
|  | void * | obj
| ) |  |

## ◆ halide_device_host_nop_free()

WEAK void halide_device_host_nop_free | ( | void * | user_context,
|  | void * | obj
| ) |  |

## ◆ halide_profiler_stack_peak_update()

WEAK void halide_profiler_stack_peak_update | ( | void * | user_context,
|  | halide_profiler_instance_state * | instance,
|  | uint64_t * | f_values
| ) |  |

## ◆ halide_profiler_memory_allocate()

WEAK void halide_profiler_memory_allocate | ( | void * | user_context,
|  | halide_profiler_instance_state * | instance,
|  | int | func_id,
|  | uint64_t | incr
| ) |  |

## ◆ halide_profiler_memory_free()

WEAK void halide_profiler_memory_free | ( | void * | user_context,
|  | halide_profiler_instance_state * | instance,
|  | int | func_id,
|  | uint64_t | decr
| ) |  |

## ◆ halide_profiler_instance_start()

WEAK int halide_profiler_instance_start | ( | void * | user_context,
|  | const char * | pipeline_name,
|  | int | num_funcs,
|  | const uint64_t * | func_names,
|  | halide_profiler_instance_state * | instance
| ) |  |

## ◆ halide_profiler_instance_end()

WEAK int halide_profiler_instance_end | ( | void * | user_context,
|  | halide_profiler_instance_state * | instance
| ) |  |

## ◆ halide_start_timer_chain()

WEAK void halide_start_timer_chain | ( |  | ) |

## ◆ halide_disable_timer_interrupt()

WEAK void halide_disable_timer_interrupt | ( |  | ) |

## ◆ halide_enable_timer_interrupt()

WEAK void halide_enable_timer_interrupt | ( |  | ) |

## ◆ halide_host_cpu_count()

WEAK int halide_host_cpu_count | ( |  | ) |

Referenced by Halide::Runtime::Internal::default_desired_num_threads().

## ◆ halide_device_and_host_malloc()

WEAK int halide_device_and_host_malloc | ( | void * | user_context,
|  | struct halide_buffer_t * | buf,
|  | const struct halide_device_interface_t * | device_interface
| ) |  |

## ◆ halide_device_and_host_free()

WEAK int halide_device_and_host_free | ( | void * | user_context,
|  | struct halide_buffer_t * | buf
| ) |  |

## ◆ halide_trace_helper()

WEAK int halide_trace_helper | ( | void * | user_context,
|  | const char * | func,
|  | void * | value,
|  | int * | coords,
|  | int | type_code,
|  | int | type_bits,
|  | int | type_lanes,
|  | int | code,
|  | int | parent_id,
|  | int | value_index,
|  | int | dimensions,
|  | const char * | trace_tag
| ) |  |

## ◆ halide_use_jit_module()

WEAK void halide_use_jit_module | ( |  | ) |

## ◆ halide_release_jit_module()

WEAK void halide_release_jit_module | ( |  | ) |

## ◆ halide_internal_malloc_alignment()

WEAK_INLINE int halide_internal_malloc_alignment | ( |  | ) |

## ◆ halide_internal_aligned_alloc()

WEAK_INLINE void * halide_internal_aligned_alloc | ( | size_t | alignment,
|  | size_t | size
| ) |  |

## ◆ halide_internal_aligned_free()

WEAK_INLINE void halide_internal_aligned_free | ( | void * | ptr | ) |

## ◆ halide_thread_yield()

void halide_thread_yield | ( |  | ) |

Referenced by Halide::Runtime::Internal::halide_cond_with_spinning::wait().

## ◆ align_up()

template<typename T >

ALWAYS_INLINE T align_up | ( | T | p,
|  | size_t | alignment
| ) |  |

Definition at line 221 of file runtime_internal.h.

Referenced by Halide::Runtime::Buffer< T, Dims, InClassDimStorage >::allocate().

## ◆ is_power_of_two()

template<typename T >

ALWAYS_INLINE T is_power_of_two | ( | T | value | ) |

Definition at line 226 of file runtime_internal.h.

## Variable Documentation

## ◆ halide_set_custom_print

WEAK void(*)(void *, const char *) halide_set_custom_print(void(*print)(void *, const char *)) | ( | void(*)(void *, const char *) | print | ) |

Definition at line 91 of file runtime_internal.h.

## ◆ halide_set_error_handler

WEAK void(*)(void *, const char *) halide_set_error_handler(void(*handler)(void *, const char *)) | ( | void(*)(void *, const char *) | handler | ) |

Definition at line 92 of file runtime_internal.h.