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 .
Claims 1-19 are pending in this office action.
Claims 1, 9 and 18 are amended.
Claim 20 are cancelled.
Response to Arguments
Applicant's arguments filed 01/23/2026 have been fully considered but they are not persuasive.
Applicant’s argument:
Sharma, [0033]. Thus, Sharma discloses that "profile data" can become "stale" when the "program" itself is edited. Id. As a result of editing a first version of the program, a second version of the "program" is produced that renders the profile data for the first version obsolete. But the claims do not recite such features. Claim 9 instead recites "determining or predicting whether the optimization profile is a valid optimization profile for a current software version of the compiler" and "in response to determining or predicting that the optimization profile is not a valid optimization profile for the current software version of the compiler, removing the optimization profile from the data store." Sharma's disclosure of editing the program, e.g., a program to be compiled, is not determining or predicting whether an optimization profile is valid for a current software version of the compiler. Independent claims 1 and 18 recite features similar to those discussed above for claim 9. Therefore, and for each of the foregoing reasons, Applicant respectfully submits the rejection of claims 1, 9, 18, and their dependent claims, under 35 U.S.C. § 103 should be withdrawn.
Examiner response:
The issue in the argument is that Sharma does not determine that the profile is valid/invalid and delete the profile from the database. While Sharama is a guided profile optimization, from version to version some of the profile do not contribute any cost or add cost to the compiler, for that reason those profiles are no longer needed.
Profile data can be created and stored for the first version:
[0025]“Profile data for a first version of a program can be collected and stored, e.g., in profile data 118. Path increments can be assigned and path identifiers can be computed. The call graph path identifiers can be used as a key into the profile data, as illustrated in FIG. 1c, table 159. For example, the first row 170 in the table 159 indicates that the path identified by “B1” (function A 150 calls function B 151) was executed 100 times, row two 171 indicates that the path identified by “C1” was executed 120 times and so on. The profiling data of table 159 can be used to generate optimized executable 120.
So first look at the existing profile and parse for a valid profile to use for new version if they exist:
[0034] “The system can include one or more program modules that assign an identifier to each path in a call graph for the second version of the program. The system can include one or more program modules that uses path identifiers assigned to a callee of a function of the second version of the program to locate valid profiling data associated with the first version of the program”;
While found that the path is invalidated in the profile for example path F1 where function 151 call function 155 400 times is not included in the new version, this will result in error if used during compilation as this path does not exist.
Sharma invalidating that entry relabeled it to XX and removed:
[0027] “For example, an invalid path increment can be “−1”. Alternatively, instead of changing the path label, the profile data table can be changed to render the key invalid, as illustrated in FIG. 1e, table 159a row 175a, signifying that the profile data for the path labeled “XX” is invalid.”;
[0026] “ In FIG. 1d call graph 149a, this is signified by relabeling the path from function B 151 to function F 155 to the value “XX” 165a. Value “XX” is not in table 159. Hence the profile data for the path from function B 151 to Function F 155 is functionally removed. That is, because there is no entry in the profile data for the callee (function F 155) for the path identifier (“XX” 165a) for the edited function (function B 151), no profile data is available.”;
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-19 are rejected under 35 U.S.C. 101 because the claimed invention is directed to a judicial exception (i.e., a law of nature, a natural phenomenon, or an abstract idea) without significantly more.
the claimed invention is directed to an abstract Idea without significantly more.
Claim 1 recites:
“….repeatedly performing operations comprising:
determining, for each of the plurality of computer programs, a computational load of the computer program across the set of executing workloads;
determining a strict subset of the plurality of computer programs that have a higher computational load than computer programs of the plurality of computer programs that are outside the strict subset…”;
processing the computer program using an optimizer to identify values for a set of configuration settings of the compiler”;
“….determining or predicting whether the identified values for the configuration settings improve a compilation performance of the computer program relative to default values for the configuration settings; and
in response to determining or predicting that the identified value improve the compilation performance of the computer program relative to the default values..”
“…. determining or predicting that the new optimization profile for a given computer program in the strict subset is no longer valid for a current version of the compiler…”
Claims 9, 18 recites:
“…repeatedly performing operations comprising:
for each optimization profile in at least a subset of the optimization profiles:
determining or predicting whether the optimization profile is a valid optimization profile for a current software version of the compiler; and in response to determining or predicting that the optimization profile is not a valid optimization profile for the current software version of the compiler “;
that are certainly a mental process that a person can carry out mentally through observation, evaluation, judgment and/or opinion, or even with the aid of pen and paper.
Claim 1 additionally recites:
“maintaining, in a data store, data representing a plurality of optimization profiles that are used by a compiler to compile respective computer programs, wherein the computer programs are invoked by a set of executing workloads”;
“for each computer program in the strict subset:
“adding to the data store a new optimization profile that would cause the compiler to next compile the computer program according to the identified values”.
“…removing the new optimization profile for the given computer program from the data store…”
Claims 9 and 18 additionally recite:
“…maintaining a data store comprising a plurality of optimization profiles that are used by a compiler to compile respective computer programs, wherein the computer programs are invoked by a set of executing workloads…”.
“…removing the optimization profile from the data store.”;
While claim 18 additionally recite:
“One or more non-transitory computer storage media storing instructions that, when executed by one or more computers, cause the one or more computers to perform operations”;
“…removing the new optimization profile for the given computer program from the data store…”
The additional elements:
“Adding to the data store a new optimization profile that would cause the compiler to next compile the computer program according to the identified values”.
are merely recited in high level of generality of merely “adding” or “removing” to/from the data store. They are directed to applying the judicial exception or abstract idea. See MPEP 2106.05(f).
The additional elements:
“…maintaining a data store comprising a plurality of optimization profiles that are used by a compiler to compile respective computer programs, wherein the computer programs are invoked by a set of executing workloads…”.
“for each computer program in the strict subset:
processing the computer program using an optimizer to identify values for a set of configuration settings of the compiler”;
“One or more non-transitory computer storage media storing instructions that, when executed by one or more computers, cause the one or more computers to perform operations”;
merely recite instructions to implement an abstract idea on a generic computer, or merely uses a generic computer or computer components as a tool to perform the abstract idea. See MPEP 2106.05(f).
Claims 1, 9, 18 additional elements do not add meaningful limits to practicing the abstract idea, but to nothing more than an instruction to apply the abstract idea using a generic computer. Thus, the additional elements fail to integrate the judicial exception into a practical application.
Claims 1, 9, 18 does not include additional elements that are sufficient to amount to significantly more than the judicial exception.
As discussed above with regard to integration of the abstract idea into a practical application, the additional elements,
“…removing the optimization profile from the data store….”
“adding to the data store a new optimization profile that would cause the compiler to next compile the computer program according to the identified values”.
are merely recited in high level of generality of merely “adding” or “removing” to/from the data store. They are directed to applying the judicial exception or abstract idea. See MPEP 2106.05(f).
and with regard , the additional elements,
“…maintaining a data store comprising a plurality of optimization profiles that are used by a compiler to compile respective computer programs, wherein the computer programs are invoked by a set of executing workloads…”.
“for each computer program in the strict subset:
processing the computer program using an optimizer to identify values for a set of configuration settings of the compiler”;
“One or more non-transitory computer storage media storing instructions that, when executed by one or more computers, cause the one or more computers to perform operations”;
merely recite instructions to implement an abstract idea on a generic computer, or merely uses a generic computer or computer components as a tool to perform the abstract idea. See MPEP 2106.05(f).
Accordingly, the additional elements do not provide an inventive concept, thus claims1, 9, 18 are not patent eligible.
-Dependents claims 2-8, 10-17 and 19-20:
Claims 2, 3, 4, 10. 19, 20, 11, 12, 13 recite: “…determine(determining) /performing…...” that is a mental process.
Claim 5 and 14 recite: “ …submitting a change list to a code repository …” are merely recited in high level of generality of merely “adding” or “removing” to/from the data store and as discussed above it fails to integrate the judicial exception into a practical application nor sufficient to amount to significantly more than the judicial exception.
Claim 6 and 15 recites: “…processing a model input to generate a model output…” that is a mental process.
Claims 7, 8 and 16, 17 recite: “…wherein the compiler is…” that is data describing the data information used in the abstract idea.
Claim 19 recites: “..one or more non-transitory computer storage media ..” that is a generic computer component and as discussed above it fails to integrate the judicial exception into a practical application nor sufficient to amount to significantly more than the judicial exception.
Dependents claims 2-8, 10-17 and 19-20 are not patent eligible.
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 (i.e., changing from AIA to pre-AIA ) 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-3, 5-6 are rejected under 35 U.S.C. 103 as being unpatentable over Kocberber et al US20240045785A1 in view of Barton et al US2020011588A1 and further in view of De et al US20160117182A1 and Sharma et al US20160004518A1;
As per claim , Kocberber discloses maintaining, in a data store, data representing a plurality of optimization profiles that are used by a compiler to compile respective computer programs:
[0038] Various types of data (i.e., tracing information) may be recorded in the trace and stored within trace buffer 190, such as outcomes of conditional branches, target addresses of indirect jumps and calls, sources and/or targets of asynchronous control transfers (e.g., exceptions, interrupts), as well as much additional detail, according to various embodiments. In some embodiments, a binary execution trace mechanism may avoid generating trace information that could otherwise be determined, such as by inspection, from the static binary (e.g., machine code). For example, execution of unconditional branches or direct calls may not be recorded in some embodiments. The trace data may be fed back into subsequent compilations, as profile(s) 150, when recompiling and/or reoptimizing one or more of methods 140 and/or application 130.
wherein the computer programs are invoked by a set of executing workloads:
[0053]” As described herein methods that contribute significantly (e.g., relatively more than other methods) to the overall execution time may be considered ‘hot’ methods. Because any optimization performed for the hottest methods is likely to contribute more to overall performance improvements, tracing controller 170 may trace (some number of) the hottest methods first. “;
and repeatedly performing operations comprising: determining, for each of the plurality of computer programs, a computational load of the computer program across the set of executing workloads;
[0040] “When implementing optimized recompilation using hardware tracing, as described herein, tracing controller 170 (and/or compiler 160) may be configured to repeatedly select one or more of methods 140, as shown in block 200, enable hardware tracing of the selected methods, as in block 210 and generate profiles by post-processing the gathered trace information, as in block 230, according to one embodiment. Thus, tracing controller 170 may profile application 130 in an iterative manner.”;
determining a strict subset of the plurality of computer programs that have a higher computational load than computer programs of the plurality of computer programs that are outside the strict subset:
[0053] “ As described herein methods that contribute significantly (e.g., relatively more than other methods) to the overall execution time may be considered ‘hot’ methods. Because any optimization performed for the hottest methods is likely to contribute more to overall performance improvements, tracing controller 170 may trace (some number of) the hottest methods first.’
But not explicitly:
and for each computer program in the strict subset: processing the computer program using an optimizer to identify values for a set of configuration settings of the compiler;
determining or predicting whether the identified values for the configuration settings improve a compilation performance of the computer program relative to default values for the configuration settings;
and in response to determining or predicting that the identified values improve the compilation performance of the computer program relative to the default values, adding to the data store a new optimization profile that would cause the compiler to next
compile the computer program according to the identified values;
in response to determining or predicting that the new optimization profile for a given computer program in the strict subset is no longer valid for a current version of the compiler, removing the new optimization profile for the given computer program from the data store.
Barton discloses:
and for each computer program in the strict subset: processing the computer program using an optimizer to identify values for a set of configuration settings of the compiler:
[0027] FIG. 2 is a block diagram illustrating an analytics driven complier and scheduler system 220 for receiving various inputs 202 and various optimization constraints 204. The inputs 202 can include, for example, but is not limited to, workload profiles for each application to be compiled, user-provided inputs for priority/execution, external source code management (SCM) characteristics, and frequency of code execution. The inputs 202 may also include a development profile as to whether an application involves continuous integration (CI) or continuous development (CD)”;
determining or predicting whether the identified values for the configuration settings improve a compilation performance of the computer program:
[0036]”Process block 430 includes applying the decision learning model 310 to the inputs 202 to predict the performance of the compiler 330 and providing results from the decision learning model 310 to the decision engine 340. Process block 440 then includes determining a profile 230 via the decision engine 340 comprising an order of execution and an optimization level for use during compilation of the applications.”:
[0038] “In this manner, the computer system can realize performance gains through the use of co-processors in the system, thereby improving overall processing speeds.”;
and in response to determining or predicting that the identified values improve the compilation performance of the computer program relative to the default values, adding to the data store a new optimization profile that would cause the compiler to next compile the computer program according to the identified values:
[0036] “ Process block 430 includes applying the decision learning model 310 to the inputs 202 to predict the performance of the compiler 330 and providing results from the decision learning model 310 to the decision engine 340. Process block 440 then includes determining a profile 230 via the decision engine 340 comprising an order of execution and an optimization level for use during compilation of the applications. The method 400 also includes process block 450 for utilizing the profile 230 to schedule compiling and optimization of the applications and process block 460 for compiling and optimizing one or more of the applications based on the profile 230.”;
[0037] “The method 400 may also include inputting the new received inputs 202, the received optimization constraints 204, and the profile 230 into the decision learning model 310 as historical data”;
the new optimization profile including the identified values for the set of configuration settings of the compiler:
[0036]“Process block 430 includes applying the decision learning model 310 to the inputs 202 to predict the performance of the compiler 330 and providing results from the decision learning model 310 to the decision engine 340. Process block 440 then includes determining a profile 230 via the decision engine 340 comprising an order of execution and an optimization level for use during compilation of the applications”;
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of Barton into teachings of Kocberber to create, compile and run the code very quickly because the issue need to be identified as quickly as possible because when performing predictive analytics, timing and efficiency are very important. A decision engine inputs associated with applications to be compiled and receiving at the decision engine optimization constraints based on resources available to the compiler. The method also includes applying a decision learning model to the inputs to predict the performance of the compiler and provide results from the decision learning model to the decision engine. A profile is determined via the decision engine comprising an order of execution and an optimization level for use during compilation of the applications. [Barton 0004].
But not explicitly:
in response to determining or predicting that the new optimization profile for a given computer program in the strict subset is no longer valid for a current version of the compiler, removing the new optimization profile for the given computer program from the data store.
improve a compilation performance of the computer program relative to default values for the configuration settings.
De discloses:
improve a compilation performance of the computer program relative to default values for the configuration settings:
[0031]“More specifically, the pointer-size selection component 120 receives feedback from the runtime condition monitor 118, and prompts the optimizing compiler 112 to re-compile the source code 106—potentially using one or more different bit-widths for the internal address pointers than the default bit-width—based upon the runtime conditions to generate optimized code (Block 210). In this way, the size of the bit-width of the internal address pointers may be adjusted based upon the runtime conditions”;
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of De into teachings of Kocberber and Barton to adjust internal address pointers based upon the one or more runtime conditions. dynamic information gathered by the runtime condition monitor is utilized by the pointer-size selection component to determine the size of the internal pointer address that is used at different points in the compiled code (e.g., JITed code). The virtual address translation component tracks the particular sized internal address pointer used at each particular location in the compiled code (e.g., JITed assembly code) and is used for proper updating of the internal address pointers during a self-modification.[De 0036].
But not explicitly:
in response to determining or predicting that the new optimization profile for a given computer program in the strict subset is no longer valid for a current version of the compiler, removing the new optimization profile for the given computer program from the data store.
Sharma discloses:
in response to determining or predicting that the new optimization profile for a given computer program in the strict subset is no longer valid for a current version of the compiler, removing the new optimization profile for the given computer program from the data store.
[0027] “For example, an invalid path increment can be “−1”. Alternatively, instead of changing the path label, the profile data table can be changed to render the key invalid, as illustrated in FIG. 1e, table 159a row 175a, signifying that the profile data for the path labeled “XX” is invalid.”;
[0026] “ In FIG. 1d call graph 149a, this is signified by relabeling the path from function B 151 to function F 155 to the value “XX” 165a. Value “XX” is not in table 159. Hence the profile data for the path from function B 151 to Function F 155 is functionally removed. That is, because there is no entry in the profile data for the callee (function F 155) for the path identifier (“XX” 165a) for the edited function (function B 151), no profile data is available.”;
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of Sharma into teachings of Kocberber, Barton and De for a profile guided optimizing compiler that receives profiling data associated with a previous version of a program. The portions of the profiling data are identified that is associated with the previous version of a program not affected by changes made to the first version of the program included in a second version of the program. The portions of the profiling data are used that is associated with the first version of a program not affected by changes made to the first version of the program are used to generate an optimized program, while stale profile are removed form profile data store .[Sharma 0026-0027].
As per claim 2, the rejection of claim 1 is incorporated and furthermore Kocberber discloses:
wherein determining the computational load of a computer program across the set of executing workloads comprises one or more of :determining a number of invocations of the computer program by the executing workloads over a period of time, determining a number of executing workloads that are currently executing the computer program, or determining a total runtime of the computer program across the executing workloads over a period of time:
[0063] “ Thus, the controller may in some embodiments build a histogram of compiled methods' respective contribution to the total instruction count of the application. After sorting the histogram, the controller may then identify the top N methods to trace, which may be considered the ‘hottest’ methods”;
[0062] “determine one or more application methods that may contribute relatively more than other methods to the total execution time of the application“;
[0048]“but may again profile/trace a method marked once marked as stable if conditions warrant, such as after a certain amount of execution time has passed since the method was last profiled/traced, if performance of the application/method changes significantly, etc.”;
As per claim 3, the rejection of claim 1 is incorporated and furthermore Kocberber does not explicitly disclose:
wherein determining or predicting whether the identified values for the configuration settings improve a compilation performance of the computer program relative to default values for the configuration settings comprises determining or predicting whether the identified values for the configuration settings improve a compilation performance of the computer program relative to default values for the configuration settings by more than a predetermined threshold.
De discloses:
wherein determining or predicting whether the identified values for the configuration settings improve a compilation performance of the computer program relative to default values for the configuration settings comprises determining or predicting whether the identified values for the configuration settings improve a compilation performance of the computer program relative to default values for the configuration settings by more than a predetermined threshold:
[0031] “More specifically, the pointer-size selection component 120 receives feedback from the runtime condition monitor 118, and prompts the optimizing compiler 112 to re-compile the source code 106—potentially using one or more different bit-widths for the internal address pointers than the default bit-width—based upon the runtime conditions to generate optimized code (Block 210). In this way, the size of the bit-width of the internal address pointers may be adjusted based upon the runtime conditions.
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of De into teachings of Kocberber, Barton and Sharma to adjust internal address pointers based upon the one or more runtime conditions. dynamic information gathered by the runtime condition monitor is utilized by the pointer-size selection component to determine the size of the internal pointer address that is used at different points in the compiled code (e.g., JITed code). The virtual address translation component tracks the particular sized internal address pointer used at each particular location in the compiled code (e.g., JITed assembly code) and is used for proper updating of the internal address pointers during a self-modification.[De 0036].
As per claim 5, the rejection of claim 1 is incorporated and furthermore Kocberber discloses:
wherein adding the new optimization profile to the data store comprises submitting a change list to a code repository of the executing workloads:
[0047]“Thus, if the new profile differs more than the threshold amount from the previously generated profile, the tracing controller 170 may recompile/reoptimize the method and may then proceed to profile the method again, as indicated by the arrow from block 340 to block 320.”;
Examiner interpretation:
The profile 150 are stored in buffer and used for compiler and code optimization(fig. 1).
As per claim 6, the rejection of claim 1 is incorporated and furthermore Kocberber does not explicitly disclose:
wherein at least one of the computer programs defines a task comprising executing a trained machine learning model by performing operations comprising processing a model input to generate a model output representing a prediction about the model input.
Barton discloses:
wherein at least one of the computer programs defines a task comprising executing a trained machine learning model by performing operations comprising processing a model input to generate a model output representing a prediction about the model input.
[0036]“Process block 440 then includes determining a profile 230 via the decision engine 340 comprising an order of execution and an optimization level for use during compilation of the applications. “;
[0037] The method 400 may also include one or more other process blocks. In one or more embodiments, the method 400 can include training the decision learning model 310 with historical data that had been input to the decision engine 340 and corresponding historical outcomes or results from the decision engine 340. The method 400 may also include inputting the new received inputs 202, the received optimization constraints 204, and the profile 230 into the decision learning model 310 as historical data.
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of Barton into teachings of Kocberber , De and Sharma to create, compile and run the code very quickly because the issue need to be identified as quickly as possible because when performing predictive analytics, timing and efficiency are very important. A decision engine inputs associated with applications to be compiled and receiving at the decision engine optimization constraints based on resources available to the compiler. The method also includes applying a decision learning model to the inputs to predict the performance of the compiler and provide results from the decision learning model to the decision engine. A profile is determined via the decision engine comprising an order of execution and an optimization level for use during compilation of the applications. [Barton 0004].
Claim 4 is rejected under 35 U.S.C. 103 as being unpatentable over Kocberber et al US20240045785A1 in view of Barton et al US2020011588A1 and De et al US20160117182A1 and further in view of Sharma et al US20160004518A1 and Gao et al US20170123773A1
As per claim 4, the rejection of claim 1 is incorporated and furthermore Kocberber does not explicitly disclose:
wherein the compilation performance of a computer program according to particular values for the configuration settings is determined according to one or more of:
a time and/or quantity of computations required to compile the computer program, an error rate of the compilation, a time and/or quantity of computations required to execute the compiled computer program, or a correctness of the compiled computer program.
Gao discloses:
one or more of: a time and/or quantity of computations required to compile the computer program, an error rate of the compilation, a time and/or quantity of computations required to execute the compiled computer program, or a correctness of the compiled computer program:
[0021]“When the compiler is remote, such as in the case of OCaaS, the compiler may not be able to resolve an external reference because the infrastructure where the compiler is operating may not have access to the network resources where the referenced code might reside.”;
[0023] “A dynamic profiler is tool for performance analysis of executable code that measures aspects of the execution such as call frequency, time, memory, other metrics made available by the execution environment, or derived metrics calculated from other metrics, and produces profile information for the code. Other performance analysis tools predict estimated performance profile information from examining the source code.”;
[0034]”… An embodiment further causes the OCaaS to select the most suitable compiler settings from the knowledgebase by supplying the OCaaS the profile information of a source code and the platform information of the platform where the compiled product will operate….”
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of Gao into teachings of Kocberber De, Barton and Sharma to create profile information, the profile information identifying a hot portion having a first degree of hotness. Also to determine a set of environment parameter values, the set of environment parameter values being applicable to a data processing system where the application will execute. Furthermore, to select a set of compiler options from a knowledgebase, the selection corresponding to the profile information and the set of environment parameter values. And finally, for optimization according to the profile information, and the set of environment parameter values, to build an executable application using the optimized object code.[Gao 0005].
Claims 7-8 are rejected under 35 U.S.C. 103 as being unpatentable over Kocberber et al US20240045785A1 in view of Barton et al US2020011588A1, De et al US20160117182A1 and further in view of Sharma et al US20160004518A1 and Ren et al US20220413862A1.
As per claim 7, the rejection of claim 1 is incorporated and furthermore Kocberber does not explicitly disclose:
wherein the compiler is a domain-specific compiler configured to compile computer programs that define tasks for training machine learning models, executing trained machine learning models, or both.
Ren discloses
wherein the compiler is a domain-specific compiler configured to compile computer programs that define tasks for training machine learning models, executing trained machine learning models, or both:
[0056]”FIG. 1 shows an overview of DNNFusion. It takes the computational graph generated from compiler-based DNN execution frameworks (e.g., TVM, and MNN) as the input, and adds key information to create the Extended Computational Graph (ECG).
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of Gao into teachings of Kocberber De, Barton and Sharma for accelerating deep neural networks comprising the steps of: classifying operators into one of five high-level abstract types; performing a mapping type analysis for each paired input and input; classifying mapping types into one of three classes; providing a computational graph; rewriting said computational graph; and generating and optimizing the fusion code.[Ren 0007].
As per claim 8, the rejection of claim 7 is incorporated and furthermore Kocberber does not explicitly disclose:
wherein the compiler is an accelerated linear algebra (XLA) compiler:
Ren discloses:
wherein the compiler is an accelerated linear algebra (XLA) compiler:
[0105]”There also exist several other frameworks to optimize machine learning with operator fusion or fusion-based ideas. Closely related to DNNFusion-Rammer relies on fix-pattern operator fusion to further reduce kernel launch overhead of their optimized scheduling, Cortex proposes a set of optimizations based on kernel fusion for dynamic recursive models, TensorFlow XLA offers a more general fusion method than fix-pattern operator fusion by supporting reduce operations and element-wise operations, and TensorFlow Grapper provides an arithmetic optimizer that performs rewrites to achieve both fusion and arithmetic expression simplification (e.g., a×b+a×c=a×(b+c)).
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of Gao into teachings of Kocberber De, Barton and Sharma for accelerating deep neural networks comprising the steps of: classifying operators into one of five high-level abstract types; performing a mapping type analysis for each paired input and input; classifying mapping types into one of three classes; providing a computational graph; rewriting said computational graph; and generating and optimizing the fusion code.[Ren 0007].
Claims 9-10, 13-14 and 18-19 are rejected under 35 U.S.C. 103 as being unpatentable over Kocberber et al US20240045785A1 in view of Sharma et al US20160004518A1;
As per claim 9, Kocberber discloses a method comprising:
maintaining a data store comprising a plurality of optimization profiles that are used by a compiler to compile respective computer programs,:
[0038] Various types of data (i.e., tracing information) may be recorded in the trace and stored within trace buffer 190, such as outcomes of conditional branches, target addresses of indirect jumps and calls, sources and/or targets of asynchronous control transfers (e.g., exceptions, interrupts), as well as much additional detail, according to various embodiments. In some embodiments, a binary execution trace mechanism may avoid generating trace information that could otherwise be determined, such as by inspection, from the static binary (e.g., machine code). For example, execution of unconditional branches or direct calls may not be recorded in some embodiments. The trace data may be fed back into subsequent compilations, as profile(s) 150, when recompiling and/or reoptimizing one or more of methods 140 and/or application 130.
wherein the computer programs are invoked by a set of executing workloads:
[0053]” As described herein methods that contribute significantly (e.g., relatively more than other methods) to the overall execution time may be considered ‘hot’ methods. Because any optimization performed for the hottest methods is likely to contribute more to overall performance improvements, tracing controller 170 may trace (some number of) the hottest methods first. “;
wherein each of the plurality of optimization profiles defines a respective set of compiler configuration settings for the compiler to apply when compiling a respective one of the computer programs:
[0033] “ For example, in some embodiments tracing controller 170 may be configured to interact with compiler 160, processor(s) 110, decoder 180 and/or trace buffer 190 to collect hardware traces, generate profiles as well as initiate recompilation and/or re-optimization of individual ones of methods 140. Thus, in some embodiments tracing controller 170 may orchestrate tracing actions and pass new profiles to the compiler to be used for compilation.”;
[0039] While described herein generally as compiling, tracing, profiling, optimizing, recompiling and/or reoptimizing individual methods 140 of application 130, the methods, mechanisms and/or techniques described herein may also be applied to virtually any suitable portion of code being executed on processor(s) 110, according to various embodiments”;
But not explicitly:
and repeatedly performing operations comprising: for each optimization profile in at least a subset of the optimization profiles: determining or predicting whether the optimization profile is a valid optimization profile for a current software version of the compiler; and in response to determining or predicting that the optimization profile is not a valid optimization profile for the current software version of the compiler, removing the optimization profile from the data store.
Sharma discloses:
and repeatedly performing operations comprising: for each optimization profile in at least a subset of the optimization profiles:
[0025]”Profile data for a first version of a program can be collected and stored, e.g., in profile data 118. Path increments can be assigned and path identifiers can be computed. The call graph path identifiers can be used as a key into the profile data, as illustrated in FIG. 1c, table 159. For example, the first row 170 in the table 159 indicates that the path identified by “B1” (function A 150 calls function B 151) was executed 100 times, row two 171 indicates that the path identified by “C1” was executed 120 times and so on. The profiling data of table 159 can be used to generate optimized executable 120.
determining or predicting whether the optimization profile is a valid optimization profile for a current software version of the compiler:
[0033]”At operation 204, the program can be edited to create a second version of the program, rendering the profile data produced at operation 202 stale. At operation 206 path increments can be assigned to the callees of the modified functions in the second version of the program. Only callees with the same name and number as those found in the profile database are assigned valid path increments. Callees for which the same name and number is not found in the profile database is assigned an invalid path increment. At operation 208 valid path identifiers can be used to locate valid profile data. At operation 210 an executable for the second version of the program can be optimized using profile data created from the first version of the program”;
and in response to determining or predicting that the optimization profile is not a valid optimization profile for the current software version of the compiler, removing the optimization profile from the data store:
[0027]“For example, an invalid path increment can be “−1”. Alternatively, instead of changing the path label, the profile data table can be changed to render the key invalid, as illustrated in FIG. 1e, table 159a row 175a, signifying that the profile data for the path labeled “XX” is invalid.”;
[0026] “ In FIG. 1d call graph 149a, this is signified by relabeling the path from function B 151 to function F 155 to the value “XX” 165a. Value “XX” is not in table 159. Hence the profile data for the path from function B 151 to Function F 155 is functionally removed. That is, because there is no entry in the profile data for the callee (function F 155) for the path identifier (“XX” 165a) for the edited function (function B 151), no profile data is available.”;
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of Sharma into teachings of Kocberber for a profile guided optimizing compiler that receives profiling data associated with a previous version of a program. The portions of the profiling data are identified that is associated with the previous version of a program not affected by changes made to the first version of the program included in a second version of the program. The portions of the profiling data are used that is associated with the first version of a program not affected by changes made to the first version of the program are used to generate an optimized program, while stale profile are removed form profile data store .[Sharma 0026-0027].
As per claim 10, the rejection of claim 91 is incorporated and furthermore does not explicitly Kocberber discloses:
wherein determining or predicting that the optimization profile is not a valid optimization profile for a current software version of the compiler comprises one or more of: determining that a time-to-live of the optimization profile has expired, determining that (i) a default profile associated with the optimization profile and (ii) a default profile of the compiler do not match, or determining that the optimization profile is not an entry in a list of valid optimization profiles published by the optimizer:
Sharma discloses:
wherein determining or predicting that the optimization profile is not a valid optimization profile for a current software version of the compiler comprises one or more of: determining that a time-to-live of the optimization profile has expired, determining that (i) a default profile associated with the optimization profile and (ii) a default profile of the compiler do not match, or determining that the optimization profile is not an entry in a list of valid optimization profiles published by the optimizer:
[0026]“Value “XX” is not in table 159. Hence the profile data for the path from function B 151 to Function F 155 is functionally removed. That is, because there is no entry in the profile data for the callee (function F 155) for the path identifier (“XX” 165a) for the edited function (function B 151), no profile data is available”;
[0033]”At operation 204, the program can be edited to create a second version of the program, rendering the profile data produced at operation 202 stale.”;
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of Sharma into teachings of Kocberber for a profile guided optimizing compiler that receives profiling data associated with a previous version of a program. The portions of the profiling data are identified that is associated with the previous version of a program not affected by changes made to the first version of the program included in a second version of the program. The portions of the profiling data are used that is associated with the first version of a program not affected by changes made to the first version of the program are used to generate an optimized program, while stale profile are removed form profile data store .[Sharma 0026-0027].
As per claim 13, the rejection of claim 9 is incorporated and furthermore Kocberber does not explicitly disclose:
wherein repeatedly performing the operations comprises one or more of:periodically performing the operations at a predetermined frequency, or performing the operations in response to determining that a new change list submitted to a code repository of the set of executing workloads includes a modification to the compiler.
Sharma discloses:
wherein repeatedly performing the operations comprises one or more of: periodically performing the operations at a predetermined frequency, or performing the operations in response to determining that a new change list submitted to a code repository of the set of executing workloads includes a modification to the compiler.
[0002]”Profile guided compiler optimization decisions are performed in the presence of source code changes. Optimization decisions including but not limited to inlining, speed versus size compilation, code layout and the like can be performed for edited functions”;
[0022] “Subsequently, potentially using an editor such as editor 122, source code changes such as source code changes 108b can be made to source code 108a to generate modified source code such as updated source code 108c. When updated source code 108c is compiled, profile data 118 can be used along with call graph 124 generated from compilation of the original source code, source code 108a, and call graph 125 generated from compilation of the modified source code, updated source code 108c, to generate an optimized executable such as optimized executable 121 for updated source code 108c.”;
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of Sharma into teachings of Kocberber for a profile guided optimizing compiler that receives profiling data associated with a previous version of a program. The portions of the profiling data are identified that is associated with the previous version of a program not affected by changes made to the first version of the program included in a second version of the program. The portions of the profiling data are used that is associated with the first version of a program not affected by changes made to the first version of the program are used to generate an optimized program, while stale profile are removed form profile data store .[Sharma 0026-0027].
As per claim 14, the rejection of claim 9 is incorporated and furthermore Kocberber does not explicitly disclose:
wherein removing the optimization profile from the data store comprises submitting a new change list to a code repository of the set of executing workloads.
Sharma discloses:
wherein removing the optimization profile from the data store comprises submitting a new change list to a code repository of the set of executing workloads.
[0026] “Now suppose that source code changes 108b are applied to source code 108a using editor 122 to create updated source code 108c. At this point, some of the stored profile data in profile data 118 is likely to be inaccurate.”;
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of Sharma into teachings of Kocberber for a profile guided optimizing compiler that receives profiling data associated with a previous version of a program. The portions of the profiling data are identified that is associated with the previous version of a program not affected by changes made to the first version of the program included in a second version of the program. The portions of the profiling data are used that is associated with the first version of a program not affected by changes made to the first version of the program are used to generate an optimized program, while stale profile are removed form profile data store .[Sharma 0026-0027].
Claims 18, 19 are the one or more non-transitory computer storage media claim corresponding to method claims 9, 10 and rejected under the same rational set forth in connection with the rejection of claims 9, 10 above.
Claims 11-12 are rejected under 35 U.S.C. 103 as being unpatentable over Kocberber et al US20240045785A1 in view of Sharma et al US20160004518A1 and De et al US20160117182A1;
As per claim 11, the rejection of claim 9 is incorporated and furthermore Kocberber does not explicitly discloses:
repeatedly performing operations comprising: for each optimization profile in at least a subset of the optimization profiles: determining or predicting whether the optimization profile improves an optimization performance of the computer program relative to a default profile of the compiler;
and in response to determining or predicting that the optimization profile does not improve the optimization performance of the computer program relative to the default profile of the compiler, removing the optimization profile from the data store.
De discloses:
Sharma discloses:
and in response to determining or predicting that the optimization profile does not improve the optimization performance of the computer program relative to the default profile of the compiler, removing the optimization profile from the data store.
De discloses:
[0027] “For example, an invalid path increment can be “−1”. Alternatively, instead of changing the path label, the profile data table can be changed to render the key invalid, as illustrated in FIG. 1e, table 159a row 175a, signifying that the profile data for the path labeled “XX” is invalid.”;
[0026] “ In FIG. 1d call graph 149a, this is signified by relabeling the path from function B 151 to function F 155 to the value “XX” 165a. Value “XX” is not in table 159. Hence the profile data for the path from function B 151 to Function F 155 is functionally removed. That is, because there is no entry in the profile data for the callee (function F 155) for the path identifier (“XX” 165a) for the edited function (function B 151), no profile data is available.”;
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of Sharma into teachings of Kocberber for a profile guided optimizing compiler that receives profiling data associated with a previous version of a program. The portions of the profiling data are identified that is associated with the previous version of a program not affected by changes made to the first version of the program included in a second version of the program. The portions of the profiling data are used that is associated with the first version of a program not affected by changes made to the first version of the program are used to generate an optimized program, while stale profile are removed form profile data store .[Sharma 0026-0027].
But not explicitly:
repeatedly performing operations comprising: for each optimization profile in at least a subset of the optimization profiles: determining or predicting whether the optimization profile improves an optimization performance of the computer program relative to a default profile of the compiler;
De discloses:
repeatedly performing operations comprising: for each optimization profile in at least a subset of the optimization profiles: determining or predicting whether the optimization profile improves an optimization performance of the computer program relative to a default profile of the compiler;
[0031]“More specifically, the pointer-size selection component 120 receives feedback from the runtime condition monitor 118, and prompts the optimizing compiler 112 to re-compile the source code 106—potentially using one or more different bit-widths for the internal address pointers than the default bit-width—based upon the runtime conditions to generate optimized code (Block 210). In this way, the size of the bit-width of the internal address pointers may be adjusted based upon the runtime conditions”;
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of De into teachings of Kocberber and Sharma to adjust internal address pointers based upon the one or more runtime conditions. dynamic information gathered by the runtime condition monitor is utilized by the pointer-size selection component to determine the size of the internal pointer address that is used at different points in the compiled code (e.g., JITed code). The virtual address translation component tracks the particular sized internal address pointer used at each particular location in the compiled code (e.g., JITed assembly code) and is used for proper updating of the internal address pointers during a self-modification.[De 0036].
As per claim 12, the rejection of claim 11 is incorporated and furthermore Kocberber discloses:
wherein determining or predicting whether the optimization profile improves an optimization performance of the computer program relative to a default profile of the compiler comprises determining or predicting whether the optimization profile improves an optimization performance of the computer program relative to a default profile of the compiler by more than a predetermined threshold.
[0070]“However, if the majority of the compile-time and run-time profiles differ (i.e., differ more than a predetermined and/or configurable threshold), the method may be considered a good candidate for recompilation by the controller. Recompiling a method whose compile-time and run-time profiles are different may result in improved performance due to performing context-sensitive and phase-specific optimizations, according to some embodiments.”;
[0059] “At a high optimization level, an optimizing compiler, such as compiler 160, may no longer emit instrumentation code, and so an execution environment (such as a VM) may have lower visibility into the behavior of optimized code”;
Examiner interpretation:
every previous profile is compared to new profile and an optimization level is determined. When the optimization level is high(threshold) profiling does not contribute any more. Among the previous profile are default profile as in De.
Claims 15 are rejected under 35 U.S.C. 103 as being unpatentable over Kocberber et al US20240045785A1 in view of Sharma et al US20160004518A1 and Barton et al US20200110588A1;
As per claim 15, the rejection of claim 9 is incorporated and furthermore Kocberber does not explicitly disclose:
wherein at least one of the computer programs defines a task comprising executing a trained machine learning model by performing operations comprising processing a model input to generate a model output representing a prediction about the model input.
Barton discloses:
wherein at least one of the computer programs defines a task comprising executing a trained machine learning model by performing operations comprising processing a model input to generate a model output representing a prediction about the model input.
[0036]“Process block 440 then includes determining a profile 230 via the decision engine 340 comprising an order of execution and an optimization level for use during compilation of the applications. “;
[0037] The method 400 may also include one or more other process blocks. In one or more embodiments, the method 400 can include training the decision learning model 310 with historical data that had been input to the decision engine 340 and corresponding historical outcomes or results from the decision engine 340. The method 400 may also include inputting the new received inputs 202, the received optimization constraints 204, and the profile 230 into the decision learning model 310 as historical data.
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of Barton into teachings of Kocberber and Sharma to create, compile and run the code very quickly because the issue need to be identified as quickly as possible because when performing predictive analytics, timing and efficiency are very important. A decision engine inputs associated with applications to be compiled and receiving at the decision engine optimization constraints based on resources available to the compiler. The method also includes applying a decision learning model to the inputs to predict the performance of the compiler and provide results from the decision learning model to the decision engine. A profile is determined via the decision engine comprising an order of execution and an optimization level for use during compilation of the applications. [Barton 0004].
Claims 16-17 are rejected under 35 U.S.C. 103 as being unpatentable over Kocberber et al US20240045785A1 in view of Sharma et al US20160004518A1 and Barton et al US20200110588A1 and Ren et al US20220413862A1
As per claim 16, the rejection of claim 15 is incorporated and furthermore Kocberber does not explicitly disclose:
wherein the compiler is a domain-specific compiler configured to compile computer programs that define tasks for training machine learning models, executing trained machine learning models, or both.
Ren discloses
wherein the compiler is a domain-specific compiler configured to compile computer programs that define tasks for training machine learning models, executing trained machine learning models, or both:
[0056]”FIG. 1 shows an overview of DNNFusion. It takes the computational graph generated from compiler-based DNN execution frameworks (e.g., TVM, and MNN) as the input, and adds key information to create the Extended Computational Graph (ECG).
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of Ren into teachings of Kocberber Sharma, and Barton for accelerating deep neural networks comprising the steps of: classifying operators into one of five high-level abstract types; performing a mapping type analysis for each paired input and input; classifying mapping types into one of three classes; providing a computational graph; rewriting said computational graph; and generating and optimizing the fusion code.[Ren 0007].
As per claim 17, the rejection of claim 16 is incorporated and furthermore Kocberber does not explicitly disclose:
wherein the compiler is an accelerated linear algebra (XLA) compiler:
Ren discloses:
wherein the compiler is an accelerated linear algebra (XLA) compiler:
[0105]”There also exist several other frameworks to optimize machine learning with operator fusion or fusion-based ideas. Closely related to DNNFusion-Rammer relies on fix-pattern operator fusion to further reduce kernel launch overhead of their optimized scheduling, Cortex proposes a set of optimizations based on kernel fusion for dynamic recursive models, TensorFlow XLA offers a more general fusion method than fix-pattern operator fusion by supporting reduce operations and element-wise operations, and TensorFlow Grapper provides an arithmetic optimizer that performs rewrites to achieve both fusion and arithmetic expression simplification (e.g., a×b+a×c=a×(b+c)).
It would have obvious to one having ordinary skill in the art before the effective filling date of the claimed invention to combine the teachings of cited references. One of ordinary skill in the art before the effective filling date of the claimed invention would have been motivated to incorporate the teachings of Ren into teachings of Kocberber Sharma, and Barton for accelerating deep neural networks comprising the steps of: classifying operators into one of five high-level abstract types; performing a mapping type analysis for each paired input and input; classifying mapping types into one of three classes; providing a computational graph; rewriting said computational graph; and generating and optimizing the fusion code.[Ren 0007].
Pertinent arts:
US20210398015A1
Compiling all of the operations for the machine learning model in this way also provides additional opportunities for optimization of the model.
US20220342647A1:
providing technology that may improve the performance of program code by storing and accessing profiling information in a memory region that can be shared and persist between runs of the program code, and using the profiling information to make optimization decisions.
Conclusion
THIS ACTION IS MADE FINAL. 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.
Contact Information
Any inquiry concerning this communication or earlier communications from the examiner should be directed to BRAHIM BOURZIK whose telephone number is (571)270-7155. The examiner can normally be reached Monday-Friday (8-4:30).
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, Wei Y Mui can be reached at 571-270-2738. 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.
/BRAHIM BOURZIK/Examiner, Art Unit 2191 /WEI Y MUI/Supervisory Patent Examiner, Art Unit 2191