Computational Algebra for Commodity Parallel Machines

algebra is one of the most powerful unifying paradigms of twentieth century mathematics. A vast field of research in its own right, it is also a key tool in other areas of mathematics, in physics, in chemistry and in computer science. In the last thirty years, computational tools have played an increasing role in the development and application of abstract algebra, until today, computational algebra systems are in widespread use across a range of theoretical and applied disciplines. GAP (Groups, Algorithms and Programming) [34] is a leading computational algebra system, and the leading open source system. It supports computation in many areas of algebra algebra with particular emphasis on group theory. GAP has a well established international user base, and is used for teaching, research and commercial applications including cryptography, crystallography, the study of quantum computing, and applications in many areas of mathematics. Many GAP users need to perform very large computations, whether in theoretical development, such as exploring very large groups, or in applications, such as managing the symmetry in very large searches. This creates a requirement for GAP to support a range of low cost high performance computing solutions, which, today, inevitably means multi-processor systems of one form or another. On the other hand, since most GAP users are not programming specialists, let alone parallel programming specialists, it is essential that details of the parallel implementation: distribution of the computation, messagepassing, synchronization and so on be hidden from the user. This project will link front-end GAP applications with a high-level, portable and well-developed parallel back-end, the GUM implementation [37] of Glasgow Parallel Haskell (GpH) [37]. This will support high-performance computation via the established and popular GAP user interface on economical platforms such as multi-processor workstations and Beowulf-style PC or workstation clusters. Such hardware is becoming increasingly available to the academic and general research community that forms the primary GAP user base. We will link the two systems through a flexible general architecture offering the GAP programmer facilities for transferring appropriate types of data to and from GpH and for initiating general parallel computations in GpH. The interface will exploit the OpenMath standard, as appropriate. In order to validate this architecture, and to deliver benefits to end users, we will develop and implement parallel algorithms for a number of “key sub-problems” which form core time-consuming steps in a very wide range of computations. Efficient algorithms for these will consequently be of very general benefit, even to GAP users who do not wish to do any new programming at all. The problems (see Section 2.1) have been selected to reflect a variety of parallel computations, varying, for example, in the regularity of the computational and/or data structures, in the balance of memory and processor requirements, and in load distribution patterns. In addition to the direct research results obtained through the parallelisation of these key sub-problems, we also anticipate that the project will deliver enhanced insights into the underlying sequential algorithms, that it will provide a valuable source of performance information for this complex and rarely studied class of parallel algorithms, and that the key sub-problems will serve as good motivating applications for researchers in functional programming. The project represents an equal inter-disciplinary collaboration between pure mathematicians, under the leadership of Steve Linton, a main developer of GAP, and computer scientists, under the leadership of Kevin Hammond, a main developer of GpH. 1.2 Aims and Objectives