Patents by Inventor Emad A. Omara

Emad A. Omara 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).

  • Publication number: 20220368685
    Abstract: Aspects of the subject technology provide for shared experience sessions within a group communications session such as a video call. The shared experience session may be, as one example, a co-watching session in which the participants in the call watch a video together while in the call. Encrypted shared state data may be exchanged between the participant devices, with which the participant devices can provide synchronized and coordinated output of shared experience data for the shared experience session of the group communications session.
    Type: Application
    Filed: March 29, 2022
    Publication date: November 17, 2022
    Inventors: Daniel B. POLLACK, Jingyao ZHANG, Jose A. LOZANO HINOJOSA, Emad OMARA, Yilmaz Can CECEN, Angus N. BURTON, Blerim CICI
  • Patent number: 9952912
    Abstract: A method of executing an algorithm in a parallel manner using a plurality of concurrent threads includes generating a lock-free barrier that includes a variable that stores both a total participants count and a current participants count. The total participants count indicates a total number of threads in the plurality of concurrent threads that are participating in a current phase of the algorithm, and the current participants count indicates a total number of threads in the plurality of concurrent threads that have completed the current phase. The barrier blocks the threads that have completed the current phase. The total participants count is dynamically updated during execution of the current phase of the algorithm. The generating, blocking, and dynamically updating are performed by at least one processor.
    Type: Grant
    Filed: December 30, 2014
    Date of Patent: April 24, 2018
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Emad Omara, John Duffy
  • Patent number: 9442827
    Abstract: A dataflow of a distributed application is visualized in a locally simulated execution environment. A scheduler receives a job graph which includes a graph of computational vertices that are designed to be executed on multiple distributed computer systems. The scheduler queries a graph manager to determine which computational vertices of the job graph are ready for execution in a local execution environment. The scheduler queries a cluster manager to determine the organizational topology of the distributed computer systems to simulate the determined topology in the local execution environment. The scheduler queries a data manager to determine data storage locations for each of the computational vertices indicated as being ready for execution in the local execution environment. The scheduler also indicates an instance of each computational vertex to be spawned and executed in the local execution environment based on the organizational topology and indicated data storage locations.
    Type: Grant
    Filed: March 18, 2014
    Date of Patent: September 13, 2016
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Massimo Mascaro, Igor Ostrovsky, Emad A. Omara
  • Patent number: 9418175
    Abstract: An enumerable concurrent data structure referred to as a concurrent bag is provided. The concurrent bag is accessible by concurrent threads and includes a set of local lists configured as a linked list and a dictionary. The dictionary includes an entry for each local list that identifies the thread that created the local list and the location of the local list. Each local list includes a set of data elements configured as a linked list. A global lock on the concurrent bag and local locks on each local list allow operations that involve enumeration to be performed on the concurrent bag.
    Type: Grant
    Filed: March 31, 2009
    Date of Patent: August 16, 2016
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Emad Omara, John J. Duffy
  • Publication number: 20150186190
    Abstract: A method of executing an algorithm in a parallel manner using a plurality of concurrent threads includes generating a lock-free barrier that includes a variable that stores both a total participants count and a current participants count. The total participants count indicates a total number of threads in the plurality of concurrent threads that are participating in a current phase of the algorithm, and the current participants count indicates a total number of threads in the plurality of concurrent threads that have completed the current phase. The barrier blocks the threads that have completed the current phase. The total participants count is dynamically updated during execution of the current phase of the algorithm. The generating, blocking, and dynamically updating are performed by at least one processor.
    Type: Application
    Filed: December 30, 2014
    Publication date: July 2, 2015
    Inventors: Emad Omara, John Duffy
  • Patent number: 8997101
    Abstract: Embodiments described herein are directed to dynamically controlling the number of spins for a selected processing thread among a plurality of processing threads. A computer system tracks both the number of waiting processing threads and each thread's turn, wherein a selected thread's turn comprises the total number of waiting processing threads after the selected thread's arrival at the processor. Next, the computer system determines, based on the selected thread's turn, the number of spins that are to occur before the selected thread checks for an available thread lock. The computer system also, based on the selected thread's turn, changes the number of spins, such that the number of spins for the selected thread is a function of the number of waiting processing threads and processors in the computer system.
    Type: Grant
    Filed: March 4, 2014
    Date of Patent: March 31, 2015
    Assignee: Microsoft Corporation
    Inventors: Emad A. Omara, John J. Duffy
  • Patent number: 8924984
    Abstract: A method of executing an algorithm in a parallel manner using a plurality of concurrent threads includes generating a lock-free barrier that includes a variable that stores both a total participants count and a current participants count. The total participants count indicates a total number of threads in the plurality of concurrent threads that are participating in a current phase of the algorithm, and the current participants count indicates a total number of threads in the plurality of concurrent threads that have completed the current phase. The barrier blocks the threads that have completed the current phase. The total participants count is dynamically updated during execution of the current phase of the algorithm. The generating, blocking, and dynamically updating are performed by at least one processor.
    Type: Grant
    Filed: June 26, 2009
    Date of Patent: December 30, 2014
    Assignee: Microsoft Corporation
    Inventors: Emad Omara, John Duffy
  • Publication number: 20140201717
    Abstract: A dataflow of a distributed application is visualized in a locally simulated execution environment. A scheduler receives a job graph which includes a graph of computational vertices that are designed to be executed on multiple distributed computer systems. The scheduler queries a graph manager to determine which computational vertices of the job graph are ready for execution in a local execution environment. The scheduler queries a cluster manager to determine the organizational topology of the distributed computer systems to simulate the determined topology in the local execution environment. The scheduler queries a data manager to determine data storage locations for each of the computational vertices indicated as being ready for execution in the local execution environment. The scheduler also indicates an instance of each computational vertex to be spawned and executed in the local execution environment based on the organizational topology and indicated data storage locations.
    Type: Application
    Filed: March 18, 2014
    Publication date: July 17, 2014
    Applicant: MICROSOFT CORPORATION
    Inventors: Massimo Mascaro, Igor Ostrovsky, Emad A. Omara
  • Publication number: 20140189699
    Abstract: Embodiments described herein are directed to dynamically controlling the number of spins for a selected processing thread among a plurality of processing threads. A computer system tracks both the number of waiting processing threads and each thread's turn, wherein a selected thread's turn comprises the total number of waiting processing threads after the selected thread's arrival at the processor. Next, the computer system determines, based the selected thread's turn, the number of spins that are to occur before the selected thread checks for an available thread lock. The computer system also, based on the selected thread's turn, changes the number of spins, such that the number of spins for the selected thread is a function of the number of waiting processing threads and processors in the computer system.
    Type: Application
    Filed: March 4, 2014
    Publication date: July 3, 2014
    Inventors: Emad A. Omara, John J. Duffy
  • Patent number: 8707275
    Abstract: A scheduler receives a job graph which includes a graph of computational vertices that are designed to be executed on multiple distributed computer systems. The scheduler queries a graph manager to determine which computational vertices of the job graph are ready for execution in a local execution environment. The scheduler queries a cluster manager to determine the organizational topology of the distributed computer systems to simulate the determined topology in the local execution environment. The scheduler queries a data manager to determine data storage locations for each of the computational vertices indicated as being ready for execution in the local execution environment. The scheduler also indicates to a vertex spawner that an instance of each computational vertex is to be spawned in the local execution environment based on the organizational topology and indicated data storage locations, and indicates to the local execution environment that the spawned vertices are to be executed.
    Type: Grant
    Filed: September 14, 2010
    Date of Patent: April 22, 2014
    Assignee: Microsoft Corporation
    Inventors: Massimo Mascaro, Igor Ostrovsky, Emad A. Omara
  • Patent number: 8683470
    Abstract: Embodiments described herein are directed to dynamically controlling the number of spins for a selected processing thread among a plurality of processing threads. A computer system tracks both the number of waiting processing threads and each thread's turn, wherein a selected thread's turn comprises the total number of waiting processing threads after the selected thread's arrival at the processor. Next, the computer system determines, based the selected thread's turn, the number of spins that are to occur before the selected thread checks for an available thread lock. The computer system also, based on the selected thread's turn, changes the number of spins, such that the number of spins for the selected thread is a function of the number of waiting processing threads and processors in the computer system.
    Type: Grant
    Filed: November 24, 2009
    Date of Patent: March 25, 2014
    Assignee: Microsoft Corporation
    Inventors: Emad A. Omara, John J. Duffy
  • Patent number: 8326886
    Abstract: A method of storing per-thread, per-instance data, includes identifying a unique index value corresponding to a first instance, identifying type parameters based on the identified index value, and instantiating a generic holder object based on the identified type parameters. The generic holder object includes a thread local field configured to store per-thread data that is local to the first instance.
    Type: Grant
    Filed: January 21, 2010
    Date of Patent: December 4, 2012
    Assignee: Microsoft Corporation
    Inventors: Stephen H. Toub, Emad Omara, John Duffy
  • Publication number: 20120066667
    Abstract: A scheduler receives a job graph which includes a graph of computational vertices that are designed to be executed on multiple distributed computer systems. The scheduler queries a graph manager to determine which computational vertices of the job graph are ready for execution in a local execution environment. The scheduler queries a cluster manager to determine the organizational topology of the distributed computer systems to simulate the determined topology in the local execution environment. The scheduler queries a data manager to determine data storage locations for each of the computational vertices indicated as being ready for execution in the local execution environment. The scheduler also indicates to a vertex spawner that an instance of each computational vertex is to be spawned in the local execution environment based on the organizational topology and indicated data storage locations, and indicates to the local execution environment that the spawned vertices are to be executed.
    Type: Application
    Filed: September 14, 2010
    Publication date: March 15, 2012
    Applicant: MICROSOFT CORPORATION
    Inventors: Massimo Mascaro, Igor Ostrovsky, Emad A. Omara
  • Publication number: 20110191775
    Abstract: The forking of thread operations. At runtime, a task is identified as being divided into multiple subtasks to be accomplished by multiple threads (i.e., forked threads). In order to be able to verify when the forked threads have completed their task, multiple counter memory locations are set up and updated as forked threads complete. The multiple counter memory locations are evaluated in the aggregate to determine whether all of the forked threads are completed. Once the forked threads are determined to be completed, a join operation may be performed. Rather than a single memory location, multiple memory locations are used to account for thread completion. This reduces risk of thread contention.
    Type: Application
    Filed: January 29, 2010
    Publication date: August 4, 2011
    Applicant: Microsoft Corporation
    Inventors: Emad A. Omara, John J. Duffy
  • Publication number: 20110179038
    Abstract: A method of storing per-thread, per-instance data, includes identifying a unique index value corresponding to a first instance, identifying type parameters based on the identified index value, and instantiating a generic holder object based on the identified type parameters. The generic holder object includes a thread local field configured to store per-thread data that is local to the first instance.
    Type: Application
    Filed: January 21, 2010
    Publication date: July 21, 2011
    Applicant: Microsoft Corporation
    Inventors: Stephen H. Toub, Emad Omara, John Duffy
  • Publication number: 20110126204
    Abstract: Embodiments described herein are directed to dynamically controlling the number of spins for a selected processing thread among a plurality of processing threads. A computer system tracks both the number of waiting processing threads and each thread's turn, wherein a selected thread's turn comprises the total number of waiting processing threads after the selected thread's arrival at the processor. Next, the computer system determines, based the selected thread's turn, the number of spins that are to occur before the selected thread checks for an available thread lock. The computer system also, based on the selected thread's turn, changes the number of spins, such that the number of spins for the selected thread is a function of the number of waiting processing threads and processors in the computer system.
    Type: Application
    Filed: November 24, 2009
    Publication date: May 26, 2011
    Applicant: MICROSOFT CORPORATION
    Inventors: Emad A. Omara, John J. Duffy
  • Publication number: 20100333107
    Abstract: A method of executing an algorithm in a parallel manner using a plurality of concurrent threads includes generating a lock-free barrier that includes a variable that stores both a total participants count and a current participants count. The total participants count indicates a total number of threads in the plurality of concurrent threads that are participating in a current phase of the algorithm, and the current participants count indicates a total number of threads in the plurality of concurrent threads that have completed the current phase. The barrier blocks the threads that have completed the current phase. The total participants count is dynamically updated during execution of the current phase of the algorithm. The generating, blocking, and dynamically updating are performed by at least one processor.
    Type: Application
    Filed: June 26, 2009
    Publication date: December 30, 2010
    Applicant: Microsoft Corporation
    Inventors: Emad Omara, John Duffy
  • Publication number: 20100250507
    Abstract: An enumerable concurrent data structure referred to as a concurrent bag is provided. The concurrent bag is accessible by concurrent threads and includes a set of local lists configured as a linked list and a dictionary. The dictionary includes an entry for each local list that identifies the thread that created the local list and the location of the local list. Each local list includes a set of data elements configured as a linked list. A global lock on the concurrent bag and local locks on each local list allow operations that involve enumeration to be performed on the concurrent bag.
    Type: Application
    Filed: March 31, 2009
    Publication date: September 30, 2010
    Applicant: Microsoft Corporation
    Inventors: Emad Omara, John J. Duffy