Intel(R) Threading Building Blocks Doxygen Documentation  version 4.2.3
tbb::flow::interface11::opencl_buffer< T, Factory > Class Template Reference

#include <flow_graph_opencl_node.h>

Inheritance diagram for tbb::flow::interface11::opencl_buffer< T, Factory >:
Collaboration diagram for tbb::flow::interface11::opencl_buffer< T, Factory >:

Public Types

typedef cl_mem native_object_type
 
typedef opencl_buffer memory_object_type
 
typedef Factory opencl_factory_type
 
template<access_type a>
using iterator = T *
 

Public Member Functions

template<access_type a>
iterator< a > access () const
 
T * data () const
 
template<access_type a = read_write>
iterator< a > begin () const
 
template<access_type a = read_write>
iterator< a > end () const
 
size_t size () const
 
T & operator[] (ptrdiff_t k)
 
 opencl_buffer ()
 
 opencl_buffer (size_t size)
 
 opencl_buffer (Factory &f, size_t size)
 
cl_mem native_object () const
 
const opencl_buffermemory_object () const
 
void send (opencl_device device, opencl_async_msg< opencl_buffer, Factory > &dependency) const
 
void receive (const opencl_async_msg< opencl_buffer, Factory > &dependency) const
 
opencl_subbuffer< T, Factory > subbuffer (size_t index, size_t size) const
 

Private Types

typedef opencl_buffer_impl< Factory > impl_type
 

Private Member Functions

 opencl_buffer (Factory &f, cl_mem m, size_t index, size_t size)
 

Private Attributes

std::shared_ptr< impl_typemy_impl
 

Friends

template<typename >
class opencl_factory
 
template<typename , typename >
class opencl_subbuffer
 
bool operator== (const opencl_buffer< T, Factory > &lhs, const opencl_buffer< T, Factory > &rhs)
 

Detailed Description

template<typename T, typename Factory = opencl_info::default_opencl_factory>
class tbb::flow::interface11::opencl_buffer< T, Factory >

Definition at line 632 of file flow_graph_opencl_node.h.

Member Typedef Documentation

◆ impl_type

template<typename T, typename Factory = opencl_info::default_opencl_factory>
typedef opencl_buffer_impl<Factory> tbb::flow::interface11::opencl_buffer< T, Factory >::impl_type
private

Definition at line 691 of file flow_graph_opencl_node.h.

◆ iterator

template<typename T, typename Factory = opencl_info::default_opencl_factory>
template<access_type a>
using tbb::flow::interface11::opencl_buffer< T, Factory >::iterator = T*

Definition at line 638 of file flow_graph_opencl_node.h.

◆ memory_object_type

template<typename T, typename Factory = opencl_info::default_opencl_factory>
typedef opencl_buffer tbb::flow::interface11::opencl_buffer< T, Factory >::memory_object_type

Definition at line 635 of file flow_graph_opencl_node.h.

◆ native_object_type

template<typename T, typename Factory = opencl_info::default_opencl_factory>
typedef cl_mem tbb::flow::interface11::opencl_buffer< T, Factory >::native_object_type

Definition at line 634 of file flow_graph_opencl_node.h.

◆ opencl_factory_type

template<typename T, typename Factory = opencl_info::default_opencl_factory>
typedef Factory tbb::flow::interface11::opencl_buffer< T, Factory >::opencl_factory_type

Definition at line 636 of file flow_graph_opencl_node.h.

Constructor & Destructor Documentation

◆ opencl_buffer() [1/4]

template<typename T, typename Factory = opencl_info::default_opencl_factory>
tbb::flow::interface11::opencl_buffer< T, Factory >::opencl_buffer ( )
inline

Definition at line 659 of file flow_graph_opencl_node.h.

659 {}

◆ opencl_buffer() [2/4]

template<typename T , typename Factory >
tbb::flow::interface11::opencl_buffer< T, Factory >::opencl_buffer ( size_t  size)

Definition at line 1211 of file flow_graph_opencl_node.h.

