We present parallel algorithms and data structures for three fundamental operations in Numerical Linear Algebra: (i) Gaussian and CountSketch random projections and their combination, (ii) computation of the Gram matrix and (iii) computation of the squared row norms of the product of two matrices, with a special focus on "tall-and-skinny" matrices, which arise in many applications. We provide a detailed analysis of the ubiquitous CountSketch transform and its combination with Gaussian random projections, accounting for memory requirements, computational complexity and workload balancing. We also demonstrate how these results can be applied to column subset selection, least squares regression and leverage scores computation. These tools have been implemented in pylspack, a publicly available Python package (https://github.com/IBM/pylspack) whose core is written in C++ and parallelized with OpenMP, and which is compatible with standard matrix data structures of SciPy and NumPy. Extensive numerical experiments indicate that the proposed algorithms scale well and significantly outperform existing libraries for tall-and-skinny matrices.
翻译:我们为数字线性线性代数的三个基本操作提供了平行的算法和数据结构:(一) Gaussian和CountSketch随机预测及其组合,(二) 计算格拉姆矩阵和(三) 计算两个矩阵产品平方行规范,特别侧重于许多应用中产生的“tall-and-skiny”矩阵。我们详细分析了无处不在的计票制件变换及其与Gaussian随机预测的组合,计算记忆要求、计算复杂性和工作量平衡。我们还展示了这些结果如何应用于列子选择、最小方回归和杠杆分数计算。这些工具已在Pylspack中实施,这是一个可公开使用的Python软件包(https://github.com/IBM/Pylspack),其核心写在C++,并与OpenMP平行,并与SciPy和NumPy的标准矩阵数据结构相容。广泛的数字实验表明,拟议的算法规模良好,大大超出现有的统计-and-skiny矩阵库。