Patents by Inventor Yuri Dotsenko
Yuri Dotsenko has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).
-
Patent number: 10296400Abstract: The application programming interface permits an application to specify resources to be used by shaders, executed by the GPU, through a data structure called the “root arguments.” A root signature is a data structure in an application that defines the layout of the root arguments used by an application. The root arguments are a data structure resulting from the application populating locations in memory according to the root signature. The root arguments can include one or more constant values or other state information, and/or one or more pointers to memory locations which can contain descriptors, and/or one or more descriptor tables. Thus, the root arguments can support multiple levels of indirection through which a GPU can identify resources that are available for shaders to access.Type: GrantFiled: August 23, 2017Date of Patent: May 21, 2019Assignee: Microsoft Technology Licensing, LLCInventors: Amar Patel, Matthew D. Sandy, Yuri Dotsenko, Jesse T. Natalie, Max A. McMullen
-
Publication number: 20180095805Abstract: The application programming interface permits an application to specify resources to be used by shaders, executed by the GPU, through a data structure called the “root arguments.” A root signature is a data structure in an application that defines the layout of the root arguments used by an application. The root arguments are a data structure resulting from the application populating locations in memory according to the root signature. The root arguments can include one or more constant values or other state information, and/or one or more pointers to memory locations which can contain descriptors, and/or one or more descriptor tables. Thus, the root arguments can support multiple levels of indirection through which a GPU can identify resources that are available for shaders to access.Type: ApplicationFiled: August 23, 2017Publication date: April 5, 2018Inventors: Amar Patel, Matthew D. Sandy, Yuri Dotsenko, Jesse T. Natalie, Max A. McMullen
-
Patent number: 9779535Abstract: A resource used by a shader executed by a graphics processing unit is referenced using a “descriptor”. Descriptors are grouped together in memory called a descriptor heap. Applications allocate and store descriptors in descriptor heaps. Applications also create one or more descriptor tables specifying a subrange of a descriptor heap. To bind resources to a shader, descriptors are first loaded into a descriptor heap. When the resources are to be used by a set of executing shaders, descriptor tables are defined on the GPU identifying ranges within the descriptor heap. Shaders, when executing, refer to the currently defined descriptor tables to access the resources made available to them. If the shader is to be executed again with different resources, and if those resources are already in memory and specified in the descriptor heap, then the descriptor tables are changed to specify different ranges of the descriptor heap.Type: GrantFiled: July 3, 2014Date of Patent: October 3, 2017Assignee: Microsoft Technology Licensing, LLCInventors: Amar Patel, Matthew D. Sandy, Yuri Dotsenko, Jesse T. Natalie, Max A. McMullen
-
Patent number: 9766954Abstract: The application programming interface permits an application to specify resources to be used by shaders, executed by the GPU, through a data structure called the “root arguments.” A root signature is a data structure in an application that defines the layout of the root arguments used by an application. The root arguments are a data structure resulting from the application populating locations in memory according to the root signature. The root arguments can include one or more constant values or other state information, and/or one or more pointers to memory locations which can contain descriptors, and/or one or more descriptor tables. Thus, the root arguments can support multiple levels of indirection through which a GPU can identify resources that are available for shaders to access.Type: GrantFiled: September 8, 2014Date of Patent: September 19, 2017Assignee: Microsoft Technology Licensing, LLCInventors: Amar Patel, Matthew D. Sandy, Yuri Dotsenko, Jesse T. Natalie, Max A. McMullen
-
Patent number: 9529575Abstract: Described are compiler algorithms that partition a compute shader program into maximal-size regions, called thread-loops. The algorithms may remove original barrier-based synchronization yet the thus-transformed shader program remains semantically equivalent to the original shader program (i.e., the transformed shader program is correct). Moreover, the transformed shader program is amenable to optimization via existing compiler technology, and can be executed efficiently by CPU thread(s). A Dispatch call can be load-balanced on a CPU by assigning single or multiple CPU threads to execute thread blocks. In addition, the number of concurrently executing thread blocks do not overload the CPU.Type: GrantFiled: February 16, 2012Date of Patent: December 27, 2016Assignee: Microsoft Technology Licensing, LLCInventors: Andy Glaister, Blaise Pascal Tine, Derek Sessions, Mikhail Lyapunov, Yuri Dotsenko
-
Patent number: 9430199Abstract: Described herein are optimizations of thread loop intermediate representation (IR) code. One embodiment involves an algorithm that, based on data-flow analysis, computes sets of temporary variables that are loaded at the beginning of a thread loop and stored upon exit from a thread loop. Another embodiment involves reducing the size of a thread loop trip for a commonly-found case where a piece of compute shader is executed by a single thread (or a compiler-analyzable range of threads). In yet another embodiment, compute shader thread indices are cached to avoid excessive divisions, further improving execution speed.Type: GrantFiled: February 16, 2012Date of Patent: August 30, 2016Assignee: Microsoft Technology Licensing, LLCInventors: Andy Glaister, Blaise Pascal Tine, Derek Sessions, Mikhail Lyapunov, Yuri Dotsenko
-
Publication number: 20160071230Abstract: The application programming interface permits an application to specify resources to be used by shaders, executed by the GPU, through a data structure called the “root arguments.” A root signature is a data structure in an application that defines the layout of the root arguments used by an application. The root arguments are a data structure resulting from the application populating locations in memory according to the root signature. The root arguments can include one or more constant values or other state information, and/or one or more pointers to memory locations which can contain descriptors, and/or one or more descriptor tables. Thus, the root arguments can support multiple levels of indirection through which a GPU can identify resources that are available for shaders to access.Type: ApplicationFiled: September 8, 2014Publication date: March 10, 2016Inventors: Amar Patel, Matthew D. Sandy, Yuri Dotsenko, Jesse T. Natalie, Max A. McMullen
-
Publication number: 20150269767Abstract: A resource used by a shader executed by a graphics processing unit is referenced using a “descriptor”. Descriptors are grouped together in memory called a descriptor heap. Applications allocate and store descriptors in descriptor heaps. Applications also create one or more descriptor tables specifying a subrange of a descriptor heap. To bind resources to a shader, descriptors are first loaded into a descriptor heap. When the resources are to be used by a set of executing shaders, descriptor tables are defined on the GPU identifying ranges within the descriptor heap. Shaders, when executing, refer to the currently defined descriptor tables to access the resources made available to them. If the shader is to be executed again with different resources, and if those resources are already in memory and specified in the descriptor heap, then the descriptor tables are changed to specify different ranges of the descriptor heap.Type: ApplicationFiled: July 3, 2014Publication date: September 24, 2015Inventors: Amar Patel, Matthew D. Sandy, Yuri Dotsenko, Jesse T. Natalie, Max A. McMullen
-
Publication number: 20140354658Abstract: Methods, systems, and computer-storage media are provided for shader assembly and computation. Shader functions can be determined without specialization to a particular shader model and finalizing or resource bindings. Embodiments of the present invention facilitate final shader assembly and resource binding through linking before the shader is presented to a GPU driver. In this way, embodiments of the present invention alleviate combinatorial shader explosion and provide protection of intellectual property by not requiring distribution or generation of source code.Type: ApplicationFiled: May 31, 2013Publication date: December 4, 2014Inventors: Yuri Dotsenko, Carey Glenerin Riddell, Richard Lee Plotke, Matthew David Sandy, Andrew John Glaister
-
Patent number: 8806458Abstract: Intermediate representation (IR) code is received as compiled from a shader in the form of shader language source code. The input IR code is first analyzed during an analysis pass, during which operations, scopes, parts of scopes, and if-statement scopes are annotated for predication, mask usage, and branch protection and predication. This analysis outputs vectorization information that is then used by various sets of vectorization transformation rules to vectorize the input IR code, thus producing vectorized output IR code.Type: GrantFiled: February 16, 2012Date of Patent: August 12, 2014Assignee: Microsoft CorporationInventors: Andy Glaister, Blaise Pascal Tine, Blake Pelton, Derek Sessions, Mikhail Lyapunov, Yuri Dotsenko
-
Publication number: 20130219377Abstract: Described herein are optimizations of thread loop intermediate representation (IR) code. One embodiment involves an algorithm that, based on data-flow analysis, computes sets of temporary variables that are loaded at the beginning of a thread loop and stored upon exit from a thread loop. Another embodiment involves reducing the size of a thread loop trip for a commonly-found case where a piece of compute shader is executed by a single thread (or a compiler-analyzable range of threads). In yet another embodiment, compute shader thread indices are cached to avoid excessive divisions, further improving execution speed.Type: ApplicationFiled: February 16, 2012Publication date: August 22, 2013Applicant: MICROSOFT CORPORATIONInventors: Andy Glaister, Blaise Pascal Tine, Derek Sessions, Mikhail Lyapunov, Yuri Dotsenko
-
Publication number: 20130219378Abstract: Intermediate representation (IR) code is received as compiled from a shader in the form of shader language source code. The input IR code is first analyzed during an analysis pass, during which operations, scopes, parts of scopes, and if-statement scopes are annotated for predication, mask usage, and branch protection and predication. This analysis outputs vectorization information that is then used by various sets of vectorization transformation rules to vectorize the input IR code, thus producing vectorized output IR code.Type: ApplicationFiled: February 16, 2012Publication date: August 22, 2013Applicant: Microsoft CorporationInventors: Andy Glaister, Blaise Pascal Tine, Blake Pelton, Derek Sessions, Mikhail Lyapunov, Yuri Dotsenko
-
Publication number: 20130215117Abstract: Described are compiler algorithms that partition a compute shader program into maximal-size regions, called thread-loops. The algorithms may remove original barrier-based synchronization yet the thus-transformed shader program remains semantically equivalent to the original shader program (i.e., the transformed shader program is correct). Moreover, the transformed shader program is amenable to optimization via existing compiler technology, and can be executed efficiently by CPU thread(s). A Dispatch call can be load-balanced on a CPU by assigning single or multiple CPU threads to execute thread blocks. In addition, the number of concurrently executing thread blocks do not overload the CPU.Type: ApplicationFiled: February 16, 2012Publication date: August 22, 2013Applicant: Microsoft CorporationInventors: Andy Glaister, Blaise Pascal Tine, Derek Sessions, Mikhail Lyapunov, Yuri Dotsenko
-
Publication number: 20100106758Abstract: A system described herein includes a selector component that receives input data that is desirably transformed by way of a Discrete Fourier Transform, wherein the selector component selects one of a plurality of algorithms for computing the Discrete Fourier Transform from a library based at least in part upon a size of the input function. An evaluator component executes the selected one of the plurality of algorithms to compute the Discrete Fourier Transform, wherein the evaluator component causes leverages shared memory of a processor to compute the Discrete Fourier Transform.Type: ApplicationFiled: October 24, 2008Publication date: April 29, 2010Applicant: Microsoft CorporationInventors: Naga K. Govindaraju, David Brandon Lloyd, Yuri Dotsenko, Burton Jordan Smith, Jon L. Manferdelli
-
Publication number: 20100076941Abstract: A system and method for performing a scan of an input sequence in a parallel processor having a shared register file. A two dimensional matrix is generated, having a number of rows representing a number of threads and a number of columns based on the input sequence block size and the number of rows. One or more padding columns may be added to the matrix to avoid or reduce memory bank conflicts. A first traversal of the rows performs a reduction or a scan of each of the rows in parallel, storing the reduction values. The reduction values are used during a second traversal to propagate the reduction values. In a segmented scan, propagation is selectively performed based on flags representing segment boundaries.Type: ApplicationFiled: September 9, 2008Publication date: March 25, 2010Applicant: Microsoft CorporationInventors: Yuri Dotsenko, Naga Govindaraju, Charles Boyd, John Manferdelli, Peter-Pike Sloan