Patent ID: 8661449

Claim:
A method of computation comprising: distributing a plurality of tasks representative of a computational program to a plurality of compute nodes that are coupled to a distributed shared memory system, the distributed shared memory system comprising a plurality of storage nodes for storing a plurality of versioned data objects; executing each task from among the plurality of tasks as a speculative transaction on a respective compute node from among the plurality of compute nodes, wherein the speculative transaction is initiated by assuming that no dependencies exist among the plurality of tasks, and further wherein the executing comprises: when a versioned data object from among a plurality of versioned data objects is required for a computation of the speculative transaction and a copy of the versioned data object does not already reside in a local cache, reading the versioned data object from a storage node from among the plurality of storage nodes corresponding to the versioned data object and storing the copy of the versioned data object in the local cache; updating a read set corresponding to the speculative transaction; and using the copy of the versioned data object from the local cache to complete the computation for the speculative transaction; designating each speculative transaction as committable on the basis of a dependency ordering of the plurality of tasks; determining whether each committable speculative transaction has any dependency conflicts; committing each speculative transaction that is committable and has no dependency conflicts; aborting each speculative transaction that is committable and has at least one dependency conflict; and re-executing each task corresponding to an aborted speculative transaction if that task is not committed.