1. A method of facilitating data processing in a distributed computing environment, said method comprising: partitioning, by a processor executing on a node of the distributed computing environment, a program that represents a resource assignment task into a plurality of sub-instances, the partitioning reducing communication costs between the sub-instances and reducing convergence time for the program; and assigning the plurality of sub-instances to a plurality of nodes of the distributed computing environment, the plurality of nodes to execute the plurality of sub-instances to obtain a result for the resource assignment task by, in part, associating penalty variables with constraints of the resource assignment task, the penalty variables indicating levels of satisfaction of the constraints of the resource assignment task based on current values of variables of those constraints, and by exchanging among multiple nodes of the plurality of nodes values of the penalty variables; iteratively executing by a node of the plurality of nodes the sub-instance assigned to that node, the iteratively executing providing a sub-result usable to obtain the result for the resource assignment task; wherein the iteratively executing comprises: obtaining, from at least one other node of the plurality of nodes, one or more current values of one or more penalty variables, the one or more penalty variables indicating one or more levels of satisfaction of one or more constraints assigned to one or more other sub-instances of the at least one other node, wherein the one or more constraints comprise at least one variable of the sub-instance assigned to the node; updating at least one value of the at least one variable of the sub-instance assigned to the node based, at least in part, on at least one value of the one or more current values of the one or more penalty variables obtained from the at least one other node; and providing to the at least one other node the updated at least one value of the at least one variable.