Prosecution Insights
Last updated: October 02, 2026
Application No. 18/081,534

APPLICATION PROGRAMMING INTERFACE TO PERFORM ASYNCHRONOUS DATA MOVEMENT

Final Rejection §103
Filed
Dec 14, 2022
Priority
Nov 17, 2022 — CN PCT/CN2022/132533 +1 more
Examiner
MILLS, PAUL V
Art Unit
2196
Tech Center
2100 — Computer Architecture & Software
Assignee
NVIDIA Corporation
OA Round
4 (Final)
53%
Grant Probability
Moderate
5-6
OA Rounds
3m
Est. Remaining
93%
With Interview

Examiner Intelligence

Grants 53% of resolved cases
53%
Career Allowance Rate
193 granted / 362 resolved
-1.7% vs TC avg
Strong +40% interview lift
Without
With
+39.6%
Interview Lift
resolved cases with interview
Typical timeline
4y 1m
Avg Prosecution
23 currently pending
Career history
380
Total Applications
across all art units

Statute-Specific Performance

§101
11.6%
-28.4% vs TC avg
§103
49.7%
+9.7% vs TC avg
§102
12.5%
-27.5% vs TC avg
§112
24.1%
-15.9% vs TC avg
Black line = Tech Center average estimate • Based on career data from 362 resolved cases

Office Action

