Producto de tensor de Kronecker paralelo en GPU utilizando CUDA
Estoy trabajando en paralelismo [este archivo] [1] en GPU usando [archivo PTX con matlab parallel.gpu.CUDAkernel] [2]. Mi problema con [kron tensor product] [3] es el siguiente. Mi código debe multiplicar dos vectoreskron(a,b)
multiplicando cada elemento del primer vectora=<32x1>
por todos los elementos del otro vectorb=<1x32>
y el tamaño del vector de salida serák<32x32>=a.*b
. Intenté escribirlo en C ++ y funcionó, ya que solo me preocupa sumar todos los elementos de la matriz 2d. Pensé que puedo hacerlo fácil como matriz 1D porquem=sum(sum(kron(a,b)))
es el código en el que estoy trabajando
for(i=0;i<32;i++)
for(j=0;j<32;j++)
k[i*32+j]=a[i]*b[j]
Significaba tener ela[i]
El elemento se multiplica por cada elemento enb
y pensé en ir con32
bloques con cada bloque tiene una32
hilos y el código debe ser
__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];
}
Eso debería hacer el truco como elblockIdx.x
Es el bucle externo, pero no lo hizo. ¿Podría algún cuerpo decirme dónde, puedo pedir una forma paralela para hacer la suma paralela?