Patent Document ID: 9116258
Application ID: 13653065
Patent Flag: 1

Claim One:
1. A method of performing geostatistics modeling, the method comprising: in master program code executing in at least one thread, running a parallel multiple point statistics simulation of an n-dimensional grid of cells by: determining an ordered path through the n-dimensional grid; selecting a set of unassigned cells along the ordered path; applying a discrete-value-prediction algorithm to predict values for multiple cells to be used in simulating the set of unassigned cells; and initiating execution of slave program code on each of a plurality of threads to initiate concurrent simulation of the set of unassigned cells by the plurality of threads, wherein the master program code associates each of the unassigned cells in the set of unassigned cells with a thread from among the plurality of threads and provides at least a subset of the predicted values to each of the plurality of threads for use in simulation; in each of the plurality of threads, executing the slave program code, including: receiving the associated unassigned cell from the master program code; storing in a separate copy of the n-dimensional grid from that of the master program code any predicted values or results for other unassigned cells provided by the master program code; performing multiple point statistics simulation of the associated unassigned cell using the separate copy of the n-dimensional grid to generate a result; and returning the result to the master program code; and in the master program code: in response to receiving a first result from a first thread among the plurality of threads and associated with a first unassigned cell from among the set of unassigned cells, assigning the first result to the first unassigned cell and comparing the first result with a first predicted value for the first unassigned cell; and in response to a mismatch between the first result and the first predicted value: halting at least one of the plurality of threads from which a result has not yet been received; and initiating execution of the slave program code on at least one thread to restart simulation of at least one unassigned cell from the set of unassigned cells using the first result from the first thread instead of the first predicted value.