US7965297B2 - Perfect hashing of variably-sized data - Google Patents
Perfect hashing of variably-sized data Download PDFInfo
- Publication number
- US7965297B2 US7965297B2 US11/763,279 US76327907A US7965297B2 US 7965297 B2 US7965297 B2 US 7965297B2 US 76327907 A US76327907 A US 76327907A US 7965297 B2 US7965297 B2 US 7965297B2
- Authority
- US
- United States
- Prior art keywords
- data
- offset vector
- address
- variable
- offset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related, expires
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1061—Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
- H04L67/1065—Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2264—Multidimensional index structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/58—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/583—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
- G06F16/5862—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content using texture
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
Definitions
- the invention is related to perfect hashing for packing sparsely defined or sparsely distributed data into memory, and in particular, to perfect hashing of variable-rate data of one or more dimensions in an efficient randomly accessible format.
- hashing is a well known technique for mapping data elements into a hash table by using a hash function to process the data for determining an address in the hash table.
- hashing algorithms typically perform a sequence of probes into the hash table, where the number of probes varies per query. These probes provide collision detection by determining whether data has already been stored at a particular address in the hash table.
- time critical applications such as image rendering in a graphics processing unit (GPU)
- GPU SIMD parallelism makes all pixels wait for the worst-case number of probes.
- Some GPUs can address this issue using dynamic branching; however, this is only effective if all pixels in a region follow the same branching path, which is unlikely for hash tests.
- Typical perfect hashing schemes have generally focused on external storage of data records indexed by character strings or sparse integers. Consequently, conventional perfect hashing schemes are generally not well adapted for use with spatially coherent multidimensional data. For example, in typical computer graphics applications, 2D and 3D texture data is often accessed coherently by the GPU (i.e., adjacent or nearby image patches or segments are accessed either sequentially or in parallel by the GPU). This texture data is then swizzled, tiled, cached, etc. by the GPU. Unfortunately, typical hash functions do not generally exploit the spatial coherence issues of such data when accessing that data.
- images such as, for example, vector images or graphics
- image discontinuities such as sharp vector silhouettes are generally present at only a small fraction of pixels.
- Texture sprites often overlay high-resolution features at sparse locations.
- Image attributes such as alpha masks are mainly binary, requiring additional resolution at only a small subset of pixels.
- surface textures or geometries can be also represented as sparse 3D data.
- such data can be encoded using variable rates, such as where various cells of a grid-based vector image have a differing amount of complexity.
- compressing this type of variable-rate sparse data while retaining efficient random-access is a problem that has not been addressed by conventional perfect hashing schemes.
- Spatial hashing is another conventional hashing technique that is commonly used for point and region queries in multidimensional databases. Spatial hashing is also used in graphics for efficient collision detection among moving or deforming objects.
- these techniques generally employ imperfect hashing (e.g., traditional multi-probe hash tables implemented on the CPU). Further, these techniques do not transition to multidimensional tables. Also, they strive to make intermediate hashes as random as possible. Consequently, conventional spatial hashes are not well adapted for use with sparsely defined spatial data such as vector graphics.
- a “Variable-Rate Perfect Hasher,” as described herein, extends the concepts of perfect spatial hashing described in the aforementioned co-pending U.S. patent application Ser. No. 11/405,953 to address the issue of handling variable-sized data elements of one or more dimensions. Consequently, the Variable-Rate Perfect Hasher extends perfect hashing to consider sparsely distributed data records where each sparse data record can have a different size. In other words, the data associated with the sparse data points is variable-sized. This concept is referred to herein as hashing of “variable-rate” or “variable-size” data. Note that in the parent application (U.S. patent application Ser. No.
- the Variable-Rate Perfect Hasher provides a process for densely packing sparse variable-rate data into a perfect hash table. More specifically, the Variable-Rate Perfect Hasher generally operates by creating a hash table in combination with an offset table of one or more dimensions. A perfect hash is created by mapping sparse variable-rate data of one or more dimensions into the hash table using the offset table. Values of entries in the offset table are carefully chosen or optimized such that no hash collisions will occur in the resulting perfect hash table. Note that while the Variable-Rate Perfect Hasher can hash data whether or not that data is sparse, the size of the offset table directly corresponds to the sparsity of the data being hashed. In particular, as the number of data elements increases, the size of the resulting offset table will also increase.
- variable-rate perfect hash is a useful data structure for providing random-access to variable-sized data elements associated with some spatial domain.
- variable-rate data is a sparsely populated grid-based array of data where each populated “cell” of the grid has varying amounts of information.
- 2-D case is to store information about vector graphics within the cells of an image (wherein a grid is used to divide the vector image into a set of grid-based cells).
- a simple example would be to store a variable-length record with a sparse set of integers in a corresponding perfect hash using an offset table.
- Another application is to store image residual information after image compression.
- image compression is generally lossy, such that some information gets lost every time an image is encoded. This loss of detail is generally higher in regions of the image that contain greater levels of detail. Consequently, in one embodiment, rather than losing such data, the Variable-Rate Perfect Hasher encodes these areas of high detail in a sparse residual layer, which is then stored using a variable-rate perfect hash, as described herein.
- the Variable-Rate Perfect Hasher is useful for a large number of applications, including, for example, computer graphics applications involving sparse data, such as sharp image silhouettes, texture sprites, alpha channel compression, 3D-parameterized textures, 3D painting, simulation, collision detection, preserving residual data following image compression, etc.
- the Variable-Rate Perfect Hasher is not intended to be limited to the hashing of image data, and that any type of variable-rate data of any dimensionality can be hashed using the techniques described herein.
- Variable-Rate Perfect Hasher described herein provides a unique system and method for mapping variable-rate data into a hash table using a perfect hash function, and that the resulting hash tables support efficient random access of the variable-sized data elements stored therein.
- other advantages of the Variable-Rate Perfect Hasher will become apparent from the detailed description that follows hereinafter when taken in conjunction with the accompanying drawing figures.
- FIG. 1 is a general system diagram depicting a general-purpose computing device constituting an exemplary system for use in implementing a “Variable-Rate Perfect Hasher,” as described herein.
- FIG. 2 is a general system diagram depicting a general device having simplified computing and I/O capabilities for use in implementing a “Variable-Rate Perfect Hasher,” as described herein.
- FIG. 3 provides an exemplary architectural flow diagram that illustrates program modules for implementing the Variable-Rate Perfect Hasher, as described herein.
- FIG. 4 provides an example of an exemplary hash function for providing a fixed-rate perfect spatial hash.
- FIG. 5 provides an example of an exemplary hash function for providing a fixed-rate perfect spatial hash.
- FIG. 6 illustrates an exemplary vector image comprised of grid-based cells representing sparse variable-rate data being perfectly hashed to a hash table via an offset table computed from the cell data, as described herein.
- FIG. 7 provides an exemplary operational flow diagram for providing efficient random access to a hash table constructed from sparse variable-rate data by the Variable-Rate Perfect Hasher, as described herein.
- FIG. 1 and FIG. 2 illustrate two examples of suitable computing environments on which various embodiments and elements of a “Variable-Rate Perfect Hasher,” as described herein, may be implemented.
- FIG. 1 illustrates an example of a suitable computing system environment 100 on which the invention may be implemented.
- the computing system environment 100 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should the computing environment 100 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment 100 .
- the invention is operational with numerous other general purpose or special purpose computing system environments or configurations.
- Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers, server computers, hand-held, laptop or mobile computer or communications devices such as cell phones and PDA's, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
- the invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer in combination with various hardware modules.
- program modules include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types.
- the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
- program modules may be located in both local and remote computer storage media including memory storage devices.
- an exemplary system for implementing the invention includes a general-purpose computing device in the form of a computer 110 .
- Components of computer 110 may include, but are not limited to, a processing unit 120 , a system memory 130 , and a system bus 121 that couples various system components including the system memory to the processing unit 120 .
- the system bus 121 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
- bus architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus also known as Mezzanine bus.
- Computer 110 typically includes a variety of computer readable media.
- Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile media, removable and non-removable media.
- Computer readable media may comprise computer storage media and communication media.
- Computer storage media includes volatile and nonvolatile removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data.
- Computer storage media includes, but is not limited to, RAM, ROM, PROM, EPROM, EEPROM, flash memory, or other memory technology; CD-ROM, digital versatile disks (DVD), or other optical disk storage; magnetic cassettes, magnetic tape, magnetic disk storage, or other magnetic storage devices; or any other medium which can be used to store the desired information and which can be accessed by computer 110 .
- Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
- modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
- communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
- the system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132 .
- ROM read only memory
- RAM random access memory
- BIOS basic input/output system
- RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120 .
- FIG. 1 illustrates operating system 134 , application programs 135 , other program modules 136 , and program data 137 .
- the computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media.
- FIG. 1 illustrates a hard disk drive 141 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 151 that reads from or writes to a removable, nonvolatile magnetic disk 152 , and an optical disk drive 155 that reads from or writes to a removable, nonvolatile optical disk 156 such as a CD ROM or other optical media.
- removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like.
- the hard disk drive 141 is typically connected to the system bus 121 through a non-removable memory interface such as interface 140
- magnetic disk drive 151 and optical disk drive 155 are typically connected to the system bus 121 by a removable memory interface, such as interface 150 .
- hard disk drive 141 is illustrated as storing operating system 144 , application programs 145 , other program modules 146 , and program data 147 . Note that these components can either be the same as or different from operating system 134 , application programs 135 , other program modules 136 , and program data 137 . Operating system 144 , application programs 145 , other program modules 146 , and program data 147 are given different numbers here to illustrate that, at a minimum, they are different copies.
- a user may enter commands and information into the computer 110 through input devices such as a keyboard 162 and pointing device 161 , commonly referred to as a mouse, trackball, or touch pad.
- Other input devices may include a joystick, game pad, satellite dish, scanner, radio receiver, and a television or broadcast video receiver, or the like. These and other input devices are often connected to the processing unit 120 through a wired or wireless user input interface 160 that is coupled to the system bus 121 , but may be connected by other conventional interface and bus structures, such as, for example, a parallel port, a game port, a universal serial bus (USB), an IEEE 1394 interface, a BluetoothTM wireless interface, an IEEE 802.11 wireless interface, etc.
- the computer 110 may also include a speech or audio input device, such as a microphone or a microphone array 198 , as well as a loudspeaker 197 or other sound output device connected via an audio interface 199 , again including conventional wired or wireless interfaces, such as, for example, parallel, serial, USB, IEEE 1394, BluetoothTM, etc.
- a speech or audio input device such as a microphone or a microphone array 198
- a loudspeaker 197 or other sound output device connected via an audio interface 199 , again including conventional wired or wireless interfaces, such as, for example, parallel, serial, USB, IEEE 1394, BluetoothTM, etc.
- a monitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as a video interface 190 .
- computers may also include other peripheral output devices such as a printer 196 , which may be connected through an output peripheral interface 195 .
- the computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180 .
- the remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device, or other common network node, and typically includes many or all of the elements described above relative to the computer 110 , although only a memory storage device 181 has been illustrated in FIG. 1 .
- the logical connections depicted in FIG. 1 include a local area network (LAN) 171 and a wide area network (WAN) 173 , but may also include other networks.
- LAN local area network
- WAN wide area network
- Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.
- the computer 110 When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170 .
- the computer 110 When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173 , such as the Internet.
- the modem 172 which may be internal or external, may be connected to the system bus 121 via the user input interface 160 , or other appropriate mechanism.
- program modules depicted relative to the computer 110 may be stored in the remote memory storage device.
- FIG. 1 illustrates remote application programs 185 as residing on memory device 181 . It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
- FIG. 2 shows a general system diagram showing a simplified computing device.
- Such computing devices can be typically be found in devices having at least some minimum computational capability in combination with a communications interface or input device for receiving variable-rate data, such as, for example, vector graphic images.
- Such devices include, for example, cell phones, PDA's, media players, handheld, laptop or portable computers, handheld or portable electronic gaming devices, etc.
- any boxes that are represented by broken or dashed lines in FIG. 2 represent alternate embodiments of the simplified computing device, and that any or all of these alternate embodiments, as described below, may be used in combination with other alternate embodiments that are described throughout this document.
- this simplified computing device may also include an output device.
- processing unit(s) 210 may also include a graphics processing unit (GPU) 290 for use in accelerating the perfect hashing techniques described herein.
- GPU graphics processing unit
- the processing unit(s) 210 illustrated in FIG. 2 may be specialized (and inexpensive) microprocessors, such as a DSP, a VLIW, or other micro-controller rather than the general-purpose processor unit of a PC-type computer or the like, as described above.
- the simplified computing device of FIG. 2 may also include other components, such as, for example one or more input devices 240 (analogous to the input devices described with respect to FIG. 1 ).
- the simplified computing device of FIG. 2 may also include other optional components, such as, for example one or more output devices 250 (analogous to the output devices described with respect to FIG. 1 ).
- the simplified computing device of FIG. 2 also includes storage 260 that is either removable 270 and/or non-removable 280 (analogous to the storage devices described above with respect to FIG. 1 ).
- Perfect hashing is a concept that is known to those skilled in the art.
- a perfect hash usually refers to a hash function that maps elements into a hash table without any collisions. Generally, all the elements map to distinct slots of the hash table.
- the probability that randomly assigning n elements in a table of size m results in a perfect hash is given by Equation 1, where:
- Equation 2 the probability of a perfect hash, p ph , can be determined by using the approximation e x ⁇ 1+x for small x, as illustrated by Equation 2, where:
- Equation 4 which uses Stirling's approximation: log n! ⁇ n log n ⁇ n. Therefore, the expected number of bits needed to describe these rare minimal perfect hash functions is given intuitively by Equation 4, where:
- functions h 0 , h 1 , and h 2 map string keys k to m , r , and r , respectively, and where g 1 and g 2 are two tables of size r.
- Another conventional approach to perfect hashing involves adapting the hashing scheme described with respect to Equation 5 to create provide a hashing scheme that provides generally acceptable average-case performance ( ⁇ 11n bits) on large datasets.
- the insight provided to enable this scheme is assign values of auxiliary tables g 1 and g 2 in decreasing order of number of dependencies.
- a closely related approach provides a hashing scheme that uses quadratic hashing and adds branching based on a table of binary values. This scheme is generally more efficient in that it achieves ⁇ 4n bits for datasets on the order of size n ⁇ 10 6 .
- h 0 and h 1 are both imperfect hashes that are combined using an offset table ⁇ .
- the role of the offset table, ⁇ is to “jitter” the imperfect hash function h 0 into a perfect one.
- the offset table uses additional memory, it is significantly smaller than the data itself (e.g., it typically has only around 15-25% as many entries as the hash table itself).
- this technique can be implemented within various types of processors, such as, for example a programmable GPU, where this format for defining a perfect hash allows data access using just one additional texture access plus approximately 4-6 more shader instructions depending on the application scenario.
- the perfect spatial hashing enabled with respect to Equation 6 instead designs these hash functions to be spatially coherent, resulting in efficient access into the offset table ⁇ , and enabling random access into the resulting hash table. Furthermore, this perfect hashing optimizes the offset values in ⁇ to maximize spatial coherence of the hash table itself. Creating a perfect hash is typically a difficult combinatorial problem. However, there are enough degrees of available freedom to improve overall spatial coherence and thereby increase runtime hashing performance.
- variable-rate data i.e., perfect hashing of variable-sized data elements
- variable-Rate Perfect Hasher described herein operates to pack variable rate (i.e., non-uniform) sparse data into a memory structure such as a table or memory buffer.
- this data packing is achieved using a variable-rate perfect hash technique that uses an offset table constructed from the positions or addresses of the data being hashed to provide faster hashing (no need for collision checking).
- Hash table addresses are computed for hashing each variable-rate data element based on parameters of each data element and a corresponding offset vector stored in the offset table.
- the techniques described herein also provide quicker access to specific spatial regions of the encoded data since that data can be encoded in contiguous regions of memory (i.e., the hash table) that are randomly accessible.
- the data elements or records being hashed by the Variable-Rate Perfect Hasher are variable-sized and therefore stored as variable length strips or strings in the resulting hash table.
- conventional perfect hashing techniques operate on the assumption that data elements or records being hashed are represented by the same number of bits.
- data elements can have variable-lengths representing varying levels of complexity or information. Consequently, in contrast to conventional hashing techniques, the Variable-Rate Perfect Hasher considers this variable length to develop a unique data structure for packing the data into memory using a technique referred to herein as “variable-rate perfect hashing.”
- each hashed data element will occupy one or more contiguous storage elements in the hash table.
- a hashed data element might take the form of a “strip” or “string” covering one or more contiguous storage elements of the hash table (and possibly wrapping across one or more rows of storage elements). This data strip would begin at the computed hash table address and continue across as many contiguous elements of the hash table as necessary to encompass the entirety of the variable-rate data element being hashed.
- hashed data elements will generally be referred to herein as a “data strip” or “data string” or simply as encompassing a contiguous block of storage elements within the hash table.
- the Variable Rate Perfect Hasher is capable of hashing any type of sparsely defined variable-rate data.
- One simple example of this type of variable-rate data is a sparsely populated grid-based array of data where each populated “cell” of the grid has varying amounts of information.
- a “cell” of the grid has a known address or location that is used both in constructing the offset table used in hashing the data, and in providing random access to the corresponding data in the hash table.
- the Variable-Rate Perfect Hasher is not intended to be limited to the hashing of grid-based data cells, and that any type of variable-rate data can be hashed using the techniques described herein.
- FIG. 3 illustrates the interrelationships between program modules for implementing the Variable-Rate Perfect Hasher, as described herein. It should be noted that any boxes and interconnections between boxes that are represented by broken or dashed lines in FIG. 3 represent alternate embodiments of the Variable-Rate Perfect Hasher described herein, and that any or all of these alternate embodiments, as described below, may be used in combination with other alternate embodiments that are described throughout this document.
- the Variable-Rate Perfect Hasher begins operation by receiving a set of sparse variable-rate data elements 300 .
- the data being hashed does not need to be sparse, but that the size of the offset table will increase as the data elements become less sparse.
- these data elements 300 will be described with respect to a sparsely populated grid-based array of data where each populated “cell” of the grid has varying amounts of information.
- An example of this type of data includes a vector image where each cell of the image represents a “domain point” that includes either no data, or some varying amount of data or information, depending upon the complexity of the cell.
- each of these data elements 300 can be considered as a strip of data having a length determined by the variable amount of data in the corresponding cell, where the size of the strip is equal to the size of data in that cell.
- the offset table construction module 310 examines each data element 300 in combination with the address or location of that data element in the domain of data elements, and uses that information to determine an offset vector to be assigned to a corresponding entry in an offset table 330 . As described in greater detail in Section 3, these offset vectors are assigned to an entry in the offset table 330 such that while two or more data elements may map to the same offset vector, there are still no collisions in the resulting hash table 350 .
- the hash table 350 is necessarily as large as the number of data elements 300 defined in the domain since it must contain all of those data elements.
- the offset table 330 is smaller than the number of data elements since it is allowable to have two or more of those data elements mapping to the same offset vector.
- assigning an offset vector in the offset table 330 has the effect of displacing/translating the hash addresses of one or more data elements in the resulting hash table 350 .
- the purpose of the offset vector assignments is to have all data elements 300 map to unique hash addresses in the hash table 350 even if those data elements have the same offset vectors in the offset table 330 .
- the offset table construction module 310 uses a perfect spatial hash function that considers all possible offset vectors (starting from a random one) for packing the variable sized data elements or records into memory until finding an offset vector that does not create any hash collisions.
- a hash table construction module 340 then assigns the data strips corresponding to each data element 300 to an address in the hash table 350 computed as a joint function of the corresponding offset vector and a hash of that data element.
- the offset table construction module 310 first determines the sum of the data strip sizes (assuming one or more data elements 300 mapping to the same offset vector) for all of the data elements 300 (i.e., the domain points) mapping to a particular offset table entry. Then, the sum of data strips sizes is used to determine the order in which offset vector entries are evaluated for determining hash table addresses. Specifically, the offset vectors entries are evaluated in order of decreasing sum of data strip sizes for the data elements 300 associated with each particular offset vector entry. Then, using this sum-based evaluation order, for each selected offset vector entry, the offset table construction module 310 searches over all possible offset vector value assignments until finding one that results in zero collisions with data placed so far in the hash table 340 .
- an offset table size module 320 resets offset table construction to the beginning using a larger offset table size, with the processes described above then being repeated until successful construction of the complete offset table 330 and the corresponding perfect hash table 350 . Note that these processes are guaranteed to terminate if the offset table becomes large enough, since at some size (depending upon the size of the data domain) each offset table entry would only reference a single domain point.
- a mask construction module 360 checks each point in the domain to determine whether the corresponding data element contains any data.
- a simple mask 370 is then created by the mask construction module to identify those domain points containing data (or conversely, those domain points that do not contain data). For example, in one embodiment, a single bit (i.e., “0” or “1”) is assigned to every domain point to indicate whether that domain point contains any data.
- the mask 370 is consulted for each point to ensure that only those domain points having data are assigned offset vectors in the offset table and hashed to the hash table. Note that as described in further detail in section 3.6 with respect to FIG. 7 , the main benefit of using a mask is to improve runtime access times for evaluating or retrieving data from the hash table 350 .
- this mask 370 can then be used when randomly accessing data in the hash table 350 . For example, in one embodiment, whenever data for a particular domain point is requested, the mask 370 is first checked to determine whether there is actually any data for the selected domain point. If the mask 370 indicates that a particular domain point does not contain any data, then no further processing of that domain point needs to be performed. On the other hand, if the mask indicates that there is data for the selected domain point, then the hash table 350 will be consulted to retrieve the corresponding data.
- the above-described program modules are employed for implementing the Variable-Rate Perfect Hasher.
- the Variable-Rate Perfect Hasher operates to pack or hash variable-rate spatially coherent data into a memory structure such as a table or memory buffer in a randomly accessible format by using an offset table constructed from the data being hashed in combination with a hash function that together provide perfect hashing of the variable rate data.
- the following sections provide a detailed discussion of the operation of the Variable-Rate Perfect Hasher, and of exemplary methods for implementing the program modules described in Section 2 with respect to FIG. 3 .
- FIG. 4 and FIG. 5 illustrate exemplary hash functions for providing a fixed-rate perfect spatial hash.
- FIG. 4 illustrates an exemplary hash function 400 having a spatial domain 402 comprising a set of sparse spatially coherent variable rate data elements or cells, a hash table 404 , and an offset table 406 .
- the sparse data consists of a subset S ⁇ U of n grid positions, where each position p ⁇ S has associated data record D(p).
- the map h 0 : p ⁇ M 0 p mod( m ) from domain U 302 onto hash table H 302 is a simple linear transform with a d ⁇ d matrix M 0 , modulo the table size.
- map h 1 p ⁇ M 1 p mod( r ) from domain U 302 onto the offset table ⁇ 406 is similarly defined.
- M 0 and M 1 can be arbitrary matrices.
- identity matrices it has been observed that the above-described perfect hash behaves well even when M 0 and M 1 are set to be identity matrices.
- identity matrices it has been observed that the above-described perfect hash behaves well even when M 0 and M 1 are set to be identity matrices.
- identity matrices is not a requirement, one advantage of having the matrices be identity is that the runtime computations for evaluating hash table entries (see Section 3.6 and discussion of FIG. 7 ) is simplified. Assuming that the hash coefficients M 0 and M 1 are identity matrices, h 0 and h 1 correspond to modulo operations.
- all modulo operations are performed per-coordinate on vectors. Therefore, one strategy is to let the hash table 404 be as compact as possible to contain the given data, and then to construct the offset table 406 to be as small as possible while still allowing a perfect hash function.
- the hash table can be any dimensionality, d, that is desired.
- a size, r is selected for the offset table size.
- the size of r is selected to be as small as possible while still permitting a perfect hash. Note that larger sizes of r can be used; however the use of larger sizes will increase memory requirements.
- the size of r can selected in several ways.
- a value of r is selected based on whether the speed of hash construction is important for a particular application.
- a binary search over r is performed to determine the smallest size. Because construction of the offset table is greedy and probabilistic, finding a perfect hash for a given offset table size r may require several attempts, particularly if r is close to optimal. In a tested embodiment, the number of binary search attempts is limited to a relatively small number on the order of about 5, in order to improve performance of hash table construction. In each case, the search attempts are made using different random seeds.
- hash construction is less effective if r has a common factor with m , or if ( m mod r ) ⁇ 1, r ⁇ 1 ⁇ . Consequently, in one embodiment, the fast table construction embodiment automatically skips any offset table sizes for r that fall into this range. Similarly, with respect to the compact table construction embodiment, the binary search is adapted to avoid values of r in this range unless at the lower end of the range.
- the hash coefficient matrices M 0 and M 1 , for hash functions h 0 and h 1 , respectively, are filled with random prime coefficients. However, better hashing performance is achieved by making these matrices more regular.
- the functions h 0 and h 1 simply wrap the spatial domain multiple times over the offset and hash tables, moving over domain points and table entries in lockstep.
- the offset table access ⁇ [h 1 (p)] is perfectly coherent.
- h 0 (p) is also coherent
- the hash table access H[h(p)] is generally not coherent because it is jittered by the offsets.
- adjacent offset values in ⁇ are the same (e.g., if the offset table is locally constant), then h itself will also be coherent. See Section 3.3.4 for additional discussion regarding these coherence issues.
- h 0 and h 1 must map the defined data to distinct pairs.
- p ⁇ S ⁇ (h 0 (p),h 1 (p)) must be injective.
- the perfect spatial hashing described herein does not involve selecting h 0 and h 1 to be random functions.
- r is typically large enough that this is always true. Consequently, it is not strictly necessary to explicitly test for injectivity.
- FIG. 5 illustrates the effect on the hash function of changing one offset value in the offset table.
- FIG. 5 illustrates a hash function environment 500 having a spatial domain 502 comprising a set of sparse spatially coherent variable rate data elements or cells, a hash table 504 , and an offset table 506 .
- the assignment of the offset vector ⁇ [q] (also referred to herein as an “offset value”) determines a uniform translation of these points within the hash table 504 .
- the general idea here is to find a hash assignment that does not collide with other points already hashed into the table 404 .
- Offset values are assigned using a “greedy” approach according to this heuristic order (e.g., computed efficiently using a bucket sort).
- the space of offset values is min( m /256) d ⁇ m /255 ⁇ .
- the offset entries considered are those with exactly one dependent point, such as
- h 1 ⁇ 1 (q) 1.
- offset values are identified that direct these sole points to any open hash slots.
- variable-rate data (as discussed in further detail in Section 3.5)
- the additional constraint is that not only the start address h(p) in the hash table must be unique for each data element, but the (variable-length) strips for the data elements cannot overlap each other.
- N H (s 1 , s 2 ) is similarly defined for slots in H. Given these parameters, N H is maximized as illustrated by Equation 10, where:
- N H ⁇ p 1 , p 2
- N H ⁇ ( h ⁇ ( p 1 ) , h ⁇ ( p 2 ) ) 1 ⁇ N S ⁇ ( p 1 , p 2 ) Equation ⁇ ⁇ 10
- the hash table generally stores data associated with a sparse subset of the overall domain. Depending on the application, it may be necessary to determine if an arbitrary query point lies in this defined subset. In other words, since the data is sparse, some arbitrary data points within the overall domain may not contain any data. Consequently, as noted above, in various embodiments, when an arbitrary point within the domain is selected for random access (either by a user, or automatically) the Variable-Rate Perfect Hasher first determines whether that particular point includes any data.
- Some data access scenarios such as 3D-parameterized surface textures, guarantee that only the defined subset of the domain (i.e., points having data) will ever be accessed. In this case, it is not necessary for the Variable-Rate Perfect Hasher to determine whether a selected point has data before attempting to retrieve that data from the hash table.
- a binary image i.e., the aforementioned “mask,” see FIG. 3 , for example
- a dynamic branch can be performed in the shader of the GPU based on the stored mask bit, to completely bypass the hash function evaluations and texture reads ( ⁇ , H) for any undefined pixels.
- the above described mask-based embodiment can still be enabled by packing each 4 ⁇ 2 block of domain bits into one pixel of an 8-bit luminance image. Then, to dereference the bit, a lookup is performed in a corresponding 4 ⁇ 2 ⁇ 256 texture.
- a related embodiment operates to hide domain bits within this image for one or more points of the domain.
- data can be included as the least-significant bit of a color or alpha channel, or in some other location where it will not change modify other data.
- This use of a hidden bit is convenient to indicate the presence of sparse supplemental data beyond that in the normal image.
- image compression is generally lossy, such that some information gets lost every time an image is encoded. This loss of detail is generally higher in regions of the image that contain greater levels of detail.
- the Variable-Rate Perfect Hasher encodes these areas of high detail in a sparse residual layer, which is then stored using a variable-rate perfect hash, as described herein. Then, when decoding or rendering that image, the bits hidden in the image indicate whether the stored residual information is to be used for a particular point in the image.
- a “point” here does not necessarily refer to an individual pixel, and that as described above, a “point” within the overall domain simply represents some region or subset of the overall domain. Therefore, in the case of an image, a “point” in the domain can represent one or more pixels, depending upon a level of zoom and a size of the image and the cells or points in the domain.
- the Variable-Rate Perfect Hasher includes a tag in each slot of the hash table to identify the domain position ⁇ circumflex over (p) ⁇ of the stored data. Then, given a query point, the Variable-Rate Perfect Hasher can then simply compare it with the stored tag.
- Such position tags are more concise than a domain bit image if d ⁇ 16 ⁇ m ⁇ 1 ⁇ u, or equivalently, if the data density n/u ⁇ 1/(16d).
- various embodiments of the Variable-Rate Perfect Hasher can be implemented within a programmable graphics processing unit (GPU) which is designed for fast access to array-based data.
- GPU programmable graphics processing unit
- arrays with integer coordinates e.g., 0, 1, . . . , m ⁇ 1
- integer values e.g., 0, 1, . . . , m ⁇ 1
- these arrays can be implemented in the form of 2D or 3D textures with normalized coordinates
- HLSL high-level shading language
- variable-rate data i.e., data elements having variable sizes.
- several of the above described processes are modified, as described in further detail below, to enable the Variable-Rate Perfect Hasher to handle such data. It should be noted that extending these capabilities to address variable-rate data also enables each of the additional fixed-rate embodiments described above to be performed using variable-rate data.
- the hash function is again defined using an offset table.
- the location of the hashed data elements within the hash table are determined by adding the original cell position of the variable rate-data element to an offset vector retrieved from the offset table.
- both the first access to the offset table and the subsequent access into the hash table are performed using modulo addressing (also referred to as “wraparound addressing”), as described herein.
- the Variable-Rate Perfect Hasher assigns an offset vector, ⁇ [q], such that the hashed data elements for the domain points that map to that offset table entry do not collide with hashed data elements for any other domain point.
- a greedy heuristic algorithm operated to assign offset vectors in order of decreasing number of dependencies.
- offset table entries onto which the most domain points mapped for the fixed-rate data case were identified and assigned those offset vectors first.
- this general strategy is extended to variable-rate data by instead considering the sum of the data record sizes for the domain points mapping to a particular offset table entry.
- the Variable-Rate Perfect Hasher searches over all possible offset vector value assignments until finding one that results in zero collisions with data placed so far in the hash table. If no valid offset vector value is found, then the process is aborted, and a larger offset table size is used in repeating the search for offset vector value assignments, and so on until no collisions occur.
- the construction of the offset table ⁇ uses a heuristic strategy wherein offset vectors ⁇ [q] are assigned in order of decreasing number of dependent data elements. Then, rather than counting the number
- of dependent data records, where h 1 (p) p mod( r ), the Variable-Rate Perfect Hasher instead counts the total data size ⁇ p ⁇ h 1 ⁇ 1 (q) e(p) of the dependent records, with that size then being used in construction of the offset table. In particular as noted above, two or more data elements may map to the same offset vector.
- the sum of the data strip sizes (assuming one or more data elements map to the same offset vector) is used to determine the order in which offset vector entries are evaluated for determining hash table addresses. Specifically, as noted above, the offset vectors entries are evaluated in order of decreasing sum of data strip sizes for the data elements associated with each particular offset vector entry.
- the Variable-Rate Perfect Hasher considers all possible offset vectors (starting from a random one) until finding one that does not create any hash collisions.
- spatial coherence of the data elements is considered by attempting to place hashed data strips adjacent to each other by first performing the traversal until finding an invalid offset vector (i.e., one resulting in a collision) and then looking for the first (and thus closest) valid offset vector.
- each data record is encoded in the data itself, so the data structure need to explicitly store
- can be encoded in the hashed data string so that data size can be explicitly read from that data.
- this embodiment will require some small amount of additional data to be included in the hashed data strings.
- n is simply a count of the total number of cells in the sparse domain that have some non-zero data.
- r and m are the sizes of the offset table, ⁇ , and the hash table, h, respectively.
- the size, r, of the offset table for use with variable rate data is proportional to the number of cells, n, in the sparse domain having non-zero data.
- the size, m, of the hash table is approximately equal to, but never less than, the total size, E, of the non-zero data records.
- each data record is stored as a strip, e(p), of some variable length, within the 2D hash table.
- the perfect hash function points to the beginning of the strip.
- offset vector values, ⁇ [q] are assigned in order of decreasing number of “dependencies”.
- Equation 17 illustrates a definition of the strip address range as a function of strip length in the hash table for a 2D case, where:
- hash construction is less effective if r has a common factor with m , or if ( m mod r ) ⁇ 1, r ⁇ 1 ⁇ .
- the Variable-Rate Perfect Hasher uses a domain bit array to encode which cells contain no data (as with the aforementioned mask-based embodiment).
- cells having no data are simply encoded in the hash table by entering a data string corresponding to a fully transparent color into the hash table, with a low-resolution color image being used to predict constant-color cells.
- FIG. 6 illustrates an example of 2-D variable rate data being perfectly hashed to a hash table via an offset table.
- FIG. 6 illustrates a vector image 600 divided into a grid of cells have a differing amount of complexity in each cell.
- an offset table 620 address 630 is determined, as described above, with an offset vector being computed and stored at that offset table address. Then, this offset table vector 630 is used in combination with the address of the cell 610 to determine a corresponding hash table 640 address 650 for storing the hashed data from the cell 610 of the vector image 600 .
- FIG. 7 provides an exemplary flow diagram that illustrates efficient random access of hashed variable-rate data. It should be noted that any boxes that are represented by broken or dashed lines in FIG. 7 represent alternate embodiments of the simplified computing device, and that any or all of these alternate embodiments, as described below, may be used in combination with other alternate embodiments that are described throughout this document.
- random access to the hashed variable-rate data begins be either manually or automatically selecting 700 a cell or range of cells of the data domain for which the corresponding data is to be retrieved from the hash table. Note that this selection 700 is made by selecting a location or address of particular cells or data elements, since this location or address is used in hashing the data as described above.
- the Variable-Rate Perfect Hasher first checks the mask 370 , to determine 710 whether the selected cell has any data. If the mask 370 indicates that the selected cell does not have any data, then the process terminates, and the Variable-Rate Perfect Hasher informs the calling application that the selected cell is undefined (i.e., that it has no data).
- the Variable-Rate Perfect Hasher determines 720 the corresponding offset table 330 address directly from the address of the selected cell. As described above, this address is determined using a wraparound (i.e., modulo) addressing technique.
- the Variable-Rate Perfect Hasher Given the offset table 330 address for the selected cell, the Variable-Rate Perfect Hasher then simply retrieves 730 the corresponding offset vector from the offset table. This offset vector is then added to the address of the selected cell, again using a wraparound (i.e., modulo) addressing technique to recover 740 the corresponding hash table 350 address.
- a wraparound i.e., modulo
- the Variable-Rate Perfect Hasher then simply retrieves 750 the data string corresponding to the selected cell from the hash table.
- these strings are either self terminating or otherwise include a length such that the Variable-Rate Perfect Hasher knows when to stop reading data for the selected cell. This is an important issue since the data records are variable sized, resulting in the variable length strings described above.
- Variable-Rate Perfect Hasher checks 760 to determine whether there are any more selected cells for which data is to be retrieved, and if not, the process terminates. On the other hand, if more cells have been selected 700 , then the above described random access processes described above are simply repeated for each selected cell.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Library & Information Science (AREA)
- Software Systems (AREA)
- Power Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
which uses Stirling's approximation: log n!≅n log n−n. Therefore, the expected number of bits needed to describe these rare minimal perfect hash functions is given intuitively by Equation 4, where:
h(k)=h 0(k)+g 1[(h 1(k)]+g 2[(h 2(k)]mod(
where functions h0, h1, and h2 map string keys k to m, r, and r, respectively, and where g1 and g2 are two tables of size r. However, this algorithm takes expected time O(r4), and is generally considered to be practical only up to n=512 elements.
h(p)=h 0(p)+Φh 1(p) Equation 6
the sparse data consists of a subset S⊂U of n grid positions, where each position pεS has associated data record D(p). Thus, the data density is the fraction=n/u. For datasets of co-dimension 1, such as curves in 2D or surfaces in 3D, ρ can be typically be approximated as ρ=1/ū.
-
- 1. The hash table,
H 404, is a d-dimensional array of size m=m d≧n containing the data records D(p), pεS; and - 2. The perfect hash function h(p): U→H is an injective map when restricted to S, mapping each position pεS to a unique slot s=h(p) in the hash table.
- 1. The hash table,
h(p)=(h 0(p)+Φ[h 1(p)mod
In this example, the offset
-
- 1. h(p) is a perfect hash function for domain points p;
- 2. The offset table, Φ, and the hash table, H, are as compact as possible; and
- 3. All accesses to the offset table, Φ[h1(p)], and the hash table H[h(p)], have good spatial coherence with respect to the corresponding domain point, p.
p ph ≅e −n
This probability, pph is typically a fairly low probability, e.g., only about 12% for σ=r/n=0.25. For this reason, conventional perfect hashing schemes often resort to additional tables and hash functions to improve the probability of a perfect hash.
∀pεh 1 −1(q), H[h 0(p)Φ[q]]=undef Equation 9
-
- 1. First, try setting the offset value, Φ[q], to be equal to one stored in a neighboring entry of the offset table, because the hash function is coherent if the offset table is locally constant, as illustrated by Equation 12, where:
Φ[q]ε{Φ[q′]|∥q−q′∥<2} Equation 12 - 2. For each point pεh1 −1(q) associated with q, the domain-neighboring entries p′εS are examined. If a neighbor p′ is already assigned in the table H, the table is evaluated to see if any immediately neighboring slot in H is free, and if so, the offset, Φ[q], that would place point p in that free slot is tested, as illustrated by Equation 13, where:
Φ[q]ε{h[p′]+Δ−h 0(p)|pεh 1 −1(q), p′εS, N S(p, p′)=1, h(p′)≠undef, ∥Δ∥=1, H[h(p′)+Δ]=undef} Equation 13
- 1. First, try setting the offset value, Φ[q], to be equal to one stored in a neighboring entry of the offset table, because the hash function is coherent if the offset table is locally constant, as illustrated by Equation 12, where:
and normalized colors
TABLE 1 |
Pseudo-Code for Hashing in a GPU |
static const int d=2; // spatial dimensions (2 or 3) | ||
typedef vector<float,d> point; | ||
#define tex(s,p) (d==2 ? tex2D(s,p) : tex3D(s,p)) | ||
sampler SOffset, SHData; // tables Φ and H. | ||
matrix<float,d,d> M[2]; // M0, M1 prescaled by 1/ |
||
respectively. | ||
point ComputeHash(point p) { // evaluates h(p) → [0, 1]d | ||
point h0 = mul(M[0],p); | ||
point h1 = mul(M[1],p); | ||
point offset = tex(SOffset, h1) * oscale; // (* ┌ |
||
return h0 + offset; } | ||
float4 HashedTexture(point pf) : COLOR { | ||
// pf is prescaled into range [0, ū] of space U | ||
point h = ComputeHash(floor(pf)); | ||
return tex(SHData, h); } | ||
h(p)=(p+Φ[p mod(
where
E=Σ p |e(p) Equation 15
n=Σ p,|e(p)>01 Equation 16
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/763,279 US7965297B2 (en) | 2006-04-17 | 2007-06-14 | Perfect hashing of variably-sized data |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/405,953 US7619623B2 (en) | 2006-04-17 | 2006-04-17 | Perfect multidimensional spatial hashing |
US11/763,279 US7965297B2 (en) | 2006-04-17 | 2007-06-14 | Perfect hashing of variably-sized data |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/405,953 Continuation-In-Part US7619623B2 (en) | 2006-04-17 | 2006-04-17 | Perfect multidimensional spatial hashing |
Publications (2)
Publication Number | Publication Date |
---|---|
US20070245119A1 US20070245119A1 (en) | 2007-10-18 |
US7965297B2 true US7965297B2 (en) | 2011-06-21 |
Family
ID=46328040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/763,279 Expired - Fee Related US7965297B2 (en) | 2006-04-17 | 2007-06-14 | Perfect hashing of variably-sized data |
Country Status (1)
Country | Link |
---|---|
US (1) | US7965297B2 (en) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100211573A1 (en) * | 2009-02-16 | 2010-08-19 | Fujitsu Limited | Information processing unit and information processing system |
US20130207972A1 (en) * | 2011-02-04 | 2013-08-15 | Chiou Yeong Wu | Generation of Landmark Architecture and sculpture based on Chinese Characters |
US8923763B2 (en) | 2012-02-28 | 2014-12-30 | Qualcomm Incorporated | Methods and apparatuses for reducing the nonvolatile memory used to support application identifier routing in an NFC controller |
US9449579B2 (en) | 2013-03-08 | 2016-09-20 | Qualcomm Incorporated | Systems and methods for mapping color data |
US10417813B2 (en) | 2016-12-05 | 2019-09-17 | Nvidia Corporation | System and method for generating temporally stable hashed values |
US10592158B1 (en) * | 2018-10-30 | 2020-03-17 | EMC IP Holding Company LLC | Method and system for transferring data to a target storage system using perfect hash functions |
US10713217B2 (en) | 2018-10-30 | 2020-07-14 | EMC IP Holding Company LLC | Method and system to managing persistent storage using perfect hashing |
US12038883B2 (en) | 2022-06-16 | 2024-07-16 | Red Hat, Inc. | Distributed Storage System with machine learning model for selecting a hash function to map a data item to a storage device |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8478755B2 (en) | 2006-04-20 | 2013-07-02 | Microsoft Corporation | Sorting large data sets |
US7441092B2 (en) * | 2006-04-20 | 2008-10-21 | Microsoft Corporation | Multi-client cluster-based backup and restore |
US8776191B2 (en) * | 2008-01-25 | 2014-07-08 | Novell Intellectual Property Holdings, Inc. | Techniques for reducing storage space and detecting corruption in hash-based application |
US8108401B2 (en) * | 2008-03-28 | 2012-01-31 | International Business Machines Corporation | Applying various hash methods used in conjunction with a query with a group by clause |
US20090326888A1 (en) * | 2008-06-30 | 2009-12-31 | Bader Aleksey A | Vectorized parallel collision detection pipeline |
US8387003B2 (en) * | 2009-10-27 | 2013-02-26 | Oracle America, Inc. | Pluperfect hashing |
US8965866B2 (en) * | 2009-12-17 | 2015-02-24 | Business Objects Software Limited | Optimizing data transfer time on graphics processor units |
US20110179090A1 (en) * | 2010-01-21 | 2011-07-21 | Siemens Product Lifecycle Management Software Inc. | Product Lifecycle Management Using a Sparsely Populated Table |
US8442988B2 (en) | 2010-11-04 | 2013-05-14 | International Business Machines Corporation | Adaptive cell-specific dictionaries for frequency-partitioned multi-dimensional data |
US8271462B2 (en) * | 2010-12-10 | 2012-09-18 | Inventec Corporation | Method for creating a index of the data blocks |
DE102010062908B4 (en) * | 2010-12-13 | 2012-10-31 | Siemens Aktiengesellschaft | Method for parameterizing a device, parameterizable device and Parameterisationvorrtchtung |
US9378560B2 (en) | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US9830288B2 (en) * | 2011-12-19 | 2017-11-28 | Nvidia Corporation | System and method for transmitting graphics rendered on a primary computer to a secondary computer |
US8983198B2 (en) | 2012-03-22 | 2015-03-17 | The Charles Stark Draper Laboratory, Inc. | Compressive sensing with local geometric features |
US9613285B2 (en) | 2012-03-22 | 2017-04-04 | The Charles Stark Draper Laboratory, Inc. | Compressive sensing with local geometric features |
US9679530B2 (en) | 2012-04-30 | 2017-06-13 | Nvidia Corporation | Compressing graphics data rendered on a primary computer for transmission to a remote computer |
US8745013B2 (en) * | 2012-05-19 | 2014-06-03 | International Business Machines Corporation | Computer interface system |
US11126418B2 (en) * | 2012-10-11 | 2021-09-21 | Mcafee, Llc | Efficient shared image deployment |
US9251762B2 (en) * | 2012-12-19 | 2016-02-02 | Microsoft Technology Licensing, Llc. | Runtime transformation of images to match a user interface theme |
US9311359B2 (en) | 2013-01-30 | 2016-04-12 | International Business Machines Corporation | Join operation partitioning |
US9317548B2 (en) | 2013-01-30 | 2016-04-19 | International Business Machines Corporation | Reducing collisions within a hash table |
US9471710B2 (en) | 2013-06-14 | 2016-10-18 | International Business Machines Corporation | On-the-fly encoding method for efficient grouping and aggregation |
US9367556B2 (en) | 2013-06-14 | 2016-06-14 | International Business Machines Corporation | Hashing scheme using compact array tables |
US9256631B2 (en) * | 2013-07-31 | 2016-02-09 | Oracle International Corporation | Building a hash table using vectorized instructions |
US9659046B2 (en) | 2013-07-31 | 2017-05-23 | Oracle Inernational Corporation | Probing a hash table using vectorized instructions |
US10169909B2 (en) * | 2014-08-07 | 2019-01-01 | Pixar | Generating a volumetric projection for an object |
US9672248B2 (en) | 2014-10-08 | 2017-06-06 | International Business Machines Corporation | Embracing and exploiting data skew during a join or groupby |
US10402414B2 (en) * | 2015-01-30 | 2019-09-03 | Nec Corporation | Scalable system and method for weighted similarity estimation in massive datasets revealed in a streaming fashion |
US10410398B2 (en) * | 2015-02-20 | 2019-09-10 | Qualcomm Incorporated | Systems and methods for reducing memory bandwidth using low quality tiles |
US10303791B2 (en) | 2015-03-20 | 2019-05-28 | International Business Machines Corporation | Efficient join on dynamically compressed inner for improved fit into cache hierarchy |
US9922064B2 (en) | 2015-03-20 | 2018-03-20 | International Business Machines Corporation | Parallel build of non-partitioned join hash tables and non-enforced N:1 join hash tables |
US10650011B2 (en) | 2015-03-20 | 2020-05-12 | International Business Machines Corporation | Efficient performance of insert and point query operations in a column store |
US10108653B2 (en) | 2015-03-27 | 2018-10-23 | International Business Machines Corporation | Concurrent reads and inserts into a data structure without latching or waiting by readers |
US10831736B2 (en) | 2015-03-27 | 2020-11-10 | International Business Machines Corporation | Fast multi-tier indexing supporting dynamic update |
US10762074B2 (en) * | 2015-10-20 | 2020-09-01 | Sanjay JAYARAM | System for managing data |
US10642808B1 (en) * | 2015-11-01 | 2020-05-05 | Yellowbrick Data, Inc. | System and method for identifying matching portions of two sets of data in a multiprocessor system |
US10164945B2 (en) * | 2016-05-23 | 2018-12-25 | Informatica Llc | Method, apparatus, and computer-readable medium for masking data |
US11151087B2 (en) | 2017-12-12 | 2021-10-19 | Interset Software Inc. | Tracking file movement in a network environment |
US11132335B2 (en) * | 2017-12-12 | 2021-09-28 | Interset Software, Inc. | Systems and methods for file fingerprinting |
US11507847B2 (en) | 2019-07-25 | 2022-11-22 | Raytheon Company | Gene expression programming |
US11340603B2 (en) | 2019-04-11 | 2022-05-24 | Raytheon Company | Behavior monitoring using convolutional data modeling |
US11436537B2 (en) | 2018-03-09 | 2022-09-06 | Raytheon Company | Machine learning technique selection and improvement |
US11321462B2 (en) | 2018-04-10 | 2022-05-03 | Raytheon Company | Device behavior anomaly detection |
WO2019199769A1 (en) | 2018-04-10 | 2019-10-17 | Raytheon Company | Cyber chaff using spatial voting |
US11132923B2 (en) * | 2018-04-10 | 2021-09-28 | Raytheon Company | Encryption using spatial voting |
US11558269B2 (en) * | 2018-07-27 | 2023-01-17 | Nokia Solutions And Networks Oy | Method, device, and system for network traffic analysis |
US11341235B2 (en) | 2019-02-21 | 2022-05-24 | Raytheon Company | Anomaly detection with adaptive auto grouping |
CN112068948B (en) * | 2019-06-10 | 2024-03-26 | 上海赜睿信息科技有限公司 | Data hashing method, readable storage medium and electronic device |
US11222070B2 (en) | 2020-02-27 | 2022-01-11 | Oracle International Corporation | Vectorized hash tables |
US11630864B2 (en) | 2020-02-27 | 2023-04-18 | Oracle International Corporation | Vectorized queues for shortest-path graph searches |
WO2024107203A1 (en) * | 2022-11-18 | 2024-05-23 | Visa International Service Association | System and method for performing an mph-based lookup of records in a database |
US12130745B2 (en) * | 2022-12-02 | 2024-10-29 | Mellanox Technologies Ltd. | Hash function with perfect hash component |
Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5123245A (en) * | 1990-10-19 | 1992-06-23 | Sampower Oy | Method and apparatus for starting a free piston combustion engine hydraulically |
US5490258A (en) | 1991-07-29 | 1996-02-06 | Fenner; Peter R. | Associative memory for very large key spaces |
US5526504A (en) | 1993-12-15 | 1996-06-11 | Silicon Graphics, Inc. | Variable page size translation lookaside buffer |
US5692177A (en) | 1994-10-26 | 1997-11-25 | Microsoft Corporation | Method and system for data set storage by iteratively searching for perfect hashing functions |
US5893086A (en) | 1997-07-11 | 1999-04-06 | International Business Machines Corporation | Parallel file system and method with extensible hashing |
US6014733A (en) * | 1997-06-05 | 2000-01-11 | Microsoft Corporation | Method and system for creating a perfect hash using an offset table |
US6115802A (en) * | 1995-10-13 | 2000-09-05 | Sun Mircrosystems, Inc. | Efficient hash table for use in multi-threaded environments |
US6216199B1 (en) * | 1999-08-04 | 2001-04-10 | Lsi Logic Corporation | Hardware mechanism for managing cache structures in a data storage system |
US20030128876A1 (en) * | 2001-12-13 | 2003-07-10 | Kabushiki Kaisha Toshiba | Pattern recognition apparatus and method therefor |
US6654868B2 (en) | 1997-07-11 | 2003-11-25 | Annex Systems Incorporated | Information storage and retrieval system |
US20040064483A1 (en) | 2002-09-30 | 2004-04-01 | Emc Corporation | Method and system of compacting sparse directories in a file system |
US20040117600A1 (en) | 2002-12-12 | 2004-06-17 | Nexsil Communications, Inc. | Native Lookup Instruction for File-Access Processor Searching a Three-Level Lookup Cache for Variable-Length Keys |
US6765584B1 (en) | 2002-03-14 | 2004-07-20 | Nvidia Corporation | System and method for creating a vector map in a hardware graphics pipeline |
US6795080B2 (en) | 2002-01-30 | 2004-09-21 | Sun Microsystems, Inc. | Batch processing of primitives for use with a texture accumulation buffer |
US20040227767A1 (en) | 2002-06-20 | 2004-11-18 | Alberto Baroncelli | Vector graphics circuit accelerator for display systems |
US6873343B2 (en) | 2000-05-11 | 2005-03-29 | Zoran Corporation | Scalable graphics image drawings on multiresolution image with/without image data re-usage |
US20050219624A1 (en) | 2004-01-09 | 2005-10-06 | Alexei Zavitaev | Device and method for controlling image forming apparatus |
US20060044317A1 (en) | 2004-08-30 | 2006-03-02 | Bourd Alexei V | Cache efficient rasterization of graphics data |
US20060103665A1 (en) | 2004-11-12 | 2006-05-18 | Andrew Opala | Method and system for streaming documents, e-mail attachments and maps to wireless devices |
US7146371B2 (en) * | 2002-12-05 | 2006-12-05 | International Business Machines Corporation | Performance and memory bandwidth utilization for tree searches using tree fragmentation |
US7158141B2 (en) | 2002-01-17 | 2007-01-02 | University Of Washington | Programmable 3D graphics pipeline for multimedia applications |
-
2007
- 2007-06-14 US US11/763,279 patent/US7965297B2/en not_active Expired - Fee Related
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5123245A (en) * | 1990-10-19 | 1992-06-23 | Sampower Oy | Method and apparatus for starting a free piston combustion engine hydraulically |
US5490258A (en) | 1991-07-29 | 1996-02-06 | Fenner; Peter R. | Associative memory for very large key spaces |
US5526504A (en) | 1993-12-15 | 1996-06-11 | Silicon Graphics, Inc. | Variable page size translation lookaside buffer |
US5692177A (en) | 1994-10-26 | 1997-11-25 | Microsoft Corporation | Method and system for data set storage by iteratively searching for perfect hashing functions |
US6115802A (en) * | 1995-10-13 | 2000-09-05 | Sun Mircrosystems, Inc. | Efficient hash table for use in multi-threaded environments |
US6014733A (en) * | 1997-06-05 | 2000-01-11 | Microsoft Corporation | Method and system for creating a perfect hash using an offset table |
US6654868B2 (en) | 1997-07-11 | 2003-11-25 | Annex Systems Incorporated | Information storage and retrieval system |
US5893086A (en) | 1997-07-11 | 1999-04-06 | International Business Machines Corporation | Parallel file system and method with extensible hashing |
US6216199B1 (en) * | 1999-08-04 | 2001-04-10 | Lsi Logic Corporation | Hardware mechanism for managing cache structures in a data storage system |
US6873343B2 (en) | 2000-05-11 | 2005-03-29 | Zoran Corporation | Scalable graphics image drawings on multiresolution image with/without image data re-usage |
US20030128876A1 (en) * | 2001-12-13 | 2003-07-10 | Kabushiki Kaisha Toshiba | Pattern recognition apparatus and method therefor |
US7158141B2 (en) | 2002-01-17 | 2007-01-02 | University Of Washington | Programmable 3D graphics pipeline for multimedia applications |
US6795080B2 (en) | 2002-01-30 | 2004-09-21 | Sun Microsystems, Inc. | Batch processing of primitives for use with a texture accumulation buffer |
US6765584B1 (en) | 2002-03-14 | 2004-07-20 | Nvidia Corporation | System and method for creating a vector map in a hardware graphics pipeline |
US20040227767A1 (en) | 2002-06-20 | 2004-11-18 | Alberto Baroncelli | Vector graphics circuit accelerator for display systems |
US20040064483A1 (en) | 2002-09-30 | 2004-04-01 | Emc Corporation | Method and system of compacting sparse directories in a file system |
US7146371B2 (en) * | 2002-12-05 | 2006-12-05 | International Business Machines Corporation | Performance and memory bandwidth utilization for tree searches using tree fragmentation |
US20040117600A1 (en) | 2002-12-12 | 2004-06-17 | Nexsil Communications, Inc. | Native Lookup Instruction for File-Access Processor Searching a Three-Level Lookup Cache for Variable-Length Keys |
US20050219624A1 (en) | 2004-01-09 | 2005-10-06 | Alexei Zavitaev | Device and method for controlling image forming apparatus |
US20060044317A1 (en) | 2004-08-30 | 2006-03-02 | Bourd Alexei V | Cache efficient rasterization of graphics data |
US20060103665A1 (en) | 2004-11-12 | 2006-05-18 | Andrew Opala | Method and system for streaming documents, e-mail attachments and maps to wireless devices |
Non-Patent Citations (48)
Title |
---|
Benson, D., and J. Davis, Octree textures, SIGGRAPH '02, 2002, pp. 785-790. |
Blinn, J., How to solve a cubic equation, Part 2: The 11 Case, IEEE CG&A, 2006, vol. 26, No. 4, pp. 90-100. |
Blythe, D., The Direct3D 10 system, Proc. of ACM SIGGRAPH HDR and systems, Jul. 2006, pp. 724-734, vol. 25, No. 3. |
Brain, M., and A. Tharp, Perfect hashing using sparse matrix packing, Info. Sys., 1990, pp. 281-290, vol. 15, No. 3. |
Cantlay, I. Mipmap-level measurement, GPU Gems II, 2005, pp, 437-449. |
Carpenter, L., The A-buffer, an antialiased hidden surface method, ACM SIGGRAPH, 1984, pp. 103-108. |
Czech, Z., G. Havas, and B. Majewski, Perfect hashing, Theoretical Computer Science 1997, pp. 1-143, vol. 182. |
Debry, D., J. Gibbs, D. Petty, and N. Robins, Painting and rendering on unparameterized models. ACM SIGGRAPH, 2002, pp. 763-768. |
Fox, E., L. Heath, Q. Chen, and A. Daoud, Practical minimal perfect hash functions for large databases, 1992, CACM, pp. 105-121, vol. 33, No. 1. |
Fredman, M. L., J. Koml{dot over (o)}s, E. Szemerédi, Storing a sparse table with 0(1) worst case access time, J. of the ACM (JACM), Jul. 1984, pp. 538-544, vol. 31, No. 3. |
Frisken, S., R. Perry, A. Rockwood, and T. Jones, Adaptively sampled distance fields: A general representation of shape for computer graphics, ACM SIGGRAPH, 2000, pp. 249-254. |
Gaede, V., and O. Günther, Multidimensional access methods, ACM Computing Surveys, 1998, vol. 30, No. 2, pp. 170-231. |
Goldman, R., T. Sederberg, and D. Anderson, Vector elimination: A technique for the implicitization, inversion, and intersection of planar parametric rational polynomial curves, CAGD, 1984, vol. 1, pp. 327-356. |
Govindaraju, N., M. Lin, and D, Manocha, Fast and reliable collision culling using graphics hardware, Proc. of VRST, 2004, pp. 2-9. |
Greiner, G., and K. Hormann, Efficient clipping of arbitrary polygons, ACM TOG, 1998, pp. 71-83, vol. 17, No. 2. |
Heckbert, P., Fundamentals of texture mapping and image warping, M.S. Thesis, 1989, UC Berkeley, Dept. of EECS. |
Ho, Y., Application of minimal perfect hashing in main memory indexing, 1994, Masters Thesis, MIT. |
Houston, B., M. B. Nielsen, C. Batty, O. Nilsson, K. Museth, Hierarchical RLE level set: A compact and versatile deformable surface representation, ACM Transactions on Graphics (TOG) Jan. 2006, pp. 151-175, vol. 25, No. 1. |
Kraus, M., and T. Ertl, Adaptive texture maps, Graphics Hardware, 2002, pp. 7-15. |
Lefebvre, S., and F. Neyret, Pattern based procedural textures, Symposium on Interactive 3D Graphics, 2003, pp. 203-212. |
Lefebvre, S., H. Hoppe, Perfect spatial hashing, Int'l Conf. on Comp. Graphics and Interactive Techniques, 2006, pp. 579-588, Boston, Massachusetts. |
Lefebvre, S., S. Hornus, and F. Neyret, Octree textures on the GPU, GPU Gems II, 2005, pp. 595-613. |
Lefohn, A. E., Sengupta, J. Kniss, R. Strzodka, and J. D. Owens, Glift: Generic, efficient, random-access GPU data structures, ACM Transactions on Graphics (TOG), Jan. 2006, pp. 60-99, vol. 25, No. 1. |
Loop, C., and J. Blinn, Resolution-independent curve rendering using programmable graphics hardware. ACM SIGGRAPH, 2005, 1000-1009. |
Loviscach, J., Efficient magnification of bi-level textures, Int'l Conf. on Camp. Graphics and Interactive Techniques, ACM SIGGRAPH 2005. |
Mehlhorn, K. 1982. On the program size of perfect and universal hash functions. Symposiumn on Foundations of Computer Science, 170-175. |
Mirtich, B. 1996. Impulse-based dynamic simulation of rigid body systems. PhD Thesis, UC Berkeley. |
Naor, M. and V. Teague, Anti-persistence: History independent data structures, Proc. 33rd ACM Symp. on Theory of Computing, 2001. |
Östlin, A., and Pagh, R. 2003. Uniform hashing in constant time and linear space. ACM STOC, 622-628. |
Pearson, P. K., Fast hashing of variable-length text strings, Communications of the ACM, Jun. 1990, pp. 677-680, vol. 33, No. 6. |
Peercy, M., Olano, M., Airey, J., and Ungar, J. 2000. Interactive multi-pass programmable shading. ACM SIGGRAPH, 425-432. |
Qin, Z., McCool, M., and Kaplan, C. 2006. Real-time texture-mapped vector glyphs. Symposium on interactive 3D Graphics and Games, 125-132. |
Ramanarayanan, G., Bala, K., and Walter, B. 2004. Feature-based textures. Eurographics Symposium on Rendering, 65-73. |
Ray, N., Cavin, X., and Levy, B. 2005. Vector texture maps on the GPU. Technical Report ALICE-TR-05-003. |
Ray, N., Cavin, X., and Lėvy, B. 2005. Vector texture maps on the GPU. Technical Report ALICE-TR-05-003. |
Sager, T. 1985, A polynomial time generator for minimal perfect hash functions, CACM, 1985. pp. 523-532, vol. 28, No. 5. |
Schmidt, J., and Siegel, A. 1990. The spatial complexity of oblivious k-probe hash functions, SIAM Journal on Computing, 19(5), 775-786. |
Sen, P., Cammarano, M., and Hanrahan, P. 2003. Shadow silhouette maps. ACM SIGGRAPH, 521-526. |
Sen, P., Silhouette maps for improved texture magnification. Symposium on Graphics Hardware, 2004, pp. 65-73. |
Sutherland, I., and G. Hodgman, Reentrant polygon clipping, Communications of the ACM. 1974, pp. 32-42, vol. 17, No. 1. |
Tarini, M., and P. Cignoni, Pinchmaps: Textures with customizable discontinuities, Eurographics Conf., 2005, pp. 557-568. |
Teschner, M., B. Heidelberger, M. Müller, D. Pomeranets, and M. Gross, Optimized spatial hashing for collision detection of deformable objects, Proc. VMV, 2003, pp. 47-54. |
Tumblin, J., and P. Choudhury, Bixels: Picture samples with sharp embedded boundaries, Symposium on Rendering, 2004, pp. 186-194. |
Warnock, J., A hidden surface algorithm for computer generated halftone pictures, PhD Thesis, 1969, University of Utah. |
Weiler M., M. Kraus, M. Merz, and T. Ertl, Hardware-based ray casting for tetrahedral meshes, Proc. of the 14th IEEE Visualization 2003 (VIS'03), 2003, pp. 333-340. |
Winner, S., M. Kelley, B. Pease, B. Rivard, and A. Yen, Hardware accelerated rendering of antialiasing using a modified A-buffer algorithm, ACM SIGGRAPH, 1997, pp. 307-316. |
Winters, V., Minimal perfect hashing in polynomial time, BIT, 1990, vol. 30, No. 2, pp. 235-244. |
Zobel, J., A. Moffat, and R. Sacks-Davis, Storage management for files of dynamic records, Proc. of the 4th Australian Database Conf., 1993, pp. 26-38. |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100211573A1 (en) * | 2009-02-16 | 2010-08-19 | Fujitsu Limited | Information processing unit and information processing system |
US20130207972A1 (en) * | 2011-02-04 | 2013-08-15 | Chiou Yeong Wu | Generation of Landmark Architecture and sculpture based on Chinese Characters |
US8836699B2 (en) * | 2011-02-04 | 2014-09-16 | Chiung Yu Chen | Generation of landmark architecture and sculpture based on chinese characters |
US8923763B2 (en) | 2012-02-28 | 2014-12-30 | Qualcomm Incorporated | Methods and apparatuses for reducing the nonvolatile memory used to support application identifier routing in an NFC controller |
US9449579B2 (en) | 2013-03-08 | 2016-09-20 | Qualcomm Incorporated | Systems and methods for mapping color data |
US10417813B2 (en) | 2016-12-05 | 2019-09-17 | Nvidia Corporation | System and method for generating temporally stable hashed values |
US10592158B1 (en) * | 2018-10-30 | 2020-03-17 | EMC IP Holding Company LLC | Method and system for transferring data to a target storage system using perfect hash functions |
US10713217B2 (en) | 2018-10-30 | 2020-07-14 | EMC IP Holding Company LLC | Method and system to managing persistent storage using perfect hashing |
US12038883B2 (en) | 2022-06-16 | 2024-07-16 | Red Hat, Inc. | Distributed Storage System with machine learning model for selecting a hash function to map a data item to a storage device |
Also Published As
Publication number | Publication date |
---|---|
US20070245119A1 (en) | 2007-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7965297B2 (en) | Perfect hashing of variably-sized data | |
US7619623B2 (en) | Perfect multidimensional spatial hashing | |
US11127167B2 (en) | Efficient matrix format suitable for neural networks | |
US10089331B2 (en) | System and method for storing a dataset of image tiles | |
Cignoni et al. | BDAM—batched dynamic adaptive meshes for high performance terrain visualization | |
Ihmsen et al. | A parallel SPH implementation on multi‐core CPUs | |
Pınar et al. | Fast optimal load balancing algorithms for 1D partitioning | |
US20230237313A1 (en) | Layout Parasitics and Device Parameter Prediction using Graph Neural Networks | |
US7526125B2 (en) | Method of and apparatus for compressing and uncompressing image data | |
US20100188412A1 (en) | Content based cache for graphics resource management | |
US20170365071A1 (en) | System and method for compressing graphs via cliques | |
Luffel et al. | Grouper: A compact, streamable triangle mesh data structure | |
US8131770B2 (en) | System, method, and computer program product for importance sampling of partitioned domains | |
US10013474B2 (en) | System and method for hierarchical synchronization of a dataset of image tiles | |
US9213680B2 (en) | Method and structure for fast in-place transformation of standard full and packed matrix data formats | |
JP2008142137A (en) | Data processing apparatus, data processing method, and program | |
Rodriguez et al. | Compression-domain seamless multiresolution visualization of gigantic triangle meshes on mobile devices | |
Mahovsky et al. | Memory‐conserving bounding volume hierarchies with coherent raytracing | |
Somarin et al. | Lossless Compression of Color images using Imperialist competitive algorithm | |
CN117370488A (en) | Data processing method, device, electronic equipment and computer readable storage medium | |
Samavi et al. | Real time fractal image coder based on characteristic vector matching | |
Kenzel et al. | On-the-fly vertex reuse for massively-parallel software geometry processing | |
Freire et al. | Towards reducing communications in sparse matrix kernels | |
Bokhari et al. | Binary dissection: variants & applications | |
Weiss et al. | Sparse terrain pyramids |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HOPPE, HUGUES;REEL/FRAME:019463/0588 Effective date: 20070613 |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034542/0001 Effective date: 20141014 |
|
REMI | Maintenance fee reminder mailed | ||
LAPS | Lapse for failure to pay maintenance fees | ||
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.) |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20150621 |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |