내 unary_op.operator
에 임시 배열을 만들어야합니다.
나는 cudaMalloc
가야 할 길입니다.
하지만 성능이 효율적입니까 아니면 더 나은 디자인이 있습니까? 이 호스트 전용 기능 때문에추력 : transform_reduce : unary_op.operator의 cudaMalloc
struct my_unary_op
{
__host__ __device__ int operator()(const int& index) const
{
int* array;
cudaMalloc((void**)&array, 10*sizeof(int));
for(int i = 0; i < 10; i++)
array[i] = index;
int sum=0;
for(int i=0; i < 10 ; i++)
sum += array[i];
return sum;
};
};
int main()
{
thrust::counting_iterator<int> first(0);
thrust::counting_iterator<int> last = first+100;
my_unary_op unary_op = my_unary_op();
thrust::plus<int> binary_op;
int init = 0;
int sum = thrust::transform_reduce(first, last, unary_op, init, binary_op);
return 0;
};