Równoległy tensor Kroneckera na procesorach graficznych wykorzystujących CUDA

Pracuję w parallelise [ten plik] [1] na GPU używając [plik PTX z matlab parallel.gpu.CUDAkernel] [2]. Mój problem z [kron tensor product] [3] jest następujący. Mój kod powinien pomnożyć dwa wektorykron(a,b) mnożąc każdy element pierwszego wektoraa=<32x1> przez wszystkie elementy drugiego wektorab=<1x32> a wielkość wyjściowego wektora będziek<32x32>=a.*b. Próbowałem napisać to w C ++ i zadziałało, ponieważ chodzi mi tylko o zsumowanie wszystkich elementów tablicy 2d. Myślałem, że mogę to ułatwić jako tablicę 1D, ponieważm=sum(sum(kron(a,b))) to kod, nad którym pracuję

for(i=0;i<32;i++)
 for(j=0;j<32;j++)
   k[i*32+j]=a[i]*b[j]

To miało mieća[i]element pomnożyć przez eachelement wb i myślę, że pójdę32 bloki z każdym blokiem mają32 wątki i kod powinien być

__global__ void myKrom(int* c,int* a, int*b) {
  int i=blockDim.x*blockIdx.x+threadIdx.x;
  while(i<32) {
    c[i]=a[blockIdx.x]+b[blockDim.x*blockIdx.x+threadIdx.x];
  }

To powinno sprawić, że sztuczka stanie sięblockIdx.x jest zewnętrzną pętlą, ale tak się nie stało. Czy ktokolwiek mógłby mi powiedzieć, gdzie, mogę poprosić o równoległy sposób, aby wykonać sumę równoległą.

questionAnswers(2)

yourAnswerToTheQuestion