Self-adaptive load balance optimization for multicore parallel processing of video data
AssigneeVisualOn, Inc.
InventorsChin-Yee Lin, Yi Qian, Hanyue Yang, Hui Yang
Life of this patent
Estimating the term…
Abstract
A system for video decoding includes an interface, a set of cores, an allocator, and a load metric measurer. The interface is to receive a set of encoded video frames. The set of cores is to process data. The allocator is to determine an assignment of the set of video decoding modules to the set of cores. The load metric measurer to measure load metrics for each module of the set of modules during decoding of the set of encoded video frames. The allocator is to determine a reassignment of the set of modules to the set of cores based at least in part on the load metrics.
Claims18
A system for video decoding, comprising:
- a hardware interface configured to:
- receive a set of encoded video frames;
- a set of cores to process data;
- and a processor configured to:
- determine an assignment of a set of video decoding modules to the set of cores;
- measure load metrics for each module of the set of modules during decoding of the set of encoded video frames;
- and
- determine a reassignment of the set of modules to the set of cores based at least in part on the load metrics, wherein determining the reassignment comprises:
- determining a subset of the set of cores, wherein the subset of the set of cores includes cores having at least two assigned modules;
- determining a highest loaded core of the subset of the set of cores based at least in part on the load metrics;
- determining a module of the highest loaded core to move to a core adjacent to the highest loaded core based at least in part on the load metrics, wherein the module of the highest loaded core to move is determined by selecting a module that will move to a less loaded core adjacent to the highest loaded core, by selecting a module that will result in a more balanced total loading of the set of cores, or by selecting a module that will result in a lower highest loaded core of the set of cores;
- and
- reassigning the module of the highest loaded core from the highest loaded core to the core adjacent to the highest loaded core.
A method for video decoding, comprising:
- receiving a set of encoded video frames;
- determining, using a processor, an assignment of a set of video decoding modules to a set of cores;
- measuring load metrics for each module of the set of modules during decoding of the set of encoded video frames;
- and
- determining a reassignment of the set of modules to the set of cores based at least in part on the load metrics, wherein determining the reassignment comprises:
- determining a subset of the set of cores, wherein the subset of the set of cores includes cores having at least two assigned modules;
- determining a highest loaded core of the subset of the set of cores based at least in part on the load metrics;
- determining a module of the highest loaded core to move to a core adjacent to the highest loaded core based at least in part on the load metrics, wherein the module of the highest loaded core to move is determined by selecting a module that will move to a less loaded core adjacent to the highest loaded core, by selecting a module that will result in a more balanced total loading of the set of cores, or by selecting a module that will result in a lower highest loaded core of the set of cores;
- and
- reassigning the module of the highest loaded core from the highest loaded core to the core adjacent to the highest loaded core.
A computer program product for video decoding, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
- receiving a set of encoded video frames;
- determining, using a processor, an assignment of a set of video decoding modules to a set of cores;
- measuring load metrics for each module of the set of modules during decoding of the set of encoded video frames;
- and
- determining a reassignment of the set of modules to the set of cores based at least in part on the load metrics, wherein determining the reassignment comprises:
- determining a subset of the set of cores, wherein the subset of the set of cores includes cores having at least two assigned modules;
- determining a highest loaded core of the subset of the set of cores based at least in part on the load metrics;
- determining a module of the highest loaded core to move to a core adjacent to the highest loaded core based at least in part on the load metrics, wherein the module of the highest loaded core to move is determined by selecting a module that will move to a less loaded core adjacent to the highest loaded core, by selecting a module that will result in a more balanced total loading of the set of cores, or by selecting a module that will result in a lower highest loaded core of the set of cores;
- and
- reassigning the module of the highest loaded core from the highest loaded core to the core adjacent to the highest loaded core.
Dependencies are inferred from the claim text.