Если я использую thrust::transform в thrust::host, использование лямбда в порядке
thrust::transform(thrust::host, a, a+arraySize,b,d,[](int a, int b)->int
{
return a + b;
});
Однако, если я изменяю thrust::host на thrust::device, код не будет передавать компилятор. Вот ошибка на VS2013:
Тип закрытия для лямбда ( "lambda [] (int, int) → int" ) не может использоваться в типе аргумента шаблона экземпляра шаблона функции
__global__, если только лямбда не определена в пределах__device__или__global__функция
Таким образом, проблема заключается в том, как использовать __device__ или __global__ в связи с устройством lambdas.