1211 : my_impl( std::make_shared<impl_type>( size*sizeof(T), opencl_info::default_factory() ) ) {}
default_opencl_factory & default_factory()

◆ opencl_buffer() [3/4]

template<typename T, typename Factory = opencl_info::default_opencl_factory>
tbb::flow::interface11::opencl_buffer< T, Factory >::opencl_buffer ( Factory &  f,
size_t  size 
)
inline

Definition at line 661 of file flow_graph_opencl_node.h.

661 : my_impl( std::make_shared<impl_type>( size*sizeof(T), f ) ) {}

◆ opencl_buffer() [4/4]

template<typename T, typename Factory = opencl_info::default_opencl_factory>
tbb::flow::interface11::opencl_buffer< T, Factory >::opencl_buffer ( Factory &  f,
cl_mem  m,
size_t  index,
size_t  size 
)
inlineprivate

Definition at line 689 of file flow_graph_opencl_node.h.

689 : my_impl( std::make_shared<impl_type>( m, index*sizeof(T), size*sizeof(T), f ) ) {}

Member Function Documentation

◆ access()

template<typename T, typename Factory = opencl_info::default_opencl_factory>
template<access_type a>
iterator<a> tbb::flow::interface11::opencl_buffer< T, Factory >::access ( ) const
inline

Definition at line 641 of file flow_graph_opencl_node.h.

641  {
642  T* ptr = (T*)my_impl->get_host_ptr();
643  __TBB_ASSERT( ptr, NULL );
644  return iterator<a>( ptr );
645  }
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165

References __TBB_ASSERT, and tbb::flow::interface11::opencl_buffer< T, Factory >::my_impl.

◆ begin()

template<typename T, typename Factory = opencl_info::default_opencl_factory>
template<access_type a = read_write>
iterator<a> tbb::flow::interface11::opencl_buffer< T, Factory >::begin ( ) const
inline

Definition at line 650 of file flow_graph_opencl_node.h.

650 { return access<a>(); }

Referenced by tbb::flow::interface11::opencl_buffer< T, Factory >::operator[]().

Here is the caller graph for this function:

◆ data()

template<typename T, typename Factory = opencl_info::default_opencl_factory>
T* tbb::flow::interface11::opencl_buffer< T, Factory >::data ( ) const
inline

Definition at line 647 of file flow_graph_opencl_node.h.

647 { return &access<read_write>()[0]; }

◆ end()

template<typename T, typename Factory = opencl_info::default_opencl_factory>
template<access_type a = read_write>
iterator<a> tbb::flow::interface11::opencl_buffer< T, Factory >::end ( ) const
inline

Definition at line 653 of file flow_graph_opencl_node.h.

653 { return access<a>()+my_impl->size()/sizeof(T); }

References tbb::flow::interface11::opencl_buffer< T, Factory >::my_impl.

◆ memory_object()

template<typename T, typename Factory = opencl_info::default_opencl_factory>
const opencl_buffer& tbb::flow::interface11::opencl_buffer< T, Factory >::memory_object ( ) const
inline

Definition at line 667 of file flow_graph_opencl_node.h.

667  {
668  return *this;
669  }

◆ native_object()

template<typename T, typename Factory = opencl_info::default_opencl_factory>
cl_mem tbb::flow::interface11::opencl_buffer< T, Factory >::native_object ( ) const
inline

Definition at line 663 of file flow_graph_opencl_node.h.

663  {
664  return my_impl->get_cl_mem();
665  }

References tbb::flow::interface11::opencl_buffer< T, Factory >::my_impl.

◆ operator[]()

template<typename T, typename Factory = opencl_info::default_opencl_factory>
T& tbb::flow::interface11::opencl_buffer< T, Factory >::operator[] ( ptrdiff_t  k)
inline

Definition at line 657 of file flow_graph_opencl_node.h.

657 { return begin()[k]; }

References tbb::flow::interface11::opencl_buffer< T, Factory >::begin().

Here is the call graph for this function:

◆ receive()

