Macaulay2 (M2) :
High-performance algebraic computing
Anton Leykin
(Georgia Tech)
M2 on M1 for M3 (ENS Lyon, 2023)
M2 history
- Created more than 30 years ago (Grayson and Stillman)
- Successor to Macaulay (Bayer and Stillman)
- Named after Francis Sowerby Macaulay FRS
- Evolved to
- include over 200 packages
- use over a dozen of third-party libraries
- examples: singular-factory, flint
- most recent: mpfi (Burr)
- perhaps in future: msolve (Helmer)
- interface over a dozen external programs
- M2 is referenced in more than 3000 publications.
Hidden Slides
This slide is visible in the source, but hidden when the presentation is viewed. You can show all hidden slides by setting the `showHiddenSlides` config option to `true`.
Languages used
- kernel: C and C++
- interpreter: D (Grayson)
- top-level: M2 language
R = ZZ[a..d]
res ideal(a,b,c,d)
Involved algebraic concepts at your fingertips
This is an example of output in emacs.
Other ways to work with M2 code
Parallel processing overview
- Top-level task scheduler
- MPI package (under construction)
- parallelization in the kernel
- popular choice: tbb
- pthreads, OpenMP, C++ std::, ...
Top-level task scheduler
Gary (Bill) Furnish (1987-2017)
MPI (core support + package)
E.g., master-worker approach:
Worker runs
Master runs
Homotopy continuation
Given:
- a parametric system of equations
- start values of parameters and
a set of start solutions
- target values of parameters
Want: target solutions
Pleasantly parallelizable!
Regeneration and u-generation
- Strategy:
solve equation-by-equation
- Geometrically, intersect
the "current" variety with
the "next" hypersurface
- Keep track of equidimensional
components
using witness sets.
Duff, L., Rodriguez.
u-generation: solving systems of polynomials...
(to appear in Numerical Algorithms)
TBB in M2 core: F4 implementation in M2
AssociativeAlgebras package and kernel functions
-
Free agebra generated by
a finite number of letters
-
Need: Groebner bases
for two-sided ideals
-
Potential for parallelization? F4?
Community
- GitHub
- macaulay2.zulipchat.com and M2 google group
- M2 workshops (2-3 every year)
- M2internals group (about a dozen people)
- interested in kernel development and maintenance
- building (autotools, cmake)
- distribution: brew on OS X (Sayrafi), Debian (Torrance)
-
JSAG = Journal of Software for Algebra and Geometry
- 384 contributors (GitHub organization)