# US 2017/0286182 A1 · Identifying Enhanced Synchronization Operation Outcomes to Improve Runtime Operations

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2017/0286182 A1
- Document ID: US20170286182A1
- Status: Published application
- Kind: A1
- Application number: 15/085,108
- Filed: 2016-03-30
- Published: 2017-10-05
- Earliest claimed: 2016-03-30
- Assignees: QUALCOMM Incorporated
- Applicants: QUALCOMM Incorporated
- Inventors: Dario Suarez Gracia; Gheorghe Cascaval; Han Zhao; Tushar Kumar; Aravind Natarajan; Arun Raman
- Web page: https://patentgrep.com/patent/US20170286182A1

## CPC

- G06F 9/52: Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F 9/46: Multiprogramming arrangements
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Embodiments include computing devices, systems, and methods identifying enhanced synchronization operation outcomes. A computing device may receive a first resource access request for a first resource of a computing device including a first requester identifier from a first computing element of the computing device. The computing device may also receive a second resource access request for the first resource including a second requester identifier from a second computing element of the computing device. The computing device may grant the first computing element access to the first resource based on the first resource access request, and return a response to the second computing element including the first requester identifier as a winner computing element identifier.

## Claims

### Claim 1

A method of identifying enhanced synchronization operation outcomes in a computing device, comprising:
receiving a plurality of resource access requests for a first resource of the computing device from a plurality of computing elements of the computing device including a first resource access request having a first requester identifier from a first computing element of the plurality of computing elements and a second resource access request having a second requester identifier from a second computing element of the plurality of computing elements;
granting the first computing element access to the first resource based on the first resource access request; and
returning a response to the second computing element including the first requester identifier as a winner computing element identifier.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
comparing the second requester identifier to the winner computing element identifier; and
determining whether the second computing element is a winner computing element by the second requester identifier matching the winner computing element identifier.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
identifying the winner computing element from the winner computing element identifier;
determining whether a criterion is met for adjusting a second resource of the computing device in response to determining that the second computing element is not the winner computing element; and
adjusting the second resource by the second computing element in response to determining that the criterion is met for adjusting the second resource.

### Claim 4 (depends on 3)

The method of claim 3, wherein determining whether a criterion is met for adjusting a second resource of the computing device comprises determining, by the second computing element, a likelihood of sharing the second resource by the first computing element and the second computing element based on one or more of a shared operating system, shared dynamic voltage and frequency scaling, and a shared topology.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
receiving a third resource access request for the first resource including a third requester identifier from a third computing element of the plurality of computing elements; and
returning the response to the third computing element including the first requester identifier as the winner computing element identifier.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
determining whether the second computing element has a task to execute; and
sending a signal to steal a task from the first computing element in response to determining that the second computing element does not have a task to execute, wherein the signal includes the second requester identifier.

### Claim 7 (depends on 6)

The method of claim 6, further comprising:
receiving a response to the signal to steal a task including a task winner computing element identifier;
comparing the second requester identifier to the task winner computing element identifier;
determining whether the second computing element is a task winner computing element by the second requester identifier matching the task winner computing element identifier; and
adjusting a task stealing list of the second computing element in response to determining that the second computing element is not the task winner computing element.

### Claim 8 (depends on 7)

The method of claim 7, wherein adjusting the task stealing list of the second computing element comprises re-arranging items in the stealing list based at least in part on whether a computing element is executing a recursive task or a non-recursive task.

### Claim 9

A computing device configured for identifying enhanced synchronization operation outcomes, comprising:
a plurality of computing elements, including a first computing element and a second computing element;
a first resource; and
a resource manager communicatively connected to the plurality of computing elements and the resource, wherein the resource manager is configured with executable instructions to perform operations comprising:
receiving a plurality of resource access requests for the first resource including a first resource access request having a first requester identifier from the first computing element and a second resource access request having a second requester identifier from the second computing element;
granting the first computing element access to the first resource based on the first resource access request; and
returning a response to the second computing element including the first requester identifier as a winner computing element identifier.

### Claim 10 (depends on 9)

