Function template copy
boost::compute::copy
Synopsis
template<typename InputIterator, typename OutputIterator>
OutputIterator
copy(InputIterator first, InputIterator last, OutputIterator result,
command_queue & queue = system::default_queue());
Description
Сопоставляет значения в диапазоне<first
>,<last
>до диапазона, начинающегося с<result
>.
Общая функция копирования может использоваться для различных задач передачи данных и обеспечивает стандартный интерфейс для следующих функций OpenCL:
<clEnqueueReadBuffer()
>
<clEnqueueWriteBuffer()
>
<clEnqueueCopyBuffer()
>
В отличие от вышеупомянутых функций OpenCL, copy() также будет работать с несвязанными структурами данных (например,<std::list<T>
>), а также с «причудливыми» итераторами (например,<transform_iterator
>).
Например, для копирования массива<int
>значений на хосте вектора на устройстве:
int data[] = { 1, 2, 3, 4 };
boost::compute::vector<int> vec(4, context);
boost::compute::copy(data, data + 4, vec.begin(), queue);
Алгоритм копирования также может использоваться со стандартными контейнерами, такими как<std::vector<T>
>:
std::vector<int> host_vector = ...
boost::compute::vector<int> device_vector = ...
boost::compute::copy(
host_vector.begin(), host_vector.end(), device_vector.begin(), queue
);
boost::compute::copy(
device_vector.begin(), device_vector.end(), host_vector.begin(), queue
);
Смотрите также:
copy_n(), copy_if(), copy_async()
Параметры: | |
first
| Первый элемент в диапазоне для копирования |
<last > | последний элемент в диапазоне для копирования |
<queue > | командная очередь для выполнения операции |
<result > | Первый элемент в диапазоне результатов |