Abstract
Polynomial factorization is a classical algorithmic algebra problem with a wide range of applications. Of particular interest is factorization over finite fields, among which fields of order two are probably the most important ones when representing Boolean functions by Zhegalkin polynomials. In particular, factorization of Boolean polynomials corresponds to conjunctive decomposition of Boolean functions given in algebraic normal form. In addition, factorization enables decomposition of functions given in full disjunctive normal form (DNF) and positive DNF, as well as Cartesian decomposition of relational data. These applications demonstrate the importance of developing fast factorization algorithms. In this paper, we consider some recently proposed factorization algorithms of polynomial complexity and describe a parallel MIMD implementation that takes advantage of both task-level and data-level parallelism. We conduct some experiments on logic synthesis benchmarks and synthetic (random) polynomials to demonstrate significant factorization speedup. In conclusion, we discuss results of testing a parallel implementation of the algorithm on a massively parallel multicore architecture (REDEFINE).
Similar content being viewed by others
REFERENCES
von zur Gathen, J. and Gerhard, J., Modern Computer Algebra, Cambridge University Press, 2013, 3rd ed.
Zhegalkin, I.I., Arithmetization of symbolic logic, Mat. Sb., 1928, vol. 35, no. 1, pp. 311–377.
Muller, D.E., Application of Boolean algebra to switching circuit design and to error detection, IRE Trans. Electron. Comput., 1954, vol. EC-3, pp. 6–12.
Emelyanov, P.G. and Ponomaryov, D.K., Algorithmic issues of AND-decomposition of Boolean formulas, Program. Comput. Software, 2015, vol. 41, pp. 162–169.
Emelyanov, P. and Ponomaryov, D., On tractability of disjoint AND-decomposition of Boolean formulas, Lect. Notes Comput. Sci., 2015, vol. 8974, pp. 92–101.
Emelyanov, P., On two kinds of dataset decomposition, Lect. Notes Comput. Sci., 2018, vol. 10861, pp. 171–183.
Emelyanov, P. and Ponomaryov, D., Cartesian decomposition in data analysis, Proc. Siberian Symp. Data Science and Engineering (SSDSE), 2017, pp. 55–60.
Shpilka, A. and Volkovich, I., On the relation between polynomial identity testing and finding variable disjoint factors, Lect. Notes Comput. Sci., 2010, vol. 6198, pp. 408–419.
Emelyanov, P. and Ponomaryov, D., On a polytime factorization algorithm for multilinear polynomials over F 2, Lect. Notes Comput. Sci., 2018, vol. 11077, pp. 164–176.
Somenzi, F., CUDD: CU decision diagram package. https://github.com/ivmai/cudd. Accessed December 11, 2019.
Corno, F., Reorda, M.S., and Squillero, G., RT-level ITC'99 benchmarks and first ATPG results, IEEE Des. Test Comput., 2000, vol. 17, no. 3, pp. 44–53.
Hansen, M.C., Yalcin, H., and Hayes, J.P., Unveiling the ISCAS-85 benchmarks: A case study in reverse engineering, IEEE Des. Test Comput., 1999, vol. 16, no. 3, pp. 72–80.
Fišer, P. and Schmidt, J., A prudent approach to benchmark collection, Proc. 12th Int. Workshop Boolean Problems (IWSBP), 2016, pp. 129–136.
Redefine: Reconfigurable silicon core description. http://morphing.in/redefine. Accessed December 7, 2018.
Ponomaryov, D., A polynomial time delta-decomposition algorithm for positive DNFs, Lect. Notes Comput. Sci., 2019, vol. 11532, pp. 325–336.
Author information
Authors and Affiliations
Corresponding authors
Additional information
Translated by Yu. Kornienko
APPENDIX
APPENDIX
Snippet of decomposition algorithm using Hyperops
__hyperOp__ void
decomp (__CMAddr selfId ,
__Op32 a , __Op32 b ,
__Op32 p_s ,__Op32 p_o ,
__Op32 m, __Op32 n ,
__Op32 i , __Op32 consumFrId )
{
int *A=a.ptr ;
int *B=b.ptr ;
int * partition_same =p_s.ptr ;
int * partition_o the r=p_o.ptr ;
int I=i.i32;
int n=n.i32;
int m=m.i32;
int J=0;
int *C, *D;
__CMAddr c onf r Id=consumFrId.cmAddr ;
for ( I=0; I<n ; I++) {
*( partition_same+J )=0;
*( partition_o the r+J )=0;
}
for ( I=0; I<m; I++) {
for ( J=0; J<n ; J++) {
*(C+I * columns+J )=0;
*(D+I * columns+J )=0;
}
}
derivative (A,B,C, i ) ;
derviative (A,B,D, i ) ;
if ( I sEqual (A,D,B,C) )
*( partition_o the r+i ) =1;
else
*( partition_same+i ) =1;
__Sync( confrId , =1);
}
__kernel int
decomp_start ( int *A, int *B,
int * partition_same ,
int * partition_othe r ,
int N)
{
int i =0;
static int counter=0;
__CMAddr decompFr ;
__CMAddr syncFr=__CreateInst(&smd_Sync ) ;
__WriteCM(CMADDR( syncFr , 1 5 ) ,N=1);
for ( i = 1 ; i<N; i++) {
decompFr=__CreateInst(&smd_decomp ) ;
__WriteCM(CMADDR( decompFr , 0 ) ,
( void * ) (A) ) ;
__WriteCM(CMADDR( decompFr , 1 ) ,
( void * ) (B) ) ;
__WriteCM(CMADDR( decompFr , 2 ) ,
( void * ) ( partition_same ) ) ;
__WriteCM(CMADDR( decompFr , 3 ) ,
( void * ) ( partition_o the r ) ) ;
__WriteCM(CMADDR( decompFr , 4 ) , M) ;
__WriteCM(CMADDR( decompFr , 5 ) , N) ;
__WriteCM(CMADDR( decompFr , 6 ) , i ) ;
__WriteCM(CMADDR( decompFr , 7 ) ,
CMADDR( syncFr , 1 5 ) ) ;
}
return 0 ;
}
Rights and permissions
About this article
Cite this article
Emelyanov, P.G., Krishna, M., Kulkarni, V. et al. Factorization of Boolean Polynomials: Parallel Algorithms and Experimental Evaluation. Program Comput Soft 47, 108–118 (2021). https://doi.org/10.1134/S0361768821020043
Received:
Revised:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1134/S0361768821020043