boost::compute copy пользовательские структуры

Можно ли копировать массивы пользовательских структур с помощью boost::compute? Например

struct A { float a; };
struct AB { float a; float b; };

BOOST_COMPUTE_ADAPT_STRUCT(A, A, (a))
BOOST_COMPUTE_ADAPT_STRUCT(AB, AB, (a, b))

boost::compute::vector<A> va(100);
boost::compute::vector<AB> vab(100);
boost::compute::copy(va.begin(), va.end(), vab.begin());

1 ответ

Да, посмотрите на этот пример из тестов Boost.Compute. Помните, что:

Из-за различий в заполнении структуры между компилятором хоста и компилятором устройства, макрос BOOST_COMPUTE_ADAPT_STRUCT() требует, чтобы адаптированная структура была упакована (т.е. не было заполненных байтов между членами).

Источник: boost / compute / types / struct.hpp

Другие вопросы по тегам