Parallel algorithms for multiple-precision arithmetic
暂无分享,去创建一个
Computer algebra, that is the use of computers to perform symbolic math¬ ematics rather than numerical computation, has found widespread use in a large spectrum of scientific fields, which range from high energy physics and computational chemistry, to theoretical computer science. To handle applications of increasing complexity, more efficient algorithms and more powerful computing platforms are necessary. Parallelism is a possible way to increase performance. Obtaining significant results in this direction re¬ quires the design of new algorithms and providing them in a convenient way to the user. We intend to provide both high computing efficiency and high convenience to the user by implementing a library of fundamental parallel computer algebra algorithms. To achieve this result we built a system following a bottom-up approach. We focussed our work on multiple-precision arithmetic. First we compared several multiple-precision algorithms to determine the most efficient sequen¬ tial implementations, which are used for later comparison with parallel algo¬ rithms. Then, starting from integer multiplication, we designed new parallel algorithms. We developed different parallel Karatsuba-type and FFT-based schemes, including the integer 3-primes and floating-point FFT algorithms. Conditions for correct integer results are analyzed. These multiplication algorithms allowed us to design a parallel Newton method for division. Par¬ allel algorithms for modular arithmetic result by using both Montgomery's and classical arithmetic. We designed these algorithms under a message-passing model of computa¬ tion. These are implemented on different parallel platforms, targeting both distributed memory machines, such as massively parallel processing sys¬ tems and networks of workstations, and shared memory architectures. We developed both machine dependent and machine independent algorithms by using standard interfaces such as MPI. On top of this layer we provide a convenient interface to the user which allows a sequential programming style, while each algorithm is executed in parallel. The algorithms are organized in an object oriented library and perform arithmetic in Z, Q, and Zp. At this level it is possible for the user to implement high level algorithms which are machine independent. As a significant example we considered the integer greatest common divisor, implementing a parallel version of Schonhage's GCD. Finally we integrated our package in a computer algebra system, which uses a sequential frontend for interactive use, and a parallel backend for computation.