C++-API#

Common#

Common Functions#

CL_CHECK_STATUS#

inline void tinytc::CL_CHECK_STATUS(cl_int stat)#

Throw exception for unsuccessful call to C-API and convert result code to tinytc status.

Device Info#

Device Info Functions#

get_support_level(cl_device_id)#

inline support_level tinytc::get_support_level(cl_device_id device)#

Get support level of OpenCL device.

Parameters:

device – Device handle

Returns:

Support level

create_core_info(cl_device_id)#

inline shared_handle<tinytc_core_info_t> tinytc::create_core_info(cl_device_id device)#

Query core info from OpenCL runtime.

Parameters:

device – device handle

Returns:

core info

Kernel#

Kernel Functions#

get_global_size(std::array<std::size_t,3u> const &,std::array<std::size_t,3u> const &)#

inline std::array<std::size_t, 3u> tinytc::get_global_size(std::array<std::size_t, 3u> const &num_groups, std::array<std::size_t, 3u> const &local_size)#

Convert group size to opencl global range.

Parameters:
  • num_groups – Number of groups

  • local_size – Work-group size

Returns:

Global size

get_group_size(cl_kernel)#

inline std::array<std::size_t, 3u> tinytc::get_group_size(cl_kernel kernel)#

Get work group size.

Parameters:

kernel – Kernel

Returns:

Work-group size

create_kernel(cl_program,char const*)#

inline shared_handle<cl_kernel> tinytc::create_kernel(cl_program mod, char const *name)#

Make a cl_kernel from a cl_program.

Parameters:
  • mod – Program

  • name – Kernel name

Returns:

cl_kernel (shared handle)

create_kernel_bundle(cl_context,cl_device_id,const_tinytc_binary_t)#

inline shared_handle<cl_program> tinytc::create_kernel_bundle(cl_context context, cl_device_id device, const_tinytc_binary_t bin)#

Make an OpenCL program from a tinytc binary.

Parameters:
  • context – Context

  • device – Device

  • bin – Binary

Returns:

cl_program (shared handle)

create_kernel_bundle(cl_context,cl_device_id,tinytc_prog_t,tinytc_core_feature_flags_t)#

inline shared_handle<cl_program> tinytc::create_kernel_bundle(cl_context context, cl_device_id device, tinytc_prog_t prg, tinytc_core_feature_flags_t core_features = 0)#

Make an OpenCL program from a tinytc program.

Parameters:
  • context – Context

  • device – Device

  • prg – Program

  • core_features – requested core features; must be 0 (default) or a combination of tinytc_core_feature_flag_t

Returns:

cl_program (shared handle)

Recipe#

Recipe Functions#

create_recipe_handler(cl_context,cl_device_id,tinytc_recipe_t)#

inline shared_handle<tinytc_recipe_handler_t> tinytc::create_recipe_handler(cl_context context, cl_device_id device, tinytc_recipe_t rec)#

Make recipe handler.

Parameters:
  • context – Context

  • device – Device

  • rec – Recipe

Returns:

OpenCL recipe handler

submit(tinytc_recipe_handler_t,cl_command_queue,uint32_t,cl_event*)#

inline shared_handle<cl_event> tinytc::submit(tinytc_recipe_handler_t handler, cl_command_queue queue, uint32_t num_wait_events = 0, cl_event *wait_events = nullptr)#

Submit recipe to queue.

Parameters:
  • handler – Recipe handler

  • queue – Command queue

  • num_wait_events – Number of events to wait

  • wait_events – Array of num_wait_events events to wait on

Returns:

Event (cl_event wrapped in shared_handle -> cleans up automatically)

submit_no_event#

inline void tinytc::submit_no_event(tinytc_recipe_handler_t handler, cl_command_queue queue, uint32_t num_wait_events = 0, cl_event *wait_events = nullptr)#

Submit recipe to queue; does not return event.

Parameters:
  • handler – Recipe handler

  • queue – Command queue

  • num_wait_events – Number of events to wait

  • wait_events – Array of num_wait_events events to wait on

Recipe Structures#

auto_mem_type<cl_mem>#

template<>
struct auto_mem_type<cl_mem>#

Specialize auto_mem_type for cl_mem.

Public Static Attributes

static mem_type value = mem_type::buffer#

cl_mem maps to buffer type