Prosecution Insights
Last updated: October 26, 2026
Application No. 17/955,085

APPLICATION PROGRAMMING INTERFACE TO INDICATE SCHEDULING POLICIES

Final Rejection §103
Filed
Sep 28, 2022
Priority
Jul 29, 2022 — IN 202241043444
Examiner
DORAIS, CRAIG C
Art Unit
2198
Tech Center
2100 — Computer Architecture & Software
Assignee
NVIDIA Corporation
OA Round
4 (Final)
83%
Grant Probability
Favorable
5-6
OA Rounds
0m
Est. Remaining
99%
With Interview

Examiner Intelligence

Grants 83% — above average
83%
Career Allowance Rate
375 granted / 452 resolved
+28.0% vs TC avg
Strong +18% interview lift
Without
With
+18.1%
Interview Lift
resolved cases with interview
Typical timeline
3y 1m
Avg Prosecution
6 currently pending
Career history
465
Total Applications
across all art units

Statute-Specific Performance

§101
11.5%
-28.5% vs TC avg
§103
44.3%
+4.3% vs TC avg
§102
21.7%
-18.3% vs TC avg
§112
17.9%
-22.1% vs TC avg
Black line = Tech Center average estimate • Based on career data from 452 resolved cases

Office Action

§103
DETAILED ACTION Notice of Pre-AIA or AIA Status The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA . Claim Rejections - 35 USC § 103 The following is a quotation of 35 U.S.C. 103(a) which forms the basis for all obviousness rejections set forth in this Office action: A patent may not be obtained though the invention is not identically disclosed or described as set forth in section 102 of this title, if the differences between the subject matter sought to be patented and the prior art are such that the subject matter as a whole would have been obvious at the time the invention was made to a person having ordinary skill in the art to which said subject matter pertains. Patentability shall not be negatived by the manner in which the invention was made. The factual inquiries set forth in Graham v. John Deere Co., 383 U.S. 1, 148 USPQ 459 (1966), that are applied for establishing a background for determining obviousness under 35 U.S.C. 103(a) are summarized as follows: Determining the scope and contents of the prior art. Ascertaining the differences between the prior art and the claims at issue. Resolving the level of ordinary skill in the pertinent art. Considering objective evidence present in the application indicating obviousness or nonobviousness. Claims 1 - 36 are rejected under 35 U.S.C. 103(a) as being unpatentable over Munshi et al. (hereinafter Munshi, US 2011/0285729) in view of Li et al. (hereinafter Li, US 2014/0208331). Regarding claim 1, Munshi discloses: one or more processor comprising: circuitry to, in response to a call to an application programming interface (API), influence the scheduling policy information for a block cluster comprising two or more groups of blocks of threads to perform a software kernel on one or more accelerators (at least Fig. 9 and ph. [0060] - [0062] and for API calls that execute compute kernels with numbers of threads that may be in various numbers of groups/blocks and group dimensions (where the dimension of a thread group dimension (at least in ph. [0060]) indicates a variable axis of related threads, i.e. equivalent to a related cluster of blocks of groups of threads), including two or more, and as this may be performed for any number of such groups/blocks and the kernels (therefore with their corresponding group/blocks of threads) may include priority values that affect scheduling order/policy as well as comprised event objects that indicate execution order relationships with execution instances associated with compute kernel objects where these kernels are placed in the execution queue as per at least ph. [0061] and at least ph. [0060] discloses that these kernels through their respective compute program executables are performed on GPUs when appropriate). Munshi does not expressly disclose, however, Li discloses: circuitry to, in response to a call to an application programming interface (API), return to a caller of the API, scheduling policy information of one or more groups of blocks of one or more threads (see at least ph. [0069] for the calling of select_cores to select logical cores for thread groups (may be done for any number of these, including two or more) and returning a number of cores to be used (so returns information about the number of cores) to the scheduler that called select_cores provided, which then indicates, at least the policy of the scheduler to utilize that many cores as that then, based on system information, is apparently optimal). It would have been obvious for a person of ordinary skill in the art at the time of filing to modify the teachings of Munshi by the teachings of Li in order to implement a way to allow a scheduling manager to invoke already available functions (as through an API) to allow them to perform its relative scheduling tasks (thereby avoiding the need to compose new functions that the existing functions already provide). Regarding claims 2, 11, 20 and 29 the rejections of claims 1, 10, 19 and 28 are incorporated and Munshi discloses: a scheduling policy is to apply to a the block cluster (at least ph. [0062] discloses that the API itself may specify for the number of thread groups/blocks that are executed as / in the kernel and at least ph. [0060] establishes thread group dimensions that establish block clusters). Regarding claims 3, 12, 21 and 30 the rejections of claims 1, 10, 19 and 28 are incorporated and Munshi discloses: a scheduling policy is to apply to multiple partitions of the two or more groups of blocks of threads (at least ph. [0062] discloses that different numbers of groups/blocks may be specified by the API, which indicates that the groups are distinct from one another (i.e. each is partitioned/separate from the other groups) and that the groups are to be schedule for execution according to the scheduling related to the scheduling of the execution queue and at least ph. [0060] establishes different dimensions of groups of threads which some of these dimensions then may establish partions of these groups). Regarding claims 4, 13, 22 and 31 the rejections of claims 1, 10, 19 and 28 are incorporated and Munshi discloses: a scheduling policy is to prioritize scheduling of a first group of the block cluster over a second groups of block cluster (at least ph. [0062] discloses priority for kernel execution (which then applies to the API calls and their associated thread groups/blocks) and that the compute kernel execution instance involved in such execution, through an event object that indicated an execution order relationship between the execution instance and other execution instances (which then is a prioritizing schedule) and at least ph. [0060] establishes dimensions of groups of threads that form different logical relations of groups of the blocks of threads and there are multiples of these dimensions of groups of threads (i.e. multiple groups of block clusters, including first and second groups) and then the respective kernels would be subject to the prioritization established in the prioritization process of at least ph. [0062], which in instances will prioritize a first group of block clusters over a second group of block clusters). Regarding claims 5, 14, 23 and 32 the rejections of claims 1, 10, 19 and 28 are incorporated and Munshi does not expressly disclose, however Li discloses: the scheduling policy information indicates a scheduling policy that is a spread policy (see at least ph. [0069] for the calling of select_cores to select logical cores for thread groups (may be done for any number of these, including two or more) and returning a number of cores to be used (so returns information about the number of cores) to the scheduler that called select_cores provided, which then indicates, at least the policy of the scheduler to utilize that many cores as that then, based on system information, is apparently optimal and as it is selecting cores (emphasis on plural form) it indicates that multiple cores are intended for use, thereby spreading the processing of the threads and their groups, which results in a spread policy implementation). It would have been obvious for a person of ordinary skill in the art at the time of filing to modify the teachings of Munshi by the teachings of Li in order to implement a way to allow a scheduling manager to invoke already available functions (as through an API) to allow them to perform its relative scheduling tasks (thereby avoiding the need to compose new functions that the existing functions already provide). Regarding claims 6, 15, 24 and 33 the rejections of claims 1, 10, 19 and 28 are incorporated and Munshi does not expressly disclose, however Li discloses: the scheduling policy information indicates a scheduling policy that is a load balancing policy (see at least ph. [0069] for the calling of select_cores to select logical cores for thread groups (may be done for any number of these, including two or more) and returning a number of cores to be used (so returns information about the number of cores) to the scheduler that called select_cores provided, which then indicates, at least the policy of the scheduler to utilize that many cores as that then, based on system information, is apparently optimal and as it is selecting cores (emphasis on plural form) it indicates that multiple cores are intended for use, thereby spreading the processing of the threads and their groups where this then lends itself to attaining other features discloses in at least ph. [0023] that allows coscheduled threads through cores that improves load balancing, resulting in the selected cores resulting in a policy that facilitates said balancing). It would have been obvious for a person of ordinary skill in the art at the time of filing to modify the teachings of Munshi by the teachings of Li in order to implement a way to allow a scheduling manager to invoke already available functions (as through an API) to allow them to perform its relative scheduling tasks (thereby avoiding the need to compose new functions that the existing functions already provide). Regarding claims 7, 16, 25 and 34 the rejections of claims 1, 10, 19 and 28 are incorporated and Munshi discloses: in response to the call to the API is to cause a scheduling policy to be applied when the two or more groups of blocks of threads are to be performed (at least ph. [0062] discloses that API calls result in thread group(s)/blocks as part of a kernel to be executed and that these have priority values associated with them, which then results in a different order of execution (a scheduling policy result) and the prioritization of the threads then will be applied to the respective groups and dimensions of groups of the threads as established in at least ph. [0060] and this includes two or more such groups and this occurs when the blocks of threads are being processed including, respectively, by the appropriate scheduling logic). Regarding claims 8, 17, 26 and 35 the rejections of claims 1, 10, 19 and 28 are incorporated and Munshi discloses: the scheduling policy is to affect scheduling of two or more groups of blocks of threads on multiprocessors of a graphics processing unit (CPU) (at least ph. [0062] discloses the scheduling of different groups of threads (as a group of threads is properly considered as a block of threads, then different groups of threads represents groups of blocks of threads) and at least ph. [0039] discloses that the processing of such calls handled by groups of threads are performed by different physical computing devices, including multiple CPUs and GPUs, where at least ph. [0030] discloses that the multiple CPUs may be multi-core CPUs, and thus such multi-core CPUs will then handling the processing for the groups of threads and at least ph. [0060] establishes multiple dimensions of groups of blocks of threads which then includes two or more to which these scheduling of [0062] will then be applied). Regarding claim 9, the rejection of claim 1 is incorporated and Munshi discloses: a block to be performed according to a scheduling policy is a member of the two or more groups of blocks associated with the scheduling policy information (at least ph. [0062] discloses that API calls result in thread group(s)/blocks as part of a kernel to be executed and this may be for any number of thread groups/blocks, further these have priority values associated with them, which then results in a different order of execution (a scheduling policy result) and at least ph. [0060] establishes multiple dimensions of groups of blocks of threads which then includes two or more such groups and their component member threads, to which these scheduling of [0062] will then be applied). Regarding claim 10, Munshi discloses: in response to a call to an application programming interface (API), scheduling policy information is established for a block cluster comprising two or more groups of blocks of threads to perform a software kernel on one or more accelerators (at least ph. [0062] and for API calls that execute compute kernels with numbers of threads that may be in various numbers of groups/blocks and group dimensions (where the dimension of a thread group dimension (at least in ph. [0060]) indicates a variable axis of related threads, i.e. equivalent to a related cluster of blocks of groups of threads), including two or more, and as this may be performed for any number of such groups/blocks and the kernels (therefore with their corresponding group/blocks of threads) may include priority values that affect scheduling order/policy as well as comprised event objects that indicate execution order relationships with execution instances associated with compute kernel objects where these kernels are placed in the execution queue as per at least ph. [0061] and at least ph. [0060] discloses that these kernels through their respective compute program executables are performed on GPUs when appropriate). Munshi does not expressly disclose, however, Li discloses: returning, in response to a function call to an application programming interface (API), scheduling policy information of one or more groups of blocks of one or more threads (see at least ph. [0069] for the calling of select_cores to select logical cores for thread groups (may be done for any number of these, including two or more) and returning a number of cores to be used (so returns information about the number of cores) to the scheduler that called select_cores provided, which then indicates, at least the policy of the scheduler to utilize that many cores as that then, based on system information, is apparently optimal). It would have been obvious for a person of ordinary skill in the art at the time of filing to modify the teachings of Munshi by the teachings of Li in order to implement a way to allow a scheduling manager to invoke already available functions (as through an API) to allow them to perform its relative scheduling tasks (thereby avoiding the need to compose new functions that the existing functions already provide). Claim 19, is a computer system version of claim 1 and is similarly rejected as claim 1, where it is noted that Munshi discloses the use of processors, memory storing instructions to perform the features claimed in at least Fig. 1 and this figure’s related descriptions in ph. [0030] – [0034]. Regarding claim 27 the rejection of claim 19 is incorporated and Munshi discloses: use the scheduling policy information to control performance of the one or more groups of blocks (see at least ph. [0062] where the priority scheduling of the kernel then controls the scheduling of that kernel’s respective groups / blocks of threads). Claim 28, is a non-transitory machine-readable medium version of claim 1 and is similarly rejected as claim 1, where it is noted that Munshi discloses the use of a medium storing instructions to be performed by one or more processors as per the features claimed in claim 28 in at least Fig. 1 and this figure’s related descriptions in ph. [0030] – [0034]. Regarding claim 36 the rejection of claim 28 is incorporated and Munshi discloses: the scheduling policy information indicates scheduling policy to control performance of the one or more clusters, wherein each cluster comprises one or more groups of blocks of threads (see at least ph. [0035] discloses a plurality of thread groups across multiple computer processors may execute a computer program executable in parallel (acting then as a cluster of groups of blocks of threads) and then this corresponds to the kernel to execute program executables that then have a priority and that kernels priority then affects the priority and scheduling of its comprised groups/blocks of threads). Claims 1 – 17 and 19 - 36 are rejected under 35 U.S.C. 103(a) as being unpatentable over Munshi in view of Li and further in view of et al. (hereinafter Li, US 2014/0208331). Regarding claim 18 the rejection of claim 10 is incorporated and Munshi discloses: scheduling policy information corresponds to an identifier of the one or more groups of blocks, included in the call to the API (see at least ph. [0062] where the number of thread groups and total number of threads may be specified (i.e. identifies) in the API calls and this then corresponds to the kernel and its respective priority (and therefore scheduling) which then includes the priority of its respective groups of threads and [0062] discloses that this number of compute processor). Munshi does not expressly disclose, however, Kelly discloses: a scheduling policy identifier is included in a call (see at least ph. [0151] for a parameter allows for a configurable GPU scheduling policy). It would have been obvious for a person of ordinary skill in the art at the time of filing to modify the teachings of Munshi, as modified by Li, by the teachings of Kelly in order to implement a means to invoke computing device control architecture to execute instructions in proper order to obtain intended / desirable results. Other References Cited Not Relied Upon Pechanec et al. (US 2015/0199787) discloses a scheduler to make API calls to schedule concurrent execution of a plurality of threads. Biggerstaff (US 2011/0314448) discloses parts of a computation for candidates for parallel threads while using a thread API’s limits on parameters and how to work around errors in threads APIs. Chetlur et al. (US 2021/0133583) discloses cooperative launch APIs that support synchronization amongst thread blocks for execution of parallel algorithms. Response to Arguments Applicant asserts that “neither [the references] teach ‘return, to the caller of the API, scheduling policy information for a block cluster comprising two or more groups of blocks of threads.” However, as the Munshi reference in at least ph. [0060] discloses multiple dimensions of groups of threads, the amended language, that Applicant appears to rely upon, is disclosed by Munshi. This is so as each dimension for these groups represents another logical layer of logical association of these groups of threads. As such, each dimension then may form its own logical grouping for a group of threads. Which is to say a cluster of groups of threads. As this may then apply to any number of dimensions, it then will result in instances of two or more such dimensions / two or more groups of blocks of threads. As Applicant’s amendments and arguments fail to overcome the art of record, the previous rejections to claims 1 - 17 and 19 – 36 stand. A new ground of rejection has been provided for claim 18 in response to amendments to said claim. Conclusion Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a). A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action. Any inquiry concerning this communication or earlier communications from the examiner should be directed to CRAIG C DORAIS whose telephone number is (571)270-3371. The examiner can normally be reached M-F 9:00 am - 6:00pm. Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice. If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Pierre Vital can be reached at 5712724215. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300. Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000. /CRAIG C DORAIS/Primary Examiner, Art Unit 2198
Read full office action