template<typename T, typename Factory = opencl_info::default_opencl_factory>
void tbb::flow::interface11::opencl_buffer< T, Factory >::receive ( const opencl_async_msg< opencl_buffer< T, Factory >, Factory > &  dependency) const
inline

Definition at line 678 of file flow_graph_opencl_node.h.

678  {
679  __TBB_ASSERT( dependency.data( /*wait = */false ) == *this, NULL );
680  opencl_async_msg<void*, Factory> d = my_impl->receive( dependency.get_event() );
681  const cl_event *e = d.get_event();
682  if ( e ) dependency.set_event( *e );
683  else dependency.clear_event();
684  }
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
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165

References __TBB_ASSERT, tbb::flow::interface11::opencl_async_msg< T, Factory >::clear_event(), d, tbb::flow::interface11::opencl_async_msg< T, Factory >::data(), tbb::flow::interface11::opencl_async_msg< T, Factory >::get_event(), tbb::flow::interface11::opencl_buffer< T, Factory >::my_impl, and tbb::flow::interface11::opencl_async_msg< T, Factory >::set_event().

Here is the call graph for this function:

◆ send()

template<typename T, typename Factory = opencl_info::default_opencl_factory>
void tbb::flow::interface11::opencl_buffer< T, Factory >::send ( opencl_device  device,
opencl_async_msg< opencl_buffer< T, Factory >, Factory > &  dependency 
) const
inline

Definition at line 671 of file flow_graph_opencl_node.h.

671  {
672  __TBB_ASSERT( dependency.data( /*wait = */false ) == *this, NULL );
673  opencl_async_msg<void*, Factory> d = my_impl->send( device, dependency.get_event() );
674  const cl_event *e = d.get_event();
675  if ( e ) dependency.set_event( *e );
676  else dependency.clear_event();
677  }
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
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
Definition: tbb_stddef.h:165

References __TBB_ASSERT, tbb::flow::interface11::opencl_async_msg< T, Factory >::clear_event(), d, tbb::flow::interface11::opencl_async_msg< T, Factory >::data(), tbb::flow::interface11::opencl_async_msg< T, Factory >::get_event(), tbb::flow::interface11::opencl_buffer< T, Factory >::my_impl, and tbb::flow::interface11::opencl_async_msg< T, Factory >::set_event().

Here is the call graph for this function:

◆ size()

template<typename T, typename Factory = opencl_info::default_opencl_factory>
size_t tbb::flow::interface11::opencl_buffer< T, Factory >::size ( ) const
inline

Definition at line 655 of file flow_graph_opencl_node.h.

655 { return my_impl->size()/sizeof(T); }

References tbb::flow::interface11::opencl_buffer< T, Factory >::my_impl.

◆ subbuffer()

template<typename T , typename Factory >
opencl_subbuffer< T, Factory > tbb::flow::interface11::opencl_buffer< T, Factory >::subbuffer ( size_t  index,
size_t  size 
) const

Definition at line 715 of file flow_graph_opencl_node.h.

715  {
716  return opencl_subbuffer<T, Factory>( *this, index, size );
717 }

References size.

Friends And Related Function Documentation

◆ opencl_factory

template<typename T, typename Factory = opencl_info::default_opencl_factory>
template<typename >
friend class opencl_factory
friend

Definition at line 700 of file flow_graph_opencl_node.h.

◆ opencl_subbuffer

template<typename T, typename Factory = opencl_info::default_opencl_factory>
template<typename , typename >
friend class opencl_subbuffer
friend

Definition at line 702 of file flow_graph_opencl_node.h.

◆ operator==

template<typename T, typename Factory = opencl_info::default_opencl_factory>
bool operator== ( const opencl_buffer< T, Factory > &  lhs,
const opencl_buffer< T, Factory > &  rhs 
)
friend

Definition at line 695 of file flow_graph_opencl_node.h.

695  {
696  return lhs.my_impl == rhs.my_impl;
697  }

Member Data Documentation

◆ my_impl


The documentation for this class was generated from the following file:

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.