140 likes | 299 Views
Parallel Orthogonal Range Searching . Project Presentation b y Savitha Parur Venkitachalam. Orthogonal Range Searching - review. Input : Given a set of point P ={p 1 , p 2 ,….. p n } in the d-dimensional space with coordinate axes (x 1 , x 2 … x d ) A query range Output:
E N D
Parallel Orthogonal Range Searching Project Presentation by SavithaParurVenkitachalam
Orthogonal Range Searching - review Input : • Given a set of point P ={p1 , p2 ,…..pn} in the d-dimensional space with coordinate axes (x1 , x2 …xd) • A query range Output: Report all the points that lie within the d-range • Project focuses on 2D Range searching
Preprocessing • Process the data and store it in a KD tree • KD tree is a binary tree in which every node is a K-dimensional point
Build KD Tree - Pseudocode Input The set of data D The current depth of the tree which will be zero initially Output Root of the KD tree storing the set of data Buildkdtree (D , depth) If (D has only one point) then return this point else if (depth is even) Split D into two subsets through the median of X coordinates i.e. with a vertical line else Split D into two subsets through the median of Y coordinates i.e. with a horizontal line. Create a node with the median value and whose children are defined as Left_childBuildkdtree(D1 , depth+1) Right_childBuildkdtree(D2, depth+1) Return node
Range searching in KD tree Input: 1) A node of the KD tree 2) Input Query range Searchkdtree(node N , Range R) { If (N is a leaf) Report the value at N if it falls in the range. Else Consider the left subtree . If (left subtree is fully contained in the R) Report the left subtree Else if (left subtree intersects R) Searchkdtree(leftsubtree , R) Consider the right subtree . If (right subtree is fully contained in the R) Report the right subtree Else if (right subtree intersects R) Searchkdtree(rightsubtree , R) }
Parallel Algorithm Data Distribution • In the real world, databases exists in different processors • For simulating the scenario, initially server has all the data • Server scatters the data among the processors
Parallel Algorithm Preprocessing step • With the data received from the server each node builds a kd tree known to only that node • Time complexity for the preprocessing step will be reduced to Ofrom O(d.n.logn) with p processors & n elements in the data set in d dimensions • Storage requirements will be reduced to from O(dn)
Parallel Algorithm Range searching • Server sends the query range to all the processors • Processors search their local KD tree for the data in the range • Processors report the results to the server • Server takes the union of the results and reports it to the user
Complexity – Range Searching • Range searching in KD trees has a complexity of O(dn1−1/d + k) , k is the total number of points included in the search , n is the total number of points and d is the dimensions • Parallel range search will have a complexity of O(d(n/p)1−1d + k) + communication time
Results Time taken for varying load and varying #processors Range - size/2
Tasks pending • Research on the scope of multi threading with in each processor • Read Input data from a file to measure performance accurately • Check for any redundant data structures or unwanted copying of data that may affect performance • Writing the output to a file • Testing for accuracy on a data with predictable ranges • More testing with varying ranges
References • http://2011.cccg.ca/PDFschedule/papers/paper106.pdf • http://www.cs.arizona.edu/classes/cs437/fall12/Lecture5.prn.pdf • http://www.cs.wustl.edu/~pless/506/l11w.html • Parallel Computational Geometry – Aggarwal. A; O'Dunlaing. C; Yap.C • Parallel Processing and Applied Mathematics: 5th International Conference, PPAM 2003, Czestochowa, Poland, September 7-10, 2003. Revised Paper • Computational Geometry - Algorithms and Applications - Mark de Berg, TU Eindhoven , Otfried Cheong, KAIST ,Marc van Kreveld, Mark Overmars