21 #ifndef __TBB_flow_graph_gfx_factory_H 22 #define __TBB_flow_graph_gfx_factory_H 26 #if __TBB_PREVIEW_GFX_FACTORY 33 #include <gfx/gfx_rt.h> 34 #include <gfx/gfx_intrin.h> 35 #include <gfx/gfx_types.h> 41 namespace interface9 {
46 namespace gfx_offload {
58 std::string msg =
"GFX error occurred: " + std::to_string(_GFX_get_last_error());
59 std::cerr << msg << std::endl;
70 if (err != GFX_SUCCESS) {
80 template<
typename DataType,
typename SizeType>
82 template<
typename DataType>
97 template <
typename F,
typename ...ArgType>
112 template <
typename T>
116 typedef typename std::vector<T>::iterator
iterator;
167 template <
typename F>
170 template<
typename ...Args>
195 template <
typename ...Args>
201 template <
typename ...Args>
216 callback_future = std::async(std::launch::async, &gfx_factory::callback<Args...>,
this,
id, args...);
220 template <
typename FinalizeFn,
typename ...Args>
240 template <
typename ...Args>
263 template <
typename T>
266 template <
typename T>
271 template <
typename T>
274 template <
typename T>
281 template <
typename T,
typename ...Rest>
291 template <
typename T>
294 template <
typename T>
301 template <
typename T,
typename ...Rest>
313 template <
typename T>
316 template <
typename T>
321 template <
typename T>
324 template <
typename T>
332 template <
typename T,
typename ...Rest>
357 #endif // __TBB_PREVIEW_GFX_FACTORY 359 #endif // __TBB_flow_graph_gfx_factory_H
device_type operator()(gfx_factory &)
std::future< void > callback_future
kernel_id_type my_task_id
const_iterator cend() const
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 id
void share_data(gfx_buffer< T > &buffer)
void throw_gfx_exception()
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
gfx_buffer(size_type size)
void finalize(device_type, FinalizeFn fn, Args &...)
std::shared_ptr< std::vector< T > > my_vector_ptr
void send_arg(async_msg_type< T > &msg)
void share(DataType *p, SizeType n)
void send_data_impl(T &arg, Rest &... args)
const T & operator[](size_type pos) const
void unshare_data(gfx_buffer< T > &buffer)
void send_data(device_type, Args &... args)
tbb::flow::graph & m_graph
void const char const char int ITT_FORMAT __itt_group_sync p
gfx_offload::task_id_type kernel_id_type
gfx_async_msg(const T &input_data)
std::mutex task_wait_mutex
gfx_factory(tbb::flow::graph &g)
void set_kernel_id(kernel_id_type id, T &arg, Rest &... args)
void set_kernel_id(kernel_id_type)
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 callback(kernel_id_type id, Args... args)
void receive_arg(async_msg_type< T > &msg)
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
void release_wait() __TBB_override
Deregisters an external entity that may have interacted with the graph.
void set_task_id(kernel_id_type id)
void set_kernel_id_arg(kernel_id_type id, async_msg_type< T > &msg)
void set_kernel_id_arg(kernel_id_type, T)
void wait_for_task(task_id_type id)
const_iterator cbegin() const
void check_enqueue_retcode(task_id_type err)
void operator()(Args &&... args)
std::vector< T >::iterator iterator
kernel_id_type task_id() const
void check_gfx_retcode(task_id_type err)
T * raw_data(gfx_buffer< T > &buffer)
std::mutex future_assignment_mutex
std::vector< T >::const_iterator const_iterator
T & operator[](size_type pos)
void reserve_wait() __TBB_override
Used to register that an external entity may still interact with the graph.
task_id_type run_kernel(F ptr, ArgType &... args)
void receive_data(T &arg, Rest &... args)
void unshare(DataType *p)
void send_kernel(device_type, const kernel_type &kernel, Args &... args)
gfx_offload::task_id_type kernel_id_type