DE112011101391T5 - GPU-enabled database systems - Google Patents

GPU-enabled database systems Download PDF

Info

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
Application number
DE112011101391T
Other languages
German (de)
Inventor
Akshay Gautam
Ritesh Kumar Gupta
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112011101391T5 publication Critical patent/DE112011101391T5/en
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational 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:

1 eine veranschaulichende Darstellung einer G80-Architektur-kompatiblen GPU gemäß Ausführungsformen der vorliegenden Erfindung; 1 an illustrative representation of a G80 architecture-compatible GPU according to embodiments of the present invention;

2 eine veranschaulichende Darstellung einer Speicherhierarchie in einer GPU gemäß Ausführungsformen der vorliegenden Erfindung; 2 an illustrative representation of a memory hierarchy in a GPU according to embodiments of the present invention;

3 eine veranschaulichende Darstellung eines verbundenen Arbeitsspeichermusters und eines nicht verbundenen Arbeitsspeichermusters gemäß Ausführungsformen der vorliegenden Erfindung; 3 an illustrative representation of a connected memory memory pattern and a non-connected memory pattern according to embodiments of the present invention;

4 einen veranschaulichenden Ablaufplan von Verfahren zum Bereitstellen von GPU-fähigen Datenbankdiensten gemäß Ausführungsformen der vorliegenden Erfindung; 4 an illustrative flowchart of methods for providing GPU-enabled database services in accordance with embodiments of the present invention;

5 eine veranschaulichende Darstellung eines voll-GPU-fähigen Datenbanksystems, das speicherbasierende Tabellen verwendet, gemäß Ausführungsformen der vorliegenden Erfindung; 5 an illustrative representation of a full-GPU capable database system using memory-based tables in accordance with embodiments of the present invention;

6 eine veranschaulichende Darstellung eines Pufferspeichers für ein GPU-fähiges Datenbanksystem gemäß Ausführungsformen der vorliegenden Erfindung; und 6 an illustrative representation of a cache memory for a GPU-enabled database system according to embodiments of the present invention; and

7 eine veranschaulichende Darstellung eines voll-GPU-fähigen Datenbanksystems, das plattenbasierende Tabellen verwendet, gemäß Ausführungsformen der vorliegenden Erfindung; 7 an illustrative representation of a full-GPU capable database system using disk-based tables in accordance with embodiments of the present invention;

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.

1 zeigt eine veranschaulichende Darstellung 100 einer G80-Architektur-kompatiblen Grafikverarbeitungseinheit (GPU) gemäß Ausführungsformen der vorliegenden Erfindung. Wie veranschaulicht kann eine G80-Architektur mehrere Komponenten enthalten, darunter: einen Host-Computer 102, einen Eingabe-Assembler 104, einen Thread-Ausführungs-Verwalter 106, ein Laden/Speichern 108 und einen globalen Speicher 110. Diese Komponenten funktionieren gemeinsam mit mehreren gemeinsam genutzten Multiprozessoren 120. Eine typische G80-Architektur-kompatible GPU kann 128 Datenstromprozessoren 122 enthalten, die in 8 gemeinsam genutzte Multiprozessoren 120 aufgeteilt sind, die jeweils 16 Datenstromprozessoren enthalten. Jeder gemeinsam genutzte Multiprozessor 120 enthält gemeinsam genutzten lokalen Speicher 124, der von den auf dem gemeinsam genutzten Multiprozessor laufenden Threads gemeinsam genutzt wird. Dies ist vorteilhaft, da es bei verbundenem Zugriff (coalesced access) hilft – wenn Thread-Gruppen Arbeitsschritte auf Daten in der Nähe ausführen. 1 shows an illustrative representation 100 a G80 architecture-compatible graphics processing unit (GPU) according to embodiments of the present invention. As illustrated, a G80 architecture may include multiple components, including: a host computer 102 , an input assembler 104 , a thread execution manager 106 , a store / save 108 and a global memory 110 , These components work in concert with multiple shared multiprocessors 120 , A typical G80 architecture-compatible GPU can handle 128 data stream processors 122 included in 8 shared multiprocessors 120 are divided, each containing 16 data stream processors. Each shared multiprocessor 120 contains shared local storage 124 that is shared by threads running on the shared multiprocessor. This is beneficial because it helps with coalesced access - when thread groups perform operations on data in the vicinity.

