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

  • Macaulay2Web (Zinn-Justin)
  • jupyter notebook
  • SageMath interface
    (Pasechnik,Saliola,Wageringel)
  • sublime, atom, VS Code, vi, ...
  • terminal

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!

MonodromySolver package (Tim Duff)

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?

Issues

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)