DETAILED ACTION
Claims 1-25 are pending.
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 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1, 4, 5, 6, 8, 11, 12, 13, 15, 18, 19, 20, 22, and 25 are rejected under 35 U.S.C. 103 as being unpatentable over Artmeier (US 2016/0335127 A1).
Regarding claim 1, Artmeier teaches the invention substantially as claimed including an apparatus to schedule parallel instructions using hybrid cores (Fig. 4, System 400; Abstract: a heterogeneous multi-processor portable computing device (PCD); [0033] Moreover, as is understood in the art of heterogeneous multi-core processors, each of the cores 222, 224, 226, 228 may process workloads at different efficiencies and/or speeds” under similar operating conditions.; [0060] The illustrated memory 412 contains an operating system 430 for the CPU 410, which may be a high-level operating system (HLOS). The operating system 430 includes a scheduler 432 that operates to schedule delivery of instructions, code, data, tasks, threads, etc. to one or more of the cores 422, 424, 426, 428 of the CPU 410 for execution.), the apparatus comprising:
interface circuitry to receive instructions or data from a remote computing device via a communication network, the instruction including parallel threads (Fig. 4, shows interface circuitry 414 connecting the Application submitting task/threads; [0026] Thus, the present systems and methods allow for improved management or control of the execution of the parallel threads on a heterogeneous multi-core/multi-processor PCD.; [0059] Accordingly, one or more the “components” illustrated as part of/being stored in the memory 412 in FIG. 4 may be stored in a memory remotely located from the memory 412 in FIG. 4.; as such, Artmeier encompasses the Application 440 and Tasks/Threads 442 being remotely located from the memory 412; [0062] The tasks/threads 442 of the application 440 may be processed or executed serially as single tasks/threads serially, in parallel as parallelized tasks/threads, or a combination thereof);
memory (Fig. 4, Memory 412);
at least one processor circuit adaptable to execute the instructions or process the data to, when using the memory ([0047] In a particular aspect, one or more of the method steps described herein may be enabled via a combination of data and processor instructions stored in the memory 112. These instructions may relate to applications, software, and/or code stored in the memory 112, or portions (such as threads) of such applications, software, and/or code. These instructions may be executed by one or more cores or processors in the multicore CPU 110 in order to perform the methods described herein.):
access, at runtime, a configuration of a plurality of cores, the configuration to indicate at least a type of a first core and a type of a second core different from the first core ([0066] The granularity logic 461 may be adapted to operate, or a separate logic 461′ of the Parallelized Work Manager 460 may be adapted to operate, during runtime of application 440. For example, in an embodiment, the granularity logic 461 may during runtime operate to dynamically and/or adaptively determine the optimal granularity for workload partitions—e.g. workload partition sizes that result in a minimum total overhead cost—for the parallelized tasks/threads 442 of the application 440. The granularity logic 461 may make this determination based on the present state or condition of the system among other factors.; [0070]; [0071] system performance information is obtained in block 530. In differing embodiments a variety of system performance information may be obtained in block 530. For example static performance information based on the architecture of the system (such as system 400 for example), the specific heterogeneous processors/cores implemented in the architecture (such as cores 422, 424, 426, 428 for example), etc.; [0072-73]; [0051] Such differing operational speeds of core1 and core 2 may be due to static conditions, such as architecture differences between core1 and core 2 in a heterogeneous core/processor system or PCD.; [0057] Each of the zeroth core 422, first core 424, second core 426, and Nth core 428 of FIG. 4 may be any type of processor or core including an application processor/core, a modem processor/core, a WiFi processor/core, a video decoder processor/core, an audio decoder processor/core, a GPU/graphics core, etc.; [0087]);
split a first thread of the parallel threads into partitions based on the configuration accessed at runtime ([0066] The granularity logic 461 may be adapted to operate, or a separate logic 461′ of the Parallelized Work Manager 460 may be adapted to operate, during runtime of application 440. For example, in an embodiment, the granularity logic 461 may during runtime operate to dynamically and/or adaptively determine the optimal granularity for workload partitions—e.g. workload partition sizes that result in a minimum total overhead cost—for the parallelized tasks/threads 442 of the application 440. The granularity logic 461 may make this determination based on the present state or condition of the system among other factors.; [0067] Once the optimal granularity for the workload partitions have been determined for the parallelized tasks/threads 442 of the application 440, the tasks/threads 442 may be broken into the partitions and distributed to the appropriate cores 422, 424, 426, 428 needed to execute the number of parallelized tasks/threads 442.; [0070]; [0078] Continuing in the method 500 to block 540, the optimal granularity for the workload partitions is determined based at least in part on the system performance information obtained in block 530. In some embodiments, the determination in block 540 may also be based in part on other factors or information in addition to the system performance information obtained in block 530.; [0080-82]; [0085] The parallelized portions of the application are broken into the workload partitions at the optimal granularity; [0087]);
select, based on the configuration accessed at runtime, (a) the first core to execute a first partition of the partitions and (b) the second core different from the first core to execute a second partition of the partitions ([0052] For example, as illustrated in FIG. 2B, if the auto-parallelized portion of the application is broken down into more, smaller work partitions (2.5×N in the embodiment of FIG. 2B) the idle wait time 216 of FIG. 2A is eliminated. As illustrated in FIG. 2B, the faster core1 can process three of the workload partitions 212B while the slower core2 processes two of the workload partitions 222B. [0085] The parallelized portions of the application are broken into the workload partitions at the optimal granularity and are distributed to the “N” executing threads in block 550. Distributing the workload partitions in block 550 may comprise placing the threads into a queue, such as queue 462 of FIG. 4 from which the executing threads/cores (such as cores 422, 424, 426, 428) may pull the workload partitions or any other desired method of distributing the workload partitions to the executing threads/cores.).
Artmeier does not explicitly teach generate an execution schedule to a device that schedules instructions on the first and second core.
However, Artmeier does teach in at least the Abstract and [0052]
“An optimal granularity comprising a one of the M workload partition granularities with a lowest total execution cost is determined, and the first parallelized portion is partitioned into a plurality of workloads having the optimal granularity.”
PNG
media_image1.png
483
680
media_image1.png
Greyscale
As such, Artmeier’s modification of an execution schedule as shown in Fig. 2a into an optimal granularity shown in Fig. 2b based on system/core status configuration information determined at runtime, reasonably teach the claim limitation because in much the same way is performing the step of creating a distribution of tasks for cores based on their configuration/status at runtime. Accordingly, Artmeier reasonably teaches the invention as claimed.
Regarding claim 4, Artmeier teaches wherein the first core is a performance core and the second core is an efficient core ([0050] . Again, because core 1 is faster and/or currently operating at a higher frequency than core2,; [0057] Each of the zeroth core 422, first core 424, second core 426, and Nth core 428 of FIG. 4 may be any type of processor or core including an application processor/core, a modem processor/core, a WiFi processor/core, a video decoder processor/core, an audio decoder processor/core, a GPU/graphics core, etc.; [0073]).
Regarding claim 5, Artmeier teaches wherein the device is to cause causes the first core to execute the first partition and cause causes the second core to execute the second partition (Fig. 2B and Fig. 5a step 550).
Regarding claim 6, Artmeier teaches wherein one or more of the at least one processor circuit is to schedule the second partition to be executed by the second core after the first core begins execution of the first partition (Fig 5a step 550 ; [0062] The tasks/threads 442 of the application 440 may be processed or executed serially as single tasks/threads serially, in parallel as parallelized tasks/threads, or a combination thereof.).
Regarding claim 8, it is a system type claim is having similar limitations as claim 1 above. Therefore, it is rejected under the same rationale.
Regarding claim 11, it is a system type claim is having similar limitations as claim 4 above. Therefore, it is rejected under the same rationale.
Regarding claim 12, it is a system type claim is having similar limitations as claim 5 above. Therefore, it is rejected under the same rationale.
Regarding claim 13, it is a system type claim is having similar limitations as claim 6 above. Therefore, it is rejected under the same rationale.
Regarding claim 15, it is a media/product type claim is having similar limitations as claim 1 above. Therefore, it is rejected under the same rationale.
Regarding claim 18, it is a media/product type claim is having similar limitations as claim 4 above. Therefore, it is rejected under the same rationale.
Regarding claim 19, it is a media/product type claim is having similar limitations as claim 5 above. Therefore, it is rejected under the same rationale.
Regarding claim 20, it is a media/product type claim is having similar limitations as claim 6 above. Therefore, it is rejected under the same rationale.
Regarding claim 22, it is a system type claim is having similar limitations as claim 1 above. Therefore, it is rejected under the same rationale.
Regarding claim 25, it is a system type claim is having similar limitations as claim 4 above. Therefore, it is rejected under the same rationale.
Claims 2, 3, 7, 9, 10, 14, 16, 17, 21, 23, and 24 are rejected under 35 U.S.C. 103 as being unpatentable over Artmeier (US 2016/0335127 A1) in view of Ailamaki et al. (US 2014/0380322 A1).
Regarding claim 2, Artmeier teaches determining at runtime types of cores and their status/information, split workload partitions and schedule them for execution as cited above. Artmeier does not explicitly teach wherein one or more of the at least one processor circuit the thread processing circuitry is to determine a first complexity of the first partition and a second complexity of the second partition.
However, Ailamaki teaches wherein one or more of the at least one processor circuit the thread processing circuitry is to determine a first complexity of the first partition and a second complexity of the second partition ([0024] The process of determining the number of sub operations into which a partitionable operation is segmented during runtime, is referred to herein as the dynamic adjustment of task granularity. Specific examples of system architectures and data flows will now be described in detail in reference to the figures to illustrate various embodiments of the present disclosure.; [0028] In other embodiments, the optimizer 135 may determine that one or more tasks in the graph can be partitioned into sub tasks that may be executed in parallel by multiple worker threads 137 to increase the performance of application 130. For example, the optimizer 135 may determine that the graph may include or represent an OLAP query or complex OLTP query.).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine the teachings of Ailamaki of differentiating at runtime, an OLAP query vs a complex OLTP query to generate partitionable operations scheduled to specific workers with the teachings of Artmeier of partitioning and scheduling parallel threads at runtime. The modification would have been motivated by the desire of avoiding underutilization of computing resources.
Regarding claim 3, Ailamaki teaches wherein one or more of the at least one processor circuit is to select the first core based on the first complexity and the second core based on the second complexity ([0028] For example, the optimizer 135 may determine that the graph may include or represent an OLAP query or complex OLTP query. In such embodiments, the optimizer 135 may generate a new optimized task graph that includes nodes corresponding to one or more partitionable operations. The optimized task graph may then be sent to the scheduler 140 for processing.; [0029-36]).
Regarding claim 7, Ailamaki teaches wherein one or more of the at least one processor circuit is to split the first thread of the parallel threads into the partitions based on a complexity of portions of the first thread ([0028] For example, the optimizer 135 may determine that the graph may include or represent an OLAP query or complex OLTP query. In such embodiments, the optimizer 135 may generate a new optimized task graph that includes nodes corresponding to one or more partitionable operations).
Regarding claim 9, it is a system type claim is having similar limitations as claim 2 above. Therefore, it is rejected under the same rationale.
Regarding claim 10, it is a system type claim is having similar limitations as claim 3 above. Therefore, it is rejected under the same rationale.
Regarding claim 14, it is a system type claim is having similar limitations as claim 7 above. Therefore, it is rejected under the same rationale.
Regarding claim 16, it is a media/product type claim is having similar limitations as claim 2 above. Therefore, it is rejected under the same rationale.
Regarding claim 17, it is a media/product type claim is having similar limitations as claim 3 above. Therefore, it is rejected under the same rationale.
Regarding claim 21, it is a media/product type claim is having similar limitations as claim 7 above. Therefore, it is rejected under the same rationale.
Regarding claim 23, it is a system type claim is having similar limitations as claim 2 above. Therefore, it is rejected under the same rationale.
Regarding claim 24, it is a system type claim is having similar limitations as claim 3 above. Therefore, it is rejected under the same rationale.
Response to Arguments
Applicant’s arguments with respect to claims 1-25 have been considered but are moot because the new ground of rejection does not rely on any reference applied in the prior rejection of record for any teaching or matter specifically challenged in the argument.
Conclusion
Applicant's amendment necessitated the new grounds 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 JORGE A CHU JOY-DAVILA whose telephone number is (571)270-0692. The examiner can normally be reached Monday-Friday, 6:00am-5: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, Aimee J Li can be reached at (571)272-4169. 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.
/JORGE A CHU JOY-DAVILA/Primary Examiner, Art Unit 2195