As secure processors such as Intel SGX (with hyperthreading) become widely adopted, there is a growing appetite for private analytics on big data. Most prior works on data-oblivious algorithms adopt the classical PRAM model to capture parallelism. However, it is widely understood that PRAM does not best capture realistic multicore processors, nor does it reflect parallel programming models adopted in practice. In this paper, we initiate the study of parallel data oblivious algorithms on realistic multicores, best captured by the binary fork-join model of computation. We first show that data-oblivious sorting can be accomplished by a binary fork-join algorithm with optimal total work and optimal (cache-oblivious) cache complexity, and in O(log n log log n) span (i.e., parallel time) that matches the best-known insecure algorithm. Using our sorting algorithm as a core primitive, we show how to data-obliviously simulate general PRAM algorithms in the binary fork-join model with non-trivial efficiency. We also present results for several applications including list ranking, Euler tour, tree contraction, connected components, and minimum spanning forest. For a subset of these applications, our data-oblivious algorithms asymptotically outperform the best known insecure algorithms. For other applications, we show data oblivious algorithms whose performance bounds match the best known insecure algorithms. Complementing these asymptotically efficient results, we present a practical variant of our sorting algorithm that is self-contained and potentially implementable. It has optimal caching cost, and it is only a log log n factor off from optimal work and about a log n factor off in terms of span; moreover, it achieves small constant factors in its bounds.
翻译:随着像 Intel SGX (加超读) 这样的安全处理器被广泛采用,人们越来越倾向于对大数据进行私人分析。 大多数先前的数据显性算法都采用古典 PRAM 模型来捕捉平行。 但是,人们广泛理解, PRAM 并不最能捕捉现实的多核心处理器, 也不反映实践中采用的平行编程模型。 在本文件中, 我们开始对现实的多核数据上平行的不为人知的算法进行研究, 最能被二进制软join 计算模型所捕捉。 我们首先显示, 数据显性地对数据进行分解。 数据正性算法的二进制算算算法, 最起码的预知性算法应用法, 包括我们所知道的精细性算法, 其最起码的运算法, 其最起码的运算法, 其最起码的运算法, 其最起码的算法, 其最起码的算法是我们所知道的运算算法, 的精细的运算法, 其最起码的运算法, 的运算法, 也是我们所知道的运算的算算法, 的算法, 其最起码的算法 的算法的算法, 其最起码的运算法 的算法, 其最精细的算法 的算法, 其最精细的算法, 的算法, 的算法, 的算法, 的算法,其最精算法,其最精细算法, 的算算法, 的算算法, 的算算法, 的算法, 的算法,它在我们所算法 的算法, 的算算法,它的精细的算法,它的精算法,它的精算法,我们所算法,它的精算法,它的精算算算法,它的精算算算算法,它的精算算算法, 的精算法, 的精算法,它的精算法, 的精算法, 的精算法, 的精算法,它的精算法,它,它是最精算法,它的精算法,我们的