2 zeigt eine veranschaulichende Darstellung einer Speicherhierarchie 200 in einer GPU gemäß Ausführungsformen der vorliegenden Erfindung; Die Speicherhierarchie 200 enthält den Pro-Thread-Speicher 204, den Pro-Thread-Gruppen-Speicher 208 und den globalen/Einheiten-Speicher 212. Jeder in der GPU laufende Thread kann auf den globalen/Einheiten-Speicher 212 zugreifen. Lese- und Schreibvorgänge auf dem Einheitenspeicher 212 sind im Vergleich zu den anderen Speichern 204 und 208 langsam. Die GPU-Threads 208 sind im Vergleich zu CPU-Threads extrem leichtgewichtig, und somit gibt es im Wesentlichen Null Verwaltungsaufwand beim Erstellen von Tausenden von Threads. Vor allem werden Threads nicht einzeln auf einem Prozessor ausgeführt. Stattdessen werden mehrere Threads in „Ketten (warps)” genannten Thread-Gruppen 206 ausgeführt, die auf einem einzelnen gemeinsam genutzten Multiprozessor ausgeführt werden (siehe 1, 120). Threads in einer Kette können den lokalen Speicher der gemeinsam genutzten Multiprozessoren gemeinsam nutzen. Diese Fähigkeit führt zu einer verbesserten Leistungsfähigkeit, da zum Abrufen und Laden von Daten weniger Lese/Schreib-Vorgänge in dem globalen Speicher durchgeführt werden. Das heißt, dass Daten einmalig in einen gemeinsam genutzten Speicher des gemeinsam genutzten Multiprozessors abgerufen werden, Berechnungen durchgeführt werden und Ergebnisse in den globalen Speicher geladen werden. 2 shows an illustrative representation of a memory hierarchy 200 in a GPU according to embodiments of the present invention; The storage hierarchy 200 contains the per-thread memory 204 , the per-thread group store 208 and the global / unit memory 212 , Any thread running in the GPU can access the global / device memory 212 access. Read and write operations on the device memory 212 are compared to the other stores 204 and 208 slowly. The GPU threads 208 Compared to CPU threads, they are extremely lightweight, and so there is essentially zero overhead in creating thousands of threads. Most importantly, threads do not run on a single processor. Instead, multiple threads are named in "warps (warps)" thread groups 206 executed on a single shared multiprocessor (see 1 . 120 ). Threads in a chain can share the local memory of the shared multiprocessors. This capability results in improved performance since fewer read / write operations are performed in the global memory to fetch and load data. That is, data is retrieved once into shared memory of the shared multiprocessor, calculations are performed, and results are loaded into global memory.

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. 3 zeigt eine veranschaulichende Darstellung eines verbundenen Arbeitsspeichermusters 300 und eines nicht vereinigten Arbeitsspeichermusters 310 gemäß Ausführungsformen der vorliegenden Erfindung. Bei dem verbundenen Speichermuster 300 befinden sich die Threads t0 bis t3 302 in der richtigen Reihenfolge in dem Speicher 304. Im Gegensatz dazu befinden sich die Threads t0 bis t3 312 bei dem nicht verbundenen Speichermuster 310 nicht in der richtigen Reihenfolge in dem Speicher 314. Verbundene Speichermuster können in einigen hierin beschriebenen Ausführungsformen Nutzeffekte für die Verarbeitung bereitstellen. In einigen Ausführungsformen können hash-partitionierte Relationen in einem verbundenen Zugriffsmuster in den GPU-Speicher geladen werden, so dass ein benachbarter Bereich des GPU-Speichers verwendet wird.Embodiments described herein optimize memory utilization by a) effectively and efficiently utilizing parallelism, and b) associating read operations from the global memory. By leveraging parallelism, parallel execution of database operations across as many threads on a GPU as possible at any one time is possible. By connecting read operations from the global memory, adjacent areas in global memory can be manipulated by threads in a thread group. 3 shows an illustrative representation of an associated memory memory pattern 300 and a non-merged memory map 310 according to embodiments of the present invention. In the connected memory pattern 300 are the threads t0 to t3 302 in the right order in the store 304 , In contrast, the threads are t0 to t3 312 in the unconnected memory pattern 310 not in the right order in the memory 314 , Associated memory patterns, in some embodiments described herein, may provide benefits for processing. In some embodiments, hash partitioned relations in a connected access pattern may be loaded into the GPU memory so that an adjacent portion of the GPU memory is used.

