DE112011101391T5 - GPU-enabled database systems - Google Patents
GPU-enabled database systems Download PDFInfo
- Publication number
- DE112011101391T5 DE112011101391T5 DE112011101391T DE112011101391T DE112011101391T5 DE 112011101391 T5 DE112011101391 T5 DE 112011101391T5 DE 112011101391 T DE112011101391 T DE 112011101391T DE 112011101391 T DE112011101391 T DE 112011101391T DE 112011101391 T5 DE112011101391 T5 DE 112011101391T5
- Authority
- DE
- Germany
- Prior art keywords
- database
- gpu
- memory
- query
- data
- 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.)
- Ceased
Links
- 238000000034 method Methods 0.000 claims abstract description 50
- 238000000638 solvent extraction Methods 0.000 claims abstract description 8
- 238000005192 partition Methods 0.000 claims abstract description 7
- 238000004590 computer program Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 10
- 238000013500 data storage Methods 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Es werden Verfahren zum parallelen Ausführen von Abfragen einer Datenbankoperation in einer eine Grafikverarbeitungseinheit (GPU) verwendenden Datenbank dargestellt, die Folgendes enthalten: Empfangen einer Abfrage durch einen Host-Computer, wobei die Abfrage Datenbankrelationen enthält; Starten eines GPU-Kernel, wobei die GPU-Kernel einen GPU-Speicher enthalten; Hash-Partitionieren der Datenbankrelationen durch den GPU-Kernel; Laden der partitionierten Datenbankrelationen in den GPU-Speicher; Laden von verschlüsselten, den hash-partitionierten Datenbankrelationen entsprechenden Partitionen in den GPU-Speicher; Aufbauen einer Hash-Tabelle für einen kleineren Teil der hash-partitionierten Datenbankrelationen; und Ausführen der Abfrage. In einigen Ausführungsformen enthalten die Verfahren ferner das Zurücksenden eines Ergebnisses der Abfrage. In einigen Ausführungsformen enthalten die Verfahren bei einer langen Abfrage, die mehrere Operationen enthält, ferner das Zergliedern der langen Abfrage in mehrere Teilabfragen; wobei für jede der Teilabfragen einer der GPU-Kernel gestartet wird, so dass die Teilabfragen parallel verarbeitet werden.Methods for performing parallel queries of a database operation in a database using a graphics processing unit (GPU) are presented, including: receiving a query by a host computer, the query containing database relations; Starting a GPU kernel, the GPU kernels containing a GPU memory; Hash partitioning of the database relations by the GPU kernel; Loading the partitioned database relations into the GPU memory; Loading encrypted partitions corresponding to the hash partitioned database relations into the GPU memory; Building a hash table for a smaller portion of the hash partitioned database relations; and execute the query. In some embodiments, the methods further include returning a result of the query. In some embodiments, in a long query that includes multiple operations, the methods further include parsing the long query into multiple subqueries; wherein for each of the subqueries one of the GPU kernels is started so that the subqueries are processed in parallel.
Description
Hintergrundbackground
Herkömmliche Datenbanksysteme führen Datenbankabfragen mit plattenbasierenden Tabellen aus. Die Forschung hat gezeigt, dass das herkömmliche Ausführen von plattenbasierenden Datenbankabfragen unter starken Verzögerungen leidet, die sich zum Beispiel aus Speicherlatenzzeiten, dem Warten von Prozessoren auf das Abrufen von Daten aus dem Speicher sowie L1-Daten- und L2-Anweisungsblockierungen ergeben. Deshalb werden zum Angehen dieses Problems vermehrt Multiprozessoren zum Ausführen von Datenbankabfragen verwendet. Ergänzend zu den plattenbasierenden Tabellen gibt es die speicherbasierenden Tabellen. Speicherbasierende Tabellen sind schneller als plattenbasierende Tabellen, da das Abrufen von und das Laden auf die Plattenkomponente entfallen. Speicherbasierende Systeme können deshalb effizientere Techniken zum Bereitstellen der höchstmöglichen Leistungsfähigkeit verwenden.Conventional database systems execute database queries with disk-based tables. Research has shown that traditional disk-based database query execution suffers from severe delays, such as memory latency, processor waiting for data fetch from memory, and L1 data and L2 instruction blockages. Therefore, to address this problem, multiprocessors are increasingly being used to execute database queries. In addition to the disk-based tables, there are the memory-based tables. Memory-based tables are faster than disk-based tables because there is no fetching and loading on the disk component. Memory-based systems can therefore use more efficient techniques to provide the highest possible performance.
Bei einer Grafikverarbeitungseinheit (GPU, Graphics Processing Unit) handelt es sich um ein massiv-paralleles Stück Hardware, das man sich als mehrere Prozessoren mit einem eigenen lokalen Speicher vorstellen kann. Eine GPU kann als unabhängiger Co-Prozessor in dem Host-Computer betrieben werden. Ende der 1990er-Jahre stellte die Spieleindustrie den notwendigen Impuls für das Entwickeln der GPU zum Beschleunigen von Grafik in Spielen bereit. In jüngster Zeit wurden Architekturen zur Unterstützung der Programmierbarkeit konfiguriert. Das heißt, dass Universalprogramme so geschrieben werden können, dass sie auf der GPU laufen. GPU-fähige Programme sind gut geeignet für Probleme, die mit datenparallelen Berechnungen einhergehen, wo dasselbe Programm mit hoher rechnerischer Intensität für verschiedene Daten ausgeführt wird.A graphics processing unit (GPU) is a massively parallel piece of hardware that can be thought of as having multiple processors with their own local memory. A GPU can operate as an independent co-processor in the host computer. In the late 1990s, the gaming industry provided the necessary impetus for developing the GPU to accelerate graphics in games. More recently, architectures have been configured to support programmability. This means that universal programs can be written to run on the GPU. GPU-ready programs are well-suited to problems associated with data-parallel computations where the same program of high computational intensity is executed for different data.
Kurze ZusammenfassungShort Summary
Das Folgende stellt eine vereinfachte Zusammenfassung einiger Ausführungsformen der Erfindung dar, um ein grundlegendes Verständnis der Erfindung bereitzustellen. Diese Zusammenfassung ist kein umfangreicher Überblick über die Erfindung. Sie soll nicht Schlüsselelemente/kritische Elemente der Erfindung identifizieren oder den Umfang der Erfindung darstellen. Sie dient lediglich dazu, einige Ausführungsformen der Erfindung in einer vereinfachten Form als Einleitung zu der unten dargestellten ausführlicheren Beschreibung darzustellen.The following is a simplified summary of some embodiments of the invention to provide a basic understanding of the invention. This summary is not a comprehensive overview of the invention. It is not intended to identify key elements / critical elements of the invention or to represent the scope of the invention. It merely serves to illustrate some embodiments of the invention in a simplified form as an introduction to the more detailed description presented below.
Als solche werden Verfahren zum parallelen Ausführen von Abfragen bzw. Queries einer Datenbankoperation in einer eine Grafikverarbeitungseinheit (GPU) verwendenden Datenbank dargestellt, die Folgendes enthalten: Empfangen einer Abfrage durch einen Host-Computer, wobei die Abfrage Datenbankrelationen enthält; Starten eines GPU-Kernel, wobei die GPU-Kernel einen GPU-Speicher enthalten; Hash-Partitionieren der Datenbankrelationen durch den GPU-Kernel; Laden der partitionierten Datenbankrelationen in den GPU-Speicher; Laden von verschlüsselten, den hash-partitionierten Datenbankrelationen entsprechenden Partitionen in den GPU-Speicher; Aufbauen einer Hash-Tabelle für einen kleineren Teil der hash-partitionierten Datenbankrelationen; und Ausführen der Abfrage. In einigen Ausführungsformen enthalten die Verfahren ferner das Zurücksenden eines Ergebnisses der Abfrage. In einigen Ausführungsformen enthalten die Verfahren bei einer langen Abfrage, die mehrere Operationen enthält, ferner das Zergliedern der langen Abfrage in mehrere Teilabfragen; wobei für jede der Teilabfragen einer der GPU-Kernel gestartet wird, so dass die Teilabfragen parallel verarbeitet werden; und Rückkehren zur Hash-Partitionierung. In einigen Ausführungsformen handelt es sich bei dem Host-Computer um eine CPU, und Datenbankdaten und Datenbankschlüssel werden in dem GPU-Speicher gespeichert. In einigen Ausführungsformen handelt es sich bei dem Host-Computer um eine CPU, Datenbankdaten und erste Datenbankschlüssel werden auf einem Plattendatenspeicher gespeichert, und zweite Datenbankschlüssel werden in dem GPU-Speicher gespeichert. In einigen Ausführungsformen enthalten Verfahren ferner das Synchronisieren der ersten Datenbankschlüssel mit den zweiten Datenbankschlüsseln. In einigen Ausführungsformen handelt es sich bei dem Host-Computer um einen Datenbankknoten, erste Datenbankdaten und erste Datenbankschlüssel werden auf einem Plattendatenspeicher gespeichert, und zweite Datenbankdaten zweite Datenbankschlüssel werden in dem GPU-Speicher gespeichert.As such, methods for executing queries or queries of a database operation in a database using a graphics processing unit (GPU) are presented, including: receiving a query by a host computer, the query containing database relations; Starting a GPU kernel, the GPU kernels containing a GPU memory; Hash partitioning of the database relations by the GPU kernel; Loading the partitioned database relations into the GPU memory; Loading encrypted, hash-partitioned Database relations corresponding partitions in the GPU memory; Building a hash table for a smaller portion of the hash partitioned database relations; and execute the query. In some embodiments, the methods further include returning a result of the query. In some embodiments, in a long query that includes multiple operations, the methods further include parsing the long query into multiple subqueries; wherein for each of the subqueries one of the GPU kernels is started so that the subqueries are processed in parallel; and return to hash partitioning. In some embodiments, the host computer is a CPU, and database data and database keys are stored in the GPU memory. In some embodiments, the host computer is a CPU, database data and first database keys are stored on a disk data store, and second database keys are stored in the GPU memory. In some embodiments, methods further include synchronizing the first database keys with the second database keys. In some embodiments, the host computer is a database node, first database data and first database keys are stored on a disk data store, and second database data second database keys are stored in the GPU memory.
In anderen Ausführungsformen werden Datenverarbeitungseinheit-Programmprodukte zum parallelen Ausführen von Abfragen einer Datenbankoperation in einer eine Grafikverarbeitungseinheit (GPU) unterstützten Datenbank in Zusammenarbeit mit einer Datenverarbeitungseinheit dargestellt, die Folgendes enthalten: ein durch einen Computer lesbares Medium; erste programmatische Anweisungen zum Empfangen einer Abfrage durch einen Host-Computer, wobei die Abfrage Datenbankrelationen enthält; zweite programmatische Anweisungen zum Starten eines GPU-Kernel, wobei die GPU-Kernel einen GPU-Speicher enthalten; dritte programmatische Anweisungen zum Hash-Partitionieren der Datenbankrelationen durch den GPU-Kernel; vierte programmatische Anweisungen zum Laden der partitionierten Datenbankrelationen in den GPU-Speicher; fünfte programmatische Anweisungen zum Laden von verschlüsselten, den hash-partitionierten Datenbankrelationen entsprechenden Partitionen in den GPU-Speicher; sechste programmatische Anweisungen zum Aufbauen einer Hash-Tabelle für einen kleineren Teil der hash-partitionierten Datenbankrelationen; siebte programmatische Anweisungen zum Ausführen der Abfrage; und achte programmatische Anweisungen zum Zurücksenden eines Ergebnisses von der Abfrage, wobei die programmatischen Anweisungen auf dem durch einen Computer lesbaren Speichermedium gespeichert sind.In other embodiments, computing device program products for performing queries of a database operation in parallel in a graphics processing unit (GPU) supported database are presented in cooperation with a computing device including: a computer readable medium; first programmatic instructions for receiving a query by a host computer, the query containing database relations; second programmatic instructions for starting a GPU kernel, the GPU kernels including a GPU memory; third programmatic instructions for hash-partitioning the database relations by the GPU kernel; fourth programmatic instructions for loading the partitioned database relations into the GPU memory; fifth programmatic instructions for loading encrypted partitions corresponding to the hash partitioned database relations into the GPU memory; sixth programmatic instructions for building a hash table for a smaller portion of the hash partitioned database relations; seventh programmatic statements for executing the query; and eighth programmatic instructions for returning a result from the query, wherein the programmatic instructions are stored on the computer-readable storage medium.
In anderen Ausführungsformen werden GPU-fähige Datenbanksysteme zum parallelen Ausführen von Abfragen dargestellt, die Folgendes enthalten: eine Datenbank; eine mit der Datenbank Daten austauschende GPU, wobei die GPU so konfiguriert ist, dass sie eine Datenbankabfrage verarbeitet, wobei die GPU mindestens einen Kernel enthält, wobei der mindestens eine GPU-Kernel GPU-Speicher enthält, und wobei die GPU so konfiguriert ist, dass sie die Datenbankabfrage parallel verarbeitet; und einen Host-Computer zum Empfangen von Datenbankabfragen.In other embodiments, GPU-enabled database systems are presented for running queries in parallel, including: a database; a database-exchanging GPU, wherein the GPU is configured to process a database query, wherein the GPU includes at least one kernel, the at least one GPU kernel includes GPU memory, and wherein the GPU is configured to: she processes the database query in parallel; and a host computer for receiving database queries.
Kurze Beschreibung der ZeichnungenBrief description of the drawings
Eine bzw. mehrere Ausführungsformen der Erfindung werden nun lediglich beispielhaft unter Bezugnahme auf die beigefügten Zeichnungen beschrieben. Es zeigen:One or more embodiments of the invention will now be described, by way of example only, with reference to the accompanying drawings. Show it:
Ausführliche BeschreibungDetailed description
Der Fachmann wird verstehen, dass die vorliegende Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden kann. Entsprechend können Aspekte der vorliegenden Erfindung die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (darunter Firmware, im Speicher befindliche Software, Mikro-Code, usw.) oder einer Software- und Hardware-Aspekte kombinierenden Ausführungsform annehmen, die hierin alle allgemein als „Schaltkreis”, „Modul” oder „System” bezeichnet sein können. Des Weiteren kann die vorliegende Erfindung die Form eines Computerprogrammprodukts annehmen, das auf einem beliebigen physischen Ausdrucksmedium enthalten ist, wobei auf dem Medium auf einem Computer verwendbarer Programmcode enthalten ist. Es kann jede Kombination aus einem oder mehreren auf einem Computer verwendbaren bzw. durch einen Computer lesbaren Medien verwendet werden. Bei dem auf einem Computer verwendbaren bzw. durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder ein derartiges Verbreitungsmedium handeln, ohne darauf beschränkt zu sein. Zu konkreteren Beispielen (eine nicht erschöpfende Liste) des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, ein Übertragungsmedium wie diejenigen, die das Internet oder ein Intranet unterstützen oder eine magnetische Speichereinheit. Man beachte, dass es sich bei dem auf einem Computer verwendbaren bzw. durch einen Computer lesbaren Medium sogar um Papier oder ein anderes geeignetes Medium handeln kann, auf dem das Programm gedruckt ist, da das Programm zum Beispiel über optisches Scannen des Papiers bzw. des anderen Mediums elektronisch erfasst, dann falls nötig kompiliert, ausgewertet oder anderweitig auf geeignete Weise verarbeitet werden kann, und dann in einem Computerspeicher gespeichert werden kann. In dem Kontext dieses Dokuments kann ein durch einen Computer verwendbares bzw. durch einen Computer lesbares Medium jedes beliebige Medium sein, welches das Programm, das von oder in Verbindung mit dem Anweisungsausführungssystem, der Vorrichtung oder der Einheit verwendet wird, enthalten, speichern, übertragen, verbreiten bzw. transportieren kann. Das durch einen Computer verwendbare Medium kann ein weitergeleitetes Datensignal mit dem darin enthaltenen durch einen Computer verwendbaren Programmcode entweder im Basisband oder als Teil einer Trägerwelle beinhalten. Der durch einen Computer verwendbare Programmcode kann unter Verwendung eines geeigneten Mediums übertragen werden, darunter drahtlos, drahtgebunden, Lichtwellenleiter-Kabel, HF usw., jedoch nicht darauf beschränkt.Those skilled in the art will understand that the present invention may be practiced as a system, method, or computer program product. Accordingly, aspects of the present invention may take the form of a complete hardware embodiment, a complete software embodiment (including firmware, software in memory, microcode, etc.), or a software and hardware aspects combining embodiment, all herein generally referred to as "circuit", "module" or "system". Further, the present invention may take the form of a computer program product contained on any physical expression medium, including program code usable on the medium on a computer. Any combination of one or more computer usable or computer readable media may be used. The computer-readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or such distribution medium. More concrete examples (a non-exhaustive list) of the computer-readable storage medium include the following: an electrical connection with one or more wires, a portable computer diskette, a hard disk, random access memory (RAM), read only memory (ROM) , an erasable programmable read only memory (EPROM), an optical fiber, a portable compact disk read only memory (CD-ROM), an optical storage unit, a transmission medium such as those using the Internet or a Intranet support or a magnetic storage unit. Note that the computer-readable or even computer-readable medium may even be paper or other suitable medium on which the program is printed, for example, the program may be via optical scanning of the paper electronically detected by other media, then compiled, evaluated or otherwise processed as appropriate, and then stored in computer memory. In the context of this document, a computer-readable or computer-readable medium may be any medium that supports the program being accessed by or in Connection to the instruction execution system, apparatus or unit may be used to contain, store, transmit, propagate or transport. The computer-usable medium may include a forwarded data signal having computer-usable program code therein either in baseband or as part of a carrier wave. The computer usable program code may be transmitted using a suitable medium, including, but not limited to, wireless, wireline, fiber optic cable, RF, etc.
Computerprogrammcode für das Ausführen von Arbeitsschritten der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ o. ä. sowie herkömmliche prozedurale Programmiersprachen wie die „C”-Programmiersprache oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters).Computer program code for performing operations of the present invention may be written in any combination of one or more programming languages, including object-oriented programming languages such as Java, Smalltalk, C ++, and the like, as well as conventional procedural programming languages such as the "C" programming language or similar programming languages. The program code may be executed entirely on the user's computer, partly on the user's computer, as a standalone software package, partially on the user's computer and partly on a remote computer, or entirely on the remote computer or server. In the latter case, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (e.g. Internet using an Internet service provider).
Die vorliegende Erfindung wird nachfolgend unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern durch Computerprogrammanweisungen ausgeführt werden können. Diese Computerprogrammanweisungen können dem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen.The present invention will now be described with reference to flowcharts and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It should be understood that each block of the flowcharts and / or block diagrams, as well as combinations of blocks in the flowcharts and / or block diagrams, may be executed by computer program instructions. These computer program instructions may be provided to the processor of a general-purpose computer, a special purpose computer or other programmable data processing device to generate a machine such that the instructions executed via the processor of the computer or other programmable data processing device comprise means for implementing the data in the block or software. Generate the blocks / blocks or the block diagrams or graphs defined functions / steps.
Diese Computerprogrammanweisungen können auch in einem durch einen Computer lesbaren Medium gespeichert sein, der einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass die auf dem durch einen Computer lesbaren Medium gespeicherten Anweisungen ein Herstellungsprodukt herstellen, darunter Anweisungsmittel, welche die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegte Funktion/den Schritt umsetzen.These computer program instructions may also be stored in a computer readable medium that may control a computer or other programmable computing device to function in a particular manner such that instructions stored on the computer readable medium produce a manufactured product. including instruction means which translate the function / step specified in the block (s) of the flowcharts and / or block diagrams.
Die Computerprogrammanweisungen können auch auf einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführten Anweisungen Prozesse zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen.The computer program instructions may also be loaded onto a computer or other programmable data processing device to cause the execution of a series of process steps on the computer or other programmable device to generate a process executed on a computer such that the computer's computer or any other programmable device generate processes to translate the functions / steps specified in the block (s) of the flowchart and / or block diagrams.
Wenn wir uns nun den Figuren zuwenden, veranschaulichen der Ablaufplan und die Blockschaltbilder bzw. Funktionsschaubilder in den Figuren die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen der Systeme, Verfahren und Computerprogrammprodukte gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil eines Codes darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) umfassen. Es sei auch angemerkt, dass in einigen alternativen Ausführungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden können. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschalt- bzw. Funktionsschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschalt- bzw. Funktionsschaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder durch Kombinationen aus Spezial-Hardware und Computeranweisungen.Turning now to the figures, the flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of the systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of code that includes one or more executable instructions for performing the particular logical function (s). It should also be noted that in some alternative embodiments, the functions indicated in the block may take place in a different order than shown in the figures. For example, two blocks shown in succession may in fact be performed substantially simultaneously, or the blocks may sometimes be executed in reverse order, depending on the functionality involved. It should also be noted that each block of the block diagrams and / or the flowcharts, as well as combinations of blocks in the block diagrams and / or schedules, may be implemented by special hardware-based systems having the designated functions or functions Perform steps, or combinations of specialized hardware and computer instructions.
Bei der „Compute Unified Device Architecture” (CUDATM) handelt es sich um eine Sammlung von Tools, die ein Ausführen von in einer C-ähnlichen Sprache geschriebenen Universalprogrammen ermöglicht. Die Sammlung von CUDATM-Tools zeigt die zu Grunde liegende Zielhardware über eine C-ähnliche API. CUDATM ist so ausgelegt, dass sie die Leistungsfähigkeit in vielen datenparallelen Anwendungen erhöht, in dem sie das parallele Ausführen von Tausenden von Threads unterstützt. Als solches kann ein kompiliertes CUDATM-Programm mit den Fortschritten der Hardware skalieren. Es gibt mindestens zwei Arten der Umsetzung einer GPU-fähigen Datenbank – a) in einer Ausführungsform kann ein richtiges Datenbanksystem aktiviert werden und b) kann ein Pufferspeicher zum Beschleunigen anderer Datenbankabfragen aktiviert werden, d. h., es kann eine GPU-Speicher-Datenbank nur für das Ausführen von Datenbankabfragen aktiviert werden.Compute Unified Device Architecture (CUDA TM ) is a collection tools that enable you to run universal programs written in a C-like language. The collection of CUDA TM tools shows the underlying target hardware via a C-like API. CUDA TM is designed to increase performance in many data-parallel applications by supporting the parallel execution of thousands of threads. As such, a compiled CUDA ™ program can scale with the advances of hardware. There are at least two ways to implement a GPU-enabled database - a) in one embodiment, a real database system can be activated and b) a cache can be activated to speed up other database queries, ie a GPU storage database can only be used for the Running database queries will be activated.
Hierin beschriebene Ausführungsformen optimieren die Speicherauslastung durch a) wirksames und effizientes Verwenden von Parallelismus und b) Verbinden von Lesevorgängen aus dem globalen Speicher. Durch das wirksame Verwenden von Parallelismus wird das parallele Ausführen von Datenbankoperationen über so viele Threads auf einer GPU ausgeführt, wie jederzeit möglich ist. Durch das Verbinden von Lesevorgängen aus dem globalen Speicher können benachbarte Bereiche in globalem Speicher von Threads in einer Thread-Gruppe bearbeitet werden.
Das Verfahren fährt mit einem Schritt
In einer beispielhaften Ausführungsform nehme man einen Fall einer VERBINDUNG (JOIN) zwischen zwei Datenbankrelationen R und S. Man nehme an, dass die Relationen klein genug sind, dass sie in den GPU-Speicher passen. Somit handelt es sich bei dem Beispiel nicht um eine große Abfrage. Ausführungsformen hash-partitionieren beide Relationen (R und S) und importieren dieselbe verschlüsselte Partition aus beiden Relationen in den GPU-Speicher. Ausführungsformen bauen dann für die kleinere Tabelle eine Hash-Tabelle auf und prüfen die andere Relation auf Übereinstimmungen. In einer Ausführungsform wird das Hash-Verschlüsseln für den Verbindungsschlüssel (join key) durchgeführt. Wenn Relationen größer sind als der verfügbare GPU-Speicher, können zum Verringern der Größe mehrere Hash-Funktionen verwendet werden. Im Falle einer Ausführungsform mit langer Abfrage mit vielen Operatoren kann die lange Abfrage in mehrere Teilabfragen aufgeteilt werden, die parallel ausgeführt und dann nach der Verarbeitung kombiniert werden können.In an exemplary embodiment, take a case of a JOIN between two database relations R and S. Assume that the relations are small enough to fit in the GPU memory. Thus, the example is not a large query. Embodiments hash-partition both relations (R and S) and import the same encrypted partition from both relations into the GPU memory. Embodiments then construct a hash table for the smaller table and check the other relation for matches. In one embodiment, hash encryption is performed on the join key. If relationships are larger than the available GPU memory, you can use multiple hash functions to reduce the size. In a long query embodiment with many operators, the long query can be split into multiple subqueries that can be executed in parallel and then combined after processing.
Man kann verstehen, dass der GPU-fähigen Datenbankverarbeitung zumindest einige speicherbasierende Probleme zugehörig sind, z. B.: Tabellenauswahl, gemeinsamer Zugriff, Datenflüchtigkeit sowie Speicherverbrauch. In CEILADBTM verwendenden Ausführungsformen kann die Tabellenauswahl an die Anzahl von auf die Tabelle durchgeführten Zugriffen/Sekunde gebunden sein. In weiteren CEILADBTM verwendenden Ausführungsformen kann der gemeinsame Zugriff beeinträchtigt sein, da Thread-Blöcke möglicherweise in demselben gemeinsam genutzten Multiprozessor arbeiten. Als solches synchronisiert in Ausführungsformen ein Aufruf wie SYNCTHREADS (aus einer CUDATM-Bibliothek) die Threads in demselben gemeinsam genutzten Multiprozessor. Es kann jedoch jeder beliebige gleichartige Aufruf durchgeführt werden, ohne von den hierin dargelegten Ausführungsformen abzuweichen. Wenn zwei Threads aus zwei verschiedenen gemeinsam genutzten Multiprozessoren Daten schreiben möchten, müssen sie sich über den globalen Speicher synchronisieren. In weiteren CEILADBTM verwendenden Ausführungsformen kann die Flüchtigkeit durch Umsetzen einer Funktion gelöst werden, welche die Daten von der GPU auf der Platte speichert. In weiteren CEILADBTM verwendenden Ausführungsformen kann der Speicherverbrauch dadurch gelöst werden, dass es einem Benutzer zu jeder beliebigen Zeit ermöglicht wird, die Menge des Speichers abzufragen, der durch die durch den Benutzer erstellten Tabellen verwendet wird. Der Benutzer kann ebenfalls Speicherverbrauchsparameter setzen, welche die Art steuern, in der Daten in den Speicher oder auf Platte geschrieben werden – jedes Mal oder wenn der verbrauchte Speicher.It can be understood that GPU-enabled database processing is associated with at least some memory-based problems, e.g. For example: table selection, shared access, data volatility and memory usage. In CEILADB ™ embodiments, the table selection may be tied to the number of accesses / second performed on the table. In other embodiments using CEILADB ™ , shared access may be compromised because thread blocks may be operating in the same shared multiprocessor. As such, in embodiments, a call such as SYNCTHREADS (from a CUDA ™ library) synchronizes the threads in the same shared multiprocessor. However, any similar call may be made without departing from the embodiments set forth herein. If two threads from two different shared multiprocessors want to write data, they must synchronize via global memory. In other embodiments using CEILADB ™ , the volatility can be solved by implementing a function which stores the data from the GPU on the disk. In other embodiments using CEILADB ™ , memory consumption can be resolved by allowing a user at any time to poll the amount of memory used by the tables created by the user. The user can also set memory usage parameters that control the way data is written to memory or disk - each time or when the memory consumed is used.
Die folgenden Beispiele werden der Klarheit halber zum Verständnis von Ausführungsformen der vorliegenden Erfindung bereitgestellt und sind nicht als einschränkend anzusehen.
Obwohl diese Erfindung im Sinne von mehreren Ausführungsformen beschrieben wurde, gibt es Abänderungen, Umsetzungen und Entsprechungen, die in den Umfang dieser Erfindung fallen. Es sei auch angemerkt, dass es viele alternative Wege der Umsetzung der Verfahren, der Computerprogrammprodukte und der Vorrichtungen der vorliegenden Erfindung gibt. Des Weiteren sind jegliche hierin beschriebenen Verfahrensausführungsformen, soweit nicht ausdrücklich angegeben, nicht auf eine bestimmte Reihenfolge oder Abfolge beschränkt. Ferner wird die Zusammenfassung hierin aus Gründen der Zweckmäßigkeit bereitgestellt und ist nicht als einschränkend oder beschränkend für die in den Ansprüchen dargelegte Erfindung insgesamt anzuwenden. Deshalb ist es beabsichtigt, dass die folgenden beigefügten Ansprüche so ausgelegt werden, dass sie sämtliche derartige Abänderungen, Umsetzungen und Entsprechungen beinhalten, die unter den wahren Gedanken und Umfang der vorliegenden Erfindung fallen.Although this invention has been described in terms of several embodiments, there are variations, implementations and equivalents that fall within the scope of this invention. It should also be noted that there are many alternative ways of implementing the methods, the computer program products and the devices of the present invention. Furthermore, unless expressly stated, any method embodiments described herein are not limited to any particular order or sequence. Furthermore, the summary is provided herein for convenience and is not to be taken as limiting or limiting in its entirety to the invention set forth in the claims. Therefore, it is intended that the following appended claims be interpreted as including all such alterations, implementations, and equivalents that fall within the true spirit and scope of the present invention.
Claims (20)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/765,459 US8392463B2 (en) | 2010-04-22 | 2010-04-22 | GPU enabled database systems |
US12/765,459 | 2010-04-22 | ||
PCT/EP2011/055032 WO2011131470A1 (en) | 2010-04-22 | 2011-03-31 | Gpu enabled database systems |
Publications (1)
Publication Number | Publication Date |
---|---|
DE112011101391T5 true DE112011101391T5 (en) | 2013-02-28 |
Family
ID=44261717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112011101391T Ceased DE112011101391T5 (en) | 2010-04-22 | 2011-03-31 | GPU-enabled database systems |
Country Status (4)
Country | Link |
---|---|
US (2) | US8392463B2 (en) |
DE (1) | DE112011101391T5 (en) |
GB (1) | GB2513087A (en) |
WO (1) | WO2011131470A1 (en) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9508048B2 (en) * | 2010-12-23 | 2016-11-29 | Sap Se | System and method for integrated real time reporting and analytics across networked applications |
CN102508820B (en) * | 2011-11-25 | 2014-05-21 | 中国人民解放军国防科学技术大学 | Method for data correlation in parallel solving process based on cloud elimination equation of GPU (Graph Processing Unit) |
US10025643B2 (en) * | 2012-05-10 | 2018-07-17 | Nvidia Corporation | System and method for compiler support for kernel launches in device code |
US10585801B2 (en) * | 2012-11-26 | 2020-03-10 | Advanced Micro Devices, Inc. | Prefetch kernels on a graphics processing unit |
WO2014123552A1 (en) | 2013-02-08 | 2014-08-14 | Mellmo Inc. | Executing database queries using multiple processors |
WO2014139140A1 (en) | 2013-03-15 | 2014-09-18 | Hewlett-Packard Development Company, L.P. | Co-processor-based array-oriented database processing |
WO2014147617A1 (en) * | 2013-03-18 | 2014-09-25 | Sqream Technologies Ltd | Method for executing queries on streaming data using graphic processing units |
US9495418B2 (en) | 2013-08-07 | 2016-11-15 | International Business Machines Corporation | Scalable acceleration of database query operations |
US9251218B2 (en) | 2013-08-07 | 2016-02-02 | International Business Machines Corporation | Tunable hardware sort engine for performing composite sorting algorithms |
US9830354B2 (en) | 2013-08-07 | 2017-11-28 | International Business Machines Corporation | Accelerating multiple query processing operations |
US9619499B2 (en) | 2013-08-07 | 2017-04-11 | International Business Machines Corporation | Hardware implementation of a tournament tree sort algorithm |
US9501668B2 (en) * | 2013-09-25 | 2016-11-22 | Intel Corporation | Secure video ouput path |
US9727942B2 (en) * | 2013-10-29 | 2017-08-08 | International Business Machines Corporation | Selective utilization of graphics processing unit (GPU) based acceleration in database management |
GB2524063B (en) | 2014-03-13 | 2020-07-01 | Advanced Risc Mach Ltd | Data processing apparatus for executing an access instruction for N threads |
CN103984695B (en) | 2014-03-21 | 2017-06-20 | 华为技术有限公司 | A kind of data query method and device in database |
US9852301B2 (en) * | 2014-12-24 | 2017-12-26 | Intel Corporation | Creating secure channels between a protected execution environment and fixed-function endpoints |
US10310813B2 (en) | 2014-12-29 | 2019-06-04 | International Business Machines Corporation | Hardware implementation of a tournament tree sort algorithm using an external memory |
US9971808B2 (en) | 2015-06-24 | 2018-05-15 | International Business Machines Corporation | Fast query processing in columnar databases with GPUs |
US10853125B2 (en) | 2016-08-19 | 2020-12-01 | Oracle International Corporation | Resource efficient acceleration of datastream analytics processing using an analytics accelerator |
DE112019005288T5 (en) * | 2018-10-23 | 2021-07-15 | Nvidia Corporation | EFFECTIVE AND SCALABLE BUILDING AND PROBING OF HASH TABLES USING MULTIPLE GPUs |
JP6829427B2 (en) * | 2018-12-09 | 2021-02-10 | 浩平 海外 | Systems, methods, and programs for streamlining database queries |
CN113468181B (en) * | 2021-07-14 | 2022-10-11 | 中国人民解放军军事科学院国防科技创新研究院 | Parallel Hash connection acceleration method and system based on FPGA |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8813079B1 (en) * | 2006-06-07 | 2014-08-19 | Ca, Inc. | Thread management to prevent race conditions in computer programs |
US20100138376A1 (en) | 2007-01-24 | 2010-06-03 | Nicholas John Avis | Method and system for searching for patterns in data |
US7792822B2 (en) * | 2007-03-02 | 2010-09-07 | Microsoft Corporation | Systems and methods for modeling partitioned tables as logical indexes |
US7970872B2 (en) * | 2007-10-01 | 2011-06-28 | Accenture Global Services Limited | Infrastructure for parallel programming of clusters of machines |
US8286198B2 (en) * | 2008-06-06 | 2012-10-09 | Apple Inc. | Application programming interfaces for data parallel computing on multiple processors |
-
2010
- 2010-04-22 US US12/765,459 patent/US8392463B2/en not_active Expired - Fee Related
-
2011
- 2011-03-31 WO PCT/EP2011/055032 patent/WO2011131470A1/en active Application Filing
- 2011-03-31 DE DE112011101391T patent/DE112011101391T5/en not_active Ceased
- 2011-03-31 GB GB1212035.8A patent/GB2513087A/en not_active Withdrawn
-
2013
- 2013-02-01 US US13/756,780 patent/US9336564B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US8392463B2 (en) | 2013-03-05 |
US9336564B2 (en) | 2016-05-10 |
GB2513087A (en) | 2014-10-22 |
WO2011131470A1 (en) | 2011-10-27 |
US20110264626A1 (en) | 2011-10-27 |
US20130141444A1 (en) | 2013-06-06 |
GB201212035D0 (en) | 2012-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112011101391T5 (en) | GPU-enabled database systems | |
DE112009000741B4 (en) | Vector instructions for enabling efficient synchronization and parallel reduction operations | |
DE102012216029B4 (en) | A SCALABLE ADAPTABLE MAP REDUCE FRAMEWORK WITH DISTRIBUTED DATA | |
Nykiel et al. | MRShare: sharing across multiple queries in MapReduce | |
DE202020005722U1 (en) | Placement of adaptive aggregation operators and properties in a query plan | |
DE102017109239A1 (en) | COMPUTER IMPLEMENTED PROCESS, COMPUTER READABLE MEDIA AND HETEROGICAL COMPUTER SYSTEM | |
DE102012221502A1 (en) | A system and method for performing crafted memory access operations | |
DE102013114072A1 (en) | System and method for hardware scheduling of indexed barriers | |
DE102013204521A1 (en) | Transaction management for database systems | |
DE102015112202A1 (en) | Combining paths | |
DE102018100730A1 (en) | Execution of calculation graphs | |
DE102017213160B4 (en) | Compilation for node device GPU-based parallel processing | |
DE112010003750T5 (en) | Hardware for parallel command list generation | |
DE202008017916U1 (en) | Virtual architecture and virtual instruction set for the calculation of parallel instruction sequences | |
DE102009012766A1 (en) | An access lock operation to allow atomic updates to a shared memory | |
DE102018109538A1 (en) | Techniques for fully synchronizing a thread execution | |
DE112020000865T5 (en) | STORAGE MANAGEMENT SYSTEM | |
DE102013019333A1 (en) | REGISTER ASSIGNMENT FOR CLUSTER SUBSTANTIVE REGISTER DATA | |
DE102013020485A1 (en) | A technique for performing memory access operations over texture hardware | |
DE112013001735T5 (en) | Optimizing the linking of instructions | |
DE112012004629T5 (en) | Dynamic memory affinity adjuster on process / object level | |
DE102019119956A1 (en) | ARCHITECTURE AND METHOD FOR THE DATA-PARALLEL SINGLE-PROGRAM-MULTIPLE-DATA (SPMD) -EXECUTION | |
DE112017006445T5 (en) | Methods and apparatus for identifying a count of N-grams occurring in a corpus | |
DE102013205059A1 (en) | Perform pre-decode optimized instructions along with sequence caching of pre-decode optimized instructions | |
DE102013020967A1 (en) | A technique for performing memory access operations over texture hardware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R082 | Change of representative |
Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE Representative=s name: SPIES DANNER & PARTNER PATENTANWAELTE PARTNERS, DE |
|
R002 | Refusal decision in examination/registration proceedings | ||
R003 | Refusal decision now final | ||
R082 | Change of representative |
Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE |
|
R003 | Refusal decision now final |
Effective date: 20140819 |