Lambda w funkcji jądra

0

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;
}
0

Odpowiadam sam sobie, bo może kiedyś komuś się to jeszcze przyda...
Lambdę można użyć tylko w funkcjach hosta.

1 użytkowników online, w tym zalogowanych: 0, gości: 1