4 zeigt einen veranschaulichenden Ablaufplan 400 von Verfahren zum Bereitstellen von GPU-fähigen Datenbankdiensten gemäß Ausführungsformen der vorliegenden Erfindung. Insbesondere werden Verfahren für das parallele Ausführen von Abfragen einer Datenbankoperation in einer eine GPU nutzenden Datentabelle (datable) veranschaulicht. In einem ersten Schritt 402 empfängt das Verfahren eine Abfrage. Abfragen können auf jede beliebige nach dem Stand der Technik bekannte Art durch einen Host-Computer empfangen werden, ohne von der vorliegenden Erfindung abzuweichen. In Ausführungsformen kann eine Abfrage mindestens zwei Datenbankrelationen enthalten. In einem nächsten Schritt 404 ermittelt das Verfahren, ob es sich bei der empfangenen Abfrage um eine lange Abfrage handelt. In Ausführungsformen kann eine lange Abfrage zusätzliche Verarbeitungsschritte erfordern. Wenn das Verfahren in einem Schritt 404 ermittelt, dass es sich bei der Abfrage nicht um eine lange Abfrage handelt, fährt das Verfahren mit einem Schritt 406 fort und startet einen GPU-Kernel, woraufhin das Verfahren mit einem Schritt 410 fortfährt. Wenn das Verfahren in einem Schritt 404 ermittelt, dass es sich bei der Abfrage um eine lange Abfrage handelt, fährt das Verfahren mit einem Schritt 420 fort und zergliedert die lange Abfrage in mehrere Teilabfragen. Das Partitionieren langer Abfragen stellt den Vorteil des parallelen Ausführens von Abfragen über mehrere GPU-Kernel bereit. Als solches startet das Verfahren in einem nächsten Schritt 422 einen GPU-Kernel für jede Teilabfrage. Teilabfragen können in Ausführungsformen auf der Grundlage einer Vielfalt von Parametern, z. B. der Größe, bestimmt werden. Das heißt, dass eine Teilabfrage basierend darauf bestimmt werden kann, ob die Teilabfrage in den GPU-Speicher passen wird. 4 shows an illustrative flowchart 400 method of providing GPU-enabled database services according to embodiments of the present invention. In particular, methods for performing parallel queries of a database operation in a data table using a GPU are illustrated. In a first step 402 the method receives a query. Queries may be received by any host computer in any manner known in the art without departing from the present invention. In embodiments, a query may include at least two database relations. In a next step 404 The method determines whether the received query is a long query. In embodiments, a long query may require additional processing steps. If the process in one step 404 If the query determines that the query is not a long query, the procedure moves in one step 406 and starts a GPU kernel, whereupon the method comes with a step 410 continues. If the process in one step 404 If the query determines that the query is a long query, the procedure moves in one step 420 continues and dissects the long query into multiple subqueries. Partitioning long queries provides the benefit of running queries across multiple GPU kernels in parallel. As such, the method starts in a next step 422 a GPU kernel for each subquery. Subqueries may, in embodiments, be based on a variety of parameters, e.g. As the size determined. That is, a subquery can be determined based on whether the subquery fits into the GPU memory.

