Processing engine for complex atomic operations
US-9218204-B2 · Dec 22, 2015 · US
US2021149731A1 · US · A1
| Field | Value |
|---|---|
| Publication number | US-2021149731-A1 |
| Application number | US-202016838441-A |
| Country | US |
| Kind code | A1 |
| Filing date | Apr 2, 2020 |
| Priority date | Nov 14, 2019 |
| Publication date | May 20, 2021 |
| Grant date | — |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A computing device receives, from a thread of a multi-thread application, a release message. Each of the threads indicates operation(s) on a memory associated with the application. The release message indicates that a data object used by the thread is released. The device indicates that a memory slot of a data pool is unlocked permitting storage of an indication of a location of the data object in the memory. Each memory slot of the data pool is individually lockable such that a locked memory slot of the data pool indicates storing a location in the locked memory slot will not be permitted even though storing the location in an unlocked memory slot of the data pool will be permitted. The device stores, in the memory slot of the data pool, an indication of a location of the data object. The data object comprises the location of the memory slot.
Opening claim text (preview).
1 . A computer-program product tangibly embodied in a non-transitory machine-readable storage medium, the computer-program product including instructions operable to cause a computing device to: receive, by a pool manager of a data pool, from a first thread of an application with multiple threads, a first release indication, wherein: each of the multiple threads indicates one or more operations on a first region of memory associated with the application; the first release indication indicates that a first data object used by the first thread in the one or more operations is released from use by the first thread for the pool manager to retain or destroy access for the application to the first data object; and the first data object, released from use by the first thread, is stored at a location addressed in the first region of the memory associated with the application; the data pool is in a second region of the memory associated with the application; the data pool comprises a plurality of memory slots in the second region for storing respective address content indicating a respective location of a respective object in the first region, wherein the second region is addressed with different addresses than the first region; indicate that a first memory slot of the data pool is in an unlocked status permitting storage of the respective address content, wherein each respective memory slot of the data pool is associated with a respective lock indicator in the second region that indicates one of two statuses that is a status for the respective memory slot irrespective of a status of any other memory slot of the data pool, wherein the two statuses comprise: a locked status for an associated locked memory slot that indicates: the associated locked memory slot is not available for a given thread of the multiple threads to read the respective address content from the associated locked memory slot, and the associated locked memory slot is not available for the given thread of the multiple threads to write the respective address content to the associated locked memory slot; and the unlocked status for an associated unlocked memory slot that indicates: the associated unlocked memory slot is available for the given thread of the multiple threads to read the respective address content from the associated locked memory slot, and the associated unlocked memory slot is available for the given thread of the multiple threads to write the respective address content to the associated locked memory slot; and refrain from destroying access by the application to the first data object by storing, while the first memory slot remains in the unlocked status, in the first memory slot of the data pool, a location indication of a location of the first data object released by the first thread, wherein the first data object is modified by the pool manager to reference a location, in the second region, of the first memory slot of the data pool. 2 . The computer-program product of claim 1 , wherein each memory slot of the data pool is individually lockable by changing a stored setting of the respective lock indicator associated with a respective memory slot of the data pool. 3 . (canceled) 4 . The computer-program product of claim 1 , wherein the instructions are operable to cause the computing device to: receive, from a given thread of the multiple threads, a request for a given data object; change a given lock indicator associated with a given memory slot of the data pool to the locked status, wherein the given memory slot comprises an indication of a location of the given data object in the data pool; retrieve, using the indication of the location of the given data object in the data pool, the first data object, wherein the first data object comprises a first value for a given memory slot in the data pool; and change content of the given memory slot by storing the first value in the given memory slot, wherein the storing the content changes the given lock indicator from the locked status to the unlocked status. 5 . The computer-program product of claim 4 , wherein the instructions are operable to cause the computing device to: receive a request from a second thread of the multiple threads for another data object; and indicate that the data pool is empty and the second thread will need to request an allocation of a new data object from an operating system. 6 . The computer-program product of claim 4 , wherein the instructions are operable to cause the computing device to: receive a request from a second thread of the multiple threads for another data object; and set a value for a counter for searching for an indication of an available object of the data pool; and indicate that a memory slot of the data pool indicates a location for the another data object by: checking each of the memory slots of the data pool and finding no indication of the available object of the data pool; augmenting the value of the counter; and checking at least one of the memory slots again and finding the available object of the data pool. 7 . The computer-program product of claim 1 , wherein the instructions are operable to cause the computing device to indicate to the first thread that a memory slot of a data pool is in the unlocked status by: responsive to the first release indication, allocating a preconfigured number of memory slots to the data pool in the memory associated with the application; and indicating a location of an allocated memory slot of the data pool. 8 . The computer-program product of claim 7 , wherein the allocating comprises allocating at least four memory slots of the plurality of memory slots, wherein the at least four memory slots are located contiguously in a region of the memory associated with the application. 9 . The computer-program product of claim 7 , wherein the allocating comprises allocating at least four memory slots of the plurality of memory slots, wherein the at least four memory slots are located noncontiguously in a region of the memory associated with the application. 10 . The computer-program product of claim 1 , wherein the data pool is configured for random access by the multiple threads of the application without regard to an order of memory slots of the plurality of memory slots; and wherein the computing device is configured to: randomly access the memory slot of the data pool to store the location indication of the location of the first data object released by the first thread; and prevent access to all other threads of the multiple threads besides the first thread to the memory slot while the first thread is accessing the memory slot. 11 . The computer-program product of claim 1 , wherein the instructions are operable to cause the computing device to: set a value for a counter for searching for a memory slot of the data pool that does not indicate a location; and indicate that a memory slot of a data pool is in the unlocked status by: checking each of memory slots of the data pool and finding a given memory slot of the data pool either in the locked status or with data indicating a respective object of one or more objects; augmenting the value of the counter; and checking at least one of the memory slots of the data pool again and finding one of the memory slots of the data pool in the unlocked status and not indicating the location of a given object of the one or more objects. 12 . The computer-program product of claim 1 , wherein the instructions are operable to cause the computing device to: receive a second release indication from a second thread of the multiple threads for a second data object; and indicate that th
Activation functions · CPC title
Recurrent networks, e.g. Hopfield networks · CPC title
Backpropagation, e.g. using gradient descent · CPC title
using electronic means · CPC title
Correctness of operation, e.g. memory ordering · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.