47    DPCTLSyclQueueRef queue_ref; 
 
   49    void *aux_ptr = 
nullptr; 
 
   52    size_t size_in_bytes = 0; 
 
   53    bool allocated = 
false; 
 
   55    bool target_no_queue = 
false; 
 
   57    bool copy_back = 
false; 
 
   59    const bool verbose = 
false;
 
   60    std::vector<sycl::event> deps;
 
   68                      bool target_no_sycl = 
false,
 
   69                      bool copy_back_request = 
false)
 
   72        queue = *(
reinterpret_cast<sycl::queue *
>(queue_ref));
 
   73        target_no_queue = target_no_sycl;
 
   74        copy_back = copy_back_request;
 
   75        orig_ptr = 
const_cast<void *
>(src_ptr);
 
   76        size_in_bytes = size * 
sizeof(_DataType);
 
   77        deps = std::vector<sycl::event>{};
 
   80        sycl::usm::alloc src_ptr_type = sycl::usm::alloc::unknown;
 
   81        src_ptr_type = sycl::get_pointer_type(src_ptr, queue.get_context());
 
   83            std::cerr << 
"DPNPC_ptr_converter:";
 
   84            std::cerr << 
"\n\t target_no_queue=" << target_no_queue;
 
   85            std::cerr << 
"\n\t copy_back=" << copy_back;
 
   86            std::cerr << 
"\n\t pointer=" << src_ptr;
 
   87            std::cerr << 
"\n\t size=" << size;
 
   88            std::cerr << 
"\n\t size_in_bytes=" << size_in_bytes;
 
   89            std::cerr << 
"\n\t pointer type=" << (long)src_ptr_type;
 
   90            std::cerr << 
"\n\t queue inorder=" << queue.is_in_order();
 
   91            std::cerr << 
"\n\t queue device is_cpu=" 
   92                      << queue.get_device().is_cpu();
 
   93            std::cerr << 
"\n\t queue device is_gpu=" 
   94                      << queue.get_device().is_gpu();
 
   95            std::cerr << 
"\n\t queue device is_accelerator=" 
   96                      << queue.get_device().is_accelerator();
 
   97            std::cerr << std::endl;
 
  100        if (is_memcpy_required(src_ptr_type)) {
 
  102            dpnp_memory_memcpy_c(queue_ref, aux_ptr, src_ptr, size_in_bytes);
 
  105                std::cerr << 
"DPNPC_ptr_converter::alloc and copy memory" 
  106                          << 
" from=" << src_ptr << 
" to=" << aux_ptr
 
  107                          << 
" size_in_bytes=" << size_in_bytes << std::endl;
 
  111            aux_ptr = 
const_cast<void *
>(src_ptr);
 
  119                std::cerr << 
"DPNPC_ptr_converter::free_memory at=" << aux_ptr
 
  123            sycl::event::wait(deps);
 
  129            dpnp_memory_free_c(queue_ref, aux_ptr);
 
  133    bool is_memcpy_required(sycl::usm::alloc src_ptr_type)
 
  135        if (target_no_queue || queue.get_device().is_gpu()) {
 
  136            if (src_ptr_type == sycl::usm::alloc::unknown) {
 
  139            else if (target_no_queue &&
 
  140                     src_ptr_type == sycl::usm::alloc::device) {
 
  148    _DataType *get_ptr()
 const 
  150        return reinterpret_cast<_DataType *
>(aux_ptr);
 
  153    void copy_data_back()
 const 
  156            std::cerr << 
"DPNPC_ptr_converter::copy_data_back:" 
  157                      << 
" from=" << aux_ptr << 
" to=" << orig_ptr
 
  158                      << 
" size_in_bytes=" << size_in_bytes << std::endl;
 
  161        dpnp_memory_memcpy_c(queue_ref, orig_ptr, aux_ptr, size_in_bytes);
 
  164    void depends_on(
const std::vector<sycl::event> &new_deps)
 
  167        deps.insert(std::end(deps), std::begin(new_deps), std::end(new_deps));
 
  170    void depends_on(
const sycl::event &new_dep)
 
  173        deps.push_back(new_dep);