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 .
Response to Arguments and Amendments
Based on Applicant’s remarks, the previous double patenting and 101 rejections are withdrawn.
Claim Rejections - 35 USC § 102
The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(2) the claimed invention was described in a patent issued under section 151, or in an application for patent published or deemed published under section 122(b), in which the patent or application, as the case may be, names another inventor and was effectively filed before the effective filing date of the claimed invention.
Claims 1 - 36 are rejected under 35 U.S.C. 102(a)(2) as being anticipated by Munshi et al. (hereinafter Munshi, US 20090307704).
Regarding claim 1, Munshi discloses:
one or more processors
circuity to in response to a call to an application programming interface (API), indicate a maximum number of blocks of threads of a software kernel to be performed on a graphics processing unit (GPU) (see at least ph. [0051] for targets of computer program executables including CPUs and GPUs (for processing) where in at least ph. [0053] these executables correspond to kernels with their own groups/blocks of threads and [0071] indicating within the computing system (and therefore its requisite circuity) using an API that includes the number of threads and even a total number of threads and groups of threads executing in parallel resulting in an indicated maximum number of blocks of threads to be scheduled (as the total specified establishes a maximum as the total number specified may not then be exceeded), see as well as Table 2 that discloses the naming of a maximum number of work groups size / maximum number of groups of threads), wherein the maximum number of blocks is a limit of a number of groups of blocks of thread of a software kernel (see at least ph. [0053] that discloses a compute kernel with a number of threads that execute in parallel as a thread group and that the number of thread groups and total number of threads may be specified in the API calls, where so specifying a total sets the maximum on the number of these groups/blocks of threads and total number of threads).
Claim 10 is a computer-implemented method version of claim 1 and is similarly rejected, and where the methods versions are disclosed as presented in at least Fig. 4 – 9 and their corresponding written paragraph descriptions and in conjunction with other referenced materials throughout the reference.
Claim 19 is a computer system version of claim 1 and is similarly rejected, where the one or more processors and memory storing executable instructions performed on the processor(s) is disclosed in at least Fig. 1 and 2 and their corresponding descriptions and references throughout the reference.
Claim 28 is a machine-readable medium version of claim 1 and is similarly rejected where the medium storing instructions performed by processor(s) is disclosed in at least Fig. 1 and 2 and their corresponding descriptions and references throughout the reference.
Regarding claims 2, 11, 20, 29, the rejections of claims 1, 10, 19 and 28 are incorporated and Munshi discloses:
the maximum number is of a group of blocks, the group being of multiple groups of blocks of threads of a software kernel (at least ph. [0053] and [0071] disclose the API to execute a kernel that includes a number of threads/thread groups that execute periodically through the computing system including a kernel).
Regarding claim 3, 12, 21, 30, the rejections of claims 1, 10, 19 and 28 are incorporated and Munshi discloses:
the maximum number is of a group of blocks of multiple groups of blocks of a grid of blocks (see at least ph. [0053] that discloses a compute kernel with a number of threads that execute in parallel as a thread group and that the number of thread groups and total number of threads may be specified in the API calls, where so specifying a total sets the maximum on the number of these groups/blocks of threads and total number of threads in conjunction with the teaching of establishing variable dimensions of thread groups in at least ph. [0051] establishes that higher levels of dimensions of groups may then result in a grid of blocks of threads (each added dimension allows for the nesting of component groups of groups of groups of threads, where one such group then is such a grid of blocks of threads as claimed, note that the functions through the API of at least ph. [0071] and table 2 are available to any of these dimensional groupings of groups of threads and therefore also establish totals, and thereby, establish maximum sizes).
Regarding claim 4, 13, 22, 31, the rejections of claims 1, 10, 19 and 28 are incorporated and Munshi discloses:
the maximum number of blocks is based, at least in part, on an architecture of a graphics processing unit (GPU) (at least ph. [0006] discloses that the computing system discussed by the reference contemplates GPUs as included in the described computing system described (i.e. the computing architecture, and at least ph. [0053] and [0071] disclose the API grouping threads and then partitioning the threads (creating blocks) and at least ph. [0051] discloses the API in determining the sizes of the thread groups dimensions, and note that the use of dimensions is plural, this indicates at least two dimensions (which, commonly could be considered as representing, for instance, an x axis and a y axis) which then creates, dimensionally speaking, a x-y table/grid structure for the groups of blocks of threads).
Regarding claim 5, 14, 23, 32, the rejections of claims 1, 10, 19 and 28 are incorporated and Munshi discloses:
the maximum number indicates a maximum cluster size capable of being performed concurrently by a GPU (at least ph. [0053] and [0071] disclose the API to execute a kernel that includes a number of threads/thread groups including totals of numbers of threads and groups thereof and at least ph. [0051] establishes that by using any number of dimensional groupings of groups (where one such group then establishes a cluster of groups of threads, or blocks of groups of threads and so on) and also, at least ph. [0051] establishes that for computer program executables (such as the kernels of ph. [0053] that may be performed concurrently/simultaneously) can be mapped/designated with targets including CPUs and GPUs (for their processing)).
Regarding claims 6, 15, 24, 33, the rejections of claims 1, 10, 19 and 28 are incorporated and Munshi discloses:
the maximum number is a maximum number of blocks of threads that can be performed in a cluster by a GPU (see at least ph. [0053] and [0071] disclose the API to execute a kernel that includes a number of threads/thread groups including totals of numbers of threads and groups thereof and at least ph. [0051] establishes that by using any number of dimensional groupings of groups (where one such group then establishes a cluster of groups of threads, or blocks of groups of threads and so on) and also, at least ph. [0051] establishes that for computer program executables (such as the kernels of ph. [0053] that may be performed concurrently/simultaneously) can be mapped/designated with targets including CPUs and GPUs (for their processing)).
Regarding claim 7 the rejection of claim 1 is incorporated and Munshi discloses:
the maximum number is based, at least in part, on one or more properties of another processor (for at least ph. [0053] the totals are picked for thread execution by physical processors (CPUs or GPUs) as per at least ph. [0051] and at least ph. [0060] discloses that if no optimized compute kernel executables (as those in at least ph. [0053]) exist for physical computing devices (as those associated with physical processors of at least ph. [0051]) then the system may build those so optimized and would then necessarily consider some property/properties of such a physical computing device, which then would include appropriate totals/maximums as discussed in at least ph. [0053]).
Regarding claim 8, 17, 26, 35, the rejections of claims 1, 10, 19 and 28 is incorporated and Munshi discloses:
the maximum number is a limit on a number of partitions of blocks of threads of groups of threads (see at least ph. [0053] executing a kernel that includes a number of threads/thread groups including totals of numbers of threads and groups/blocks that may be established (thereby establishing a maximum number of thread groups/blocks) where, as per at least ph. [0051] establishing that any number of dimensional groupings of groups (where one such group then establishes a cluster of groups of threads, or blocks of groups of threads and so on, where then one such group of these nested upon nested groups would be considered as a partition of its next dimensional group), and as any of these groups may invoke the setting of totals/maximums of groups of threads, as established in at least ph. [0053], the groups considered as a partition of its next higher dimensional group may then also invoke this establishing of a total/maximum, resulting then on a total/maximum limit on the number of partitions).
Regarding claims 9, 18, 27, 36, the rejections of claims 1, 10, 19 and 28 is incorporated and Munshi discloses:
the maximum number is a limit on a number of blocks in a group of blocks, the group of blocks being one of multiple groups of blocks of a grid of blocks (see at least ph. [0053] executing a kernel that includes a number of threads/thread groups including totals of numbers of threads and groups/blocks that may be established (thereby establishing a maximum number of thread groups/blocks) where, as per at least ph. [0051] establishing that any number of dimensional groupings of groups (where one such group then establishes a cluster of groups of threads, or blocks of groups of threads and so on, where then one such group of these nested upon nested groups would be considered as a partition of its next dimensional group), and as any of these groups may invoke the setting of totals/maximums of groups of threads, as established in at least ph. [0053], the groups considered as a grid of such groups/blocks of its next higher dimensional group may then also invoke this establishing of a total/maximum, resulting then on a total/maximum limit on the number of blocks of that group of blocks of the grid of blocks).
Regarding claim 16, the rejection of claim 10 is incorporated and Munshi discloses:
the maximum number is a maximum number is based, at least in part, on one or more properties of a GPU (for at least ph. [0053] the totals are picked for thread execution by physical processors (CPUs or GPUs) as per at least ph. [0051] and at least ph. [0060] discloses that if no optimized compute kernel executables (as those in at least ph. [0053]) exist for physical computing devices (as those associated with physical processors of at least ph. [0051]) then the system may build those so optimized and would then necessarily consider some property/properties of such a physical computing device (including in the cases where the physical computing device is a GPU as those disclosed in at least ph. [0051]), which then would include appropriate totals/maximums as discussed in at least ph. [0053]).
Regarding claims 25, the rejection of claim 19 is incorporated and Munshi discloses:
the maximum number is a maximum number is based, at least in part, on one or more properties of the one or more processors (for at least ph. [0053] the totals are picked for thread execution by physical processors (CPUs or GPUs) as per at least ph. [0051] and at least ph. [0060] discloses that if no optimized compute kernel executables (as those in at least ph. [0053]) exist for physical computing devices (as those associated with physical processors of at least ph. [0051]) then the system may build those so optimized and would then necessarily consider some property/properties of such a physical computing device (including in the cases where the physical computing device is a GPU as those disclosed in at least ph. [0051]), which then would include appropriate totals/maximums as discussed in at least ph. [0053]).
Regarding claims 34, the rejection of claim 28 is incorporated and Munshi discloses:
the maximum number is a maximum number is based, at least in part, on one or more properties of a processor of the one or more processors (for at least ph. [0053] the totals are picked for thread execution by physical processors (CPUs or GPUs) as per at least ph. [0051] and at least ph. [0060] discloses that if no optimized compute kernel executables (as those in at least ph. [0053]) exist for physical computing devices (as those associated with physical processors of at least ph. [0051]) then the system may build those so optimized and would then necessarily consider some property/properties of such a physical computing device (including in the cases where the physical computing device is a GPU as those disclosed in at least ph. [0051]), which then would include appropriate totals/maximums as discussed in at least ph. [0053]).
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 23 and 32 are rejected under 35 U.S.C. 103(a) as being unpatentable over Munshi in view of Barik et al. (hereinafter Barik, US 2016/0055612).
Regarding claims 23 and 32, the rejections of claims 19 and 28 are incorporated and Munshi discloses:
the maximum number indicates a maximum cluster size capable of being performed efficiently by a GPU (for at least ph. [0053] the totals are picked for thread execution by physical processors (CPUs or GPUs) as per at least ph. [0051] and at least ph. [0060] discloses that if no optimized compute kernel executables (as those in at least ph. [0053]) exist for physical computing devices (as those associated with physical processors of at least ph. [0051]) then the system may build those so optimized and would then necessarily consider some property/properties of such a physical computing device (including in the cases where the physical computing device is a GPU as those disclosed in at least ph. [0051]), which then would include appropriate totals/maximums as discussed in at least ph. [0053]).
Munshi does not expressly disclose, however, Barik discloses:
a maximum size for concurrent GPU processing (see at least ph. [0072] for establishes a maximum size/number for work-items to be executed in parallel on a GPU).
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 Barik in order to allow for faster processing by using more cores/processing units.
Response to Arguments
Applicant’s arguments have been fully considered but are moot in light of new grounds of rejection.
Other References Cited Not Relied Upon
Gumienny et al. (US 2023/0305883) discloses cooperative launch APIs that support synchronization amongst thread blocks for parallel algorithm execution.
Biggerstaff (US 2011/0314448) discloses how to communication data to and from a thread routine where some thread APIs limit a thread routine to a limited number of parameters and also how to work around API errors involving thread operations.
Choquette et al. (US 2023/0315655) discloses cooperative groups of APIs that provides host-side APIs to launch grids of threads that are scheduled by software-based scheduling to be launched concurrently.
Conclusion
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