§103
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 07/02/2026. Claims 1, 8 and 14 have been amended. New Claims 21 and 22 have been added. Claims 18 and 19 have been cancelled. Therefore, Claims 1-17 and 20-22 are pending. Any examiner’s note, objection, or rejection not repeated is withdrawn due to Applicant’s amendment. Priority Applicant’s claim for priority from foreign application no. PCT/CN2022/132533 filed 11/17/2022 is acknowledged. 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. 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 1-17 and 20-22 are rejected under 35 U.S.C. 103 as being unpatentable over Zhao et al. (US 10891156 B1) in view of Kahle et al. (US 20200183842 A1), and further in view of Vijayan et al. (US 20160335009 A1) hereinafter referred to as Zhao, Kahle, and Vijayan, respectively. Regarding Claim 1, Zhao discloses One or more processors, comprising: circuitry (Col. 3, Lines 53-58-The processor devices 132 include central processing units (CPUs) and hardware accelerator devices such as GPUs, and other workload-optimized processors that are implemented to execute the assigned tasks for a target application (e.g., application specific integrated circuits. Please note that a processor device 132 corresponds to Applicant’s one or more processors comprising circuitry, as it is known in the art that these devices comprise one or more circuits.) to, in response to an application programming interface (API) call, cause one or more memory transactions to be performed (Col. 4, Lines 55-56- In particular, the requests include system call APIs such as memory allocation requests. Please note that system call APIs requesting memory allocation corresponds to Applicant’s cause memory transactions to be performed in response to an API call, as a memory allocation corresponds to Applicant’s memory transaction.), Zhao does not explicitly disclose wherein the API provides one or more functions to receive tracking information for the one or more memory transactions and cause manual transaction accounting to be performed based, at least in part, on the received tracking information However, Kahle discloses wherein the API provides one or more functions to receive tracking information for the one or more memory transactions ([0005] An approach is disclosed that tracks memory transactions by a node.; [0071] meta-data support in system memory is used for maintaining the “Snapshot” and to track read and write accesses by the transaction; [0163] using system metadata for tracking the read and write sets of transactions to determine if the memory accesses for two or more concurrent transactions conflict; [0167] The snapshot of memory may be performed by the application or runtime using the API call; [0175] tracks the state of shared memory, when entering a transaction processing state, corresponding to one or more global virtual addresses accessed by a plurality of processing threads executing a plurality of transactions. Please note that the snapshot of memory performed using the API call that allows for snapshots that are involved in meta-data support in system memory to track read and write accesses by the transaction corresponds to Applicant’s API providing functions to receive tracking information for the memory transactions, as the API provides snapshots of memory that allow for the system to track read and write access by the transaction, i.e., receive tracking information.) and cause manual transaction accounting to be performed based, at least in part, on the received tracking information ([0071] meta-data support in system memory is used for maintaining the “Snapshot” and to track read and write accesses by the transaction; [0081] access methods are provided by the extended memory architecture: […] An asynchronous copy method. Please note that meta-data support in system memory being used to track read and write accesses by the transaction in a system which includes access methods that may comprise an asynchronous copy method corresponds to Applicant’s manual transaction accounting being performed based on the received tracking information, as Applicant states in [0058] of the Specification that manual transaction accounting is when a user (e.g., computer program code, such as a kernel running on PPU 106) performs one or more aspects of tracking data to be asynchronously moved.). Zhao and Kahle are both considered to be analogous to the claimed invention because they are in the same field of performing asynchronous computer requests relating to memory. Therefore, it would have been obvious to someone of ordinary skill in the art prior to the effective filing date of the claimed invention to have modified Zhao to incorporate the teachings of Kahle to modify the asynchronous API memory transaction system to do so with the API providing functions to receive tracking information for the memory transactions and cause manual transaction accounting to be performed accordingly, allowing for improved performance and resource usage, as described in Kahle. Zhao-Kahle does not explicitly disclose wherein the received tracking information comprises a count provided as one or more input parameters to the API, the count indicating an expected amount of data to be moved by the one or more memory transactions. However, Vijayan discloses wherein the received tracking information comprises a count provided as one or more input parameters to the API, the count indicating an expected amount of data to be moved by the one or more memory transactions ( [0064] The client computing devices 102 and other components in information management system 100 can be connected to one another via one or more communication pathways 114. For example, a first communication pathway 114 may connect (or communicatively couple) client computing device 102 and secondary storage computing device 106; […] The communication pathways 114 in some cases may also include application programming interfaces (APIs) including, e.g., cloud service provider APIs, virtual machine management APIs, and hosted service provider APIs.; [0070] any reference to primary data 112 generally also includes its associated metadata; [0071] Metadata can include, without limitation, one or more of the following: the data owner (e.g., the client or user that generates the data), the last modified time (e.g., the time of the most recent modification of the data object), a data object name (e.g., a file name), a data object size (e.g., a number of bytes of data); [0079] The client computing devices 102 access or receive primary data 112 and communicate the data, e.g., over one or more communication pathways 114, for storage in the secondary storage device(s) 108. Please note that the metadata associated with the primary data 112 that includes the data object size, i.e., a number of bytes of the data, that is communicated over the communication pathway 114 for storage via an API corresponds to Applicant’s received tracking information comprising a count provided as one or more input parameters to the API, the count indicating an expected amount of data to be moved by the one or more memory transactions.). Zhao-Kahle and Vijayan are both considered to be analogous to the claimed invention because they are in the same field of performing computer requests via APIs for memory transactions. Therefore, it would have been obvious to someone of ordinary skill in the art prior to the effective filing date of the claimed invention to have modified Zhao-Kahle to incorporate the teachings of Vijayan to modify the previously described system to have the received tracking information comprise a count provided as input parameters to the API, the count indicating an expected amount of data to be moved by the one or more memory transactions, allowing for improved performance and resource usage by allowing the system to anticipate how much data will be moved, as described in Vijayan. Regarding Claim 2, Zhao-Kahle-Vijayan as disclosed in Claim 1, Zhao further discloses wherein the one or more memory transactions are to be asynchronously performed (Col. 4, Lines 55-56- In particular, the requests include system call APIs such as memory allocation requests; Col. 4, Lines 62-63- enqueue the intercepted request in a request queue for asynchronous execution as a later time. Please note that asynchronously executing the request including system call APIs such as memory allocation requests corresponds to Applicant’s memory transactions to be asynchronously performed.). Regarding Claim 3, Zhao-Kahle-Vijayan as disclosed in Claim 1, Zhao further discloses wherein the one or more memory transactions are to be asynchronously performed between a first memory and a second memory of a graphics processing unit (GPU) (Col. 4, lines 55-63- the requests include system call APIs such as memory allocation requests, or data access/copy/movement requests for transferring data from “host-to-device” or from 37 device-to-host, wherein the device can be a GPU […] enqueue the intercepted request in a request queue for asynchronous execution as a later time. Please note that memory allocation or data access/copy/movement requests correspond to Applicant’s memory transactions, asynchronously executing them corresponds to asynchronously performing them, and carrying them out from device-to-host where the device can be a GPU corresponds to Applicant’s performing them between a first and second memory of a GPU. It would be obvious to a person of ordinary skill in the art to carry out a memory request between memories of a GPU, i.e., with its first memory as the host and its second as the device.). Regarding Claim 4, Zhao-Kahle-Vijayan as disclosed in Claim 1, Zhao further discloses wherein the one or more memory transactions are to be asynchronously performed between a global memory and a shared memory of a graphics processing unit (GPU) (Col. 4, lines 55-63- the requests include system call APIs such as memory allocation requests, or data access/copy/movement requests for transferring data from “host-to-device” or from 37 device-to-host, wherein the device can be a GPU […] enqueue the intercepted request in a request queue for asynchronous execution as a later time. Please note that memory allocation or data access/copy/movement requests correspond to Applicant’s memory transactions, asynchronously executing them corresponds to asynchronously performing them, and carrying them out from device-to-host where the device can be a GPU corresponds to Applicant’s performing them between a first and second memory of a GPU. It would be obvious to a person of ordinary skill in the art to carry out a copy request between memories of a GPU, i.e., with its global memory as the host and its shared memory as the device.) Regarding Claim 5, Zhao-Kahle-Vijayan as disclosed in Claim 1, Zhao further discloses wherein the one or more memory transactions include one or more copy operations to be asynchronously performed between a first memory and a second memory of a graphics processing unit (GPU) (Col. 4, lines 55-63- the requests include system call APIs such as memory allocation requests, or data access/copy/movement requests for transferring data from “host-to-device” or from 37 device-to-host, wherein the device can be a GPU […] enqueue the intercepted request in a request queue for asynchronous execution as a later time. Please note that copy requests correspond to Applicant’s memory transactions including copy operations, asynchronously executing them corresponds to asynchronously performing them, and carrying them out from device-to-host where the device can be a GPU corresponds to Applicant’s performing them between a first and second memory of a GPU. It would be obvious to a person of ordinary skill in the art to carry out a copy request between memories of a GPU, i.e., with its first memory as the host and its second as the device.) Regarding Claim 6, Zhao-Kahle-Vijayan as disclosed in Claim 1, Zhao further discloses wherein the one or more memory transactions include one or more copy operations to be asynchronously performed between a global memory and a shared memory of a graphics processing unit (GPU) (Col. 4, lines 55-63- the requests include system call APIs such as memory allocation requests, or data access/copy/movement requests for transferring data from “host-to-device” or from 37 device-to-host, wherein the device can be a GPU […] enqueue the intercepted request in a request queue for asynchronous execution as a later time. Please note that copy requests correspond to Applicant’s memory transactions including copy operations, asynchronously executing them corresponds to asynchronously performing them, and carrying them out from device-to-host where the device can be a GPU corresponds to Applicant’s performing them between a first and second memory of a GPU. It would be obvious to a person of ordinary skill in the art to carry out a copy request between memories of a GPU, i.e., with its global memory as the host and its shared memory as the device.) Regarding Claim 7, Zhao-Kahle-Vijayan as disclosed in Claim 1, Zhao further discloses wherein in response to the API call, an indication of whether asynchronous data movement hardware is to be used to perform the one or more memory transactions is returned (Col. 10, Lines 45-50-the data coordination engine 133 may determine that the request can be immediately executed under the current resource usage and allocation. Alternatively, the data coordination engine 133 can enqueue the request, and then asynchronously execute the request. Please note that determining whether the request will alternatively be executed asynchronously corresponds to Applicant’s returning an indication of whether asynchronous data movement hardware is to be used to perform the one or more data transactions in response to an API call, as the data coordination engine 133 must return an indication in order to trigger the asynchronous execution.). Regarding Claim 8, Zhao discloses A system, comprising: one or more processors (Col. 6, Lines 64-65-server node 200 comprises one or more central processing units 202. Please note that the server node 200 comprising central processing units 202 corresponds to Applicant’s system comprising processors.) to, in response to an application programming interface (API) call, cause one or more memory transactions to be performed (Col. 4, Lines 55-56- In particular, the requests include system call APIs such as memory allocation requests. Please note that system call APIs requesting memory allocation corresponds to Applicant’s cause memory transactions to be performed in response to an API call, as a memory allocation corresponds to Applicant’s memory transaction.), Zhao does not explicitly disclose wherein the API provides one or more functions to receive tracking information for the one or more memory transactions and cause manual transaction accounting to be performed based, at least in part, on the received tracking information However, Kahle discloses wherein the API provides one or more functions to receive tracking information for the one or more memory transactions ([0005] An approach is disclosed that tracks memory transactions by a node.; [0071] meta-data support in system memory is used for maintaining the “Snapshot” and to track read and write accesses by the transaction; [0163] using system metadata for tracking the read and write sets of transactions to determine if the memory accesses for two or more concurrent transactions conflict; [0167] The snapshot of memory may be performed by the application or runtime using the API call; [0175] tracks the state of shared memory, when entering a transaction processing state, corresponding to one or more global virtual addresses accessed by a plurality of processing threads executing a plurality of transactions. Please note that the snapshot of memory performed using the API call that allows for snapshots that are involved in meta-data support in system memory to track read and write accesses by the transaction corresponds to Applicant’s API providing functions to receive tracking information for the memory transactions, as the API provides snapshots of memory that allow for the system to track read and write access by the transaction, i.e., receive tracking information.) and cause manual transaction accounting to be performed based, at least in part, on the received tracking information ([0071] meta-data support in system memory is used for maintaining the “Snapshot” and to track read and write accesses by the transaction; [0081] access methods are provided by the extended memory architecture: […] An asynchronous copy method. Please note that meta-data support in system memory being used to track read and write accesses by the transaction in a system which includes access methods that may comprise an asynchronous copy method corresponds to Applicant’s manual transaction accounting based on the received tracking information, as Applicant states in [0058] of the Specification that manual transaction accounting is when a user (e.g., computer program code, such as a kernel running on PPU 106) performs one or more aspects of tracking data to be asynchronously moved.). Zhao and Kahle are both considered to be analogous to the claimed invention because they are in the same field of performing asynchronous computer requests relating to memory. Therefore, it would have been obvious to someone of ordinary skill in the art prior to the effective filing date of the claimed invention to have modified Zhao to incorporate the teachings of Kahle to modify the asynchronous API memory transaction system to do so with the API providing functions to receive tracking information for the memory transactions and cause manual transaction accounting to be performed accordingly, allowing for improved performance and resource usage, as described in Kahle. Zhao-Kahle does not explicitly disclose wherein the received tracking information comprises a count provided as one or more input parameters to the API, the count indicating an expected amount of data to be moved by the one or more memory transactions. However, Vijayan discloses wherein the received tracking information comprises a count provided as one or more input parameters to the API, the count indicating an expected amount of data to be moved by the one or more memory transactions ( [0064] The client computing devices 102 and other components in information management system 100 can be connected to one another via one or more communication pathways 114. For example, a first communication pathway 114 may connect (or communicatively couple) client computing device 102 and secondary storage computing device 106; […] The communication pathways 114 in some cases may also include application programming interfaces (APIs) including, e.g., cloud service provider APIs, virtual machine management APIs, and hosted service provider APIs.; [0070] any reference to primary data 112 generally also includes its associated metadata; [0071] Metadata can include, without limitation, one or more of the following: the data owner (e.g., the client or user that generates the data), the last modified time (e.g., the time of the most recent modification of the data object), a data object name (e.g., a file name), a data object size (e.g., a number of bytes of data); [0079] The client computing devices 102 access or receive primary data 112 and communicate the data, e.g., over one or more communication pathways 114, for storage in the secondary storage device(s) 108. Please note that the metadata associated with the primary data 112 that includes the data object size, i.e., a number of bytes of the data, that is communicated over the communication pathway 114 for storage via an API corresponds to Applicant’s received tracking information comprising a count provided as one or more input parameters to the API, the count indicating an expected amount of data to be moved by the one or more memory transactions.). Zhao-Kahle and Vijayan are both considered to be analogous to the claimed invention because they are in the same field of performing computer requests via APIs for memory transactions. Therefore, it would have been obvious to someone of ordinary skill in the art prior to the effective filing date of the claimed invention to have modified Zhao-Kahle to incorporate the teachings of Vijayan to modify the previously described system to have the received tracking information comprise a count provided as input parameters to the API, the count indicating an expected amount of data to be moved by the one or more memory transactions, allowing for improved performance and resource usage by allowing the system to anticipate how much data will be moved, as described in Vijayan. Regarding Claim 9, Zhao-Kahle-Vijayan as disclosed in Claim 8, Zhao further discloses wherein the one or more memory transactions are to be asynchronously performed (Col. 4, Lines 55-56- In particular, the requests include system call APIs such as memory allocation requests; Col. 4, Lines 62-63- enqueue the intercepted request in a request queue for asynchronous execution as a later time. Please note that asynchronously executing the request including system call APIs such as memory allocation requests corresponds to Applicant’s memory transactions to be asynchronously performed.). Regarding Claim 10, Zhao-Kahle-Vijayan as disclosed in Claim 8, Zhao further discloses wherein the one or more memory transactions are to be asynchronously performed between a first memory and a second memory of a graphics processing unit (GPU) (Col. 4, lines 55-63- the requests include system call APIs such as memory allocation requests, or data access/copy/movement requests for transferring data from “host-to-device” or from 37 device-to-host, wherein the device can be a GPU […] enqueue the intercepted request in a request queue for asynchronous execution as a later time. Please note that memory allocation or data access/copy/movement requests correspond to Applicant’s memory transactions, asynchronously executing them corresponds to asynchronously performing them, and carrying them out from device-to-host where the device can be a GPU corresponds to Applicant’s performing them between a first and second memory of a GPU. It would be obvious to a person of ordinary skill in the art to carry out a memory request between memories of a GPU, i.e., with its first memory as the host and its second as the device.) Regarding Claim 11, Zhao-Kahle-Vijayan as disclosed in Claim 8, Zhao further discloses wherein the one or more memory transactions include one or more copy operations to be asynchronously performed between a global memory and a shared memory of a graphics processing unit (GPU) (Col. 4, lines 55-63- the requests include system call APIs such as memory allocation requests, or data access/copy/movement requests for transferring data from “host-to-device” or from 37 device-to-host, wherein the device can be a GPU […] enqueue the intercepted request in a request queue for asynchronous execution as a later time. Please note that copy requests correspond to Applicant’s memory transactions including copy operations, asynchronously executing them corresponds to asynchronously performing them, and carrying them out from device-to-host where the device can be a GPU corresponds to Applicant’s performing them between a first and second memory of a GPU. It would be obvious to a person of ordinary skill in the art to carry out a copy request between memories of a GPU, i.e., with its global memory as the host and its shared memory as the device.) Regarding Claim 12, Zhao-Kahle-Vijayan as disclosed in Claim 8, Zhao further discloses wherein the one or more memory transactions include one or more copy operations to be asynchronously performed between a first memory and a second memory of a graphics processing unit (GPU) (Col. 4, lines 55-63- the requests include system call APIs such as memory allocation requests, or data access/copy/movement requests for transferring data from “host-to-device” or from 37 device-to-host, wherein the device can be a GPU […] enqueue the intercepted request in a request queue for asynchronous execution as a later time. Please note that copy requests correspond to Applicant’s memory transactions including copy operations, asynchronously executing them corresponds to asynchronously performing them, and carrying them out from device-to-host where the device can be a GPU corresponds to Applicant’s performing them between a first and second memory of a GPU. It would be obvious to a person of ordinary skill in the art to carry out a copy request between memories of a GPU, i.e., with its first memory as the host and its second as the device.) Regarding Claim 13, Zhao-Kahle-Vijayan as disclosed in Claim 8, Zhao further discloses wherein in response to the API call, an indication of whether asynchronous data movement hardware is to be used to perform the one or more memory transactions is returned (Col. 10, Lines 45-50-the data coordination engine 133 may determine that the request can be immediately executed under the current resource usage and allocation. Alternatively, the data coordination engine 133 can enqueue the request, and then asynchronously execute the request. Please note that determining whether the request will alternatively be executed asynchronously corresponds to Applicant’s returning an indication of whether asynchronous data movement hardware is to be used to perform the one or more data transactions in response to an API call, as the data coordination engine 133 must return an indication in order to trigger the asynchronous execution.). Regarding Claim 14, Zhao discloses A method (Col. 14, Lines 62-64- methods as discussed herein), comprising: receiving an application programming interface (API) call; and in response to receiving the API call, causing one or more memory transactions to be performed (Col. 4, Lines 55-56- In particular, the requests include system call APIs such as memory allocation requests. Please note that system call APIs requesting memory allocation corresponds to Applicant’s cause memory transactions to be performed in response to receiving an API call, as a memory allocation corresponds to Applicant’s memory transaction.) Zhao does not explicitly disclose wherein the API provides one or more functions to receive tracking information for the one or more memory transactions and cause manual transaction accounting to be performed based, at least in part, on the received tracking information However, Kahle discloses wherein the API provides one or more functions to receive tracking information for the one or more memory transactions ([0005] An approach is disclosed that tracks memory transactions by a node.; [0071] meta-data support in system memory is used for maintaining the “Snapshot” and to track read and write accesses by the transaction; [0163] using system metadata for tracking the read and write sets of transactions to determine if the memory accesses for two or more concurrent transactions conflict; [0167] The snapshot of memory may be performed by the application or runtime using the API call; [0175] tracks the state of shared memory, when entering a transaction processing state, corresponding to one or more global virtual addresses accessed by a plurality of processing threads executing a plurality of transactions. Please note that the snapshot of memory performed using the API call that allows for snapshots that are involved in meta-data support in system memory to track read and write accesses by the transaction corresponds to Applicant’s API providing functions to receive tracking information for the memory transactions, as the API provides snapshots of memory that allow for the system to track read and write access by the transaction, i.e., receive tracking information.) and cause manual transaction accounting to be performed based, at least in part, on the received tracking information ([0071] meta-data support in system memory is used for maintaining the “Snapshot” and to track read and write accesses by the transaction; [0081] access methods are provided by the extended memory architecture: […] An asynchronous copy method. Please note that meta-data support in system memory being used to track read and write accesses by the transaction in a system which includes access methods that may comprise an asynchronous copy method corresponds to Applicant’s manual transaction accounting based on the received tracking information, as Applicant states in [0058] of the Specification that manual transaction accounting is when a user (e.g., computer program code, such as a kernel running on PPU 106) performs one or more aspects of tracking data to be asynchronously moved.). Zhao and Kahle are both considered to be analogous to the claimed invention because they are in the same field of performing asynchronous computer requests relating to memory. Therefore, it would have been obvious to someone of ordinary skill in the art prior to the effective filing date of the claimed invention to have modified Zhao to incorporate the teachings of Kahle to modify the asynchronous API memory transaction system to do so with the API providing functions to receive tracking information for the memory transactions and cause manual transaction accounting to be performed accordingly, allowing for improved performance and resource usage, as described in Kahle. Zhao-Kahle does not explicitly disclose wherein the received tracking information comprises a count provided as one or more input parameters to the API, the count indicating an expected amount of data to be moved by the one or more memory transactions. However, Vijayan discloses wherein the received tracking information comprises a count provided as one or more input parameters to the API, the count indicating an expected amount of data to be moved by the one or more memory transactions ( [0064] The client computing devices 102 and other components in information management system 100 can be connected to one another via one or more communication pathways 114. For example, a first communication pathway 114 may connect (or communicatively couple) client computing device 102 and secondary storage computing device 106; […] The communication pathways 114 in some cases may also include application programming interfaces (APIs) including, e.g., cloud service provider APIs, virtual machine management APIs, and hosted service provider APIs.; [0070] any reference to primary data 112 generally also includes its associated metadata; [0071] Metadata can include, without limitation, one or more of the following: the data owner (e.g., the client or user that generates the data), the last modified time (e.g., the time of the most recent modification of the data object), a data object name (e.g., a file name), a data object size (e.g., a number of bytes of data); [0079] The client computing devices 102 access or receive primary data 112 and communicate the data, e.g., over one or more communication pathways 114, for storage in the secondary storage device(s) 108. Please note that the metadata associated with the primary data 112 that includes the data object size, i.e., a number of bytes of the data, that is communicated over the communication pathway 114 for storage via an API corresponds to Applicant’s received tracking information comprising a count provided as one or more input parameters to the API, the count indicating an expected amount of data to be moved by the one or more memory transactions.). Zhao-Kahle and Vijayan are both considered to be analogous to the claimed invention because they are in the same field of performing computer requests via APIs for memory transactions. Therefore, it would have been obvious to someone of ordinary skill in the art prior to the effective filing date of the claimed invention to have modified Zhao-Kahle to incorporate the teachings of Vijayan to modify the previously described system to have the received tracking information comprise a count provided as input parameters to the API, the count indicating an expected amount of data to be moved by the one or more memory transactions, allowing for improved performance and resource usage by allowing the system to anticipate how much data will be moved, as described in Vijayan. Regarding Claim 15, Zhao-Kahle-Vijayan as disclosed in Claim 14, Zhao further discloses wherein the one or more memory transactions include one or more copy operations to be asynchronously performed between a first memory and a second memory of a graphics processing unit (GPU) (Col. 4, lines 55-63- the requests include system call APIs such as memory allocation requests, or data access/copy/movement requests for transferring data from “host-to-device” or from 37 device-to-host, wherein the device can be a GPU […] enqueue the intercepted request in a request queue for asynchronous execution as a later time. Please note that copy requests correspond to Applicant’s memory transactions including copy operations, asynchronously executing them corresponds to asynchronously performing them, and carrying them out from device-to-host where the device can be a GPU corresponds to Applicant’s performing them between a first and second memory of a GPU. It would be obvious to a person of ordinary skill in the art to carry out a copy request between memories of a GPU, i.e., with its first memory as the host and its second as the device.) Regarding Claim 16, Zhao-Kahle-Vijayan as disclosed in Claim 14, Zhao further discloses wherein the one or more memory transactions are to be asynchronously performed (Col. 4, Lines 55-56- In particular, the requests include system call APIs such as memory allocation requests; Col. 4, Lines 62-63- enqueue the intercepted request in a request queue for asynchronous execution as a later time. Please note that asynchronously executing the request including system call APIs such as memory allocation requests corresponds to Applicant’s memory transactions to be asynchronously performed.) Regarding Claim 17, Zhao-Kahle-Vijayan as disclosed in Claim 14, Zhao further discloses wherein the one or more memory transactions are to be asynchronously performed (Col. 4, Lines 55-56- In particular, the requests include system call APIs such as memory allocation requests; Col. 4, Lines 62-63- enqueue the intercepted request in a request queue for asynchronous execution as a later time. Please note that asynchronously executing the request including system call APIs such as memory allocation requests corresponds to Applicant’s memory transactions to be asynchronously performed.) and an identifier of a source memory location and an identifier of a destination memory location are received as inputs (Col. 4, lines 55-63- the requests include system call APIs such as memory allocation requests, or data access/copy/movement requests for transferring data from “host-to-device” or from 37 device-to-host. Please note that system call APIs including requests for transferring data from host-to-device correspond to Applicant’s receiving an identifier of a source memory location and an identifier of a destination memory location as inputs, as the host would correspond to the source memory location and the device would correspond to the destination memory location, and must necessarily be included in the data transfer request of the system call API in order to complete it.) Regarding Claim 20, Zhao-Kahle-Vijayan as disclosed in Claim 14 discloses the method of Claim 14, as stated above. Zhao further discloses A non-transitory computer-readable medium having stored thereon a set of instructions (Col. 9, Lines 35-36 non-volatile memory which is utilized to store application program instructions), which if performed by one or more processors, cause the one or more processors to at least perform (Col. 9, Lines 35-37- application program instructions that are read and processed by the central processing units 202. Please note that this corresponds to Applicant’s instructions causing processors to perform the method if performed by the processors.) Regarding Claim 21, Zhao-Kahle-Vijayan as disclosed in Claim 1, Zhao further discloses wherein causing the manual transaction accounting to be performed comprises updating a thread synchronization object based, at least in part, on the provided count (Col. 6, Lines 20-23- The processing results from each worker server node are communicated to the parameter servers wherein the processing results are synchronized to update the globally shared parameters 114-1 and 114-2. Please note that the processing results being synchronized to update globally shared parameters corresponds to Applicant’s updating a thread synchronization object based on the provided count, i.e., once the amount of data being processed by the particular transaction is completed processing, the synchronization is updated.). Regarding Claim 22, Zhao-Kahle-Vijayan as disclosed in Claim 21, Zhao further discloses wherein the thread synchronization object (Col. 6, Lines 9-11- processing results (e.g., gradients) are synchronized (e.g., averaged) after each processing iteration of a mini-batch dataset.; Col. 6, Lines 20-23- The processing results from each worker server node are communicated to the parameter servers wherein the processing results are synchronized to update the globally shared parameters 114-1 and 114-2. Please note that the processing results being synchronized to update globally shared parameters corresponds to Applicant’s thread synchronization object.), Vijayan further discloses includes a state indicating that a data movement operation associated with the one or more memory transactions has completed ([0293] When the I/O operation is complete, the requesting thread receives a callback and reads the requested data. Please note that the I/O operation being completed and thus allowing the requesting thread to receive a callback corresponds to Applicant’s state included indicating that a data movement operation associated with the one or more memory transactions has completed.) the state updated based, at least in part, on a determination that a sum of data moved by the one or more memory transactions is equal to the provided count ([0083] Since an instance of a data object or metadata in primary data 112 may change over time as it is modified by an application 110 (or hosted service or the operating system), the information management system 100 may create and manage multiple secondary copies 116 of a particular data object or metadata, each representing the state of the data object in primary data 112 at a particular point in time.; [0094] Some or all primary data objects are associated with corresponding metadata (e.g., “Meta1-11”), which may include file system metadata and/or application specific metadata. Stored on the secondary storage device(s) 108 are secondary copy data objects 134A-C which may include copies of or otherwise represent corresponding primary data objects and metadata.; [0132] media agents 144 can generate and store information relating to characteristics of the stored data and/or metadata, or can generate and store other types of information that generally provides insight into the contents of the secondary storage devices 108. Please note that as there are secondary copies of a particular data object/metadata, where the secondary copy data objects include copies of corresponding primary data objects and metadata, and the media agent can store information relating to characteristics of the stored data/metadata, corresponds to Applicant’s state updated based on a determination that a sum of data moved by the one or more memory transactions is equal to the provided count. This is because, as previously described, the metadata associated with the primary data includes data object size, i.e., a number of bytes of the data that corresponds to the count; therefore, if a secondary copy of this primary data and its metadata is made, it is possible to identify that the sum of data moved is equal to this value, i.e., that the secondary copy was successfully created.). Response to Arguments Applicant's arguments filed 07/02/2026 have been fully considered but they are not persuasive. Applicant’s arguments are summarized as follows: A) Regarding the rejection of independent Claim 1 under 35 U.S.C. 103, Zhao teaches an API including functions that cause memory operations to be performed on data, but not “wherein the received tracking information comprises a count provided as one or more input parameters to the API, the count indicating an expected amount of data to be moved by the one or more memory transactions.” At most, Zhao teaches intercepting requests that already correspond to data-flow operations then scheduling those intercepted requests, but does not teach “a count” as described in the amended Claim. Zhao’s amount of data is controlled by the data coordination engine as part of resource management as is not provided as an input parameter to the API. Kahle fails to cure this deficiency, as its API routines are directed to establishing and resolving snapshot-consistent views of shared memory, but does not teach an API that “provides one or more functions to receive tracking information for the one or more memory transactions” and “cause manual transaction accounting to be performed based, at least in part, on the received tracking information.” Kahle also does not teach “wherein the received tracking information comprises a count provided as one or more input parameters to the API, the count indicating an expected amount of data to be moved by the one or more memory transactions,” as its metadata identifies memory locations involved in concurrent transactions so that the system can determine whether the transactions conflict, but not a count indicating an expected amount of data to be moved by the one or more memory transactions as recited. Even if the metadata of Kahle could be considered tracking information, it does not recite that an API receives this information as input parameters. Additionally, a sufficient rationale for modifying Zhao in view of Kahle has not been articulated, as a reason is not provided for modifying Zhao’s system with Kahle’s teachings. The combination appears to rely on improper hindsight. Therefore Claim 1 is allowable. B) Independent Claims 8 and 14 are allowable for reasons similar to Claim 1, and the rejections under 35 U.S.C. 103 should be withdrawn. C) Since Dependent Claims 2-7, 9-13, 15-17, and 20-22 depend on allowable Independent claims, they are allowable, and the rejections under 35 U.S.C. 103 should be withdrawn. Regarding A), the examiner respectfully disagrees. The Applicant’s arguments are moot, as the rejections of the Claim now relies on a new grounds of rejection, Zhao-Kahle-Vijayan, which discloses the limitations stated by the Applicant via the combination of references, as stated above. Additionally, in response to applicant's argument that the examiner's conclusion of obviousness is based upon improper hindsight reasoning, it must be recognized that any judgment on obviousness is in a sense necessarily a reconstruction based upon hindsight reasoning. But so long as it takes into account only knowledge which was within the level of ordinary skill at the time the claimed invention was made, and does not include knowledge gleaned only from the applicant's disclosure, such a reconstruction is proper. See In re McLaughlin, 443 F.2d 1392, 170 USPQ 209 (CCPA 1971). Therefore, the recited features can be found in the cited combination of references, and independent Claim 1 remains rejected under 35 U.S.C. 103 for the reasons stated above, and the combinations cited would have been obvious to a person of ordinary skill in the art prior to the effective filing date of the application. The rejections under 35 U.S.C. 103 are maintained. Regarding B), the examiner respectfully disagrees. The Independent claims 8 and 14 contain similar limitations to rejected Independent Claim 1 and do not add limitations that overcome the rejection; therefore, they likewise remain rejected, and the application is not in condition for allowance. The rejections under 35 U.S.C. 103 are maintained. Regarding C), the examiner respectfully disagrees. The dependent claims 2-7, 9-13, 15-17, and 20-22 depend on unpatentable claims and do not add limitations that overcome the rejection; therefore, they likewise remain rejected, and the application is not in condition for allowance. The rejections under 35 U.S.C. 103 are maintained. Conclusion The prior art made of record and not relied upon is considered pertinent to applicant's disclosure. Johns et al. (US20200183854) discloses tracking the state of shared memory when entering a transaction processing state in systems with GPUs, asynchronous copying in memory, global memory, and APIs for the memory architecture (see [0055, 0071, 0074, 0079-0080, 0167]). Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). 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 FARAZ T AKBARI whose telephone number is (571)272-4166. The examiner can normally be reached Monday-Thursday 9:30am-7:30pm ET. 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, April Blair can be reached at (571)270-1014. 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. /FARAZ T AKBARI/Examiner, Art Unit 2196 /APRIL Y BLAIR/Supervisory Patent Examiner, Art Unit 2196
Read full office action