The computing device of claim 9, wherein the second computing element is configured with executable instructions to perform operations comprising:
comparing the second requester identifier to the winner computing element identifier; and
determining whether the second computing element is a winner computing element by the second requester identifier matching the winner computing element identifier.

### Claim 11 (depends on 10)

The computing device of claim 10, further comprising a second resource communicatively connected to the second computing element, wherein the second computing element is configured with executable instructions to perform operations further comprising:
identifying the winner computing element from the winner computing element identifier;
determining whether a criterion is met for adjusting the second resource in response to determining that the second computing element is not the winner computing element; and
adjusting the second resource in response to determining that the criterion is met for adjusting the second resource.

### Claim 12 (depends on 11)

The computing device of claim 11, wherein the second computing element is configured with executable instructions to perform operations such that determining whether a criterion is met for adjusting the second resource comprises determining a likelihood of sharing the second resource by the first computing element and the second computing element based on one or more of a shared operating system, shared dynamic voltage and frequency scaling, and a shared topology.

### Claim 13 (depends on 9)

The computing device of claim 9, wherein the plurality of computing elements further comprises a third computing element, and wherein the resource manager is configured with executable instructions to perform operations further comprising:
receiving a third resource access request for the first resource including a third requester identifier from the third computing element; and
returning the response to the third computing element including the first requester identifier as the winner computing element identifier.

### Claim 14 (depends on 9)

The computing device of claim 9, wherein the second computing element is configured with executable instructions to perform operations comprising:
determining whether the second computing element has a task to execute; and
sending a signal to steal a task from the first computing element in response to determining that the second computing element does not have a task to execute, wherein the signal includes the second requester identifier.

### Claim 15 (depends on 14)

The computing device of claim 14, wherein the second computing element is configured with executable instructions to perform operations further comprising:
receiving a response to the signal to steal a task including a task winner computing element identifier;
comparing the second requester identifier to the task winner computing element identifier;
determining whether the second computing element is a task winner computing element by the second requester identifier matching the task winner computing element identifier; and
adjusting a task stealing list of the second computing element in response to determining that the second computing element is not the task winner computing element.

### Claim 16 (depends on 15)

The computing device of claim 15, wherein the second computing element is configured with computing element-executable instructions to perform operations such that adjusting the task stealing list of the second computing element comprises re-arranging items in the stealing list based at least in part on whether a computing element is executing a recursive task or a non-recursive task.

### Claim 17

A computing device configured for identifying enhanced synchronization operation outcomes, comprising:
means for receiving a plurality of resource access requests for a first resource of the computing device from a plurality of computing elements of the computing device including a first resource access request having a first requester identifier from a first computing element of the plurality of computing elements and a second resource access request having a second requester identifier from a second computing element of the plurality of computing elements;
means for granting the first computing element access to the first resource based on the first resource access request; and
means for returning a response to the second computing element including the first requester identifier as a winner computing element identifier.

### Claim 18 (depends on 17)

The computing device of claim 17, further comprising:
means for comparing the second requester identifier to the winner computing element identifier; and
means for determining whether the second computing element is a winner computing element by the second requester identifier matching the winner computing element identifier.

### Claim 19 (depends on 18)

The computing device of claim 18, further comprising:
means for identifying the winner computing element from the winner computing element identifier;
means for determining whether a criterion is met for adjusting a second resource of the computing device in response to determining that the second computing element is not the winner computing element; and
means for adjusting the second resource in response to determining that the criterion is met for adjusting the second resource.

### Claim 20 (depends on 19)

The computing device of claim 19, wherein means for determining whether a criterion is met for adjusting a second resource of the computing device comprises means for determining a likelihood of sharing the second resource by the first computing element and the second computing element based on one or more of a shared operating system, shared dynamic voltage and frequency scaling, and a shared topology.

### Claim 21 (depends on 17)

The computing device of claim 17, further comprising:
means for receiving a third resource access request for the first resource including a third requester identifier from a third computing element of the plurality of computing elements; and
means for returning the response to the third computing element including the first requester identifier as the winner computing element identifier.

### Claim 22 (depends on 17)

