DETERMINISTIC MULTIPROCESSING
First Claim
1. A method in a computing system of augmenting a multithreaded application to provide deterministic execution of the multithreaded application on a multiprocessing system, the method comprising:
- accessing multithreaded application code specifying two or more threads of execution; and
automatically inserting synchronization code into the multithreaded application code capable of causing the two or more threads to each execute in a deterministic order operations that are capable of affecting a state accessible by at least one other of the two or more threads when the multithreaded application code is executed.
2 Assignments
0 Petitions
Accused Products
Abstract
A hardware and/or software facility for controlling the order of operations performed by threads of a multithreaded application on a multiprocessing system is provided. The facility may serialize or selectively-serialize execution of the multithreaded application such that, given the same input to the multithreaded application, the multiprocessing system deterministically interleaves operations, thereby producing the same output each time the multithreaded application is executed. The facility divides the execution of the multithreaded application code into two or more quantum specifying a deterministic number of operations, and the facility specifies a deterministic order in which the threads execute the two or more quantum. The facility may operate together with a transactional memory system. When the facility operates together with a transactional memory system, each quantum is encapsulated in a transaction that, may be executed concurrently with other transactions, and is committed according to the specified deterministic order.
93 Citations
106 Claims
-
1. A method in a computing system of augmenting a multithreaded application to provide deterministic execution of the multithreaded application on a multiprocessing system, the method comprising:
-
accessing multithreaded application code specifying two or more threads of execution; and automatically inserting synchronization code into the multithreaded application code capable of causing the two or more threads to each execute in a deterministic order operations that are capable of affecting a state accessible by at least one other of the two or more threads when the multithreaded application code is executed. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method in a computing system for augmenting a transactional memory system to provide deterministic execution of a multithreaded application, the method comprising:
-
accessing code for a transactional memory system, the code including one or more implementations of an interface called by code compiled from source code of a multithreaded application, wherein the multithreaded application source code declares one or more code blocks as atomic blocks, and wherein the multithreaded application source code specifies two or more threads; and augmenting the accessed code to include synchronization code such that when the multithreaded application code is executed the two or more threads commit transactions in a deterministic order. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A multiprocessing system comprising:
-
code of a transactional memory system, wherein the code includes an interface specifying a function to commit a transaction; multithreaded application code specifying two or more threads that invoke the function of the interface of the transactional memory system to commit transactions; and an augmentation component to insert synchronization code into the multithreaded application code such that when the function to commit a transaction is invoked, the two or more threads commit transactions in a deterministic order. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A computer-readable storage medium storing a data structure usable to deterministically control the global interleaving of threads of a multithreaded application when the multithreaded application is executed on a multiprocessing system, the data structure comprising:
-
a thread container storing a thread identifier for each of a plurality of threads of the multithreaded application; and a token variable specifying a value that corresponds to a thread identifier stored in the thread container, wherein the value of the token variable advances deterministically according to a sequence in which the thread identifiers are stored in the thread container. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35, 36)
-
-
37. A method is a multiprocessing system for controlling the order of memory operations, the method comprising:
-
executing multithreaded application code on a multiprocessing system, the multithreaded application code specifying a plurality of threads; dividing the execution of the multithreaded application code into two or more quanta, each quantum specifying a deterministic number of operations that include memory operations; and specifying a deterministic order in which the plurality of threads execute the two or more quantum, wherein, when the multithreaded application code is executed, inter-thread communication specifying memory operations is deterministic. - View Dependent Claims (38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62)
-
-
63. A multiprocessing system for controlling the interleaving of threads of a multithreaded application, the system comprising:
-
multithreaded application code specifying a plurality of threads; a quantum builder component to divide the multithreaded application code into two or more quanta, each quantum specifying a deterministic number of operations; and a deterministic component to specify a deterministic order in which threads of the multithreaded application execute the two or more quanta; wherein, when a particular input is specified during multiple executions of the multithreaded application code, each execution produces a same output for the particular input. - View Dependent Claims (64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92)
-
-
93. A computer-readable storage medium storing code that is capable of causing a multiprocessing system to control the order of memory operations executed by threads of a multithreaded application, the code comprising:
-
code to divide multithreaded application code into multiple quanta, each quantum specifying a finite, deterministic number of memory operations; and code to encapsulate each quantum within a transaction that is deterministically committed by one of two or more threads specified by the multithreaded application; wherein the multiprocessing system operates together with a transactional memory system. - View Dependent Claims (94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106)
-
Specification