 
   fprintf(stdout, "Matrix size is %d\n",size);
 
-  double *h_a, *h_b, *h_c, *h_c1;
-  double *d_a, *d_b, *d_c;
+  floatType_t *h_a, *h_b, *h_c, *h_c1;
+  floatType_t *d_a, *d_b, *d_c;
  
-  size_t numbytes = (size_t ) size * (size_t ) size * sizeof( double );
-
-  h_a = (double *) malloc( numbytes );
+  size_t numbytes = (size_t ) size * (size_t ) size * sizeof( floatType_t );
+
+  h_a = (floatType_t *) malloc( numbytes );
   if( h_a == NULL )
   {
     fprintf(stderr,"Error in host malloc\n");
     return 911;
   }
 
-  h_b = (double *) malloc( numbytes );
+  h_b = (floatType_t *) malloc( numbytes );
   if( h_b == NULL )
   {
     fprintf(stderr,"Error in host malloc\n");
     return 911;
   }
 
-  h_c = (double *) malloc( numbytes );
+  h_c = (floatType_t *) malloc( numbytes );
   if( h_c == NULL )
   {
     fprintf(stderr,"Error in host malloc\n");
     return 911;
   }
 
-  h_c1 = (double *) malloc( numbytes );
+  h_c1 = (floatType_t *) malloc( numbytes );
   if( h_c1 == NULL )
   {
     fprintf(stderr,"Error in host malloc\n");


int main( int argc, char *argv[] )
{
/* get GPU device number and name */

  int dev;

#define THREADS_PER_BLOCK_Y 16 // Thread block size, y dimension
#define BLOCK_K 16 // square block of K size

__global__ void GPU_shmem2(const int m, floatType_t const * const a, 
      floatType_t const * const b, floatType_t *c )
{

/* setup some constanst for later use */
