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 .
Status of the claims
The argument received on June 4, 2026 has been acknowledged and entered. Claims 1-11 are currently pending. This action is a second non-final due to the new ground of rejection.
Response to Arguments
Applicant’s arguments filed on June 4, 2026 with respect to the rejection with respect to claims 1-11 under 35 U.S.C. 103 have been fully considered but they are moot in view of new ground of rejection.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
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-5 and 8-11 are rejected under 35 U.S.C. 103 as being unpatentable over Wu et al. (“A self-tuning system based on application profiling and performance analysis for optimizing Hadoop MapReduce cluster configuration”, 20th annual international conference on high performance computing, IEEE, 18 December 2013, pages 89-98) cited in IDS (submitted on 11/18/2022) in view Schibler et al. (US 2019/0312800 A1, hereinafter referred to as “Schibler).
Regarding claim 1, Wu teaches a method of configuring program parameters during run-time of a computing program for computation in a heterogeneous computing system (Abstract: automates the tuning of Hadoop configuration settings based on deduced application performance requirements), the method comprising:
receiving a transformation of the computing program, the transformation comprising one or more computing applications (page 89, second paragraph: the input job is divided and then assigned to several worker nodes by a master node….then assigns reduce tasks that do aggregating, combining, filtering or transforming functions on these key-value pairs using a user-supplied function to form the final output);
generating for each computing application one or more tuning parameters, the one or more tuning parameters being categorized into classes (abstract: a set of equivalence classes of MapReduce applications for which the most appropriate Hadoop configuration parameters that maximally improve performance for that class); and
for a computing application to be optimized, recurringly adjusting one or more tuning parameters of the computing application, executing the computing application using the adjusted one or more tuning parameters (page 90, first paragraph: fine-tune the Hadoop cluster configuration for the job classes identified in the first step; page 90, second paragraph: configuration settings are automatically applied to provide significantly improved performance for the new incoming job; page 92: optimal configuration settings; page 93: we iteratively update these clusters by reassigning points to them; page 95: when the iteration ends, this algorithm returns the best solutions),
Wu does not specifically teach obtaining a performance metric for the execution of the computing application using the adjusted one or more tuning parameters and determining if the adjusted one or more tuning parameters provide an improvement with respect to the performance metric and whether a termination criterion has been met for ending the adjusting; storing, during run-time of the computing program, an indicator characteristic of a current dynamic state of the computing application being optimized, the indicator being captured during execution of the computing application and used in the optimization to determine, prior to said recurringly adjusting, whether a known optimization previously generated for the dynamic state is available for the dynamic state indicated by the stored indicator, the known optimization comprising a previously-determined adjustment of the one or more tuning parameters that satisfied said termination criterion.
However, Schibler teaches obtaining a performance metric (para. [0047]: first and second performance indicators) for the execution of the computing application using the adjusted (para. [0032]: In at least some embodiments, one or more different application settings may be dynamically adjusted (e.g., optimized) (any of the application's mutable runtime configuration) one or more tuning parameters (paras. [0006], [0042], [0050], [0065]: tuning parameters) and determining if the adjusted one or more tuning parameters provide an improvement with respect to the performance metric and whether a termination criterion has been met for ending the adjusting (para. [0047]: a first performance indicator of the first plurality of applications, the first performance indicator being representative of a first performance of the first plurality of applications while operating in accordance with the first runtime configuration…a second performance indicator of the first plurality of applications, the second performance indicator being representative of a second performance of the first plurality of applications while operating in accordance with the second runtime configuration, note that the above feature of “dynamically adjusted” in para. [0032] and “the first and second performance indicator” in para. [0047] reads on “determining if the adjusted one or more tuning parameters provide an improvement with respect to the performance metric and whether a termination criterion has been met for ending the adjusting);
storing, during run-time of the computing program, an indicator characteristic of a current dynamic state of the computing application being optimized (para. [0029]: implementing real-time optimization of computer-implemented application; para. [0030]: optimization objective a scoring; para. [0032]: In at least some embodiments, one or more different application settings may be dynamically adjusted (e.g., optimized) (any of the application's mutable runtime configuration; para. [0047]: a first performance indicator of the first plurality of applications, the first performance indicator being representative of a first performance of the first plurality of applications while operating in accordance with the first runtime configuration…a second performance indicator of the first plurality of applications, the second performance indicator being representative of a second performance of the first plurality of applications while operating in accordance with the second runtime configuration, note that the above feature of “dynamically adjusted (e.g., optimized) (any of the application's mutable runtime configuration” in para. [0032] in para. [0047] reads on “storing, during run-time of the computing program, an indicator characteristic of a current dynamic state of the computing application being optimized”),
the indicator being captured during execution of the computing application and used in the optimization to determine, prior to said recurringly adjusting (para. [0029]: implementing real-time optimization of computer-implemented application; para. [0030]: optimization objective a scoring; para. [0032]: In at least some embodiments, one or more different application settings may be dynamically adjusted (e.g., optimized) (any of the application's mutable runtime configuration; para. [0047]: a first performance indicator of the first plurality of applications, the first performance indicator being representative of a first performance of the first plurality of applications while operating in accordance with the first runtime configuration…a second performance indicator of the first plurality of applications, the second performance indicator being representative of a second performance of the first plurality of applications while operating in accordance with the second runtime configuration, note that “dynamically adjusted” in para. [0032] and “first performance indicator” in para. [0047] reads on “the indicator being captured during execution of the computing application and used in the optimization to determine, prior to said recurringly adjusting (i.e., a second performance of the first plurality of applications”),
whether a known optimization previously generated for the dynamic state is available for the dynamic state indicated by the stored indicator (para. [0032]: In at least some embodiments, one or more different application settings may be dynamically adjusted (e.g., optimized) (any of the application's mutable runtime configuration; para. [0047]: a first performance indicator of the first plurality of applications, the first performance indicator being representative of a first performance of the first plurality of applications while operating in accordance with the first runtime configuration…a second performance indicator of the first plurality of applications, the second performance indicator being representative of a second performance of the first plurality of applications while operating in accordance with the second runtime configuration…the first reward may correspond to the second score. In other embodiments, the first reward may be calculated based on a comparison of the second score and the first score, note the above feature of “dynamically adjusted (e.g. optimized)” in para. [0032] and “first performance indicator and second performance indicator” and “comparison of the second score and the first score” in para. [0047] reads on ”a known optimization previously generated”),
the known optimization comprising a previously-determined adjustment of the one or more tuning parameters (paras. [0006], [0042], [0050], [0065]: tuning parameters) that satisfied said termination criterion (para. [0032]: In at least some embodiments, one or more different application settings may be dynamically adjusted (e.g., optimized) (any of the application's mutable runtime configuration; para. [0047]: a first performance indicator of the first plurality of applications, the first performance indicator being representative of a first performance of the first plurality of applications while operating in accordance with the first runtime configuration…a second performance indicator of the first plurality of applications, the second performance indicator being representative of a second performance of the first plurality of applications while operating in accordance with the second runtime configuration…the first reward may correspond to the second score. In other embodiments, the first reward may be calculated based on a comparison of the second score and the first score, note the above feature of “dynamically adjusted (e.g. optimized)” in para. [0032] and “first performance indicator” and “first score and second score” and “comparison of the second score and the first score” para. [0047] reads on “the known optimization comprising a previously-determined adjustment of the one or more tuning parameters” because second performance indicator is associated with the first performance indicator).
Wu and Schibler are both considered to be analogous to the claimed invention because they are in the same filed of implementing and facilitating optimization of computer-based applications. Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate storing, during run-time of the computing program, an indicator characteristic of a current dynamic state of the computing application being optimized such as is described in Schibler into Wu, in order to allow various method(s), system(s) and/or computer program product(s) to be operable to cause at least one processor to execute a plurality of instructions for: using as an optimization objective a scoring, or fitness, function which in a simplistic form may be expressed as the ratio of performance raised to exponent over cost (Schibler, para. [0030]).
Regarding claim 2, Wu in view of Schibler teaches all the limitation of claim 1, in addition, Wu teaches that the method further comprises generating the transformation by a compiler adapted to evaluate the computing program to determine computing applications which may be executed in parallel by different processing units (page 89, second paragraph: the input job is divided and then assigned to several worker nodes by a master node….then assigns reduce tasks that do aggregating, combining, filtering or transforming functions on these key-value pairs using a user-supplied function to form the final output; page 91: The Hadoop MapReduce module is a Hadoop YARN based system for parallel data processing).
Regarding claim 3, Wu in view of Schibler teaches all the limitation of claim 1, in addition, Wu teaches that the optimization is performed using a tuning routine selected from a model-based prediction process and an online search process (page 90, first paragraph: fine-tune the Hadoop cluster configuration for the job classes identified in the first step; page 90, second paragraph: configuration settings are automatically applied to provide significantly improved performance for the new incoming job; page 91: Our overall approach to the automated configuration management of a Hadoop cluster is based on a machine learning phase, which then is used for self-tuning. The machine learning phase requires training; 93: searching for the optimum configuration, note that the above feature of “settings are automatically applied to provide significantly improved performance for the new incoming job” in page 90, “a machine learning phase, which then is used for self-tuning” in page 91 and “searching for the optimum configuration” in page 93 reads on “the optimization is performed using a tuning routine selected from a model-based prediction process and an online search process.
Regarding claim 4, Wu in view of Schibler teaches all the limitation of claim 3, in addition, Wu teaches that the online search process is used to provide training data to update the model-based prediction process (page 91: our overall approach to the automated configuration management of a Hadoop cluster is based on a machine learning phase, which then is used for self-tuning; page 92: we have redefined the performance model and developed a new solution, which can not only eliminate this effect caused by different data sizes; page 93: searching for the optimum configuration, note that the above feature of “a machine learning phase, which then is used for self-tuning” in page 91, “developed a new solution, which can not only eliminate this effect caused by different data sizes” in page 92, and “searching for the optimum configuration” in page 93 reads on “online search process is used to provide training data to update the model-based prediction process).
Regarding claim 5, Wu in view of Schibler teaches all the limitation of claim 1, in addition, Wu teaches that the one or more tuning parameters are used to determine if the optimization procedure can be performed in a restricted search space (page 92: our investigations we have also found that different sizes of input data will affect the performance pattern differently to some degree….we have redefined the performance model and developed a new solution, which can not only eliminate this effect caused by different data sizes; page 93: decrease the size of the parameter space, note that the above feature of “decrease the size of the parameter space” reads on “a one or more tuning parameters”).
Regarding claim 8, Wu teaches a computing system programmed to optimize a computing application, the computing application adjusts one or more tuning parameters of the computing application, executes the computing application using the adjusted one or more tuning parameters (page 90, first paragraph: fine-tune the Hadoop cluster configuration for the job classes identified in the first step; page 90, second paragraph: configuration settings are automatically applied to provide significantly improved performance for the new incoming job; page 92: optimal configuration settings; page 93: we iteratively update these clusters by reassigning points to them; page 95: when the iteration ends, this algorithm returns the best solution),
obtains a performance metric for the execution of the computing application using the adjusted one or more tuning parameters and determines if the adjusted one or more tuning parameters provide an improvement with respect to the performance metric and whether a termination criterion has been met for ending the adjusting (page 90, first paragraph: fine-tune the Hadoop cluster configuration for the job classes identified in the first step; page 90, second paragraph: configuration settings are automatically applied to provide significantly improved performance for the new incoming job; page 92: optimal configuration settings; page 93: we iteratively update these clusters by reassigning points to them; page 95: when the iteration ends, this algorithm returns the best solution),
Wu does not specifically teach storing, during run-time of the computing program, an indicator characteristic of a current dynamic state of the computing application being optimized, the indicator being captured during execution of the computing application and used in the optimization to determine, prior to said recurringly adjusting, whether a known optimization previously generated for the dynamic state is available for the dynamic state indicated by the stored indicator, the known optimization comprising a previously-determined adjustment of the one or more tuning parameters that satisfied said termination criterion.
However, Schibler teaches storing, during run-time of the computing program, an indicator characteristic of a current dynamic state of the computing application being optimized (para. [0029]: implementing real-time optimization of computer-implemented application; para. [0030]: optimization objective a scoring; para. [0032]: In at least some embodiments, one or more different application settings may be dynamically adjusted (e.g., optimized) (any of the application's mutable runtime configuration; para. [0047]: a first performance indicator of the first plurality of applications, the first performance indicator being representative of a first performance of the first plurality of applications while operating in accordance with the first runtime configuration…a second performance indicator of the first plurality of applications, the second performance indicator being representative of a second performance of the first plurality of applications while operating in accordance with the second runtime configuration, note that the above feature of “dynamically adjusted (e.g., optimized) (any of the application's mutable runtime configuration” in para. [0032] in para. [0047] reads on “storing, during run-time of the computing program, an indicator characteristic of a current dynamic state of the computing application being optimized”),
the indicator being captured during execution of the computing application and used in the optimization to determine, prior to said recurringly adjusting (para. [0029]: implementing real-time optimization of computer-implemented application; para. [0030]: optimization objective a scoring; para. [0032]: In at least some embodiments, one or more different application settings may be dynamically adjusted (e.g., optimized) (any of the application's mutable runtime configuration; para. [0047]: a first performance indicator of the first plurality of applications, the first performance indicator being representative of a first performance of the first plurality of applications while operating in accordance with the first runtime configuration…a second performance indicator of the first plurality of applications, the second performance indicator being representative of a second performance of the first plurality of applications while operating in accordance with the second runtime configuration, note the above feature of “dynamically adjusted (e.g. optimized)” in para. [0032] and “first performance indicator and second performance indicator” in para. [0047] reads on “the indicator being captured during execution of the computing application and used in the optimization to determine prior to said recurringly adjusting”),
whether a known optimization previously generated for the dynamic state is available for the dynamic state indicated by the stored indicator (para. [0032]: In at least some embodiments, one or more different application settings may be dynamically adjusted (e.g., optimized) (any of the application's mutable runtime configuration; para. [0047]: a first performance indicator of the first plurality of applications, the first performance indicator being representative of a first performance of the first plurality of applications while operating in accordance with the first runtime configuration…a second performance indicator of the first plurality of applications, the second performance indicator being representative of a second performance of the first plurality of applications while operating in accordance with the second runtime configuration…the first reward may correspond to the second score. In other embodiments, the first reward may be calculated based on a comparison of the second score and the first score, note the above feature of “dynamically adjusted (e.g. optimized)” in para. [0032] and “first performance indicator and second performance indicator” and “comparison of the second score and the first score” in para. [0047] reads on ”a known optimization previously generated”),
the known optimization comprising a previously-determined adjustment of the one or more tuning parameters (paras. [0006], [0042], [0050], [0065]: tuning parameters) that satisfied said termination criterion (para. [0032]: In at least some embodiments, one or more different application settings may be dynamically adjusted (e.g., optimized) (any of the application's mutable runtime configuration; para. [0047]: a first performance indicator of the first plurality of applications, the first performance indicator being representative of a first performance of the first plurality of applications while operating in accordance with the first runtime configuration…a second performance indicator of the first plurality of applications, the second performance indicator being representative of a second performance of the first plurality of applications while operating in accordance with the second runtime configuration…the first reward may correspond to the second score. In other embodiments, the first reward may be calculated based on a comparison of the second score and the first score, note the above feature of “dynamically adjusted (e.g. optimized)” in para. [0032] and “first performance indicator” and “first score and second score” and “comparison of the second score and the first score” para. [0047] reads on “the known optimization comprising a previously-determined adjustment of the one or more tuning parameters” because second performance indicator is associated with the first performance indicator).
Wu and Schibler are both considered to be analogous to the claimed invention because they are in the same filed of implementing and facilitating optimization of computer-based applications. Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate storing, during run-time of the computing program, an indicator characteristic of a current dynamic state of the computing application being optimized such as is described in Schibler into Wu, in order to allow various method(s), system(s) and/or computer program product(s) to be operable to cause at least one processor to execute a plurality of instructions for: using as an optimization objective a scoring, or fitness, function which in a simplistic form may be expressed as the ratio of performance raised to exponent over cost (Schibler, para. [0030]).
Regarding claim 9, Wu in view of Schibler teaches all the limitation of claim 8, in addition, Wu teaches that the computing system is adapted to perform the optimization using a tuning routine selected from a model-based prediction process and an online search process (page 90, first paragraph: fine-tune the Hadoop cluster configuration for the job classes identified in the first step; page 90, second paragraph: configuration settings are automatically applied to provide significantly improved performance for the new incoming job; page 91: Our overall approach to the automated configuration management of a Hadoop cluster is based on a machine learning phase, which then is used for self-tuning. The machine learning phase requires training; 93: searching for the optimum configuration, note that the above feature of “settings are automatically applied to provide significantly improved performance for the new incoming job” in page 90, “a machine learning phase, which then is used for self-tuning” in page 91 and “searching for the optimum configuration” in page 93 reads on “the optimization is performed using a tuning routine selected from a model-based prediction process and an online search process).
Regarding claim 10, Wu in view of Schibler teaches all the limitation of claim 9, in addition, Wu teaches that the computing system is adapted to use the online search process to provide training data to update the model-based prediction process (page 91: our overall approach to the automated configuration management of a Hadoop cluster is based on a machine learning phase, which then is used for self-tuning; page 92: we have redefined the performance model and developed a new solution, which can not only eliminate this effect caused by different data sizes; page 93: searching for the optimum configuration, note that the above feature of “a machine learning phase, which then is used for self-tuning” in page 91, “developed a new solution, which can not only eliminate this effect caused by different data sizes” in page 92, and “searching for the optimum configuration” in page 93 reads on “online search process is used to provide training data to update the model-based prediction process).
Regarding claim 11, Wu in view of Schibler teaches all the limitation of claim 8, in addition, Wu teaches that the computing system is adapted to use one or more tuning parameters to determine if the optimization procedure can be performed in a restricted search space ( page 92: our investigations we have also found that different sizes of input data will affect the performance pattern differently to some degree….we have redefined the performance model and developed a new solution, which can not only eliminate this effect caused by different data sizes; page 93: decrease the size of the parameter space, note that the above feature of “decrease the size of the parameter space” reads on “a one or more tuning parameters”).
Claims 6 and 7 are rejected under 35 U.S.C. 103 as being unpatentable over Wu in view of Schibler further in view of Rudolf et al. (“Efficient hierarchical online-autotuning: a case study on polyhedral accelerator mapping,” proceedings of the ACM international conference on supercomputing, 26 June 2019, pages 354-366, hereinafter referred to as “Rudolf”) cited in IDS (submitted on 11/18/2022).
Regarding claim 6, Wu in view of Schibler teaches all the limitation of claim 2. Wu and Schibler do not specifically teach that the transformation is generated using a polyhedral parallelization compiler.
However, Rudolf teaches that the transformation is generated using a polyhedral parallelization compiler (abstract: a polyhedral parallelizing compiler for; page 356: polyhedral compilation techniques are determined).
Wu and Rudolf are both considered to be analogous to the claimed invention because they are in the same filed of identifying the optimal program variants. Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the polyhedral parallelization compiler such as is described in Padilla into Rudolf, in order to allow for hierarchical tuning of dependent subspaces using individual search algorithms, thus reducing the complexity of the space by orders of magnitude (Rudolf, page 355).
Regarding claim 7, Wu in view of Schibler and Rudolf teaches all the limitation of claim 6. Wu and Schibler do not specifically teach that the polyhedral parallelization compiler transforms source code into an intermediate representation and further transforms the intermediate representation into binary code suitable for execution on computing platforms forming the heterogeneous computing system.
However, Rudolf teaches that the polyhedral parallelization compiler transforms source code into an intermediate representation (abstract: a polyhedral parallelizing compiler for; page 356: polyhedral compilation techniques are determined) and
further transforms the intermediate representation into binary code suitable for execution on computing platforms forming the heterogeneous computing system (page 358: generating a few hundred or thousand different versions of the code enormously increases compile time and binary size).
Wu and Rudolf are both considered to be analogous to the claimed invention because they are in the same filed of identifying the optimal program variants. Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to incorporate the polyhedral parallelization compiler such as is described in Padilla into Rudolf, in order to allow for hierarchical tuning of dependent subspaces using individual search algorithms, thus reducing the complexity of the space by orders of magnitude (Rudolf, page 355).
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
Wang et al. (US 10,409,569 B1) teaches that Among other things, embodiments of the present disclosure improve the functionality of computer software and systems by facilitating the automatic performance optimization of a software application based on the particular platform upon which the application runs. In some embodiments, the system can automatically choose a set of parameters or methods at run-time from a design space with pre-selected optimization methods and parameters (e.g., algorithms, software libraries, and/or hardware accelerators) for a specific task.
Bertran Monfort et al. (US 9,690,555 B2) teaches an aspect includes optimizing an application workflow. The optimizing includes characterizing the application workflow by determining at least one baseline metric related to an operational control knob of an embedded system processor. The application workflow performs a real-time computational task encountered by at least one mobile embedded system of a wirelessly connected cluster of systems supported by a server system. The optimizing of the application workflow further includes performing an optimization operation on the at least one baseline metric of the application workflow while satisfying at least one runtime constraint. An annotated workflow that is the result of performing the optimization operation is output.
Kruglick et al. (US 9,367,292 B2) teaches that systems and methods for modulating dynamic optimizations of a computer program are disclosed. One method includes receiving an intermediate representation (IR) of machine executable instructions, optimizing the received IR to generate a first optimized IR prior to the machine executable instructions being generated by a runtime compiler, optimizing the received IR to generate two or more alternative optimizations for the IR, wherein the two or more alternative optimizations generating two or more optimized IRs are optimized at different optimization points based at least in part on information generated during execution of the first optimized IR in a runtime environment different optimization strategies.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to SANGKYUNG LEE whose telephone number is (571)272-3669. The examiner can normally be reached Monday-Friday 8:30am-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, LEE RODAK can be reached at 571-270-5628. 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.
/SANGKYUNG LEE/Examiner, Art Unit 2858
/CHRISTOPHER P MCANDREW/Primary Examiner, Art Unit 2858