System and method for context migration across CPU threads

US9513923B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9513923-B2
Application numberUS-201213436594-A
CountryUS
Kind codeB2
Filing dateMar 30, 2012
Priority dateJul 18, 2008
Publication dateDec 6, 2016
Grant dateDec 6, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

One embodiment of the present invention sets forth a technique for associating arbitrary parallel processing unit (PPU) contexts with a given central processing unit (CPU) thread. The technique introduces two operators used to manage the PPU contexts. The first operator is a PPU context push, which causes a PPU driver to store the current PPU context of a calling thread on a PPU context stack and to associate a named PPU context with the calling thread. The second operator is a PPU context pop, which causes the PPU driver to restore the PPU context of a calling function to the PPU context at the top of the PPU context stack. By performing a PPU context push at the beginning of a function and a PPU context pop prior to returning from the function, the function may execute within a single CPU thread, but operate on a two distinct PPU contexts.

First claim

Opening claim text (preview).

I claim: 1. A method for preserving a processing context associated with a processing thread, the method comprising: receiving from a first CPU thread executing on a central processing unit (CPU) a request to store a first processing context associated with the first CPU thread, the first processing context being related to a first PPU thread executing on a first parallel processing unit (PPU); storing the first processing context; associating a second processing context with the first CPU thread, the second processing context being related to a second PPU thread executing on a second PPU; and returning execution to the first CPU thread. 2. The method of claim 1 , wherein the request comprises an application programming interface function call. 3. The method of claim 1 , wherein the step of storing the first processing context comprises pushing the first processing context onto a stack. 4. The method of claim 3 , further comprising the steps of: receiving from a second CPU thread executing on the CPU a request to store the second processing context; storing the second processing context; associating a third processing context with the second CPU thread, the third processing context being related to a third PPU thread executing on a third PPU; and returning execution to the second CPU thread. 5. The method of claim 4 , wherein the first processing context resides within a PPU thread program, and the second processing context resides within a library. 6. The method of claim 5 , wherein the step of storing the second processing context comprises pushing the second processing context onto the stack on top of the first processing context. 7. The method of claim 6 , further comprising the steps of: receiving a request from the second CPU thread to restore the second processing context; retrieving the second processing context from the top of the stack; associating the second processing context with the second CPU thread; and returning execution to the second CPU thread. 8. The method of claim 1 , further comprising the steps of: receiving a request from the first CPU thread to restore the first processing context; retrieving the first processing context; associating the first processing context with the first CPU thread; and returning execution to the first CPU thread. 9. The method of claim 8 , wherein the step of retrieving the first processing context comprises popping the first processing context from the top of a stack. 10. A non-transitory computer-readable medium including instructions that, when executed by a processing unit, cause the processing unit to preserve a processing context associated with a processing thread, by performing the steps of: receiving from a first CPU thread executing on a central processing unit (CPU) a request to store a first processing context associated with the first CPU thread, the first processing context being related to a first parallel processing unit (PPU) thread; storing the first processing context; associating a second processing context with the first CPU thread, the second processing context being related to a second PPU thread; and returning execution to the first CPU thread. 11. The non-transitory computer-readable medium of claim 10 , wherein the request comprises an application programming interface function call. 12. The non-transitory computer-readable medium of claim 10 , wherein the step of storing the first processing context comprises pushing the first processing context onto a stack. 13. The non-transitory computer-readable medium of claim 12 , further comprising the steps of: receiving from a second CPU thread executing on the CPU a request to store the second processing context; storing the second processing context; associating a third processing context with the second CPU thread, the third processing context being related to a third PPU thread executing on a third PPU; and returning execution to the second CPU thread. 14. The non-transitory computer-readable medium of claim 13 , wherein the first processing context resides within a PPU thread program, and the second processing context resides within a library. 15. The non-transitory computer-readable medium of claim 14 , wherein the step of storing the second processing context comprises pushing the second processing context onto the stack on top of the first processing context. 16. The non-transitory computer-readable medium of claim 15 , further comprising the steps of: receiving a request from the second CPU thread to restore the second processing context; retrieving the second processing context from the top of the stack; associating the second processing context with the second CPU thread; and returning execution to the second CPU thread. 17. The non-transitory computer-readable medium of claim 10 , further comprising the steps of: receiving a request from the first CPU thread to restore the first processing context; retrieving the first processing context; associating the first processing context with the first CPU thread; and returning execution to the first CPU thread. 18. The non-transitory computer-readable medium of claim 17 , wherein the step of retrieving the first processing context comprises popping the first processing context from the top of a stack. 19. A computing device configured to preserve a processing context associated with a processing thread, the computing device comprising: a memory; a central processing unit (CPU) coupled to the memory; a parallel processing unit (PPU) coupled to the central processing unit; and a parallel processing unit driver configured to: receive a request from a first CPU thread executing on the CPU to store a first processing context associated with the first CPU thread, the first processing context being related to a first PPU thread executing on a first PPU; store the processing context; associate a second processing context with the first CPU thread, the second processing context being related to a second PPU thread executing on a second PPU; and return execution to the first CPU thread executing on the CPU. 20. The method of claim 1 , wherein the request comprises a reference to the second processing context. 21. The method of claim 1 , wherein the first processing context is used by a third PPU thread executing on a third PPU.

Assignees

Inventors

Classifications

  • controlled by a single instruction for multiple data lanes [SIMD] · CPC title

  • G06F9/3851Primary

    from multiple instruction streams, e.g. multistreaming · CPC title

  • Saving or restoring of program or task context · CPC title

  • controlled by a single instruction for multiple threads [SIMT] in parallel · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9513923B2 cover?
One embodiment of the present invention sets forth a technique for associating arbitrary parallel processing unit (PPU) contexts with a given central processing unit (CPU) thread. The technique introduces two operators used to manage the PPU contexts. The first operator is a PPU context push, which causes a PPU driver to store the current PPU context of a calling thread on a PPU context stack a…
Who is the assignee on this patent?
Wilt Nicholas Patrick, Nvidia Corp
What technology area does this patent fall under?
Primary CPC classification G06F9/3851. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Dec 06 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).