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 .
This office action is in response to applicant’s amendment filed on 09/16/2026.
Claims 1-20 are pending and examined.
Response to Arguments
Per 103 rejection, applicant’s arguments filed on 09/16/2026 have been fully considered. However, they are not persuasive. Applicant argued the cited prior art do not teach the limitation of wherein the variable value profiling code causes one or more arrays to be generated with extended indices to store the one or more variable values and an occurrence count corresponding to the one or more variable values. The examiner respectfully disagrees. Pizlo discloses (paragraphs [0010][0034][0065]; an executable code compiled from a source code may include profile instructions, the executable code may be executed for accesses to runtime values of a variable, each value may be stored in a storage location via the profile instructions; runtime values are saved into value buckets; the profiled information also includes occurrence number for a variable value); Pizlo further discloses (paragraphs [0052][0053][0101]; the buckets are allocated in a memory heap, which includes an ordered list or array). Thus, Pizlo suggests storing runtime values of a variable and its occurrence number in an array. A data structure like array is used to store values, and the stored values are identified by an array index, because the array index is used to access each stored value in the array. This is evidenced in Gschwind (paragraph [0002]; the simplest type of data structure in computer architecture is a linear array, which consists of a collection of elements (or values, or variables) each identified by at least one array index). Therefore, the examiner believes the cited prior art teach the above claim limitation.
The examiner is available for a phone interview with applicant.
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, 5-8, 13-15 and 18-20 are rejected under 35 U.S.C. 103 as being unpatentable over Goldman et al. (US PGPUB 2019/0139183) hereinafter Goldman, in view of Pizlo et al. (US PGPUB 2014/0047420) hereinafter Pizlo.
Per claim 1, Goldman discloses a central processing unit (CPU) comprising: one or more CPU circuits to cause variable value profiling code to be inserted into one or more accelerator software programs, during compilation by one or more compilers, in order to profile one or more values within the one or more accelerator software programs when performed by one or more accelerators (Fig. 10; paragraphs [0014][0023]; a processor (CPU) performs instrumentation, GT-Pin instrumentation may operate to inject instructions into the assembly code of binaries as it is compiled (i.e. a module performing code instrumentation during compilation time); a GPU (accelerator) executes the instrumented program code; the instrumented code may be configured to profile properties of data in the program code).
While Goldman discloses the instrumented code may be configured to profile properties of data in the program code during execution in a GPU, Goldman does not explicitly teach profiling one or more variable values, wherein the variable value profiling code causes one or more arrays to be generated with extended indices to store the one or more variable values and an occurrence count corresponding to the one or more variable values. However, Pizlo suggests the above (paragraphs [0010][0034][0065]; an executable code compiled from a source code may include profile instructions, the executable code may be executed for accesses to runtime values of a variable, each value may be stored in a storage location via the profile instructions; runtime values are saved into value buckets (arrays); the profiled information also includes occurrence number for a variable value; paragraphs [0052][0053][0101]; the buckets are allocated in a memory heap, which includes an ordered list or array; a data structure like array is used to store values, and the stored values are identified by an array index, because the array index is used to access each stored value in the array). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Goldman and Pizlo to profile and store variable values and occurrence count for the variable values in an array, which is useful information for user in program diagnosis and debugging.
Per claim 5, Goldman in view of Pizlo further suggests recording the one or more variable values in a table and stored in a device memory of the one or more accelerators (Pizlo; paragraphs [0010][0034][0065]; runtime values are saved into value buckets (table) in a storage location; Goldman, paragraph [0037]; a GPU executes a program in its memory).
Per claim 6, Goldman further suggests recording data properties in a data structure and copying the data structure from a device memory of the one or more accelerators to a host memory of the CPU in response to the CPU performing a memory copy operation (paragraph [0028]; the binary instrumentation module (running in GPU) may provide the generated profiling data to the profiling application (running in CPU) for further processing and analysis, the processed results may then be presented to the user via a graphical user interface). Pizlo further discloses storing variable profile information in a table (paragraphs [0010][0034][0065]; runtime values are saved into value buckets (table) in a storage location). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Goldman, Pizlo to store the profiling information in a table data structure, which allows easy data query and retrieval.
Per claim 7, Goldman further discloses using the one or more variable values to perform optimizations on the one or more accelerator software programs (paragraphs [0021][0038]; the collected profiling information is used to optimize the program code).
Claims 8 and 14 recite similar limitations as claims 1 and 7. Thus, claims 8 and 14 are rejected under similar rationales as claims 1 and 7.
Claims 15 and 20 recite similar limitations as claims 1 and 7. Thus, claims 15 and 20 are rejected under similar rationales as claims 1 and 7.
Per claim 13, Goldman further discloses wherein the one or more accelerators are one or more graphics processing units (GPUs) (claim 1; GPU).
Per claim 18, Pizlo further suggests recording the one or more variable values and an occurrence count corresponding to the one or more variable values in a table as consecutive elements (paragraphs [0010][0034][0065]; an executable code compiled from a source code may include profile instructions, the executable code may be executed for accesses to runtime values of a variable, each value may be stored in a storage location via the profile instructions; runtime values are saved into value buckets (stored as consecutive elements); the profiled information also includes occurrence number for a variable value).
Per claim 19, Pizlo further discloses wherein the variable value profiling code contains counters in order to record the one or more variable values (paragraphs [0010][0034][0065]; profiled runtime values are saved into value buckets; the profiled information also includes occurrence number for a variable value).
Claims 2, 9 and 16 are rejected under 35 U.S.C. 103 as being unpatentable over Goldman, in view of Pizlo, in view of Jahre et al. (US PGPUB 2025/0013471) hereinafter Jahre.
Per claim 2, Pizlo discloses wherein the one or more arrays record the one or more variable values in extended indices (paragraphs [0010][0034][0065]; profiled runtime values are saved into value buckets). Pizlo does not explicitly teach the extended indices are initialized to zero. However, this is a common practice in the field of the art, as evidenced in Jahre (paragraph [0109], the profiling software may use a data structure in which a zero-initialized counter to profile). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Goldman, Pizlo and Jahre to initialize indices to zero before storing profiled variable data, because uninitialized indices may contain wrong profiled data.
Claims 9 and 16 are rejected under similar rationales as claim 2.
Claims 3-4, 10-12 and 17 are rejected under 35 U.S.C. 103 as being unpatentable over Goldman, in view of Pizlo, in view of Lobo et al. (US patent 7784042) hereinafter Lobo.
Per claim 3, Goldman does not explicitly teach storing one or more previous variable values from one or more prior profiles in a memory of the CPU. However, Lobo suggests the above (column 6, line 1-13; line 32-60; previous execution profiling information is stored in a pervious profile file for future use). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Goldman, Pizlo and Lobo to store the profiling information in a profile file for future use (loading in memory for analysis), as such profile information is useful to a developer to optimize the program.
Per claim 4, Goldman does not explicitly teach combining the one or more variable values with one or more previously stored variable values of one or more prior profiles. However, Lobo suggests the above (column 6, line 1-13; “When the execution of the train run is completed, the profile information may be exported and stored in a profile file for future use”; i.e. after each train run, the profile information is exported and stored in a profile file, it would have been obvious to utilize a single profile file to store multiple train runs, the profile information of a second run is combined with previously stored profile information of a first run). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Goldman, Pizlo and Lobo to store the profiling information of multiple runs in a profile file for future use (loading in memory for analysis), for more efficient data storage purpose.
Claim 10 is rejected under similar rationales as claim 4.
Per claim 11, Goldman does not explicitly teach recording the one or more variable values in a table if the one or more variable values are not already present in the table. However, Lobo suggests the above (column 6, line 1-13; line 32-60; the execution profiling information includes a count for each data variable in a program being profiled; the execution profiling information is stored in a profile file; column 5, line 1-10; using a table to store variable information; i.e. each variable is represented in the table and is associated with a count value; after an occurrence of a variable in execution, if the variable is not in the table, it is added, if it is already in the table, its count is incremented). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Goldman, Pizlo and Lobo to record an occurrence count for each data variable in a program and store the profiling information in a profile file for future use, as such profile information is useful to a developer to optimize the program.
Per claim 12, Goldman does not explicitly teach updating an occurrence count corresponding to the one or more variable values if the one or more variable values is already present in a table. However, Lobo suggests the above (column 6, line 1-13; line 32-60; the execution profiling information includes a count for each data variable in a program being profiled; the execution profiling information is stored in a profile file; column 5, line 1-10; using a table to store variable information; i.e. each variable is represented in the table and is associated with a count value; after an occurrence of a variable in execution, if the variable is not in the table, it is added, if it is already in the table, its count is incremented). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Goldman, Pizlo and Lobo to record an occurrence count for each data variable in a program and store the profiling information in a profile file for future use, as such profile information is useful to a developer to optimize the program.
Per claim 17, Goldman does not explicitly teach storing the one or more variable values in a table, and outputting the table to a file. However, Lobo suggests the above (column 6, line 1-13; the execution profiling information is stored in memory and exported to a profile file for future use; column 5, line 1-10; using a table to store variable information). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Goldman, Pizlo and Lobo to record profiled variable information in a table and export the table to a file, as such profile information is useful to a developer to optimize the program.
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.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to HANG PAN whose telephone number is (571)270-7667. The examiner can normally be reached 9 AM to 5 PM.
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, Chat Do can be reached at 571-272-3721. 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.
/HANG PAN/Primary Examiner, Art Unit 2193