inline HostIterator copy_to_host(DeviceIterator first,
DeviceIterator last,
HostIterator result,
- command_queue &queue)
+ command_queue &queue,
+ const wait_list &events)
{
typedef typename
std::iterator_traits<DeviceIterator>::value_type
queue.enqueue_read_buffer(buffer,
offset * sizeof(value_type),
count * sizeof(value_type),
- ::boost::addressof(*result));
+ ::boost::addressof(*result),
+ events);
return iterator_plus_distance(result, count);
}
inline HostIterator copy_to_host_map(DeviceIterator first,
DeviceIterator last,
HostIterator result,
- command_queue &queue)
+ command_queue &queue,
+ const wait_list &events)
{
typedef typename
std::iterator_traits<DeviceIterator>::value_type
first.get_buffer(),
CL_MAP_READ,
offset * sizeof(value_type),
- count * sizeof(value_type)
+ count * sizeof(value_type),
+ events
)
);
inline future<HostIterator> copy_to_host_async(DeviceIterator first,
DeviceIterator last,
HostIterator result,
- command_queue &queue)
+ command_queue &queue,
+ const wait_list &events)
{
typedef typename
std::iterator_traits<DeviceIterator>::value_type
queue.enqueue_read_buffer_async(buffer,
offset * sizeof(value_type),
count * sizeof(value_type),
- ::boost::addressof(*result));
+ ::boost::addressof(*result),
+ events);
return make_future(iterator_plus_distance(result, count), event_);
}
inline HostIterator copy_to_host(svm_ptr<T> first,
svm_ptr<T> last,
HostIterator result,
- command_queue &queue)
+ command_queue &queue,
+ const wait_list &events)
{
size_t count = iterator_range_size(first, last);
if(count == 0){
}
queue.enqueue_svm_memcpy(
- ::boost::addressof(*result), first.get(), count * sizeof(T)
+ ::boost::addressof(*result), first.get(), count * sizeof(T), events
);
return result + count;
inline future<HostIterator> copy_to_host_async(svm_ptr<T> first,
svm_ptr<T> last,
HostIterator result,
- command_queue &queue)
+ command_queue &queue,
+ const wait_list &events)
{
size_t count = iterator_range_size(first, last);
if(count == 0){
}
event event_ = queue.enqueue_svm_memcpy_async(
- ::boost::addressof(*result), first.get(), count * sizeof(T)
+ ::boost::addressof(*result), first.get(), count * sizeof(T), events
);
return make_future(iterator_plus_distance(result, count), event_);
inline HostIterator copy_to_host_map(svm_ptr<T> first,
svm_ptr<T> last,
HostIterator result,
- command_queue &queue)
+ command_queue &queue,
+ const wait_list &events)
{
size_t count = iterator_range_size(first, last);
if(count == 0){
}
// map
- queue.enqueue_svm_map(first.get(), count * sizeof(T), CL_MAP_READ);
+ queue.enqueue_svm_map(first.get(), count * sizeof(T), CL_MAP_READ, events);
// copy [first; last) to result
std::copy(