Prosecution Insights
Last updated: July 17, 2026
Application No. 18/596,283

APPLICATION PROGRAMMING INTERFACE TO INDICATE MEMORY ACCESS

Non-Final OA §102§103
Filed
Mar 05, 2024
Examiner
VERDERAMO III, RALPH A
Art Unit
2139
Tech Center
2100 — Computer Architecture & Software
Assignee
NVIDIA Corporation
OA Round
3 (Non-Final)
79%
Grant Probability
Favorable
3-4
OA Rounds
8m
Est. Remaining
88%
With Interview

Examiner Intelligence

Grants 79% — above average
79%
Career Allowance Rate
337 granted / 426 resolved
+24.1% vs TC avg
Moderate +9% lift
Without
With
+9.2%
Interview Lift
resolved cases with interview
Typical timeline
3y 0m
Avg Prosecution
9 currently pending
Career history
441
Total Applications
across all art units

Statute-Specific Performance

§101
3.8%
-36.2% vs TC avg
§103
75.9%
+35.9% vs TC avg
§102
8.1%
-31.9% vs TC avg
§112
6.4%
-33.6% vs TC avg
Black line = Tech Center average estimate • Based on career data from 426 resolved cases

Office Action

§102 §103
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 26 March 2026 has been entered. Claim Rejections - 35 USC § 102 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 the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action: A person shall be entitled to a patent unless – (a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention. Claims 1 – 6, 8 – 13, and 15 – 19 are rejected under 35 U.S.C. 102(a)(1) as being anticipated by Rao et al. US Patent Application Publication No. 2015/0206277 (herein after referred to as Rao). Regarding claim 1, Rao describes one or more processors (…unified memory support is provided across multiple heterogeneous processors. With unified memory support in a system, data can be accessed using the same pointer from the CPU and the GPU in that system. However, for systems that contain multiple GPUs, the same pointer has to be accessible across all GPUs that are capable of supporting unified memory (page 9, paragraph [0107])), comprising: circuitry to (With reference to Fig. 9, a block diagram of an exemplary computer system 900… (page 3, paragraph [0054]). Computing Systems are known to be comprised of circuits), in response to an application programming interface (API) call (…through an application program interface (API) (e.g., like cudaMalloc, etc.) (page 2, paragraph [0032])), allocate virtual memory and cause graphics processing unit (GPU) storage or host storage to be mapped to the allocated virtual memory (In block 1310, a memory allocation process is performed. In one embodiment, a memory allocation process similar to an address allocation process in block 120 is performed. In one exemplary implementation, a CudaMalloc call is made, memory is allocated on a GPU and a CPU, and a CPU PA space is mapped to a GPU VA space (page 5, paragraph [0068])). Regarding claim 2, Rao describes the one or more processors of claim 1 (see above), wherein the circuitry is to allocate the virtual memory based, at least in part, on a flag in memory of one or more second processors (When a user passes in a special flag called managed memory it indicates it is one unified memory (page 6, paragraph [0080]). …a “host” flag may be used instead for the argument which means that the data will only be touched from the CPU side, so anything the GPU may be doing to the data will not affect it… (page 13, paragraph [0157]). While the call “CudaMallocManaged” will allocate on the GPU, the flag (global, host, etc.) indicates who will be accessing the data (page 13, paragraph [0159])). Regarding claim 3, Rao describes the one or more processors of claim 1 (see above), wherein the circuitry is to allocate the virtual memory based, at least in part, on a descriptor to create the virtual memory (…a “host” flag may be used instead for the argument which means that the data will only be touched from the CPU side, so anything the GPU may be doing to the data will not affect it… (page 13, paragraph [0157])). Regarding claim 4, Rao describes the one or more processors of claim 1 (see above), wherein the allocated virtual memory comprises a range of memory (In one embodiment, the allocator maintains an internal heap of the VA address ranges it has reserved on the CPU (e.g., using mmap in block 210, etc.). This heap represents the GPU allocations. Now given a VA pointer, the allocator or the runtime can determine if this is a GPU allocation or a CPU allocation by looking up the heap (page 3, paragraph [0043]). These are essentially windows or ranges into the GPU memory (page 6, paragraph [0077]). The device driver can create the mapping by using a window or range and shifting and creating a CPU to VA mapping, then the device driver can read and write the memory itself and then send the content back to the user debugger (page 6, paragraph [0078])). Regarding claim 5, Rao describes the one or more processors of claim 1 (see above), wherein the host storage is storage of a central processing unit (CPU) (Many computing systems often have a central processing unit (CPU)… (page 1, paragraph [0007]). …unified memory architectures or schemes (e.g., compatible with CUDA 6.0, etc.) can result in cases where the same memory can be accessed on a host (e.g., CPU, etc.)… (page 5, paragraph [0063]). In one embodiment, a host is a CPU and a device is a GPU (page 6, paragraph [0075])). Regarding claim 6, Rao describes the one or more processors of claim 1 (see above), wherein one or more GPUs are to reserve the virtual memory based, at least in part, on the API call (The GPU driver reserves one or more regions from the CPU’s virtual address space. The same or similar set of regions are also reserved in the GPUs virtual address space (page 7, paragraph [0084]). If CUDAmalloc managed is used a chunk of CPU VA or reserved region is picked and the physical pages or actual physical memory on the GPU is allocated and then in the GPU VA space set up mapping from GPU page table (e.g., from that region set up mapping to that physical memory, etc.) (page 8, paragraph [0100])). Regarding claim 8, Rao describes a system, comprising: one or more processors (…unified memory support is provided across multiple heterogeneous processors. With unified memory support in a system, data can be accessed using the same pointer from the CPU and the GPU in that system. However, for systems that contain multiple GPUs, the same pointer has to be accessible across all GPUs that are capable of supporting unified memory (page 9, paragraph [0107])) to, in response to an application programming interface (API) call (…through an application program interface (API) (e.g., like cudaMalloc, etc.) (page 2, paragraph [0032])), allocate virtual memory and cause graphics processing unit (GPU) storage or host storage to be mapped to the allocated virtual memory (In block 1310, a memory allocation process is performed. In one embodiment, a memory allocation process similar to an address allocation process in block 120 is performed. In one exemplary implementation, a CudaMalloc call is made, memory is allocated on a GPU and a CPU, and a CPU PA space is mapped to a GPU VA space (page 5, paragraph [0068])). Regarding claim 9, Rao describes the system of claim 8 (see above), wherein the one or more processors are to allocate the virtual memory based, at least in part, on information including a location in memory of one or more second processors (The presented new approach or solution uses OS allocation on the CPU combined with GPU driver mappings to provide a unified VA across both GPU and CPU (page 2, paragraph [0030]). Virtual addresses associated with the GPU can be mapped to the GPU PA. In one embodiment, GPU VA 410 allocated space 411 (including an address associated with pointer 412) is mapped to GPU PA 430 address 431 via GPU PTE 420 mapping entry or indication 421… Virtual addresses associated with the CPU can be mapped to the CPU PA. The CPU VA 440 address associated with pointer 433 is mapped to CPU PA 450 address 451 via CPU PTE 470 mapping entry or indication 471… (page 3, paragraph [0048])). Regarding claim 10, Rao describes the system of claim 8 (see above), wherein the one or more processors are to allocate the virtual memory based, at least in part, on a descriptor to reserve the virtual memory (The GPU driver reserves one or more regions from the CPU’s virtual address space. The same or similar set of regions are also reserved in the GPUs virtual address space (page 7, paragraph [0084]). If CUDAmalloc managed is used a chunk of CPU VA or reserved region is picked and the physical pages or actual physical memory on the GPU is allocated and then in the GPU VA space set up mapping from GPU page table (e.g., from that region set up mapping to that physical memory, etc.) (page 8, paragraph [0100]). …a “host” flag may be used instead for the argument which means that the data will only be touched from the CPU side, so anything the GPU may be doing to the data will not affect it… (page 13, paragraph [0157])). Regarding claim 11, Rao describes the system of claim 8 (see above), wherein the one or more processors access a range of memory of the GPU storage or the host storage (In one embodiment, the allocator maintains an internal heap of the VA address ranges it has reserved on the CPU (e.g., using mmap in block 210, etc.). This heap represents the GPU allocations. Now given a VA pointer, the allocator or the runtime can determine if this is a GPU allocation or a CPU allocation by looking up the heap (page 3, paragraph [0043]). These are essentially windows or ranges into the GPU memory (page 6, paragraph [0077]). The device driver can create the mapping by using a window or range and shifting and creating a CPU to VA mapping, then the device driver can read and write the memory itself and then send the content back to the user debugger (page 6, paragraph [0078])). Regarding claim 12, Rao describes the system of claim 8 (see above), wherein the host storage is storage of a central processing unit (CPU) (Many computing systems often have a central processing unit (CPU)… (page 1, paragraph [0007]). …unified memory architectures or schemes (e.g., compatible with CUDA 6.0, etc.) can result in cases where the same memory can be accessed on a host (e.g., CPU, etc.)… (page 5, paragraph [0063]). In one embodiment, a host is a CPU and a device is a GPU (page 6, paragraph [0075])). Regarding claim 13, Rao describes the system of claim 8 (see above), wherein one or more GPUs are to reserve the virtual memory based, at least in part, on the API call (The GPU driver reserves one or more regions from the CPU’s virtual address space. The same or similar set of regions are also reserved in the GPUs virtual address space (page 7, paragraph [0084]). If CUDAmalloc managed is used a chunk of CPU VA or reserved region is picked and the physical pages or actual physical memory on the GPU is allocated and then in the GPU VA space set up mapping from GPU page table (e.g., from that region set up mapping to that physical memory, etc.) (page 8, paragraph [0100])). Regarding claim 15, Rao describes a method, comprising: receiving an application programming interface (API) call (…through an application program interface (API) (e.g., like cudaMalloc, etc.) (page 2, paragraph [0032])) comprising a parameter indicating a location of physical memory to be used for virtual memory to be allocated ; and in response to the API call, allocating the virtual memory and causing the virtual memory to be mapped to the location of the physical memory, wherein the physical memory is located in graphics processing unit (GPU) storage or host storage (In block 1310, a memory allocation process is performed. In one embodiment, a memory allocation process similar to an address allocation process in block 120 is performed. In one exemplary implementation, a CudaMalloc call is made, memory is allocated on a GPU and a CPU, and a CPU PA space is mapped to a GPU VA space (page 5, paragraph [0068])). Regarding claim 16, Rao describes the method of claim 15 (see above), wherein the parameter is a flag in memory to indicate the host storage when a default is device storage (When a user passes in a special flag called managed memory it indicates it is one unified memory (page 6, paragraph [0080]). …a “host” flag may be used instead for the argument which means that the data will only be touched from the CPU side, so anything the GPU may be doing to the data will not affect it… (page 13, paragraph [0157]). While the call “CudaMallocManaged” will allocate on the GPU, the flag (global, host, etc.) indicates who will be accessing the data (page 13, paragraph [0159])). Regarding claim 17, Rao describes the method of claim 15 (see above), further comprising generating a flag to indicate a host memory allocation when creating one or more blocks of memory (When a user passes in a special flag called managed memory it indicates it is one unified memory (page 6, paragraph [0080]). …a “host” flag may be used instead for the argument which means that the data will only be touched from the CPU side, so anything the GPU may be doing to the data will not affect it… (page 13, paragraph [0157]). While the call “CudaMallocManaged” will allocate on the GPU, the flag (global, host, etc.) indicates who will be accessing the data (page 13, paragraph [0159])). Regarding claim 18, Rao describes the method of claim 15 (see above), further comprising indicating a range of memory of the GPU storage or the host storage (In one embodiment, the allocator maintains an internal heap of the VA address ranges it has reserved on the CPU (e.g., using mmap in block 210, etc.). This heap represents the GPU allocations. Now given a VA pointer, the allocator or the runtime can determine if this is a GPU allocation or a CPU allocation by looking up the heap (page 3, paragraph [0043]). These are essentially windows or ranges into the GPU memory (page 6, paragraph [0077]). The device driver can create the mapping by using a window or range and shifting and creating a CPU to VA mapping, then the device driver can read and write the memory itself and then send the content back to the user debugger (page 6, paragraph [0078])). Regarding claim 19, Rao describes the method of claim 15 (see above), wherein the host storage is storage of a central processing unit (CPU) (Many computing systems often have a central processing unit (CPU)… (page 1, paragraph [0007]). …unified memory architectures or schemes (e.g., compatible with CUDA 6.0, etc.) can result in cases where the same memory can be accessed on a host (e.g., CPU, etc.)… (page 5, paragraph [0063]). In one embodiment, a host is a CPU and a device is a GPU (page 6, paragraph [0075])). 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. The factual inquiries for establishing a background for determining obviousness under 35 U.S.C. 103 are summarized as follows: 1. Determining the scope and contents of the prior art. 2. Ascertaining the differences between the prior art and the claims at issue. 3. Resolving the level of ordinary skill in the pertinent art. 4. Considering objective evidence present in the application indicating obviousness or nonobviousness. Claims 7, 14 and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Rao in view of Trout et al. US Patent Application Publication No. 2020/0073809 (herein after referred to as Trout). Regarding claim 7, Rao describes the one or more processors of claim 1 (see above). While Rao discloses that the invention provides for improved parallel processing performance of parallel processing-capable applications using unified memory because the total amount of page migration is reduced (page 10, paragraph [0121]). However, Rao does not specifically describe wherein the circuitry is to cause access to the GPU storage or the host storage using a route optimizing bandwidth between the one or more processors. Trout describes handling of a memory system during a processor side cache miss. Specifically, it discloses that the memory sub-system may provide an application programming interface (API) that includes an allocation function (page 3, paragraph [0040]). Furthermore, an API may provide tools to facilitate supporting advanced memory addressing techniques, such as different memory access patterns abstracted under the concept of an access axis. For example, an access axis may provide sufficient information (e.g., metadata) to enable a memory sub-system to access stored data in straight (e.g., address) order, a striding order, and/or a sorted order. In any case, at least in some instances, implementing and operating a computing system in this manner may facilitate improving operational (e.g., power and/or communication) efficiency, for example, by reducing data retrieval latency, reducing data communication via a system bus, and/or increasing communication bandwidth available to other computing subsystems (page 7, paragraph [0068]). Therefore, it would have been obvious to a person of ordinary skill in the computer art before the effective filing date of the claimed invention to incorporate the Trout teachings in the Rao system. Skilled artisan would have been motivated to incorporate the method of enabling access of stored data in various orders as taught by Trout in the Rao system for effectively improving operational efficiency, by increasing communication bandwidth available to other computing sub-systems (Trout, page 7, paragraph [0068]). In addition, both of the references teach features that are directed to analogous art and they are directed to the same field of endeavor, such as memory allocation facilitated by API. This close relation between both of the references highly suggests an expectation of success. Regarding claim 14, Rao describes the system of claim 8 (see above). While Rao discloses that the invention provides for improved parallel processing performance of parallel processing-capable applications using unified memory because the total amount of page migration is reduced (page 10, paragraph [0121]). However, Rao does not specifically describe wherein the one or more processors are to cause access of storage using a route optimizing bandwidth between the one or more processors. Trout describes handling of a memory system during a processor side cache miss. Specifically, it discloses that the memory sub-system may provide an application programming interface (API) that includes an allocation function (page 3, paragraph [0040]). Furthermore, an API may provide tools to facilitate supporting advanced memory addressing techniques, such as different memory access patterns abstracted under the concept of an access axis. For example, an access axis may provide sufficient information (e.g., metadata) to enable a memory sub-system to access stored data in straight (e.g., address) order, a striding order, and/or a sorted order. In any case, at least in some instances, implementing and operating a computing system in this manner may facilitate improving operational (e.g., power and/or communication) efficiency, for example, by reducing data retrieval latency, reducing data communication via a system bus, and/or increasing communication bandwidth available to other computing subsystems (page 7, paragraph [0068]). Therefore, it would have been obvious to a person of ordinary skill in the computer art before the effective filing date of the claimed invention to incorporate the Trout teachings in the Rao system. Skilled artisan would have been motivated to incorporate the method of enabling access of stored data in various orders as taught by Trout in the Rao system for effectively improving operational efficiency, by increasing communication bandwidth available to other computing sub-systems (Trout, page 7, paragraph [0068]). In addition, both of the references teach features that are directed to analogous art and they are directed to the same field of endeavor, such as memory allocation facilitated by API. This close relation between both of the references highly suggests an expectation of success. Regarding claim 20, Rao describes the method of claim 15 (see above). While Rao discloses that the invention provides for improved parallel processing performance of parallel processing-capable applications using unified memory because the total amount of page migration is reduced (page 10, paragraph [0121]). However, Rao does not specifically describe further comprising causing access of storage using a route optimizing bandwidth between one or more processors. Trout describes handling of a memory system during a processor side cache miss. Specifically, it discloses that the memory sub-system may provide an application programming interface (API) that includes an allocation function (page 3, paragraph [0040]). Furthermore, an API may provide tools to facilitate supporting advanced memory addressing techniques, such as different memory access patterns abstracted under the concept of an access axis. For example, an access axis may provide sufficient information (e.g., metadata) to enable a memory sub-system to access stored data in straight (e.g., address) order, a striding order, and/or a sorted order. In any case, at least in some instances, implementing and operating a computing system in this manner may facilitate improving operational (e.g., power and/or communication) efficiency, for example, by reducing data retrieval latency, reducing data communication via a system bus, and/or increasing communication bandwidth available to other computing subsystems (page 7, paragraph [0068]). Therefore, it would have been obvious to a person of ordinary skill in the computer art before the effective filing date of the claimed invention to incorporate the Trout teachings in the Rao system. Skilled artisan would have been motivated to incorporate the method of enabling access of stored data in various orders as taught by Trout in the Rao system for effectively improving operational efficiency, by increasing communication bandwidth available to other computing sub-systems (Trout, page 7, paragraph [0068]). In addition, both of the references teach features that are directed to analogous art and they are directed to the same field of endeavor, such as memory allocation facilitated by API. This close relation between both of the references highly suggests an expectation of success. Response to Arguments Applicant’s arguments with respect to claims 1 – 20 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. Examiner notes that the amendments to the independent claims broadened the scope of previously objected to claims 7, 14, and 20. These claims have been reconsidered in view of the broadened scope. Conclusion Any inquiry concerning this communication or earlier communications from the examiner should be directed to RALPH A VERDERAMO III whose telephone number is (571)270-1174. The examiner can normally be reached Monday through Friday 8:30 AM - 5:00 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, Reginald Bragdon can be reached at (571) 272-4204. 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. /RALPH A VERDERAMO III/Examiner, Art Unit 2139 /REGINALD G BRAGDON/Supervisory Patent Examiner, Art Unit 2139 rv May 12, 2026
Read full office action

Prosecution Timeline

Show 1 earlier event
Jun 04, 2025
Non-Final Rejection mailed — §102, §103
Sep 04, 2025
Response Filed
Nov 26, 2025
Final Rejection mailed — §102, §103
Jan 08, 2026
Examiner Interview Summary
Jan 08, 2026
Applicant Interview (Telephonic)
Mar 26, 2026
Request for Continued Examination
Apr 01, 2026
Response after Non-Final Action
May 15, 2026
Non-Final Rejection mailed — §102, §103 (current)

Precedent Cases

Applications granted by this same examiner with similar technology

Patent 12613813
CXL DEVICE, ELECTRONIC DEVICE, AND DATA STORING METHOD
2y 0m to grant Granted Apr 28, 2026
Patent 12602182
USER CONFIGURABLE SLC MEMORY SIZE
1y 8m to grant Granted Apr 14, 2026
Patent 12585779
SECURE PROGRAMMING OF ONE-TIME-PROGRAMMABLE (OTP) MEMORY
3y 1m to grant Granted Mar 24, 2026
Patent 12578881
SYSTEMS AND METHODS FOR USING DISTRIBUTED MEMORY CONFIGURATION BITS IN ARTIFICIAL NEURAL NETWORKS
2y 0m to grant Granted Mar 17, 2026
Patent 12578877
STORING SENSITIVE DATA SECURELY IN A MULTI-CLOUD ENVIRONMENT
1y 11m to grant Granted Mar 17, 2026
Study what changed to get past this examiner. Based on 5 most recent grants.

Strategy Recommendation AI-generated — please review before filing

Get a prosecution strategy drawn from examiner precedents, rejection analysis, and claim mapping.
Typically takes 5-10 seconds — AI-generated, attorney review required before filing

Prosecution Projections

3-4
Expected OA Rounds
79%
Grant Probability
88%
With Interview (+9.2%)
3y 0m (~8m remaining)
Median Time to Grant
High
PTA Risk
Based on 426 resolved cases by this examiner. Grant probability derived from career allowance rate.

Sign in with your work email

Enter your email to receive a magic link. No password needed.

Personal email addresses (Gmail, Yahoo, etc.) are not accepted.

Free tier: 3 strategy analyses per month