IP Library Granted Patent US 11,474,824
Granted Patent B1
US 11,474,824 · App. 16/870,051 · Granted Oct 18, 2022

Performance benchmarking-based selection of processor for generating graphic primitives

Inventors: Christopher Tremblay (Cantley, CA); John Jason Kurczak (Ottawa, CA)
Assignee: Corel Corporation
G06F9/3877G06F9/30065G06F11/3024G06F11/3428G06T1/20
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,474,824
App. No.
16/870,051
Granted
Oct 18, 2022
Kind
B1
Abstract

Systems and methods for performance benchmarking-based selection of processor for generating graphic primitives. An example method comprises: initializing, by a computer system comprising a plurality of processors of a plurality of processor types, a current value of a graphic primitive parameter; for each processor type of the plurality of processor types, computing a corresponding value of a performance metric by generating, using at least one processor of a currently selected processor type, a corresponding graphic primitive of a specified graphic primitive type, wherein the graphic primitive is characterized by the current value of the graphic primitive parameter; and estimating, based on the computed performance metric values, a threshold value of the graphic primitive parameter.

Claims (107)

1. A method, comprising:

receiving, upon a computer system, a command for a graphic-rendering application running on the computer system to generate and render a graphic primitive defined by one or more parameter values;

executing, upon the computer system, a performance benchmarking process comprises generating the graphic primitive multiple times whilst varying one or more parameters of the graphic primitive in order to determine one or more threshold values of the one or more parameters of graphic primitive at which two or more processors of a plurality of processors of the computer system demonstrate values of a performance metric differing by less than a performance metric accuracy threshold; and

establishing, with the computer system which comprises the plurality of processors, a processor of the plurality of processors for generating and rendering the graphic primitive parameter; wherein

the processor of the plurality of processors is established in dependence upon a performance metric of the processor of the plurality of processors for generating and rendering the graphic primitive defined by the one or more parameter values is below the one or more threshold values established by the performance benchmarking process; and

the plurality of processors comprises a plurality of processor types.

2. The method of claim 1 , wherein

the performance metric reflects a period of time for generating the graphic primitive.

3. The method of claim 1 , wherein

the performance metric reflects a total size of one or more memory buffers utilized for generating the graphic primitive.

4. The method according to claim 1 , wherein

the graphic primitive is one of:

a brushstroke within the graphic-rendering application;

rendering a paint layer within the graphic-rendering application using a shading algorithm; and

combining layered images within the graphic rendering application for rendering.

5. The method according to claim 1 , wherein

the graphic primitive is one of:

a digital image filter; and

a digital image effect.

6. The method according to claim 1 , wherein

the graphic primitive is texture synthesis.

7. The method according to claim 1 , wherein

| P i ( v )− P j ( v )|< T;

i=1, . . . , n and is a positive integer;

j=1, . . . , n and is a positive integer;

i≠j;

P i and P j are performance metrics of the processors of the plurality of processors being compared,

n is the number of processor types, is an integer and n≥2;

v is the vector of parameter values of the graphic primitive being generated;

T is the performance metric accuracy threshold; and

|x| denotes the absolute value of the argument x.

8. The method according to claim 1 , wherein

the performance benchmarking process generating the graphic primitive multiple times whilst varying one or more parameters of the graphic primitive comprises:

generating the graphic primitive with a current set of parameters of the graphic primitive for each processor of the plurality of processors in an iteration before proceeding to generate the graphic primitive with a new set of parameters of the graphic primitive for each processor of the plurality of processors in a next iteration; and

terminating the performance benchmarking process upon a terminating condition being met;

the sets of parameters for each iteration are established in dependence upon the performance metrics for the plurality of processors such that the performance benchmarking process iterates towards a common performance metric for the plurality of processors; and

the terminating condition is a maximum number of iterations.

9. The method according to claim 1 , wherein

the performance benchmarking process generating the graphic primitive multiple times whilst varying one or more parameters of the graphic primitive comprises:

generating the graphic primitive with a current set of parameters of the graphic primitive for each processor of the plurality of processors in an iteration before proceeding to generate the graphic primitive with a new set of parameters of the graphic primitive for each processor of the plurality of processors in a next iteration; and

terminating the performance benchmarking process upon a terminating condition being met;

the sets of parameters for each iteration are established in dependence upon the performance metrics for the plurality of processors such that the performance benchmarking process iterates towards a common performance metric for the plurality of processors; and

the terminating condition is the performance metrics for the plurality of processors differ by less than the performance metric accuracy threshold.

10. The method according to claim 1 , wherein

generating the graphic primitive each time of the multiple times whilst varying one or more parameters of the graphic primitive in order to determine one or more threshold values of the one or more parameters of graphic primitive comprises repeating the graphic primitive generation a number of times; and

repeating the graphic primitive generation a number of times reduces adverse effects of fluctuations of hardware resources of the computer system whilst performing the generation of the graphic primitive.

11. The method according to claim 1 , wherein

the one or more threshold values of the one or more parameters of graphic primitive define a dividing hyperplane within a hyperspace of the parameters of the graphic primitive; and

establishing with the computer system the processor of the plurality of processors for generating and rendering the graphic primitive parameter comprises selecting the processor of the plurality of processors that lies on a predetermined side of the hyperplane.

12. The method according to claim 1 , wherein

the performance metric is defined by a specific function combining a set of metrics; and