Das Verfahren fährt mit einem Schritt 410 fort und hash-partitioniert sämtliche Relationen nach GPU-Kernel(s). Das Hash-Partitionieren kann auf jede beliebige nach dem Stand der Technik bekannte Art vorgenommen werden, ohne von der vorliegenden Erfindung abzuweichen. In einem nächsten Schritt 412 lädt das Verfahren hash-verschlüsselte Partitionsrelationen und Schlüssel in den GPU-Speicher. In einem nächsten Schritt 414 baut das Verfahren eine Hash-Tabelle für die kleinere Tabelle auf und führt in einem Schritt 416 die Abfrage bzw. Teilabfragen durch den/die GPU-Kernel(s) aus. In einem Schritt 416 zurückgesendete Ergebnisse können zuerst in den GPU-Einheitenspeicher geschrieben werden und dann für einen Benutzer in dem Host-Computerspeicher zugänglich gemacht werden, woraufhin das Verfahren endet.The process moves with one step 410 and hash partitioned all relations to GPU kernel (s). Hash partitioning may be done in any manner known in the art without departing from the present invention. In a next step 412 The procedure loads hash-encrypted partition relations and keys into the GPU memory. In a next step 414 builds a hash table for the smaller table and performs in one step 416 the query or subqueries by the GPU kernel (s). In one step 416 returned results may first be written to the GPU device memory and then made accessible to a user in the host computer memory, whereupon the method ends.

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. 5 zeigt eine veranschaulichende Darstellung eines voll-GPU-fähigen Datenbanksystems 500, das speicherbasierende Tabellen verwendet, gemäß Ausführungsformen der vorliegenden Erfindung. In der veranschaulichenden Ausführungsform kann sich ein Benutzer 502 entweder lokal oder aus der Ferne an dem Host-Computer 504 anmelden, um Abfragen durchzuführen. In einigen Ausführungsformen handelt es sich bei dem Host-Computer um eine CPU. In einigen Ausführungsformen handelt es sich bei den Abfragen um SQL-artige Abfragen. Abfragen können an die GPU 506 gesendet, auf der GPU 506 ausgeführt und an den Host-Computer 504 zurückgesendet werden. Ergebnisse können an den Benutzer 502 zurückgesendet werden. Wie oben angemerkt kann es sich in Ausführungsformen bei einer GPU um eine G80-Architektur-kompatible GPU handeln. Wie veranschaulicht kann die GPU 506 so konfiguriert sein, dass sie speicherbasierende Tabellen verwendet. Als solche können in Ausführungsformen Datenbankdaten und Datenbankschlüssel in dem GPU-Speicher gespeichert werden, wobei der Speicher in einigen Ausführungsformen gemeinsam genutzt werden kann. Da sich Datenbankdaten und Datenbankschlüssel vollständig in dem GPU-Speicher befinden, können Vorteile bei der Leistungsfähigkeit erreicht werden. Auf Grund der begrenzten Größe des GPU-Speichers können in Ausführungsformen jedoch Einschränkungen bei der Größe der Datenbanktabelle erforderlich sein. Wie oben angemerkt kann der Speicherverbrauch in CEILADBTM verwendenden Ausführungsformen dadurch gelöst werden, dass es einem Benutzer zu jeder beliebigen Zeit ermöglicht wird, die Menge des Speichers abzufragen, der von den 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.The following examples are provided for clarity of understanding of embodiments of the present invention and are not to be considered as limiting. 5 shows an illustrative representation of a fully GPU capable database system 500 using memory-based tables according to embodiments of the present invention. In the illustrative embodiment, a user may 502 either locally or remotely at the host computer 504 log in to perform queries. In some embodiments, the host computer is a CPU. In some embodiments, the queries are SQL-type queries. Queries can be sent to the GPU 506 sent on the GPU 506 executed and sent to the host computer 504 be sent back. Results can be sent to the user 502 be sent back. As noted above, in embodiments, a GPU may be a G80 architecture-compatible GPU. As illustrated, the GPU 506 be configured to use memory-based tables. As such, in embodiments, database data and database keys may be stored in the GPU memory, where the memory may be shared in some embodiments. Since database data and database keys are located entirely in the GPU memory, performance benefits can be achieved. However, due to the limited size of the GPU memory, in embodiments, size limitations of the database table may be required. As noted above, memory usage in embodiments employing CEILADB may be resolved by allowing a user at any time to query 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.