The computing device of claim 17, further comprising:
means for determining whether the second computing element has a task to execute; and
means for sending a signal to steal a task from the first computing element in response to determining that the second computing element does not have a task to execute, wherein the signal includes the second requester identifier.

### Claim 23 (depends on 22)

The computing device of claim 22, further comprising:
means for receiving a response to the attempt to steal a task including a task winner computing element identifier;
means for comparing the second requester identifier to the task winner computing element identifier;
means for determining whether the second computing element is a task winner computing element by the second requester identifier matching the task winner computing element identifier; and
means for adjusting a task stealing list of the second computing element in response to determining that the second computing element is not the task winner computing element.

### Claim 24 (depends on 23)

The computing device of claim 23, wherein means for adjusting the task stealing list of the second computing element comprises means for re-arranging items in the stealing list based at least in part on whether a computing element is executing a recursive task or a non-recursive task.

### Claim 25

A non-transitory processor-readable storage medium having stored thereon processor-executable instructions configured to cause a processor of a computing device to perform operations comprising:
receiving a plurality of resource access requests for a first resource of the computing device from a plurality of computing elements of the computing device including a first resource access request having a first requester identifier from a first computing element of the plurality of computing elements and a second resource access request having a second requester identifier from a second computing element of the plurality of computing elements;
granting the first computing element access to the first resource based on the first resource access request; and
returning a response to the second computing element including the first requester identifier as a winner computing element identifier.

### Claim 26 (depends on 25)

The non-transitory processor-readable storage medium of claim 25, wherein the stored processor-executable instructions are configured to cause the processor to perform operations further comprising:
comparing the second requester identifier to the winner computing element identifier; and
determining whether the second computing element is a winner computing element by the second requester identifier matching the winner computing element identifier.

### Claim 27 (depends on 26)

The non-transitory processor-readable storage medium of claim 26, wherein the stored processor-executable instructions are configured to cause the processor to perform operations further comprising:
identifying the winner computing element from the winner computing element identifier;
determining whether a criterion is met for adjusting a second resource of the computing device in response to determining that the second computing element is not the winner computing element and
adjusting the second resource in response to determining that the criterion is met for adjusting the second resource.

### Claim 28 (depends on 27)

The non-transitory processor-readable storage medium of claim 27, wherein the stored processor-executable instructions are configured to cause the processor to perform operations such that determining whether a criterion is met for adjusting a second resource of the computing device comprises determining a likelihood of sharing the second resource by the first computing element and the second computing element based on one or more of a shared operating system, shared dynamic voltage and frequency scaling, and a shared topology.

### Claim 29 (depends on 25)

The non-transitory processor-readable storage medium of claim 25, wherein the stored processor-executable instructions are configured to cause the processor to perform operations further comprising:
receiving a third resource access request for the first resource including a third requester identifier from a third computing element of the plurality of computing elements; and
returning the response to the third computing element including the first requester identifier as the winner computing element identifier.

### Claim 30 (depends on 25)

The non-transitory processor-readable storage medium of claim 25, wherein the stored processor-executable instructions are configured to cause the processor to perform operations further comprising:
determining whether the second computing element has a task to execute; and
sending a signal to steal a task from the first computing element in response to determining that the second computing element does not have a task to execute, wherein the signal includes the second requester identifier.

### Claim 31 (depends on 30)

The non-transitory processor-readable storage medium of claim 30, wherein the stored processor-executable instructions are configured to cause the processor to perform operations further comprising:
receiving a response to the signal to steal a task including a task winner computing element identifier;
comparing the second requester identifier to the task winner computing element identifier;
determining whether the second computing element is a task winner computing element by the second requester identifier matching the task winner computing element identifier; and
adjusting a task stealing list of the second computing element in response to determining that the second computing element is not the task winner computing element.

### Claim 32 (depends on 31)

The non-transitory processor-readable storage medium of claim 31, wherein the stored processor-executable instructions are configured to cause the processor to perform operations such that adjusting the task stealing list of the second computing element comprises re-arranging items in the stealing list based at least in part on whether a computing element is executing a recursive task or a non-recursive task.
