ELG SpMM now working

cuda-multivect
gabrielequatrana 6 months ago
parent dc6e5bb942
commit 0490dd77db

@ -122,14 +122,13 @@ GEN_SPGPU_ELL_NAME(TYPE_SYMBOL)
VALUE_TYPE beta, VALUE_TYPE beta,
int baseIndex) int baseIndex)
{ {
// TODO
VALUE_TYPE *px,*py,*pz; VALUE_TYPE *px,*py,*pz;
int cnt; int cnt;
int maxNForACall = max(handle->maxGridSizeX, THREAD_BLOCK*handle->maxGridSizeX); int maxNForACall = max(handle->maxGridSizeX, THREAD_BLOCK*handle->maxGridSizeX);
int maxShmemSz; int maxShmemSz;
maxShmemSz=getGPUSharedMemPerBlock(); maxShmemSz=getGPUSharedMemPerBlock();
//fprintf(stderr,"MaxSHmemSz %d \n",maxShmemSz);
while (rows > maxNForACall) {//managing large vectors while (rows > maxNForACall) {//managing large vectors
cnt = count; cnt = count;
px = (VALUE_TYPE *) x; px = (VALUE_TYPE *) x;
@ -176,7 +175,7 @@ GEN_SPGPU_ELL_NAME(TYPE_SYMBOL)
alpha, cM, rP, alpha, cM, rP,
cMPitch, rPPitch, cMPitch, rPPitch,
rS, rIdx, avgNnzPerRow, rS, rIdx, avgNnzPerRow,
maxNnzPerRow, maxNForACall, maxNnzPerRow, rows,
px, xPitch, beta, baseIndex); px, xPitch, beta, baseIndex);
px += xPitch*MMBSZ; px += xPitch*MMBSZ;
py += yPitch*MMBSZ; py += yPitch*MMBSZ;
@ -189,7 +188,7 @@ GEN_SPGPU_ELL_NAME(TYPE_SYMBOL)
alpha, cM, rP, alpha, cM, rP,
cMPitch, rPPitch, cMPitch, rPPitch,
rS, rIdx, avgNnzPerRow, rS, rIdx, avgNnzPerRow,
maxNnzPerRow, maxNForACall, maxNnzPerRow, rows,
px, xPitch, beta, baseIndex); px, xPitch, beta, baseIndex);
} }

@ -34,12 +34,9 @@ CONCAT(GEN_SPGPU_ELL_NAME(TYPE_SYMBOL), _krn)
int i = threadIdx.x + blockIdx.x * (THREAD_BLOCK); int i = threadIdx.x + blockIdx.x * (THREAD_BLOCK);
if (i < rows) { if (i < rows) {
int j; rS += i; rP += i; cM += i;
rP += rPPitch; int rowSize = rS[0];
cM += cMPitch;
int rowSize = rS[i];
for (int k=0; k<count; k++) { for (int k=0; k<count; k++) {
temp[k][threadIdx.x] = CONCAT(zero_,VALUE_TYPE)(); temp[k][threadIdx.x] = CONCAT(zero_,VALUE_TYPE)();
} }

Loading…
Cancel
Save