Prosecution Timeline

Show 10 earlier events
Mar 30, 2026
Response after Non-Final Action
Apr 01, 2026
Request for Continued Examination
Apr 07, 2026
Response after Non-Final Action
Apr 17, 2026
Non-Final Rejection mailed — §103
Jul 17, 2026
Response Filed
Aug 27, 2026
Final Rejection mailed — §103
Oct 14, 2026
Applicant Interview (Telephonic)
Oct 14, 2026
Examiner Interview Summary

Precedent Cases

Applications granted by this same examiner with similar technology

Patent 12717616
TASK-CENTRIC JOB SCHEDULING METHOD AND SYSTEM FOR HETEROGENEOUS CLUSTERS
2y 9m to grant Granted Aug 25, 2026
Patent 12710990
REGISTER CONFIGURATION TECHNIQUE USING METRICS
3y 3m to grant Granted Aug 18, 2026
Patent 12688060
SECURING AND OPTIMIZING MULTI-DOMAIN DATA ACCESS USING WORKFLOW PARALLELIZATION
2y 10m to grant Granted Jul 21, 2026
Patent 12688053
TRUE WIRELESS HEADPHONES WITH IMPROVED USER INTERFACE TO AN EXPERIENTIAL ECO-SYSTEM AND RELATED DEVICES, METHODS, AND SYSTEMS
2y 2m to grant Granted Jul 21, 2026
Patent 12675311
METHOD AND SYSTEM FOR REMOTE EXECUTION OF SERVICES REQUESTED BY A MOBILE DEVICE VIA A CELLULAR COMMUNICATION NETWORK
2y 7m to grant Granted Jul 07, 2026
Study what changed to get past this examiner. Based on 5 most recent grants.

Strategy Recommendation AI-generated — please review before filing

Get a prosecution strategy drawn from examiner precedents, rejection analysis, and claim mapping.
Typically takes 5-10 seconds — AI-generated, attorney review required before filing

Prosecution Projections

5-6
Expected OA Rounds
83%
Grant Probability
99%
With Interview (+18.1%)
3y 1m (~0m remaining)
Median Time to Grant
High
PTA Risk
Based on 452 resolved cases by this examiner. Grant probability derived from career allowance rate.

Sign in with your work email

Enter your email to receive a magic link. No password needed.

Personal email addresses (Gmail, Yahoo, etc.) are not accepted.

Free tier: 3 strategy analyses per month