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 59 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 897 of file flow_graph_opencl_node.h.
898 cl_event
const* e1 = dmsg.get_event();
901 void *ptr = clEnqueueMapBuffer( device.my_cl_command_queue, buffer.get_cl_mem(),
false, CL_MAP_READ | CL_MAP_WRITE, 0, buffer.size(),
902 e1 == NULL ? 0 : 1, e1, &e2, &err );
904 dmsg.data(
false ) = ptr;
905 dmsg.set_event( e2 );
◆ enqueue_unmap_buffer()
template<typename DeviceFilter >
template<typename Factory >
Definition at line 911 of file flow_graph_opencl_node.h.
912 cl_event
const* e1 = dmsg.get_event();
915 clEnqueueUnmapMemObject( device.my_cl_command_queue, memory.get_cl_mem(), memory.get_host_ptr(), e1 == NULL ? 0 : 1, e1, &e2 ),
916 "Failed to unmap a buffer" );
917 dmsg.set_event( e2 );
◆ finalize()
template<typename DeviceFilter >
template<typename FinalizeFn , typename ... Args>
Definition at line 1064 of file flow_graph_opencl_node.h.
1069 new finalize_fn_leaf<FinalizeFn>(
fn) ),
"Failed to set a callback" );
1072 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 1097 of file flow_graph_opencl_node.h.
1107 enforce_cl_retcode(it->platform_id() == platform_id ? CL_SUCCESS : CL_INVALID_PLATFORM,
"All devices should be in the same platform");
1109 std::vector<cl_device_id> cl_device_ids;
1111 cl_device_ids.push_back((*d).my_cl_device_id);
1114 cl_context_properties context_properties[3] = { CL_CONTEXT_PLATFORM, (cl_context_properties)platform_id, (cl_context_properties)NULL };
1116 cl_context ctx = clCreateContext(context_properties,
1117 (cl_uint)cl_device_ids.size(),
1118 cl_device_ids.data(),
1123 size_t device_counter = 0;
1125 (*d).my_device_id = device_counter++;
1127 cl_command_queue cq;
1129 if ((*d).major_version() >= 2) {
1130 if ((*d).out_of_order_exec_mode_on_host_present()) {
1131 cl_queue_properties props[] = { CL_QUEUE_PROPERTIES, CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, 0 };
1132 cq = clCreateCommandQueueWithProperties(ctx, (*d).my_cl_device_id, props, &err2);
1134 cl_queue_properties props[] = { 0 };
1135 cq = clCreateCommandQueueWithProperties(ctx, (*d).my_cl_device_id, props, &err2);
1140 cl_command_queue_properties props = (*d).out_of_order_exec_mode_on_host_present() ? CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE : 0;
1142 #if __TBB_GCC_WARNING_SUPPRESSION_PRESENT
1143 #pragma GCC diagnostic push
1144 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
1146 #if _MSC_VER || __INTEL_COMPILER
1147 #pragma warning( push )
1148 #if __INTEL_COMPILER
1149 #pragma warning (disable: 1478)
1151 #pragma warning (disable: 4996)
1154 cq = clCreateCommandQueue(ctx, (*d).my_cl_device_id, props, &err2);
1155 #if _MSC_VER || __INTEL_COMPILER
1156 #pragma warning( pop )
1158 #if __TBB_GCC_WARNING_SUPPRESSION_PRESENT
1159 #pragma GCC diagnostic pop
1163 (*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 929 of file flow_graph_opencl_node.h.
930 __TBB_ASSERT((
static_cast<typename std::array<cl_event, NUM_ARGS>::size_type
>(num_events) < events.size()), NULL);
932 const cl_event *
const e = msg.get_event();
934 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 967 of file flow_graph_opencl_node.h.
968 std::array<cl_event,
sizeof...(Args)> events;
973 const cl_event e =
send_kernel_impl( device, kernel.my_cl_kernel, work_size, num_events, events.data() );
◆ send_kernel_impl()
template<typename DeviceFilter >
Definition at line 992 of file flow_graph_opencl_node.h.
998 for (
s = 1;
s < 3 && g_size[
s] != size_t(-1); ++
s) {}
1001 clEnqueueNDRangeKernel( device.my_cl_command_queue, kernel,
s,
1002 g_offset.data(), g_size.data(), l_size[0] ? l_size.data() : NULL, num_events, num_events ? event_list : NULL, &
event ),
1003 "Failed to enqueue a kernel" );
◆ 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:
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_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 const char ITT_FORMAT s __itt_frame ITT_FORMAT p __itt_counter ITT_FORMAT p __itt_counter unsigned long long ITT_FORMAT lu __itt_counter unsigned long long ITT_FORMAT lu __itt_counter __itt_clock_domain unsigned long long void ITT_FORMAT p 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
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
const opencl_device_list & available_devices()
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_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_one_arg(cl_event, T &)
bool get_event_from_args(cl_event &e, 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)
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)
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
Represents acquisition of a mutex.
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::array< range_index_type, 3 > nd_range_type
container_type::iterator iterator
void process_one_arg(const kernel_type &kernel, std::array< cl_event, NUM_ARGS > &, int &, int &place, const T &t)
void enforce_cl_retcode(cl_int err, std::string msg)
std::once_flag my_once_flag
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 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)
tbb::spin_mutex my_devices_mutex
void const char const char int ITT_FORMAT __itt_group_sync s
void suppress_unused_warning(const T1 &)
Utility template function to prevent "unused" warnings by various compilers.
void update_arg_list(cl_event e, T &t, Rest &... args)
bool get_event_from_one_arg(cl_event &, const T &)
void const char const char int ITT_FORMAT __itt_group_sync p
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_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void * data
opencl_device_list my_devices
Copyright © 2005-2020 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.