Produto de tensor paralelo de Kronecker em GPUs usando CUDA
Eu estou trabalhando em paralelo [este arquivo] [1] em GPU usando [arquivo PTX com matlab parallel.gpu.CUDAkernel] [2]. Meu problema com [kron tensor product] [3] é o seguinte. Meu código deve multiplicar dois vetoreskron(a,b)
multiplicando cada elemento do primeiro vetora=<32x1>
pelos todos os elementos do outro vetorb=<1x32>
e o tamanho do vetor de saída serák<32x32>=a.*b
. Eu tentei escrevê-lo em C ++ e funcionou, como eu só preocupação sobre a soma de todos os elementos da matriz 2d. Eu pensei que eu poderia tornar mais fácil como array 1D porquem=sum(sum(kron(a,b)))
é o código em que estou trabalhando
for(i=0;i<32;i++)
for(j=0;j<32;j++)
k[i*32+j]=a[i]*b[j]
Significava ter oa[i]
o elemento multiplicar por cada elementob
e eu pensei em ir com32
blocos com cada bloco tem um32
threads e o código deve 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];
}
Isso deve fazer o truque como oblockIdx.x
é o loop externo, mas isso não aconteceu. Poderia algum corpo me dizer onde, posso pedir uma maneira paralela para fazer a soma paralela.