Piszę program w CUDA 5.0, korzystam z biblioteki Thrust. Mam pewną funkcję jądra, w której chciałbym użyć lambdy. Niestety kompilator informuje mnie, że próbuję wywołać funkcję hosta (rzeczoną lambdę) w funkcji jądra. Czy da się w ogóle zdefiniować lambdę wykonywaną na GPU? Poniżej przykład kodu, o którym mowa:
__device__ const Buzz Foo::Fun(const thrust::device_ptr<A<float>> a_) {
Buzz result;
// ...
thrust::for_each(objects.begin(), objects.end(),
[&](thrust::device_ptr<Geometry::GeometricObject> object_)-> __device__ void {
// ...
});
// ...
return result;
}