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 .
Continued Examination Under 37 CFR 1.114
A request for continued examination under 37 CFR 1.114, including the fee set forth in 37 CFR 1.17(e), was filed in this application after final rejection. Since this application is eligible for continued examination under 37 CFR 1.114, and the fee set forth in 37 CFR 1.17(e) has been timely paid, the finality of the previous Office action has been withdrawn pursuant to 37 CFR 1.114. Applicant's submission filed on 1/13/25 has been entered.
Response to Amendment
(Submitted on 1/13/2025)
Applicant’s arguments with respect to claims 1, 9 and 15 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.
In regard to 112 rejections
The examiner had rejected Claims 1, 9, and 16 for reciting the limitation “updating the automated code-rewriter to generate amplified code based on one or more hyperparameters representing respectively one or more categories of source code signals”. As this limitation was not described in the specification, the examiner had rejected the claims under 112(a). The applicant has subsequently amended the claims to reflect on the not using the “updating” term in the claim limitations. As a result, the examiner WITHDRAWS the 112(a) rejections on claims 1, 9 and 16 and on all dependent claims 2-8, 10-15 and 17-20.
In regard to 101 rejections
- The examiner on Page 9 argues that the amended claim 1 “ selecting, via a hyperparameter optimization optimizer, one or more hyperparameters so that the loss is minimized and to control selection by the automated code-rewriter of one or more categories of source code signals that are amplified in the amplified code generated in multiple trials with the automated code-rewriter, with the machine learning model, and with the loss determination” asserts that the claim 1 is not an abstract idea because the automated steps are not mental steps and that the generic computer would not be able to perform the automated code re-write and analysis functions. Further on Page 10, the applicant argues that the claims facilitate improvement to the machine learning models.
Examiner’s Response:
The examiner submits that the claims are directed to program source code rewriting as a amplified code that uses automatic code generation and rewriting tools and specified the use of machine learning model and hyperparameter optimizer without giving any details of these components. Therefore, the examiner submits that these components can be interpreted merely instructions to apply the abstract idea on a generic computer.
In Conclusion, the examiner hereby MAINTAINS the 101 rejections on claims 1,9 and 16 and on all dependent claims 2-8, 10-15 and 17-20.
In regard to 103 rejections
- The applicant on Page 14 argues that the amendments to claim 1 (claim 9 and 16) is not taught by the current references.
Examiner’s Response:
The examiner submits that the applicant’s argument is MOOT in view of new reference “Zhang” and the combination of references “Gao”, Clement” and the new reference “Zhang” teaches the claim 1 , claim 9 and claim 16.
In Conclusion, the examiner rejects claim 1, 9 and 16 and all dependent claims 2-8, 10-15 and 17-20 under 35 USC § 103 as NON -FINAL REJECTION.
Claim Rejections - 35 USC § 101
35 U.S.C. 101 reads as follows:
Whoever invents or discovers any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof, may obtain a patent therefor, subject to the conditions and requirements of this title.
Claims 1-20 rejected under 35 U.S.C. 101 because the claimed invention is directed to an abstract idea without significantly more.
Step 1:
According to the first part of the analysis, in the instant case, claims 1-8 are directed to a method claim, claims 9-15 are directed to a computer program product comprising one or more storage media, and claims 16-20 are directed to a system comprising a storage media and processors. Thus, each of the claims falls within one of the four statutory categories (i.e. process, machine, manufacture, or composition of matter).
In regard to Claim 1: (Currently Amended)
Step 2A Prong 1:
“ identifying…one or more source code signals in a source code” (except for the recitation of an automated code analyzer) is a mental step of data identification.
“generating an amplified code based on the identified signals and the source code” (except via an automated code-rewriter) is a mental step of data comparison.
“ wherein the amplified code is functionally equivalent to the source code” is a mental step of data comparison.
“ wherein the amplified code comprises one or more amplified signals” is a mental step
Identification.
“ determining a loss of the machine learning model using a loss function “ determining a loss function” is a mental step of data comparison.
“ selecting, one or more hyperparameters so that the loss is minimized” (except via a hyperparameter optimization optimizer) is a mental step of data selection.
Additional elements:
Step 2A Prong 2:
“via an automated code analyzer” directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“via an automated code-rewriter” directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“via an hyperparameter optimizer” directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“ Training a machine learning model to perform a source code relevant task by using the amplified code as training data” directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“ for the training of the machine learning model” directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“ to control selection by the automated code-rewriter of one or more categories of source code signals that are amplified in the amplified code generated in multiple trials with the automated code-rewriter, with the machine learning model, and with the loss determination” is directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
Step 2B:
“via an automated code analyzer” directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“via an automated code-rewriter” directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“via an hyperparameter optimizer” directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim.
See MPEP 2106.05 (h).
“ Training a machine learning model to perform a source code relevant task by using the amplified code as training data” directed to a generic computer function and and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“ for the training of the machine learning model” directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
and to control selection by the automated code-rewriter of one or more categories of source code signals that are amplified in the amplified code generated in multiple trials with the automated code-rewriter, with the machine learning model, and with the loss determination.
directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
In regard to Claim 2: (Previously Presented)
Step 2A Prong 1:
“ selecting one or more source code signal categories for amplification” is a mental step of data identification.
“ selected one or more of the source code signal categories” is a mental step of data identification.
Step 2A Prong 2: no additional elements
Step 2B: no additional elements
In regard to Claim 3: (Currently Amended)
Step 2A Prong 1:
“ one or more categories of the source code signals are selected from a group consisting of : syntax; scope; data flow; and types” is a mental step of data identification.
Step 2A Prong 2: no additional elements
Step 2B: no additional elements
In regard to Claim 4: (Previously Presented)
Step 2A Prong 1:
“ wherein the generating the amplified code comprises performing a refactoring” is a mental step of data manipulation.
Step 2A Prong 2: no additional elements
Step 2B: no additional elements
In regard to Claim 5: (Previously Presented)
Step 2A Prong 2:
“ wherein the generating the amplified code comprises performing a compiler optimization” is directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
Step 2B:
“ wherein the generating the amplified code comprises performing a compiler optimization” is directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
In regard to Claim 6: (Previously Presented)
Step 2A Prong 1:
“ generating multiple amplified versions of the source code using the source code and the multiple amplified versions” is a mental step of data manipulation.
Additional elements:
Step 2A Prong 2:
“training the machine learning model using the source code and multiple amplified versions” is directed to a generic computer function and does not integrate into the judicial exception in to a practical application See MPEP 2106.05 (h).
Step 2B:
“training the machine learning model using the source code and multiple amplified versions” is directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
In regard to Claim 7: (Currently Amended)
“generating one or more negative [[code]] codes based on the source code” is a mental step of data comparison.
Additional elements
Step 2A Prong 2:
“ further training the machine learning model using the source code and the one or more negative [[code]] codes” is directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
Step 2B:
“ further training the machine learning model using the source code and the one or more negative [[code]] codes” is directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
In regard to Claim 8: (Currently Amended)
Step 2A Prong 1:
“a further amplified code that is functionally equivalent to a new source code and comprises one or more amplified signals” ” is a mental step of data comparison.
“ wherein the further amplified code comprises at least one of: test data[[;]] and production traffic” is a mental step of data identification.
Additional elements
Step 2A Prong 2:
“generating, via the automated code-rewriter” ” is directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
Step 2B:
“ generating, via the automated code-rewriter” is directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
In regard to Claim 9: (Currently Amended)
Step 2A Prong 1:
“ identifying, one or more source code signals in a source code”(except via an automated code analyzer) is a mental step of data identification.
“generating, an amplified code based on the identified signals and the source code” (except via an automated code-rewriter) is a mental step of data comparison.
“ wherein the amplified code is functionally equivalent to the source code” is a mental step of data comparison.
“ wherein the amplified code comprises one or more amplified signals” is a mental step
Identification.
“ determining a loss of the machine learning model using a loss function “ determining a loss function” is a mental step of data comparison.
“ selecting, one or more hyperparameters so that the loss is minimized” (except via a hyperparameter optimization optimizer) is a mental step of data selection.
Additional elements:
Step 2A Prong 2:
“ A computer program product comprising one or more computer readable storage media, and program instructions collectively stored on the one or more computer readable storage media, the program instructions comprising instructions configured to cause one or more processors to perform a method comprising: ” recited in the preamble is directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“ via an automated code analyzer” directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“via an automated code-rewriter” directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“ via a hyperparameter optimizer” directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“ Training a machine learning model to perform a source code relevant task by using the amplified code as training data” directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“ for the training of the machine learning model” directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“ and updating the automated code-rewriter to generate amplified code based on one or more”
directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“ to control selection by the automated code-rewriter of one or more categories of source code signals that are amplified in the amplified code generated in multiple trials with the automated code-rewriter, with the machine learning model, and with the loss determination” is directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
Step 2B:
“ A computer program product comprising one or more computer readable storage media, and program instructions collectively stored on the one or more computer readable storage media, the program instructions comprising instructions configured to cause one or more processors to perform a method comprising: ” recited in the preamble is directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“ identifying via an automated code analyzer” directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“ generating via an automated code-rewriter” directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“via an hyperparameter optimizer” directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“ Training a machine learning model to perform a source code relevant task by using the amplified code as training data” directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“ for the training of the machine learning model” directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“ and updating the automated code-rewriter to generate amplified code based on one or more”
directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
and to control selection by the automated code-rewriter of one or more categories of source code signals that are amplified in the amplified code generated in multiple trials with the automated code-rewriter, with the machine learning model, and with the loss determination.
directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
In regard to Claim 10: (Previously Presented)
Step 2A Prong 1:
“ selecting one or more source code signal categories for amplification” is a mental step of data identification.
“ selected one or more of the source code signal categories” is a mental step of data identification.
Step 2A Prong 2: no additional elements
Step 2B: no additional elements
In regard to Claim 11: (Currently Amended)
Step 2A Prong 1:
“ one or more categories of the source code signals are selected from a group consisting of : syntax; scope; data flow; and types” is a mental step of data identification.
Step 2A Prong 2: no additional elements
Step 2B: no additional elements
In regard to Claim 12: (Previously Presented)
Currently Amended)
Step 2A Prong 1:
“ wherein the generating the amplified code comprises performing a refactoring” is a mental step of data manipulation.
Step 2A Prong 2: no additional elements
Step 2B: no additional elements
In regard to Claim 13: (Original)
Step 2A Prong 2:
“ wherein the generating the amplified code comprises performing a compiler optimization” is directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
Step 2B:
“ wherein the generating the amplified code comprises performing a compiler optimization” is directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
In regard to Claim 14: (Currently Amended)
“generating one or more negative versions based on the source code” is a mental step of data comparison.
Additional elements
Step 2A Prong 2:
“ further training the machine learning model using the source code and the one or more negative versions” is directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
Step 2B:
““ further training the machine learning model using the source code and the one or more negative versions” is directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
In regard to Claim 15: (Currently Amended)
Step 2A Prong 1:
“ a further amplified code that is functionally equivalent to a new source code and comprises one or more amplified signals” ” is a mental step of data comparison.
“ wherein the further amplified code comprises at least one of: test data[[;]] and production traffic” is a mental step of data identification.
Additional elements
Step 2A Prong 2:
“generating, via the automated code-rewriter” ” is directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
Step 2B:
Step 2B:
“ generating, via the updated automated code-rewriter” is directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
In regard to Claim 16: (Currently Amended)
Step 2A Prong 1:
“ identifying, one or more source code signals in a source code” (except via an automated code analyzer) is a mental step of data identification.
“generating, an amplified code based on the identified signals and the source code” except via an automated code-rewriter) is a mental step of data comparison.
“ wherein the amplified code is functionally equivalent to the source code” is a mental step of data comparison.
“ wherein the amplified code comprises one or more amplified signals” is a mental step
Identification.
“ determining a loss of the machine learning model using a loss function “ determining a loss function” is a mental step of data comparison.
“ selecting, one or more hyperparameters so that the loss is minimized” (except via a hyperparameter optimization optimizer) is a mental step of data selection.
Additional elements:
Step 2A Prong 2:
“ A system comprising: one or more computer processing circuits; and one or more computer-readable storage media storing program instructions which, when executed by the one or more computer processing circuits, are configured to cause the one or more computer processing circuits to perform a method comprising” recited in the preamble is directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“via an automated code analyzer” directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“via an automated code-rewriter” directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“via an hyperparameter optimizer” directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“ Training a machine learning model to perform a source code relevant task by using the amplified code as training data” directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“ for the training of the machine learning model” directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“ and updating the automated code-rewriter to generate amplified code based on one or more”
directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
“ to control selection by the automated code-rewriter of one or more categories of source code signals that are amplified in the amplified code generated in multiple trials with the automated code-rewriter, with the machine learning model, and with the loss determination” is directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
Step 2B:
“ A system comprising: one or more computer processing circuits; and one or more computer-readable storage media storing program instructions which, when executed by the one or more computer processing circuits, are configured to cause the one or more computer processing circuits to perform a method comprising” recited in the preamble is directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“ identifying via an automated code analyzer” directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“ generating via an automated code-rewriter” directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“via an hyperparameter optimizer” directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim.
See MPEP 2106.05 (h).
“ Training a machine learning model to perform a source code relevant task by using the amplified code as training data” directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“ for the training of the machine learning model” directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“ and updating the automated code-rewriter to generate amplified code based on one or more”
directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
“ and to control selection by the automated code-rewriter of one or more categories of source code signals that are amplified in the amplified code generated in multiple trials with the automated code-rewriter, with the machine learning model, and with the loss determination”
directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
In regard to Claim 17: (Previously Presented)
Step 2A Prong 1:
“ selecting one or more source code signal categories for amplification” is a mental step of data identification.
“ selected one or more of the source code signal categories” is a mental step of data identification.
Step 2A Prong 2: no additional elements
Step 2B: no additional elements
In regard to Claim 18: (Currently Amended)
Step 2A Prong 1:
“ one or more categories of the source code signals are selected from a group consisting of : syntax; scope; data flow; and types” is a mental step of data identification.
Step 2A Prong 2: no additional elements
Step 2B: no additional elements
In regard to Claim 19: (Previously Presented)
Step 2A Prong 1:
“ wherein the generating the amplified code comprises performing a refactoring” is a mental step of data manipulation.
Step 2A Prong 2: no additional elements
Step 2B: no additional elements
In regard to Claim 20: : (Previously Presented)
Step 2A Prong 2:
“ wherein the generating the amplified code comprises performing a compiler optimization” is directed to a generic computer function and does not integrate the judicial exception into a practical application. See MPEP 2106.05 (h).
Step 2B:
“ wherein the generating the amplified code comprises performing a compiler optimization” is directed to a generic computer function and does not amount to significantly more than the judicial exception in the claim. See MPEP 2106.05 (h).
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-6, 9, 12-13, 16, and 19-20 are rejected under 35 U.S.C. 103 as being unpatentable over Gao et al. (hereinafter Gao) 2020/0293295 A1, in view of Clement et al. (hereinafter Clement) US 2021/0357762 A1, in view of Jiangao Zhang et al. (hereinafter Zhang) US 11809841 B1.
In regard to claim 1: (Currently Amended)
Gao discloses:
A computer-implemented method, comprising:
- identifying via an automated code analyzer one or more source code signals in a source code;
In [0058]:
the machine learning module is configured to automatically generate an optimization scheme,
In [0068]:
Static program transformer module 2015 (optional) is also configured to generate static analysis data 2022 when pre-processing the source code of software program 1010.
(BRI: the static program transformer module is the automated code analyzer within the context of a configured to automatically generate an optimization scheme)
In [0068]:
static analysis data 2022 includes data indicative of recommendations or suggestions as to particular areas of the source code of the software program 1010 that may be suitable for certain types of optimizations. In embodiments which do not include static program transformer module 2015, compiler 2020 may automatically generate an optimization scheme for the source code of the software program 1010. In some embodiments, the source code of software program 1010 may include annotations provided by the software program developer which provides the aforementioned recommendations and suggestions.
- generating, via an automated code-rewriter, an amplified code based on the identified signals and the source code, wherein the amplified code is functionally equivalent to the source code and wherein the amplified code comprises one or more amplified signals
In [0016]:
there is provided a computing system comprising: at least one processor; a memory having stored thereon computer-executable instructions that, when executed by the at least one processor, cause the at least one processor to perform a method of auto-tuning and compiling source code
In [0016]:
generate a compiling report including data relating to the first optimization scheme; 0016 generate a second optimization scheme based on at least the compiling report, the performance report, and the performance bottleneck information; generate a second executable file by compiling the source code in accordance with a second optimization scheme,
In [0021]:
the compiling report includes at least one of: an identification of one or more transformations performed on the source code by the compiler; and for each of the one or more transformations performed by the compiler, a corresponding location in the source code in which the respective transformation was performed,
In [0054]:
the term “optimization” may refer to transformations performed on the source code (or source code that was previously transformed) by a compiler during compiling,
In [0058]: the machine learning module is configured to automatically generate an optimization scheme
- wherein the amplified code is functionally equivalent to the source code and wherein the amplified code comprises one or more amplified signals
In [0052]:
Optimization of source code of a software program during compiling by a compiler is conducted with a specific processor in mind (e.g. a processor or chipset having a certain type of architecture and running a certain type of operating system), and so knowledge of the architecture of the processor on which the resulting executable file generated by the compiler) will be executing may be necessary in order to conduct such optimization efficiently,
In [0054]:
optimization of source code refers to the process of performing transformations on source code so as to ultimately generate an executable file that, when executed on a particular processor architecture, achieves improved execution performance with respect to at least one performance metric,
In [0056]:
Embodiments disclosed herein relate to compiler systems and methods that can automatically generate multiple executable files based on the same underlying source code of a software program,
In [0016]:
generate a compiling report including data relating to the first optimization scheme; generate a performance report including dynamic data relating to execution performance of the first executable file; receive performance bottleneck information indicative of one or more performance bottlenecks associated with the execution performance of the first executable file; generate a second optimization scheme based on at least the compiling report, the performance report, and the performance bottleneck information;
In [0058]:
for the source code of the software program based on one or more of the compilation data included in the compiling report, data indicative of the dynamic runtime information, and data indicative of the identified bottlenecks obtained from previous compiling and simulation iterations of executable files based on the same source code.
(BRI: the second optimization scheme provides the amplified code that is generated in relation to first optimization scheme (source code) as generated by the computer system is the automated code-rewriter. The same underlying source code of a software program use for execution using multiple execution files implies they are functionally equivalent. The data indicative of the bottleneck is the amplified signals (second optimization))
- training a machine learning model to perform a source code relevant task by using the amplified code as training data;
In [0068]:
the source code of software program 1010 may include annotations provided by the software program developer which provides the aforementioned recommendations and suggestions. In some embodiments, static analysis data 2022 is stored in the knowledge database 2025,
(BRI: a software program is intended to be executed for a specific task)
In [0081]:
Compiler system 2000 further includes machine learning module 2100, which includes bottleneck detector 2060, decision maker 2070 and search driver 2080. Bottleneck detector 2060 is configured to retrieve and analyze data stored in knowledge database 2025,
In [0084]:
Decision maker 2070 is configured to interact with bottleneck detector 2060 and knowledge database 2025 to evaluate performance impacts of various optimization schemes. Decision maker 2070 is further configured to perform data mining on the data in knowledge database 2025 and apply machine learning techniques based on training data obtained from knowledge database 2025 ,
In [0104]:
training data refers to the static analysis data 2022 and dynamic data 2043 of software programs with source code similar or identical to source code of the auto-tuning enabled software program 1010,
In [0105]:
compiler 2020 may perform a transformation on the source code of the auto-tuning enabled software program 1010 using aggressive loop-invariant code motion. When compiler 2020 applies loop-invariant code motion, compiler 2020 may sort the loop invariants in order of computational cost and record the cost information in the compiling report 1023 for storage in knowledge database 2025.
In [0109]:
decision maker 2070 and search driver 2080 apply machine learning processes to training data stored in knowledge database 2025, which includes data from previously compiled, simulated, and executed programs and the resulting dynamic performance data.
In [0112]:
machine learning module 2100 performs data mining and analyzes each set of dynamic data 2043, static program characteristic data 2022 and optimization data 2023 at to determine which optimization schemes 2095 resulted in the best individual performance metrics. Such performance metrics may include, for example, instruction flow bubble information (due to dependence, synchronization, resource limitations, etc.), data and instruction cache misses, code pattern, code layout, data layout/distribution, TLB (translation lookaside buffer) misses, TLB page walks, memory access (read/write) latency, memory bank conflicts, memory utilization,
In [0014]:
generating, using a machine learning unit, the mapping function for outputting an optimization recommendation based on the dynamic data associated with at least one previously executed executable file, compiling reports from the previously executed executable files, the performance report of the first executable file, and the compiling report of the first executable file.
Gao does not explicitly disclose:
- selecting, via a hyperparameter optimization optimizer, one or more
hyperparameters so that the loss is minimized and to control selection by the automated code-rewriter of one or more categories of source code signals that are amplified in the amplified code generated in multiple trials with the automated code-rewriter, with the machine learning model, and with the loss determination.
However, Clement discloses:
- selecting, via a hyperparameter optimization optimizer, one or more hyperparameters so that the loss is minimized
In [0005]:
A software engineering task is an automated activity used to create, develop, maintain, and/or test source code. Source code understanding is needed in a variety of software engineering tasks, such as, without limitation, method completion, documentation/code generation, bug classification, bug patching, and line completion. A software engineering task utilizes the architecture of a particular neural transformer model that aligns best with the task,
In [0070]:
the hyperparameters may include the following: (1) subtoken and position embedding layers of dimensions: 30000 x 768, and 1024 x 768 respectively; (2) the configuration of the neural transformer model in a particular configuration with a number of encoder blocks and/or decoder blocks; (3) for the training procedure: denoising auto-encoder, with a cross-entropy loss optimization objective,
(BRI: the objective is the loss optimization which implies that the training iteratively converges to a minimum (loss minimization). The hyperparameters that are tailored to meet the objective implies hyperparameter updating)
- with the machine learning model, and with the loss determination.
In [0069]:
The model architecture, training procedure, data normalization and vocabulary encoding procedures are hyperparameters that are tailored to meet a particular objective.
In [0068]:
Turning to FIG. 6, neural transformer models are trained iteratively, making multiple passes over the training dataset before converging to a minimum. An epoch represents the entire training dataset passed forwards and backwards through the neural transformer block once. Since the training dataset is very large, it is partitioned into smaller batches. The training is iterative and the entire dataset is passed through the neural transformer in multiple iterations. Each training iteration includes forward propagation, loss calculation, backpropagation steps followed by updating the weights. The training dataset is partitioned into batches with each batch of sequences running through the training process.
It would have obvious to one of ordinary skill in the art before the effective filing date of the present application to combine Gao, and Clement.
Gao teaches code analyzer and code rewriter and teaches generating an amplified code from source code and training with the model represented by the amplified code and update the code-rewriter.
Clement teaches selecting hyperparameters for minimizing the loss.
One of ordinary skill would have motivation to combine Gao , and Clement to find the optimum loss function (Clement[0076]:)
Gao and Clement do not explicitly disclose:
- and to control selection by the automated code-rewriter of one or more categories of source code signals that are amplified in the amplified code generated in multiple trials with the automated code-rewriter, with the machine learning model, and with the loss determination.
However, Zhang discloses:
- and to control selection by the automated code-rewriter of one or more categories of source code signals that are amplified in the amplified code generated in multiple trials with the automated code-rewriter, with the machine learning model, and with the loss determination.
In [Col 3, lines 23-28]:
addressed by the software modernization system described herein, which includes an automated refactoring engine that is capable of automatically refactoring application source code to mitigate identified anti-patterns and other software modernization-related issues.
In [Col 17, lines 50-53]:
to train a ML refactoring model, an application modernization services 102 collects
refactoring training data derived from portions, or “segments” or “snippets,” of source code
In [Col 16, lines 49-62]:
To perform the ML model training, in some embodiments, computing resources execute instructions according to hyperparameter values included in the training request. As an illustrative example, a model training and execution system 410 trains a ML model by identifying values for certain parameters (for example, coefficients, weights, centroids, etc.). The identified values depend on hyperparameters that define how the training is performed. Thus, the computing resources can execute the executable instructions to initiate a ML model training process, where the training process is run using the hyperparameter values included in the training request. Execution can include applying the obtained training data as input parameters to some or all of the instructions being executed.
In [Col 13, lines 14-16]:
FIG. 4 is a diagram illustrating the use of an anti-pattern refactoring machine learning (ML) model to refactor software application source code
In [Col 13, lines 17-20]:
the training and execution of the ML refactoring model(s) 146 is performed by a model training and execution system 410, which may be part of the application modernization services 102, implemented by another service of the cloud provider network 100, or implemented by any other computing resources accessible to the application modernization services 102.
In [Col 13, lines 24-25]:
a ML refactoring model 146 is trained based on refactoring training data obtained from various sources,
in [Col 12, 1-8]:
a refactoring rule may be associated with only a single refactoring action or with a plurality of refactoring actions. As an example, one refactoring rule may be associated with a first action that replaces a package used by the application with a different package and a second action that replaces a method to a different method associated with the newly updated package.
(BRI: Refactoring in source code is the process of restructuring existing code to improve its design, structure, and implementation, without altering its external behavior or functionality which is an amplified code. The multiple actions represent multiple trials)
It would have obvious to one of ordinary skill in the art before the effective filing date of the present application to combine Gao, Clement and Zhang.
Gao teaches code analyzer and code rewriter and teaches generating an amplified code from source code and training with the model represented by the amplified code and update the code-rewriter.
Clement teaches selecting hyperparameters for minimizing the loss.
Zhang teaches refactoring the source code.
One of ordinary skill would have motivation to combine Gao , Clement and Zhang to improved operational performance and application availability (Zhang [Col 2, lines 50-54])
In regard to claim 4: (Previously Presented)
Gao and Clement do not explicitly disclose:
- wherein the generating the amplified code comprises performing a refactoring.
However, Zhang discloses:
- wherein the generating the amplified code comprises performing a refactoring.
In [Col 2, lines 27-32]:
a software modernization system further includes a refactoring engine that can automatically refactor source code based on such modernization report information, for example, to modify source code to address identified anti-patterns, to restructure code for decomposition purposes,
It would have obvious to one of ordinary skill in the art before the effective filing date of the present application to combine Gao, Clement and Zhang.
Gao teaches code analyzer and code rewriter and teaches generating an amplified code from source code and training with the model represented by the amplified code and update the code-rewriter.
Clement teaches selecting hyperparameters for minimizing the loss.
Zhang teaches refactoring the source code.
One of ordinary skill would have motivation to combine Gao , Clement and Zhang to improved operational performance and application availability (Zhang [Col 2, lines 50-54])
In regard to claim 5: (Previously Presented)
Gao discloses:
- wherein the generating the amplified source code comprises performing a compiler optimization.
In [0102]:
the source code of the auto-tuning enabled software program 1010 contains a nested loop. The compiling report 1023 generated by compiler 2020 may identify the nested loop as a hot spot or bottleneck, which is a region of the source code which is of critical importance to the overall performance of the auto-tuning enabled software program 1010,
In [0103]:
Search driver 2080 then configures a search space which includes inputs for loop transformations (e.g. with different unroll-and-jam factors, or the like), data pre-fetching schemes (data touch, stream prefetching, or the like), and iteratively searches for the optimization scheme 2073 which produces the best anticipated performance results.
(BRI: the compiling report 1023 is generated showing the nested loop implies compiler optimization within the optimization scheme 2073)
In regard to claim 6: (Previously Presented)
Gao discloses:
- generating multiple amplified versions of the source code;
In [0038]:
compiling, at a compiler system, the source code in accordance with the one or more optimizations of the optimization scheme to generate the executable file for execution on a processor having a particular architecture,
In [0056]:
Embodiments disclosed herein relate to compiler systems and methods that can automatically generate multiple executable files based on the same underlying source code of a software program.
In [0056]: each executable file may be different from every other executable file. In some embodiments, the executable files are generated iteratively, such that a first executable file is generated prior to the second executable file being generated. In some embodiments, static information and dynamic information associated with a first executable file generated by the compiler during compiling can be used to identify and determine potential modifications to performance parameters or further transformations which can be applied by the compiler when performing a second iteration of compiling the source code of the software program to generate a second executable file,
In [0037]:
selecting the second optimization scheme comprises generating a search space containing a plurality of optimization schemes; and the method further comprises determining the second optimization scheme based on executing a search strategy on the search space,
In [0085]:
determining a recommended optimization scheme 2095 includes executing the compiler multiple times, and evaluating the performance of each resulting executable file.
(BRI: multiple execution files in conjunction with one or more optimizations on the same source code is a multiple amplified version of the source code)
- and training the machine learning model using the source code and the multiple amplified versions.
In [0038]:
a recommended optimization scheme selected from a plurality of optimization schemes by a machine learning module based on optimization parameters stored in a knowledge database, the optimization scheme comprising one or more optimizations to be performed on the source code of the auto-tuning enabled software program, and compiling, at a compiler system, the source code in accordance with the one or more optimizations of the optimization scheme to generate the executable file for execution on a processor having a particular architecture.
In regard to claim 9: (Currently Amended)
Gao discloses:
- A computer program product comprising one or more computer readable storage media, and program instructions collectively stored on the one or more computer readable storage media, the program instructions when executed by one or more processors causing the one or more processors to perform a method comprising:
In[0027]:, in [0060]:
- identifying via an automated code analyzer one or more source code signals in a source code;
In [0058]:
the machine learning module is configured to automatically generate an optimization scheme,
In [0068]:
Static program transformer module 2015 (optional) is also configured to generate static analysis data 2022 when pre-processing the source code of software program 1010.
(BRI: the static program transformer module is the automated code analyzer within the context of a configured to automatically generate an optimization scheme)
In [0068]:
static analysis data 2022 includes data indicative of recommendations or suggestions as to particular areas of the source code of the software program 1010 that may be suitable for certain types of optimizations. In embodiments which do not include static program transformer module 2015, compiler 2020 may automatically generate an optimization scheme for the source code of the software program 1010. In some embodiments, the source code of software program 1010 may include annotations provided by the software program developer which provides the aforementioned recommendations and suggestions.
- generating via an automated code-rewriter, an amplified code based on the identified signals and the source code
In [0016]:
there is provided a computing system comprising: at least one processor; a memory having stored thereon computer-executable instructions that, when executed by the at least one processor, cause the at least one processor to perform a method of auto-tuning and compiling source code
In [0016]:
generate a compiling report including data rel