 }
 
 #ifdef __CUDA_ARCH__
-#if __CUDA_ARCH__ > 200
+#if __CUDA_ARCH__ > 300
 
 __global__ void __dds(int nrows, int nnz, float *A, float *B, int *Cir, int *Cic, float *P) {
   __shared__ float parts[DDS_BLKY];

      }
    }
    if (tid == 0) {
      atomicAdd(&P[j], parts[0]);
    }
  }
}


__global__ void __reduce1op(int nrows, int ncols, float *A, float *B, int opn);

#define DDS_BLKY 4

int dds(int nrows, int nnz, float *A, float *B, int *Cir, int *Cic, float *P) {
  dim3 blockDims(min(32,nrows), min(DDS_BLKY, 1+(nrows-1)/32), 1);
  int nblocks = min(65536, max(1,nnz/8));
