Intel(R) Threading Building Blocks Doxygen Documentation
version 4.2.3
|
#include <flow_graph_opencl_node.h>
|
template<typename Factory > |
void | enqueue_map_buffer (opencl_device device, opencl_buffer_impl< Factory > &buffer, opencl_async_msg< void *, Factory > &dmsg) |
|
template<typename Factory > |
void | enqueue_unmap_buffer (opencl_device device, opencl_memory< Factory > &memory, opencl_async_msg< void *, Factory > &dmsg) |
|
template<size_t NUM_ARGS, typename T > |
void | process_one_arg (const kernel_type &kernel, std::array< cl_event, NUM_ARGS > &, int &, int &place, const T &t) |
|
template<size_t NUM_ARGS, typename T , typename F > |
void | process_one_arg (const kernel_type &kernel, std::array< cl_event, NUM_ARGS > &events, int &num_events, int &place, const opencl_async_msg< T, F > &msg) |
|
template<size_t NUM_ARGS, typename T , typename ... Rest> |
void | process_arg_list (const kernel_type &kernel, std::array< cl_event, NUM_ARGS > &events, int &num_events, int &place, const T &t, const Rest &... args) |
|
template<size_t NUM_ARGS> |
void | process_arg_list (const kernel_type &, std::array< cl_event, NUM_ARGS > &, int &, int &) |
|
template<typename T > |
void | update_one_arg (cl_event, T &) |
|
template<typename T , typename F > |
void | update_one_arg (cl_event e, opencl_async_msg< T, F > &msg) |
|
template<typename T , typename ... Rest> |
void | update_arg_list (cl_event e, T &t, Rest &... args) |
|
void | update_arg_list (cl_event) |
|
cl_event | send_kernel_impl (opencl_device device, const cl_kernel &kernel, const range_type &work_size, cl_uint num_events, cl_event *event_list) |
|
template<typename T > |
bool | get_event_from_one_arg (cl_event &, const T &) |
|
template<typename T , typename F > |
bool | get_event_from_one_arg (cl_event &e, const opencl_async_msg< T, F > &msg) |
|
template<typename T , typename ... Rest> |
bool | get_event_from_args (cl_event &e, const T &t, const Rest &... args) |
|
bool | get_event_from_args (cl_event &) |
|
bool | is_same_context (opencl_device::device_id_type d1, opencl_device::device_id_type d2) |
|
| opencl_factory (const opencl_factory &) |
|
opencl_factory & | operator= (const opencl_factory &) |
|
cl_context | context () |
|
void | init_once () |
|
template<typename DeviceFilter>
class tbb::flow::interface11::opencl_factory< DeviceFilter >
Definition at line 48 of file flow_graph_opencl_node.h.
◆ async_msg_type
template<typename DeviceFilter>
template<typename T >
◆ device_type
template<typename DeviceFilter>
◆ kernel_type
template<typename DeviceFilter>
◆ range_type
template<typename DeviceFilter>
◆ opencl_factory() [1/2]
template<typename DeviceFilter>
◆ ~opencl_factory()
template<typename DeviceFilter>
◆ opencl_factory() [2/2]
template<typename DeviceFilter>
◆ context()
template<typename DeviceFilter>
◆ devices()
template<typename DeviceFilter>
◆ enqueue_map_buffer()
template<typename DeviceFilter>
template<typename Factory >
Definition at line 883 of file flow_graph_opencl_node.h.
884 cl_event
const* e1 = dmsg.get_event();
887 void *ptr = clEnqueueMapBuffer( device.my_cl_command_queue, buffer.get_cl_mem(),
false, CL_MAP_READ | CL_MAP_WRITE, 0, buffer.size(),
888 e1 == NULL ? 0 : 1, e1, &e2, &err );
890 dmsg.data(
false ) = ptr;
891 dmsg.set_event( e2 );
◆ enqueue_unmap_buffer()
template<typename DeviceFilter>
template<typename Factory >
Definition at line 897 of file flow_graph_opencl_node.h.
898 cl_event
const* e1 = dmsg.get_event();
901 clEnqueueUnmapMemObject( device.my_cl_command_queue, memory.get_cl_mem(), memory.get_host_ptr(), e1 == NULL ? 0 : 1, e1, &e2 ),
902 "Failed to unmap a buffer" );
903 dmsg.set_event( e2 );
◆ finalize()
template<typename DeviceFilter>
template<typename FinalizeFn , typename ... Args>
Definition at line 1050 of file flow_graph_opencl_node.h.
1055 new finalize_fn_leaf<FinalizeFn>(
fn) ),
"Failed to set a callback" );
1058 enforce_cl_retcode( clFlush( device.my_cl_command_queue ),
"Failed to flush an OpenCL command queue" );
◆ finalize_callback()
template<typename DeviceFilter>
◆ get_event_from_args() [1/2]
template<typename DeviceFilter>
◆ get_event_from_args() [2/2]
template<typename DeviceFilter>
template<typename T , typename ... Rest>
◆ get_event_from_one_arg() [1/2]
template<typename DeviceFilter>
template<typename T >
◆ get_event_from_one_arg() [2/2]
template<typename DeviceFilter>
template<typename T , typename F >
◆ init()
template<typename DeviceFilter>
◆ init_once()
template<typename DeviceFilter>
Definition at line 1083 of file flow_graph_opencl_node.h.
1093 enforce_cl_retcode(it->platform_id() == platform_id ? CL_SUCCESS : CL_INVALID_PLATFORM,
"All devices should be in the same platform");
1095 std::vector<cl_device_id> cl_device_ids;
1097 cl_device_ids.push_back((*d).my_cl_device_id);
1100 cl_context_properties context_properties[3] = { CL_CONTEXT_PLATFORM, (cl_context_properties)platform_id, (cl_context_properties)NULL };
1102 cl_context ctx = clCreateContext(context_properties,
1103 (cl_uint)cl_device_ids.size(),
1104 cl_device_ids.data(),
1109 size_t device_counter = 0;
1111 (*d).my_device_id = device_counter++;
1113 cl_command_queue cq;
1115 if ((*d).major_version() >= 2) {
1116 if ((*d).out_of_order_exec_mode_on_host_present()) {
1117 cl_queue_properties props[] = { CL_QUEUE_PROPERTIES, CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, 0 };
1118 cq = clCreateCommandQueueWithProperties(ctx, (*d).my_cl_device_id, props, &err2);
1120 cl_queue_properties props[] = { 0 };
1121 cq = clCreateCommandQueueWithProperties(ctx, (*d).my_cl_device_id, props, &err2);
1126 cl_command_queue_properties props = (*d).out_of_order_exec_mode_on_host_present() ? CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE : 0;
1128 #if __TBB_GCC_WARNING_SUPPRESSION_PRESENT
1129 #pragma GCC diagnostic push
1130 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
1132 #if _MSC_VER || __INTEL_COMPILER
1133 #pragma warning( push )
1134 #if __INTEL_COMPILER
1135 #pragma warning (disable: 1478)
1137 #pragma warning (disable: 4996)
1140 cq = clCreateCommandQueue(ctx, (*d).my_cl_device_id, props, &err2);
1141 #if _MSC_VER || __INTEL_COMPILER
1142 #pragma warning( pop )
1144 #if __TBB_GCC_WARNING_SUPPRESSION_PRESENT
1145 #pragma GCC diagnostic pop
1149 (*d).my_cl_command_queue = cq;
Referenced by tbb::flow::interface11::opencl_factory< default_device_filter >::context(), and tbb::flow::interface11::opencl_factory< default_device_filter >::devices().
◆ is_same_context()
template<typename DeviceFilter>
◆ operator=()
template<typename DeviceFilter>
◆ process_arg_list() [1/2]
template<typename DeviceFilter>
template<size_t NUM_ARGS>
◆ process_arg_list() [2/2]
template<typename DeviceFilter>
template<size_t NUM_ARGS, typename T , typename ... Rest>
◆ process_one_arg() [1/2]
template<typename DeviceFilter>
template<size_t NUM_ARGS, typename T >
◆ process_one_arg() [2/2]
template<typename DeviceFilter>
template<size_t NUM_ARGS, typename T , typename F >
Definition at line 915 of file flow_graph_opencl_node.h.
916 __TBB_ASSERT((
static_cast<typename std::array<cl_event, NUM_ARGS>::size_type
>(num_events) < events.size()), NULL);
918 const cl_event *
const e = msg.get_event();
920 events[num_events++] = *e;
◆ send_data() [1/2]
template<typename DeviceFilter>
template<typename T , typename ... Rest>
◆ send_data() [2/2]
template<typename DeviceFilter>
◆ send_kernel()
template<typename DeviceFilter>
template<typename ... Args>
Definition at line 953 of file flow_graph_opencl_node.h.
954 std::array<cl_event,
sizeof...(Args)> events;
959 const cl_event e =
send_kernel_impl( device, kernel.my_cl_kernel, work_size, num_events, events.data() );
◆ send_kernel_impl()
template<typename DeviceFilter>
◆ update_arg_list() [1/2]
template<typename DeviceFilter>
template<typename T , typename ... Rest>
◆ update_arg_list() [2/2]
template<typename DeviceFilter>
◆ update_one_arg() [1/2]
template<typename DeviceFilter>
template<typename T , typename F >
◆ update_one_arg() [2/2]
template<typename DeviceFilter>
template<typename T >
◆ opencl_buffer_impl
template<typename DeviceFilter>
template<typename Factory >
◆ opencl_memory
template<typename DeviceFilter>
template<typename Factory >
◆ opencl_program
template<typename DeviceFilter>
template<typename Factory >
◆ my_cl_context
template<typename DeviceFilter>
◆ my_devices
template<typename DeviceFilter>
◆ my_devices_mutex
template<typename DeviceFilter>
◆ my_once_flag
template<typename DeviceFilter>
The documentation for this class was generated from the following file:
cl_event send_kernel_impl(opencl_device device, const cl_kernel &kernel, const range_type &work_size, cl_uint num_events, cl_event *event_list)
const opencl_device_list & available_devices()
void enforce_cl_retcode(cl_int err, std::string msg)
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
std::enable_if< is_memory_object_type< T >::value >::type send_if_memory_object(opencl_device device, opencl_async_msg< T, Factory > &dmsg)
void const char const char int ITT_FORMAT __itt_group_sync p
std::once_flag my_once_flag
container_type::iterator iterator
void suppress_unused_warning(const T1 &)
Utility template function to prevent "unused" warnings by various compilers.
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void ITT_FORMAT p const __itt_domain __itt_id __itt_string_handle const wchar_t size_t ITT_FORMAT lu const __itt_domain __itt_id __itt_relation __itt_id ITT_FORMAT p const wchar_t int ITT_FORMAT __itt_group_mark d __itt_event event
void update_arg_list(cl_event e, T &t, Rest &... args)
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d
static void CL_CALLBACK finalize_callback(cl_event, cl_int event_command_exec_status, void *data)
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void * data
std::array< range_index_type, 3 > nd_range_type
void process_one_arg(const kernel_type &kernel, std::array< cl_event, NUM_ARGS > &, int &, int &place, const T &t)
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void * lock
void send_data(opencl_device device, T &t, Rest &... args)
void update_one_arg(cl_event, T &)
opencl_device_list my_devices
Represents acquisition of a mutex.
bool get_event_from_args(cl_event &e, const T &t, const Rest &... args)
void process_arg_list(const kernel_type &kernel, std::array< cl_event, NUM_ARGS > &events, int &num_events, int &place, const T &t, const Rest &... args)
std::enable_if< is_native_object_type< T >::value, typename T::native_object_type >::type get_native_object(const T &t)
void const char const char int ITT_FORMAT __itt_group_sync s
tbb::spin_mutex my_devices_mutex
bool get_event_from_one_arg(cl_event &, const T &)
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void ITT_FORMAT p const __itt_domain __itt_id __itt_string_handle const wchar_t size_t ITT_FORMAT lu const __itt_domain __itt_id __itt_relation __itt_id ITT_FORMAT p const wchar_t int ITT_FORMAT __itt_group_mark d __itt_event ITT_FORMAT __itt_group_mark d void const wchar_t const wchar_t int ITT_FORMAT __itt_group_sync __itt_group_fsync x void const wchar_t int const wchar_t int int ITT_FORMAT __itt_group_sync __itt_group_fsync x void ITT_FORMAT __itt_group_sync __itt_group_fsync p void ITT_FORMAT __itt_group_sync __itt_group_fsync p void size_t ITT_FORMAT lu no args __itt_obj_prop_t __itt_obj_state_t ITT_FORMAT d const char ITT_FORMAT s __itt_frame ITT_FORMAT p const char const char ITT_FORMAT s __itt_counter ITT_FORMAT p __itt_counter unsigned long long ITT_FORMAT lu const wchar_t ITT_FORMAT S __itt_mark_type const wchar_t ITT_FORMAT S __itt_mark_type const char ITT_FORMAT s __itt_mark_type ITT_FORMAT d __itt_caller ITT_FORMAT p __itt_caller ITT_FORMAT p no args const __itt_domain __itt_clock_domain unsigned long long __itt_id ITT_FORMAT lu const __itt_domain __itt_clock_domain unsigned long long __itt_id __itt_id void * fn
Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
registered trademarks or trademarks of Intel Corporation or its
subsidiaries in the United States and other countries.
* Other names and brands may be claimed as the property of others.