Inventors list

Assignees list

Classification tree browser

Top 100 Inventors

Top 100 Assignees


Isard, CA

Michael Isard, San Francisco, CA US

Patent application numberDescriptionPublished
20100195914SCALABLE NEAR DUPLICATE IMAGE SEARCH WITH GEOMETRIC CONSTRAINTS - Methods are disclosed for finding images from a large corpus of images that at least partially match a query image. The present method makes use of feature detectors to bundle features into local groups or bundles. These bundled features are repeatable and much more discriminative than an individual SIFT feature. Equally importantly, the bundled features provide a flexible representation that allows simple and robust geometric constraints to be efficiently enforced when querying the index.08-05-2010
20100205588GENERAL PURPOSE DISTRIBUTED DATA PARALLEL COMPUTING USING A HIGH LEVEL LANGUAGE - General-purpose distributed data-parallel computing using a high-level language is disclosed. Data parallel portions of a sequential program that is written by a developer in a high-level language are automatically translated into a distributed execution plan. The distributed execution plan is then executed on large compute clusters. Thus, the developer is allowed to write the program using familiar programming constructs in the high level language. Moreover, developers without experience with distributed compute systems are able to take advantage of such systems.08-12-2010
20100312777PARTIAL-MATCHING FOR WEB SEARCHES - An efficient manner of performing an M-out-of-N partial matching search of indexed documents (e.g., web pages) is provided herein. More particularly, indexed words are arranged into a global location space (GLS), providing for respective occurrences of words in indexed documents being searched to have continuous locations on a one-dimensional GLS. Documents within the GLS are separated by end of document word marking boundaries between consecutive documents. The query words are then separated into an active set, comprising the left-most query words, and a non-active set. A partial matching operator transverses the GLS, applying active geometric constraints, in a sequential manner, to words in the active set. This causes shifting of the active set along the GLS to comprise M left-most query words. If a document satisfies constraints associated with M words in an active set, the document comprises at least M-out-of-N words.12-09-2010
20110067030FLOW BASED SCHEDULING - A job scheduler may schedule concurrent distributed jobs in a computer cluster by assigning tasks from the running jobs to compute nodes while balancing fairness with efficiency. Determining which tasks to assign to the compute nodes may be performed using a network flow graph. The weights on at least some of the edges of the graph encode data locality, and the capacities provide constraints that ensure fairness. A min-cost flow technique may be used to perform an assignment of the tasks represented by the network flow graph. Thus, online task scheduling with locality may be mapped onto a network flow graph, which in turn may be used to determine a scheduling assignment using min-cost flow techniques. The costs may encode data locality, fairness, and starvation-freedom.03-17-2011

Patent applications by Michael Isard, San Francisco, CA US

Michael A. Isard, San Francisco, CA US

Patent application numberDescriptionPublished
20090204969TRANSACTIONAL MEMORY WITH DYNAMIC SEPARATION - Strong semantics are provided to programs that are correctly synchronized in their use of transactions by using dynamic separation of objects that are accessed in transactions from those accessed outside transactions. At run-time, operations are performed to identify transitions between these protected and unprotected modes of access. Dynamic separation permits a range of hardware-based and software-based implementations which allow non-conflicting transactions to execute and commit in parallel. A run-time checking tool, analogous to a data-race detector, may be provided to test dynamic separation of transacted data and non-transacted data. Dynamic separation may be used in an asynchronous I/O library.08-13-2009
20090210457TRANSACTIONAL MEMORY WITH DYNAMIC SEPARATION - Strong semantics are provided to programs that are correctly synchronized in their use of transactions by using dynamic separation of objects that are accessed in transactions from those accessed outside transactions. At run-time, operations are performed to identify transitions between these protected and unprotected modes of access. Dynamic separation permits a range of hardware-based and software-based implementations which allow non-conflicting transactions to execute and commit in parallel. A run-time checking tool, analogous to a data-race detector, may be provided to test dynamic separation of transacted data and non-transacted data. Dynamic separation may be used in an asynchronous I/O library.08-20-2009
20100235406OBJECT RECOGNITION AND LIBRARY - An image may be received, a portion of which corresponds to a surface of an object, such as a book, a CD, a DVD, a wine bottle, etc. The portion of the image that corresponds to the surface of the object is located. The portion of the image is compared with previously stored images of surfaces of objects to identify the object. A record of the object is created and added to a library. The record of the object may comprise the image of the object, the portion of the image which corresponds to the surface of the object, and/or the received image itself. The record may comprise an indicator of a location of the object.09-16-2010
20100241827High Level Programming Extensions For Distributed Data Parallel Processing - General-purpose distributed data-parallel computing using high-level computing languages is described. Data parallel portions of a sequential program that is written by a developer in a high-level language are automatically translated into a distributed execution plan. A set of extensions to a sequential high-level computing language are provided to support distributed parallel computations and to facilitate generation and optimization of distributed execution plans. The extensions are fully integrated with the programming language, thereby enabling developers to write sequential language programs using known constructs while providing the ability to invoke the extensions to enable better generation and optimization of the execution plan for a distributed computing environment.09-23-2010
20100241828General Distributed Reduction For Data Parallel Computing - General-purpose distributed data-parallel computing using high-level computing languages is described. Data parallel portions of a sequential program written in a high-level language are automatically translated into a distributed execution plan. Map and reduction computations are automatically added to the plan. Patterns in the sequential program can be automatically identified to trigger map and reduction processing. Direct invocation of map and reduction processing is also provided. One or more portions of the reduce computation are pushed to the map stage and dynamic aggregation is inserted when possible. The system automatically identifies opportunities for partial reductions and aggregation, but also provides a set of extensions in a high-level computing language for the generation and optimization of the distributed execution plan. The extensions include annotations to declare functions suitable for these optimizations.09-23-2010

Patent applications by Michael A. Isard, San Francisco, CA US

Michael Acheson Isard, San Francisco, CA US

Patent application numberDescriptionPublished
20080313645Automatic Mutual Exclusion - An automatic mutual exclusion computer programming system is disclosed which allows a programmer to produce concurrent programming code that is synchronized by default without the need to write any synchronization code. The programmer creates asynchronous methods which are not permitted make changes to shared memory that they cannot reverse, and can execute concurrently with other asynchronous methods. Changes to shared memory are committed if no other thread has accessed shared memory while the asynchronous method executed. Changes are reversed and the asynchronous method is re-executed if another thread has made changes to shared memory. The resulting program executes in a serialized order. A blocking system method is disclosed which causes the asynchronous method to re-execute until the blocking method's predicate results in an appropriate value. A yield system call is disclosed which divides asynchronous methods into atomic fragments. When a yield method call is made, shared memory changes are committed if possible or reversed and the atomic fragment is re-executed.12-18-2008