each metric of the set of metrics relates to at least one of an aspect of the computer system when generating the graphic primitive and an aspect of generating the graphic primitive.

13. The method according to claim 1 , wherein

the performance benchmarking process is performed responsive to one of:

initialization of the graphic-rendering application upon the computer system; and

upon detecting a hardware configuration event of the computer system.

14. A computer system comprising:

a memory for storing instructions that are executed by a processing device; and

the processing device forming part of the remote server being coupled to the memory, the processing device configured to:

receive a command for a graphic-rendering application running on the computer system to generate and render a graphic primitive defined by one or more parameter values;

execute a performance benchmarking process comprises generating the graphic primitive multiple times whilst varying one or more parameters of the graphic primitive in order to determine one or more threshold values of the one or more parameters of graphic primitive at which two or more processors of a plurality of processors of the computer system demonstrate values of a performance metric differing by less than a performance metric accuracy threshold; and

establish a processor of the plurality of processors for generating and rendering the graphic primitive parameter; wherein

the processor of the plurality of processors is established in dependence upon a performance metric of the processor of the plurality of processors for generating and rendering the graphic primitive defined by the one or more parameter values is below the one or more threshold values established by the performance benchmarking process; and

the plurality of processors comprises a plurality of processor types.

15. The method according to claim 14 , wherein

the graphic primitive is one of:

a brushstroke within the graphic-rendering application;

rendering a paint layer within the graphic-rendering application using a shading algorithm;

combining layered images within the graphic rendering application for rendering;

a digital image filter;

a digital image effect; and

a texture synthesis.

16. The method according to claim 14 , wherein

| P i ( v )− P j ( v )|< T;

i=1, . . . , n and is a positive integer;

j=1, . . . , n and is a positive integer;

i≠j;

P i and P j are performance metrics of the processors of the plurality of processors being compared,

n is the number of processor types, is an integer and n≥2;

v is the vector of parameter values of the graphic primitive being generated;

T is the performance metric accuracy threshold; and

|x| denotes the absolute value of the argument x.

17. The method according to claim 14 , wherein

the performance benchmarking process generating the graphic primitive multiple times whilst varying one or more parameters of the graphic primitive comprises:

generating the graphic primitive with a current set of parameters of the graphic primitive for each processor of the plurality of processors in an iteration before proceeding to generate the graphic primitive with a new set of parameters of the graphic primitive for each processor of the plurality of processors in a next iteration; and

terminating the performance benchmarking process upon a terminating condition being met;

the sets of parameters for each iteration are established in dependence upon the performance metrics for the plurality of processors such that the performance benchmarking process iterates towards a common performance metric for the plurality of processors; and

the terminating condition is a maximum number of iterations.

18. The method according to claim 14 , wherein

the performance benchmarking process generating the graphic primitive multiple times whilst varying one or more parameters of the graphic primitive comprises:

generating the graphic primitive with a current set of parameters of the graphic primitive for each processor of the plurality of processors in an iteration before proceeding to generate the graphic primitive with a new set of parameters of the graphic primitive for each processor of the plurality of processors in a next iteration; and

terminating the performance benchmarking process upon a terminating condition being met;

the sets of parameters for each iteration are established in dependence upon the performance metrics for the plurality of processors such that the performance benchmarking process iterates towards a common performance metric for the plurality of processors; and

the terminating condition is the performance metrics for the plurality of processors differ by less than the performance metric accuracy threshold.

19. The method according to claim 14 , wherein

generating the graphic primitive each time of the multiple times whilst varying one or more parameters of the graphic primitive in order to determine one or more threshold values of the one or more parameters of graphic primitive comprises repeating the graphic primitive generation a number of times; and

repeating the graphic primitive generation a number of times reduces adverse effects of fluctuations of hardware resources of the computer system whilst performing the generation of the graphic primitive.

20. The method according to claim 14 , wherein

the one or more threshold values of the one or more parameters of graphic primitive define a dividing hyperplane within a hyperspace of the parameters of the graphic primitive; and

establishing with the computer system the processor of the plurality of processors for generating and rendering the graphic primitive parameter comprises selecting the processor of the plurality of processors that lies on a predetermined side of the hyperplane.

21. The method according to claim 14 , wherein

the performance metric is defined by a specific function combining a set of metrics; and

each metric of the set of metrics relates to at least one of an aspect of the computer system when generating the graphic primitive and an aspect of generating the graphic primitive.

22. The method according to claim 14 , wherein

the performance benchmarking process is performed responsive to one of:

initialization of the graphic-rendering application upon the computer system; and

upon detecting a hardware configuration event of the computer system.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded May 5, 2026
From: CITIBANK, N.A., AS AGENT
To: COREL CORPORATION; CASCADE BIDCO CORP.; COREL INC.; CLEARSLIDE INC.
Reel/Frame 075559/0953 →
SECURITY INTEREST Recorded May 1, 2026
From: COREL CORPORATION
To: FIRST-CITIZENS BANK & TRUST COMPANY
Reel/Frame 075315/0928 →
SECURITY INTEREST Recorded Jul 20, 2023
From: COREL CORPORATION
To: CITIBANK, N.A.
Reel/Frame 064330/0055 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 13, 2022
From: TREMBLAY, CHRISTOPHER; KURCZAK, JOHN JASON
To: COREL CORPORATION
Reel/Frame 061073/0063 →