       int kx, ky;
       for(ky = 0; ky < kH; ky++) {
         for(kx = 0; kx < kW; kx++)
-          ptr_gradInput[kx] += z;
+          ptr_gradInput[kx] += z / float(kW*kH);
         ptr_gradInput += input_w;
       }
     }

        ptr_input += input_w; // next input line
      }
      // Update output
      *ptr_output = sum;
    }
  }
}

      int kx, ky;
      for(ky = 0; ky < kH; ky++) {
        for(kx = 0; kx < kW; kx++) {
          atomicAdd(&(ptr_gradInput[kx]), z / float(kW*kH));
        }
        ptr_gradInput += input_w;
      }
