]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/compute/algorithm/detail/copy_to_device.hpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / boost / compute / algorithm / detail / copy_to_device.hpp
index 8601bb20ec71f41654aad0b6525bd2cdb7f64d07..bcfc2f4d2b381ddf6720154ff986a98d008ef089 100644 (file)
@@ -28,7 +28,8 @@ template<class HostIterator, class DeviceIterator>
 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
@@ -47,7 +48,8 @@ inline DeviceIterator copy_to_device(HostIterator first,
     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);
 }
@@ -56,7 +58,8 @@ template<class HostIterator, class DeviceIterator>
 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
@@ -78,7 +81,8 @@ inline DeviceIterator copy_to_device_map(HostIterator first,
             result.get_buffer(),
             CL_MAP_WRITE,
             offset * sizeof(value_type),
-            count * sizeof(value_type)
+            count * sizeof(value_type),
+            events
         )
     );
 
@@ -99,7 +103,8 @@ template<class HostIterator, class DeviceIterator>
 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
@@ -119,7 +124,8 @@ inline future<DeviceIterator> copy_to_device_async(HostIterator first,
         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_);
 }
@@ -130,7 +136,8 @@ template<class HostIterator, class T>
 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){
@@ -138,7 +145,7 @@ inline svm_ptr<T> copy_to_device(HostIterator first,
     }
 
     queue.enqueue_svm_memcpy(
-        result.get(), ::boost::addressof(*first), count * sizeof(T)
+        result.get(), ::boost::addressof(*first), count * sizeof(T), events
     );
 
     return result + count;
@@ -148,7 +155,8 @@ template<class HostIterator, class T>
 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){
@@ -156,7 +164,7 @@ inline future<svm_ptr<T> > copy_to_device_async(HostIterator first,
     }
 
     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_);
@@ -166,7 +174,8 @@ template<class HostIterator, class T>
 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){
@@ -174,7 +183,9 @@ inline svm_ptr<T> copy_to_device_map(HostIterator first,
     }
 
     // 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()));