Prosecution Timeline

Show 6 earlier events
Feb 04, 2026
Examiner Interview Summary
Mar 09, 2026
Request for Continued Examination
Mar 13, 2026
Response after Non-Final Action
Apr 03, 2026
Non-Final Rejection mailed — §103
Jun 18, 2026
Interview Requested
Jul 02, 2026
Examiner Interview Summary
Jul 02, 2026
Response Filed
Sep 14, 2026
Final Rejection mailed — §103 (current)

Precedent Cases

Applications granted by this same examiner with similar technology

Patent 12748578
IDENTIFICATION OF REUSABLE COMPONENTS
4y 0m to grant Granted Sep 29, 2026
Patent 12748605
DISCOVERY AND INVENTORY CONTROL FOR REMOTE RESOURCE INTEGRATION WITH CLOUD SERVICES
3y 3m to grant Granted Sep 29, 2026
Patent 12744785
PRIORITIZING OPERATIONS OVER CONTENT OBJECTS OF A CONTENT MANAGEMENT SYSTEM
2y 7m to grant Granted Sep 22, 2026
Patent 12705107
Deploying Application Containers of a Distributed Service
3y 10m to grant Granted Aug 11, 2026
Patent 12693906
CONTAINER MANAGEMENT DEVICE AND STORAGE MEDIUM STORING CONTAINER MANAGEMENT PROGRAM
4y 2m to grant Granted Jul 28, 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

5-6
Expected OA Rounds
53%
Grant Probability
93%
With Interview (+39.6%)
4y 1m (~3m remaining)
Median Time to Grant
High
PTA Risk
Based on 362 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