6 zeigt eine veranschaulichende Darstellung eines Pufferspeichers für ein GPU-fähiges Datenbanksystems 600 gemäß Ausführungsformen der vorliegenden Erfindung. In der veranschaulichenden Ausführungsform kann sich ein Benutzer 602 entweder lokal oder aus der Ferne an dem Host-Computer 604 anmelden, um Abfragen durchzuführen. In einigen Ausführungsformen handelt es sich bei dem Host-Computer um einen Datenbankknoten. In einigen Ausführungsformen handelt es sich bei den Abfragen um SQL-artige Abfragen. Abfragen können an die GPU 606 gesendet, auf der GPU 606 ausgeführt und an den Host-Computer 604 zurückgesendet werden. Ergebnisse können an den Benutzer 602 zurückgesendet werden. Wie oben angemerkt kann es sich in Ausführungsformen bei einer GPU um eine G80-Architektur-kompatible GPU handeln. In dieser Ausführungsform kann ein Benutzer die hohe Rechenleistung und Speicherbandbreite der GPU zum Beschleunigen von Datenbankabfragen von anderen Datenbanksystemen ausnutzen, da es sich in diesem Beispiel bei dem Host-Computer um einen Datenbankknoten handelt. Wie oben können in Ausführungsformen Datenbankdaten und Datenbankschlüssel in dem GPU-Speicher gespeichert werden, wobei der Speicher in einigen Ausführungsformen gemeinsam genutzt werden kann. Außerdem können in Ausführungsformen Datenbankdaten und Datenbankschlüssel auf den tertiären Platten 608 gespeichert werden. Durch das Durchführen von Abfragen in einer kommerziellen Datenbank ist sich der Benutzer 602 in Ausführungsformen nicht darüber bewusst, dass Abfragen durch die GPU 606 verarbeitet werden. 6 shows an illustrative representation of a cache memory for a GPU-enabled database system 600 according to embodiments of the present invention. In the illustrative embodiment, a user may 602 either locally or remotely at the host computer 604 log in to perform queries. In some embodiments, the host computer is a database node. In some embodiments, the queries are SQL-type queries. Queries can be sent to the GPU 606 sent on the GPU 606 executed and sent to the host computer 604 be sent back. Results can be sent to the user 602 be sent back. As noted above, in embodiments, a GPU may be a G80 architecture-compatible GPU. In this embodiment, a user may take advantage of the GPU's high processing power and memory bandwidth to speed database queries from other database systems, since in this example the host computer is a database node. As above, in embodiments, database data and database keys may be stored in the GPU memory, where the memory may be shared in some embodiments. In addition, in embodiments, database data and database keys may be on the tertiary disks 608 get saved. Running queries in a commercial database is the user 602 in embodiments, not aware that queries are made by the GPU 606 are processed.

