# US 2021/0240546 A1 · Staggered software synchronization

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

- Number: US 2021/0240546 A1
- Document ID: US20210240546A1
- Status: Published application
- Kind: A1
- Application number: 17/089,978
- Filed: 2020-11-05
- Published: 2021-08-05
- Earliest claimed: 2020-01-31
- Assignees: NVIDIA Corporation
- Applicants: Nvidia Corporation
- Inventors: Bimal Poddar; Donghan Ryu; Michael Gold; Samuel Reed Koser; Xiao Bo Zhao Zhang
- Web page: https://patentgrep.com/patent/US20210240546A1

## CPC

- G06F 9/52: Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F 1/3228: Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
- G06F 1/329: by task scheduling
- G06F 1/3293: by switching to a less power-consuming processor, e.g. sub-CPU
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

Approaches in accordance with various embodiments can reduce scheduling delays due to concurrent processing requests, as may involve VSyncs in multi-streaming systems. The software synchronization signals can be staggered relative to each other by offsetting an initial synchronization signal. These software synchronization signals can be readjusted over time such that each synchronization signal maintains the same relative offset, as may be with respect to other applications or containers.

## Claims

### Claim 1

A method, comprising:
for individual streams in a multi-streaming system,
calculating an initial VSync offset for the stream, wherein the individual streams of the multi-streaming system have different initial VSync offsets within a VSync interval;
storing the initial VSync offset for the stream;
scheduling a time to next VSync for the stream using the initial VSync offset; and
transmitting a signal to perform a VSync operation for the stream when a duration of time equivalent to the time to next VSync has elapsed.

### Claim 2 (depends on 1)

The method of claim 1, wherein calculating the initial VSync offset for a stream comprises staggering the initial VSync offset for the stream based on a number of streams in the multi-streaming system without rescheduling the time to next VSync for any other stream in the multi-streaming system.

### Claim 3 (depends on 2)

The method of claim 2, wherein calculating an initial VSync offset for the stream comprises:
determining a largest remaining sub-interval between any two initial VSync offsets in a single VSync interval; and
assigning the initial VSync offset to be substantially equal to a time halfway between the largest remaining sub-interval.

### Claim 4 (depends on 1)

The method of claim 1, wherein each stream corresponds to a separate container corresponding to a separate instance of an operating environment.

### Claim 5 (depends on 1)

The method of claim 1, wherein calculating an initial VSync offset for a stream comprises applying a randomizer using a seed initialized based on a value unique to the individual stream.

### Claim 6 (depends on 1)

The method of claim 1, wherein calculating an initial VSync offset for a stream comprises:
dividing each processing period by a number of streams corresponding to the multi-streaming system to determine a quotient;
assigning a different stream identifier to each stream; and
assigning a different coefficient to each stream identifier, wherein an initial VSync offset for any individual stream of the multi-streaming system is the product of the quotient and the coefficient of the stream identifier corresponding to the individual stream.

### Claim 7 (depends on 6)

The method of claim 6, wherein the number of streams corresponding to the multi-streaming system is equal to a number of streams the multi-streaming system is able to support.

### Claim 8 (depends on 7)

The method of claim 7, wherein the number of streams the multi-streaming system is able to support exceeds a number of processing units of the multi-streaming system.

### Claim 9 (depends on 1)

The method of claim 1, further comprising:
determining a new stream of the multi-streaming system;
calculating an initial VSync offset for the new stream; and
maintaining a staggered VSync schedule by dynamically adjusting the initial VSync offset of at least one other stream of the multi-streaming system.

### Claim 10 (depends on 1)

The method of claim 1, wherein transmitting the signal to perform a VSync operation is indicative of an availability of a buffer for performing rendering operations associated with the stream.

### Claim 11

A system, comprising:
a network interface to communicate data over a network with a plurality of client devices over a corresponding plurality of streams; and
one or more processing units to perform, for individual streams in the plurality of streams:
calculating an initial VSync offset for the stream in a VSync interval, wherein the individual streams of the plurality of streams have different initial VSync offsets within the VSync interval;
storing the initial VSync offset for the stream;
scheduling a time to next VSync for the stream using the initial VSync offset; and
transmitting a signal to perform a VSync operation for the stream when a duration of time equivalent to the time to next VSync has elapsed.

### Claim 12 (depends on 11)

The system of claim 11, wherein at least one processing unit of the one or more processing units performs calculating of the initial VSync offset by staggering the initial VSync offset for the stream based on a number of streams in the plurality of streams without rescheduling the time to next VSync for any other stream in the plurality of streams.

### Claim 13 (depends on 12)

The system of claim 12, wherein at least one processing unit of the one or more processing units is to perform calculating of the initial VSync offset for the stream by:
determining a largest remaining sub-interval between any two initial VSync offsets in the VSync interval; and
assigning the initial VSync offset to be substantially equal to a time halfway between the largest remaining sub-interval.

### Claim 14 (depends on 11)

The system of claim 11, wherein each stream corresponds to a separate container corresponding to a separate instance of an operating environment.

### Claim 15 (depends on 14)

The system of claim 14, wherein the operating environment comprises an operating system.

### Claim 16 (depends on 15)

The system of claim 15, wherein the operating environment further comprises at least one of a driver for the processing unit or an application programming interface (API).

### Claim 17 (depends on 11)

The system of claim 11, wherein at least one processing unit of the one or more processing units performs calculating of the initial VSync offset for a stream by applying a randomizer using a seed initialized based on a value unique to the individual stream.

### Claim 18 (depends on 11)

The system of claim 11, wherein at least one processing unit of the one or more processing units performs calculating of the initial VSync offset for a stream by:
dividing each processing period by a number of streams corresponding to the plurality of streams to determine a quotient;
assigning a different stream id to each stream; and
assigning a different coefficient to each stream id, wherein an initial VSync offset for any individual stream of the plurality of streams is the product of the quotient and the coefficient of the stream id corresponding to the individual stream.

### Claim 19 (depends on 18)

The system of claim 18, wherein the number of streams is equal to a number of streams the server is able to support.

### Claim 20 (depends on 19)

The system of claim 19, wherein the number of streams the server is able to support exceeds a number of central processing units (CPUs) of the server.

### Claim 21 (depends on 11)

The system of claim 11, wherein at least one processing unit of the one or more processing units performs transmitting of the signal to perform a VSync operation when a buffer of the processing unit for performing rendering operations associated with the stream is available.
