реализовать функцию на Thrust

Добре пиплз.
Подскажите как можно реализовать на Thrust следующий код:

  1. __global__ void structKernel(MyStruct *c, const MyStruct *a)
  2. {
  3.         int i = blockIdx.x * blockDim.x + threadIdx.x;
  4.        
  5.         if (i>0 && i<gridDim.x-1)
  6.         {
  7.                 c[i].a=a[i].a+0.0f;
  8.                 c[i].b=a[i].b/10.0f;
  9.                 c[i].c=a[i].c*a[i].a;
  10.                 c[i].d=(a[i].a+a[i-1].a+a[i+1].a)/3.0f;
  11.                 c[i].e=(a[i].b+a[i-1].b+a[i+1].b)*2.0f+1.0f;
  12.                 c[i].f=(a[i].c+a[i-1].c+a[i+1].c)/(a[i].d+a[i-1].d+a[i+1].d);
  13.         }
  14. }

понимаю, что нужно написать функтро для Transforme, но не оч. понятно как обратиться к соседним элементам.

Forums: