inline DeviceIterator copy_to_device(HostIterator first,
HostIterator last,
DeviceIterator result,
- command_queue &queue)
+ command_queue &queue,
+ const wait_list &events)
{
typedef typename
std::iterator_traits<DeviceIterator>::value_type
queue.enqueue_write_buffer(result.get_buffer(),
offset * sizeof(value_type),
count * sizeof(value_type),
- ::boost::addressof(*first));
+ ::boost::addressof(*first),
+ events);
return result + static_cast<difference_type>(count);
}
inline DeviceIterator copy_to_device_map(HostIterator first,
HostIterator last,
DeviceIterator result,
- command_queue &queue)
+ command_queue &queue,
+ const wait_list &events)
{
typedef typename
std::iterator_traits<DeviceIterator>::value_type
result.get_buffer(),
CL_MAP_WRITE,
offset * sizeof(value_type),
- count * sizeof(value_type)
+ count * sizeof(value_type),
+ events
)
);
inline future<DeviceIterator> copy_to_device_async(HostIterator first,
HostIterator last,
DeviceIterator result,
- command_queue &queue)
+ command_queue &queue,
+ const wait_list &events)
{
typedef typename
std::iterator_traits<DeviceIterator>::value_type
queue.enqueue_write_buffer_async(result.get_buffer(),
offset * sizeof(value_type),
count * sizeof(value_type),
- ::boost::addressof(*first));
+ ::boost::addressof(*first),
+ events);
return make_future(result + static_cast<difference_type>(count), event_);
}
inline svm_ptr<T> copy_to_device(HostIterator first,
HostIterator last,
svm_ptr<T> 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(
- result.get(), ::boost::addressof(*first), count * sizeof(T)
+ result.get(), ::boost::addressof(*first), count * sizeof(T), events
);
return result + count;
inline future<svm_ptr<T> > copy_to_device_async(HostIterator first,
HostIterator last,
svm_ptr<T> 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(
- result.get(), ::boost::addressof(*first), count * sizeof(T)
+ result.get(), ::boost::addressof(*first), count * sizeof(T), events
);
return make_future(result + count, event_);
inline svm_ptr<T> copy_to_device_map(HostIterator first,
HostIterator last,
svm_ptr<T> 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(result.get(), count * sizeof(T), CL_MAP_WRITE);
+ queue.enqueue_svm_map(
+ result.get(), count * sizeof(T), CL_MAP_WRITE, events
+ );
// copy [first; last) to result buffer
std::copy(first, last, static_cast<T*>(result.get()));