Если я использую 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.