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> | Первый элемент в диапазоне результатов |