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

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

        ptr_input += input_w; // next input line
      }
      // Update output
      *ptr_output = sum/float(kW*kH);
    }
  }
}
