Slide Presentation - Carleton University

advertisement

Parallel Buffer Trees and

Searching

Cory Fraser

School of Computer Science

Carleton University, Ottawa, Canada http://people.scs.carleton.ca/~cfraser3/

COMP 5704 Project Presentation

• Computational Model

• Parallel Buffer Trees

• Implementation

• Results

COMP 5704 Project Presentation

Outline

Computational Model

• Sequential Buffer Tree operated in the External

Memory Model.

• Minimizes transfers from hard disk -> RAM.

• Parallel Buffer Tree operates in the Parallel

External Memory Model.

• Minimizes transfers from RAM -> CPU cache.

COMP 5704 Project Presentation

Related Search Data Structures

• Binary Search Trees

• Usually analyzed in RAM/PRAM model.

• O(nlogn) build time, O(logn) operation time.

• B-trees

• Analyzed in EM / PEM model.

• O(nlog

B n) build time, O(log

B n) operation time.

• Buffer Tree has O((n/B) log

B

(n/B)) build time.

COMP 5704 Project Presentation

What is a Parallel Buffer Tree?

• An offline data structure.

• An (a,b)-tree variant.

• Performs tree operations in batches to reduce

I/Os.

• Good when there’s a continual large flow of operations to execute.

COMP 5704 Project Presentation

Parallel Buffer Tree Complexity

• For sequences of N insert/delete/find(/range) operations:

• O(sort

P

(N)) I/Os without range search

• O(sort

P

(N) + K/PB) I/Os with range searches.

• sort

P

(N) = O(N/PB log

B

N/B) I/Os

• Parallel B-tree needs O(N/Plog

B

N) I/Os.

COMP 5704 Project Presentation

Required Parallel Algorithms

• Parallel sorting for batch operations.

• Parallel merge sort used.

• Parallel prefix sums

• Needed for range query support.

• Distributes batched operations in buckets.

COMP 5704 Project Presentation

Implementation Overview

• Intel Cilk++ SDK with GCC used.

• Available at http://software.intel.com/enus/articles/download-intel-cilk-sdk

• Parallel merge sort from class used.

• Range query extension not implemented.

COMP 5704 Project Presentation

Implementation Details

• Buffer tree is an (a,b)-tree, a=f/4, b=f, f>= PB

• Each leaf stores up to B elements.

• Each non-leaf has a buffer of size 2fB.

• Internal nodes have k-1 routing elements to direct values to children. k = num. of children

COMP 5704 Project Presentation

Implementation Details - Operations

• Tree builds up batches of PB operations before executing them.

• An operation is its type, value, and timestamp.

• The PB batches operations are split into P blocks and sent to the root in parallel.

COMP 5704 Project Presentation

Emptying Non-fringe buffers

• Sort the buffer by value and timestamp.

• Answer Find operations with matching Insert/Delete operations.

• Cancel out matching Insert/Deleting operations.

• Distribute buffer elements to children based on the routing elements.

• Recursively empty children buffers with more than fB operations.

COMP 5704 Project Presentation

Emptying Fringe Buffers

• Convert all values within children nodes into insert operations with negative infinity timestamp.

• Sort the buffer by value and timestamp.

• Answer Find operations, cancel out

Insert/Deletes.

• Based on remaining operations:

• If <= fB then remake child nodes.

• If > fB then create new siblings for each fB/2 operations.

Tree rebalancing may be required.

COMP 5704 Project Presentation

Node Rebalancing

COMP 5704 Project Presentation

• Test System Specs:

• Quad-core running Fedora 16.

• 12 GB of RAM.

• Sequential comparison structures:

• C++ std::set

• online structure

• Parallel Buffer Tree with 1 worker.

Results

COMP 5704 Project Presentation

Results So Far – Build Times

COMP 5704 Project Presentation

Conclusions

• Parallel speedup vs sequential version is high with enough input.

• Performance is not competitive against equivalent online data structures thus far.

• Would need about 12 cores to match std::set.

• May be practical for high volume external memory applications.

COMP 5704 Project Presentation

Questions

• What is an offline data structure?

• What kind of I/O operations is the Parallel

External Memory (PEM) model concerned with?

• Why can a Buffer tree be loaded with N elements faster than a B-tree according to big-

O?

COMP 5704 Project Presentation

References

• N. Sitchinava, N. Zeh, A Parallel Buffer Tree http://dl.acm.org/citation.cfm?id=2312046

• L. Arge, External Memory Data Structures http://www.itc.dk/research/algorithms/Kurser/AA/2002F/Uge

11/handbook.pdf

• http://opendatastructures.org

COMP 5704 Project Presentation

Download