   if(Session::GetSession()->gpu) {
     dim3 blocksInGrid(batch_size/BLOCKDIM+1, in_channels/BLOCKDIM+1);
     dim3 threadsPerBlock(BLOCKDIM, BLOCKDIM);
-    FCKernels::ComputeBottomDiffs<Dtype><<<blocksInGrid, threadsPerBlock>>>(top_diff, bottom_diff, W_);
+    FCGPUKernels::ComputeBottomDiffs<Dtype><<<blocksInGrid, threadsPerBlock>>>(top_diff, bottom_diff, W_);
     blocksInGrid = dim3(in_channels/BLOCKDIM+1, out_channels/BLOCKDIM+1);
-    FCKernels::ComputeWDiffs<Dtype><<<blocksInGrid, threadsPerBlock>>>(bottom, top_diff, W_diff_);
-    FCKernels::ComputeBDiffs<Dtype><<<out_channels/BLOCKDIM/BLOCKDIM, BLOCKDIM*BLOCKDIM>>>(top_diff, b_diff_);
+    FCGPUKernels::ComputeWDiffs<Dtype><<<blocksInGrid, threadsPerBlock>>>(bottom, top_diff, W_diff_);
+    FCGPUKernels::ComputeBDiffs<Dtype><<<out_channels/BLOCKDIM/BLOCKDIM, BLOCKDIM*BLOCKDIM>>>(top_diff, b_diff_);
   } else { 
     // compute bottom diffs
     for(int i = 0; i < in_channels; i++) {

#include "initializers/const_initializer.cu"
#include "basics/layer.hpp"
#include "utils/utils.cu"
// #include <stdio.h>

#define BLOCKDIM 32

namespace FCGPUKernels {
  template <class Dtype> 

  }
}




