Я пытаюсь использовать специальную функцию, предоставленную boost.math в алгоритме тяги.
По сути, я хочу сделать преобразование, например,
thrust::device_vector<double> in(1000);
thrust::device_vector<double> out(1000);
thrust::transform(in.begin(), in.end(), out.begin(), myfunctor());
где myfunctor()
задается
#include <boost/math/special_functions/ellint_1.hpp>
.
.
.
struct myfunctor {
__host__ __device__
double operator()(double k) {
return boost::math::ellint_1(sqrt(k));
}
};
Я продолжаю получать warning: calling a __host__ function from a __host__ __device__ function is not allowed
прямо в строке, где в функторе вызывается ellint_1
.
Я делаю что-то не так или Boost.mathне подходит для использования GPGPU (потому что из того, что я прочитал, я определенно думал, что это было)?