Distributed Gradient Descent Algorithm