7 zeigt eine veranschaulichende Darstellung eines voll-GPU-fähigen Datenbanksystems 700, das plattenbasierende Tabellen verwendet, gemäß Ausführungsformen der vorliegenden Erfindung. In der veranschaulichenden Ausführungsform kann sich ein Benutzer 702 entweder lokal oder aus der Ferne an dem Host-Computer 704 anmelden, um Abfragen durchzuführen. In einigen Ausführungsformen handelt es sich bei dem Host-Computer um eine CPU. In einigen Ausführungsformen handelt es sich bei den Abfragen um SQL-artige Abfragen. Abfragen können an die GPU 706 gesendet, auf der GPU 706 ausgeführt und an den Host-Computer 704 zurückgesendet werden. Ergebnisse können an den Benutzer 702 zurückgesendet werden. Wie oben angemerkt kann es sich in Ausführungsformen bei einer GPU um eine G80-Architektur-kompatible GPU handeln. Wenn ein Benutzer in dieser Ausführungsform mit riesigen Datenmengen zu tun hat, ist es gegebenenfalls nicht möglich, die gesamten Daten in dem GPU-Speicher zu speichern. Deshalb können in Ausführungsformen Datenbankdaten und Datenbankschlüssel auf den tertiären Platten 708 gespeichert werden. Außerdem können in Ausführungsformen Datenbankschlüssel in dem GPU-Speicher gespeichert werden. Als solches wird beim Abrufen von Daten von den Platten eine Host-Computer-Kopie verwendet, und zum Zugreifen auf Tupel in dem GPU-Speicher wird die GPU-Einheit-Kopie verwendet. Nach dem Einfügen von Operationen in eine Datenbank müssen alle Kopien synchronisiert werden, um Inkonsistenzen zu vermeiden. In einigen Ausführungsformen ist es unbedingt erforderlich, die Plattenzugriffe mit Berechnungen im Pipeline-System zu verarbeiten, um beträchtliche Verbesserungen der Leistungsfähigkeit zu erzielen. 7 shows an illustrative representation of a fully GPU capable database system 700 using disk-based tables according to embodiments of the present invention. In the illustrative embodiment, a user may 702 either locally or remotely at the host computer 704 log in to perform queries. In some embodiments, the host computer is a CPU. In some embodiments, the queries are SQL-type queries. Queries can be sent to the GPU 706 sent on the GPU 706 executed and sent to the host computer 704 be sent back. Results can be sent to the user 702 be sent back. As noted above, in embodiments, a GPU may be a G80 architecture-compatible GPU. If a user is dealing with huge amounts of data in this embodiment, it may not be possible to store all the data in the GPU memory. Therefore, in embodiments, database data and database keys may be on the tertiary disks 708 get saved. Additionally, in embodiments, database keys may be stored in the GPU memory. As such, a host computer copy is used in retrieving data from the disks, and the GPU unit copy is used to access tuples in the GPU storage. After inserting operations into a database, all copies must be synchronized to avoid inconsistencies. In some embodiments, it is imperative to process the disk accesses with pipelined calculations to achieve significant improvements in performance.

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)

