Sparse Multivariate Hensel Lifting: A High-Performance Design and Implementation
Our goal is to develop a high-performance code for factoring a multivariate polynomial in n variables with integer coefficients which is polynomial time in the sparse case and efficient in the dense case. Maple, Magma, Macsyma, Singular and Mathematica all implement Wang’s multivariate Hensel lifting, which, for sparse polynomials, can be exponential in n. Wang’s algorithm is also highly sequential.
In this work we reorganize multivariate Hensel lifting to facilitate a high-performance parallel implementation. We identify multivariate polynomial evaluation and bivariate Hensel lifting as two core components. We have also developed a library of algorithms for polynomial arithmetic which allow us to assign each core an independent task with all the memory it needs in advance so that memory management is eliminated and all important operations operate on dense arrays of 64 bit integers. We have implemented our algorithm and library using Cilk C for the case of two monic factors. We discuss details of the implementation and present experimental timing results.
KeywordsHensel lifting Polynomial factorization Cilk C
- 1.Bernardin, L.: On bivariate Hensel lifting and its parallelization. In: Proceedings of ISSAC 1998, pp. 96–100. ACM Press (1998)Google Scholar
- 2.Frigo M., Leiserson C.E., Randall K.H.: The implementation of the Cilk-5 multithreaded language. In: Proceedings of PLDI 1998, pp. 212–223. ACM (1998)Google Scholar
- 4.Hu J., Monagan M.: A fast parallel sparse polynomial GCD algorithm. In: Proceedings of ISSAC 2016, pp. 271–278. ACM (2016)Google Scholar
- 9.Zippel, R.E.: Newton’s iteration and the sparse Hensel algorithm. In: Proceedings of SYMSAC 1981, pp. 68–72. ACM (1981)Google Scholar