A computing device comprising: memory storing instructions to compute a combinatorial cost function of a plurality of variables; an accelerator device; and a processor configured to: generate a plurality of data packs, wherein each data pack indicates an update to a variable of the one or more variables, wherein each data pack indicates one or more terms of the combinatorial cost function in which the variable indicated in the data pack occurs; identify at least a first set of one or more terms and a second set of one or more terms included in the combinatorial cost function, wherein the first set of one or more terms and the second set of one or more terms respectively include non-overlapping sets of variables; and set an update order to include a first data pack stream in which the one or more terms of the first set are configured to be updated and a second data pack stream in which the one or more terms of the second set are configured to be updated; and transmit the plurality of data packs to the accelerator device in the update order; wherein the accelerator device is configured to: for each data pack: retrieve a variable value of the variable indicated by the data pack; and generate an updated variable value of the variable as indicated by the data pack; generate an updated cost function value of the combinatorial cost function based on the updated variable value; determine a transition probability using a Monte Carlo algorithm; and store the updated variable value and the updated cost function value with the transition probability; and output a final updated cost function value of the combinatorial cost function to the processor. memory storing instructions to compute a combinatorial cost function of a plurality of variables; an accelerator device; and a processor configured to: generate a plurality of data packs, wherein each data pack indicates an update to a variable of the one or more variables, wherein each data pack indicates one or more terms of the combinatorial cost function in which the variable indicated in the data pack occurs; identify at least a first set of one or more terms and a second set of one or more terms included in the combinatorial cost function, wherein the first set of one or more terms and the second set of one or more terms respectively include non-overlapping sets of variables; and set an update order to include a first data pack stream in which the one or more terms of the first set are configured to be updated and a second data pack stream in which the one or more terms of the second set are configured to be updated; and transmit the plurality of data packs to the accelerator device in the update order; generate a plurality of data packs, wherein each data pack indicates an update to a variable of the one or more variables, wherein each data pack indicates one or more terms of the combinatorial cost function in which the variable indicated in the data pack occurs; identify at least a first set of one or more terms and a second set of one or more terms included in the combinatorial cost function, wherein the first set of one or more terms and the second set of one or more terms respectively include non-overlapping sets of variables; and set an update order to include a first data pack stream in which the one or more terms of the first set are configured to be updated and a second data pack stream in which the one or more terms of the second set are configured to be updated; and transmit the plurality of data packs to the accelerator device in the update order; wherein the accelerator device is configured to: for each data pack: retrieve a variable value of the variable indicated by the data pack; and generate an updated variable value of the variable as indicated by the data pack; generate an updated cost function value of the combinatorial cost function based on the updated variable value; determine a transition probability using a Monte Carlo algorithm; and store the updated variable value and the updated cost function value with the transition probability; and output a final updated cost function value of the combinatorial cost function to the processor. for each data pack: retrieve a variable value of the variable indicated by the data pack; and generate an updated variable value of the variable as indicated by the data pack; generate an updated cost function value of the combinatorial cost function based on the updated variable value; determine a transition probability using a Monte Carlo algorithm; and store the updated variable value and the updated cost function value with the transition probability; and retrieve a variable value of the variable indicated by the data pack; and generate an updated variable value of the variable as indicated by the data pack; generate an updated cost function value of the combinatorial cost function based on the updated variable value; determine a transition probability using a Monte Carlo algorithm; and store the updated variable value and the updated cost function value with the transition probability; and output a final updated cost function value of the combinatorial cost function to the processor.