Faster version for RowWiseSparseAdagradOp

Summary: Move common operation out of loop.

Reviewed By: dzhulgakov

Differential Revision: D5962894

fbshipit-source-id: e4f8a5406c870958215cbc1fd366fa87bc381471
diff --git a/caffe2/sgd/adagrad_op.h b/caffe2/sgd/adagrad_op.h
index 4e9ea10..98a535f 100644
--- a/caffe2/sgd/adagrad_op.h
+++ b/caffe2/sgd/adagrad_op.h
@@ -241,8 +241,9 @@
           hs += gj * gj;
         }
         float hi = nh[0] = h[0] + hs / block_size;
+        float step = lr[0] / (std::sqrt(hi) + epsilon_);
         for (auto j = 0; j < block_size; ++j) {
-          nw[j] = w[j] + lr[0] * g[j] / (std::sqrt(hi) + epsilon_);
+          nw[j] = w[j] + g[j] * step;
         }
       }
     }