У меня есть шаблонная структура по некоторым причинам (за рамками этого вопроса):
template<typename T, __device__ retV (*funcptr)(T)>
struct func
{
__device__ inline retV invoke(T i) { funcptr(i); }
};
, который можно использовать таким образом:
__device__ double increment(double x) {
return x + 1.0;
}
__constant__ func<double, double, &increment> myfunc;
__device__ double apply(double x)
{
return myfunc.invoke(x);
}
Это хорошо работает с nvcc (cuda 10.0), но завершается неудачно с nvrtc (JIT-компиляцией) со следующей ошибкой:
ошибка: атрибуты могут не отображаться здесь
Как мне изменить этот код, чтобы он работал с nvrtc?
Или я должен добавить флаги в моей командной строке?