Во-первых, я создаю BOOST_COMPUTE_FUNCTION следующим образом
BOOST_COMPUTE_FUNCTION(boost::compute::float_, add,
(boost::compute::float_ values0),
{
return values0 + 9;
}
);
Я обнаружил, что g ++ дает мне неправильный ответ, когда я его вызываю, мои коды вызывающих функций следующие:
boost::compute::device device = boost::compute::system::default_device();
boost::compute::context context(device);
boost::compute::command_queue queue(context, device);
boost::compute::vector<boost::compute::float_> Vector(2, context);
float values0a[2]{3,8};
boost::compute::copy(
reinterpret_cast<boost::compute::float_ *>(values0a),
reinterpret_cast<boost::compute::float_ *>(values0a) + 2,
Vector.begin(),
queue
);
boost::compute::vector<boost::compute::float_> output(2, context);
boost::compute::transform(Vector.begin(), Vector.end(), output.begin(), add, queue);
cout<<output[0]<<" "<<output[1];
I получить результат 0 0
во-вторых, когда я создаю BOOST_COMPUTE_FUNCTION, как это, я не знаю, как его вызвать:
BOOST_COMPUTE_FUNCTION(boost::compute::float_, add,
(boost::compute::float_ values0,boost::compute::float_ values1),
{
return values0 + values1;
}
);
boost::compute::vector<boost::compute::float_> Vector(2, context);
boost::compute::vector<boost::compute::float_> Vector2(2, context);
float values0a[2]{3,8};
float values1a[2]{7,12};
boost::compute::copy(
reinterpret_cast<boost::compute::float_ *>(values0a),
reinterpret_cast<boost::compute::float_ *>(values0a) + 2,
Vector.begin(),
queue
);
boost::compute::copy(
reinterpret_cast<boost::compute::float_ *>(values1a),
reinterpret_cast<boost::compute::float_ *>(values1a) + 2,
Vector2.begin(),
queue
);
boost::compute::vector<boost::compute::float_> output(2, context);