Ein Verfahren zum parallelen Ausführen von Abfragen einer Datenbankoperation in einer eine Grafikverarbeitungseinheit (GPU) verwendenden Datenbank, wobei das Verfahren Folgendes umfasst: Empfangen einer Abfrage durch einen Host-Computer, wobei die Abfrage mindestens zwei Datenbankrelationen umfasst; Starten mindestens eines GPU-Kernel, wobei der mindestens eine GPU-Kernel einen GPU-Speicher enthält; Hash-Partitionieren der mindestens zwei Datenbankrelationen durch den GPU-Kernel; Laden der mindestens zwei hash-partitionierten Datenbankrelationen in den GPU-Speicher; Laden von verschlüsselten, den mindestens zwei hash-partitionierten Datenbankrelationen entsprechenden Partitionen in den GPU-Speicher; Aufbauen einer Hash-Tabelle für einen kleineren Teil der mindestens zwei hash-partitionierten Datenbankrelationen; und Ausführen der Abfrage.A method of performing queries of a database operation in parallel in a database using a graphics processing unit (GPU), the method comprising: Receiving a query by a host computer, the query comprising at least two database relations; Launching at least one GPU kernel, wherein the at least one GPU kernel includes a GPU memory; Hash partitioning of the at least two database relations by the GPU kernel; Loading the at least two hash partitioned database relations into the GPU memory; Loading encrypted partitions corresponding to the at least two hash partitioned database relations into the GPU memory; Building a hash table for a smaller part of the at least two hash partitioned database relations; and execute the query. Das Verfahren nach Anspruch 1, das ferner ein Zurücksenden eines Ergebnisses der Abfrage umfasst.The method of claim 1, further comprising returning a result of the query. Das Verfahren nach Anspruch 1, ferner aufweisend: wenn es sich bei der Abfrage um eine lange Abfrage handelt, die eine Vielzahl von Operatoren enthält, Zergliedern der langen Abfrage in mehrere Teilabfragen; wobei für jede der Teilabfragen einer der mindestens einen GPU-Kernel gestartet wird, so dass die Teilabfragen parallel verarbeitet werden; und Rückkehren zur Hash-Partitionierung.The method of claim 1, further comprising: if the query is a long query containing a plurality of operators, parsing the long query into multiple subqueries; wherein, for each of the subqueries, one of the at least one GPU kernel is started so that the subqueries are processed in parallel; and Return to hash partitioning. Das Verfahren nach Anspruch 1, bei dem es sich bei dem Host-Computer um eine CPU handelt, und wobei Datenbankdaten und Datenbankschlüssel in dem GPU-Speicher gespeichert werden.The method of claim 1, wherein it is the host computer is a CPU, and where Database data and database keys are stored in the GPU memory. Das Verfahren nach Anspruch 1, bei dem es sich bei dem Host-Computer um eine CPU handelt, wobei Datenbankdaten und erste Datenbankschlüssel auf einem Plattendatenspeicher gespeichert werden, und wobei zweite Datenbankschlüssel in dem GPU-Speicher gespeichert werden.The method of claim 1, wherein it is the host computer is a CPU, where Database data and first database key are stored on a disk data storage, and wherein second database keys are stored in the GPU memory. Das Verfahren nach Anspruch 5, ferner umfassend: Synchronisieren der ersten Datenbankschlüssel mit den zweiten Datenbankschlüsseln.The method of claim 5, further comprising: Synchronize the first database key with the second database key. Das Verfahren nach Anspruch 1, bei dem es sich bei dem Host-Computer um einen Datenbankknoten handelt, wobei erste Datenbankdaten und erste Datenbankschlüssel auf einem Plattendatenspeicher gespeichert werden, und wobei zweite Datenbankdaten und zweite Datenbankschlüssel in dem GPU-Speicher gespeichert werden.The method of claim 1, wherein the host computer is a database node, where first database data and first database keys are stored on a disk data store, and wherein second database data and second database key are stored in the GPU memory. Das Verfahren nach Anspruch 7, bei dem der Datenplattenspeicher pileline-artig an die GPU gekoppelt ist.The method of claim 7, wherein the data disk storage is pileline-coupled to the GPU. Das Verfahren nach Anspruch 1, bei dem es sich bei der Datenbank um eine CEILADBTM-Datenbank handelt.The method of claim 1, wherein the database is a CEILADB database. Das Verfahren nach Anspruch 9, bei dem die CEILADBTM-Datenbank so konfiguriert ist, dass sie Transaktionen protokolliert, so dass eine Wiederholung (roll back) eingeleitet werden kann, wenn zwischen dem Host-Computer und der GPU ein inkonsistenter Zustand auftritt.The method of claim 9, wherein the CEILADB database is configured to log transactions so that a rollback can be initiated when an inconsistent state occurs between the host computer and the GPU. Das Verfahren nach Anspruch 9, bei dem die CEILADBTM-Datenbank so konfiguriert ist, um eine Speichernutzung zu begrenzen, so dass die Abfrage auf eine eingeschränkte Klasse von Abfragen beschränkt wird.The method of claim 9, wherein the CEILADB database is configured to limit memory usage so that the query is restricted to a restricted class of queries. Das Verfahren nach Anspruch 1, bei dem es sich bei der GPU um eine G80-Architektur-kompatible GPU handelt.The method of claim 1, wherein the GPU is a G80 architecture-compatible GPU. Das Verfahren nach Anspruch 1, bei dem es sich bei dem GPU-Speicher um einen gemeinsam genutzten Speicher für die mindestens einen GPU-Kernel handelt.The method of claim 1, wherein the GPU memory is a shared memory for the at least one GPU kernel. Das Verfahren nach Anspruch 1, bei dem sich zwei hash-partitionierte Relationen in dem GPU-Speicher in einem verbundenen Zugriffsmuster befinden, so dass ein benachbarter Bereich des Speichers verwendet wird.The method of claim 1, wherein there are two hash partitioned relations in the GPU memory in a connected access pattern such that an adjacent area of the memory is used. Ein Computerprogrammprodukt zum parallelen Ausführen von Abfragen einer Datenbankoperation in einer eine Grafikverarbeitungseinheit (GPU) verwendenden Datenbank in Zusammenarbeit mit einer Datenverarbeitungseinheit, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Medium enthält, das Programmanweisungen enthält, die beim Ausführen durch einen Computer den Computer dazu veranlassen, die Schritte nach einem der Ansprüche 1 bis 14 durchzuführen.A computer program product for performing parallel queries of a database operation on a database using a graphics processing unit (GPU) in cooperation with a computing device, the computer program product including a computer readable medium containing program instructions that, when executed by a computer, cause the computer to: to carry out the steps according to one of claims 1 to 14. Ein Grafikverarbeitungseinheit-(GPU-)unterstütztes Datenbanksystem zum parallelen Ausführen von Abfragen, aufweisend: 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 GPU-Kernel enthält, wobei der mindestens eine GPU-Kernel einen 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.A graphics processing unit (GPU) supported database system for executing queries in parallel, comprising: a database; a database-exchanging GPU, the GPU configured to process a database query, wherein the GPU includes at least one GPU kernel, the at least one GPU kernel containing a GPU memory, and wherein the GPU is configured to process the database query in parallel; and a host computer for receiving database queries. Das System nach Anspruch 16, bei dem es sich bei dem Host-Computer um eine CPU handelt, und bei dem Datenbankdaten und Datenbankschlüssel in dem GPU-Speicher gespeichert werden.The system of claim 16, wherein the host computer is a CPU, and the Database data and database keys are stored in the GPU memory. Das System nach Anspruch 16, bei dem es sich bei dem Host-Computer um eine CPU handelt, wobei Datenbankdaten und erste Datenbankschlüssel auf einem Plattendatenspeicher gespeichert werden, und wobei zweite Datenbankschlüssel in dem GPU-Speicher gespeichert werden.The system of claim 16, wherein it is the host computer is a CPU, where Database data and first database key are stored on a disk data storage, and wherein second database keys are stored in the GPU memory. Das System nach Anspruch 16, bei dem es sich bei dem Host-Computer um einen Datenbankknoten handelt, wobei erste Datenbankdaten und erste Datenbankschlüssel auf einem Plattendatenspeicher gespeichert werden, und wobei zweite Datenbankdaten und zweite Datenbankschlüssel in dem GPU-Speicher gespeichert werden.The system of claim 16, wherein the host computer is a database node, where first database data and first database keys are stored on a disk data store, and wherein second database data and second database key are stored in the GPU memory. Das System nach Anspruch 16, bei dem es sich bei der Datenbank um eine CEILADBTM-Datenbank handelt.The system of claim 16, wherein the database is a CEILADB database.
DE112011101391T 2010-04-22 2011-03-31 GPU-enabled database systems Ceased DE112011101391T5 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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