509 research outputs found
Highly Scalable Multiplication for Distributed Sparse Multivariate Polynomials on Many-core Systems
We present a highly scalable algorithm for multiplying sparse multivariate
polynomials represented in a distributed format. This algo- rithm targets not
only the shared memory multicore computers, but also computers clusters or
specialized hardware attached to a host computer, such as graphics processing
units or many-core coprocessors. The scal- ability on the large number of cores
is ensured by the lacks of synchro- nizations, locks and false-sharing during
the main parallel step.Comment: 15 pages, 5 figure
High Performance Sparse Multivariate Polynomials: Fundamental Data Structures and Algorithms
Polynomials may be represented sparsely in an effort to conserve memory usage and provide a succinct and natural representation. Moreover, polynomials which are themselves sparse – have very few non-zero terms – will have wasted memory and computation time if represented, and operated on, densely. This waste is exacerbated as the number of variables increases. We provide practical implementations of sparse multivariate data structures focused on data locality and cache complexity. We look to develop high-performance algorithms and implementations of fundamental polynomial operations, using these sparse data structures, such as arithmetic (addition, subtraction, multiplication, and division) and interpolation. We revisit a sparse arithmetic scheme introduced by Johnson in 1974, adapting and optimizing these algorithms for modern computer architectures, with our implementations over the integers and rational numbers vastly outperforming the current wide-spread implementations. We develop a new algorithm for sparse pseudo-division based on the sparse polynomial division algorithm, with very encouraging results. Polynomial interpolation is explored through univariate, dense multivariate, and sparse multivariate methods. Arithmetic and interpolation together form a solid high-performance foundation from which many higher-level and more interesting algorithms can be built
On exact division and divisibility testing for sparse polynomials
No polynomial-time algorithm is known to test whether a sparse polynomial G
divides another sparse polynomial . While computing the quotient Q=F quo G
can be done in polynomial time with respect to the sparsities of F, G and Q,
this is not yet sufficient to get a polynomial-time divisibility test in
general. Indeed, the sparsity of the quotient Q can be exponentially larger
than the ones of F and G. In the favorable case where the sparsity #Q of the
quotient is polynomial, the best known algorithm to compute Q has a non-linear
factor #G#Q in the complexity, which is not optimal.
In this work, we are interested in the two aspects of this problem. First, we
propose a new randomized algorithm that computes the quotient of two sparse
polynomials when the division is exact. Its complexity is quasi-linear in the
sparsities of F, G and Q. Our approach relies on sparse interpolation and it
works over any finite field or the ring of integers. Then, as a step toward
faster divisibility testing, we provide a new polynomial-time algorithm when
the divisor has a specific shape. More precisely, we reduce the problem to
finding a polynomial S such that QS is sparse and testing divisibility by S can
be done in polynomial time. We identify some structure patterns in the divisor
G for which we can efficiently compute such a polynomial~S
Parallel Integer Polynomial Multiplication
We propose a new algorithm for multiplying dense polynomials with integer
coefficients in a parallel fashion, targeting multi-core processor
architectures. Complexity estimates and experimental comparisons demonstrate
the advantages of this new approach
Nearly Optimal Sparse Polynomial Multiplication
In the sparse polynomial multiplication problem, one is asked to multiply two
sparse polynomials f and g in time that is proportional to the size of the
input plus the size of the output. The polynomials are given via lists of their
coefficients F and G, respectively. Cole and Hariharan (STOC 02) have given a
nearly optimal algorithm when the coefficients are positive, and Arnold and
Roche (ISSAC 15) devised an algorithm running in time proportional to the
"structural sparsity" of the product, i.e. the set supp(F)+supp(G). The latter
algorithm is particularly efficient when there not "too many cancellations" of
coefficients in the product. In this work we give a clean, nearly optimal
algorithm for the sparse polynomial multiplication problem.Comment: Accepted to IEEE Transactions on Information Theor
Computational Optimization Techniques for Graph Partitioning
Partitioning graphs into two or more subgraphs is a fundamental operation in computer science, with applications in large-scale graph analytics, distributed and parallel data processing, and fill-reducing orderings in sparse matrix algorithms. Computing balanced and minimally connected subgraphs is a common pre-processing step in these areas, and must therefore be done quickly and efficiently. Since graph partitioning is NP-hard, heuristics must be used. These heuristics must balance the need to produce high quality partitions with that of providing practical performance. Traditional methods of partitioning graphs rely heavily on combinatorics, but recent developments in continuous optimization formulations have led to the development of hybrid methods that combine the best of both approaches. This work describes numerical optimization formulations for two classes of graph partitioning problems, edge cuts and vertex separators.
Optimization-based formulations for each of these problems are described, and hybrid algorithms combining these optimization-based approaches with traditional combinatoric methods are presented. Efficient implementations and computational results for these algorithms are presented in a C++ graph partitioning library competitive with the state of the art. Additionally, an optimization-based approach to hypergraph partitioning is proposed
Groebner.jl: A package for Gr\"obner bases computations in Julia
We introduce the Julia package Groebner.jl for computing Gr\"obner bases with
the F4 algorithm. Groebner.jl is an efficient, lightweight, portable,
thoroughly tested, and documented open-source software. The package works over
integers modulo a prime and over the rationals and supports various monomial
orderings. The implementation incorporates modern symbolic computation
techniques and leverages the Julia type system and tooling, which allows
Groebner.jl to be on par in performance with the leading computer algebra
systems. Our package is freely available at
https://github.com/sumiya11/Groebner.jl .Comment: 10 page
- …