Skip to content

Latest commit

 

History

History
152 lines (110 loc) · 8.08 KB

workshop2024.md

File metadata and controls

152 lines (110 loc) · 8.08 KB

2024 FLINT development workshop in Bordeaux

Photos

workshop1 workshop2 workshop3

Report

Edgar Costa:

  • fixed flints formula in homebrew Homebrew/homebrew-core#166490
  • improved the release CI, to have hashes and nightly releases
  • helped Bill with his Jupiter kernel development using xeus
  • parsed the headers and the documentation with pycparser, so one can find mismatches, and fix them accordingly
  • I still hope to submit a couple of PRs where I plan:
    • fix mismatches between types and argument names
    • have a CI that checks that new added functions are documented

Hartmut Monien:

  • Examples for roots of ZZ[x] in Z[p]
  • Examples for tanh-sinh integration
  • Example for “Monien” summation
  • Implementation of Flint general rings in Haskell version
  • Permutations in Flint

Marc Mezzarobba:

Albin Ahlbäck:

  • Fixed some build issues (disabling static build by default, removed ldconfig from Make, etc.), which led to a new patch for FLINT (v3.1.2) as Andreas Enge could not build with ldconfig.
  • Extended and corrected config.guess, and made changes accordingly in configure.ac.
  • Worked out some sloppy lower bound for high multiplication and squaring routines.
  • Fixed warnings in the "base" modules when setting -Wextra (mostly signed-unsigned compares and unused variables where the problem). Also created a new CI runner for checking for regressions here.
  • Fixed wrong stack usage for assembly routines.
  • Created some hardcoded assembly routines for low multiplication. This has not been merged yet as I'm currently trying to figure out whether we actually need $n + 1$ limbs, or simply $n$ limbs would suffice.
  • Worked with AVX512 for fft_small a bit, and tried to see where we could optimize this module. Let's see if I continue with this one, but I think it is named fft_small_assembly in my repository if anyone would like to check it out.
  • Had a great time and met new people 😎

Jean Kieffer:

My main focus was to improve the performance of acb_theta functions by avoiding unnecessary computations as much as possible (I figured it would be a good idea to clean this up before thinking about thresholds with acb_modular_theta):

  • I introduced a "context" structure to avoid recomputing things multiple times in the quasilinear algorithm (e.g. computing Cholesky decompositions and exponentials of the input values only once.)
  • Started rewriting key internal functions in the module (acb_theta_naive_worker, acb_theta_ql_steps) to use this new structure.
  • Thought about more efficient ways to handle error bounds in the module, e.g. some internal functions should ignore the error radii of their inputs.
  • All this didn't converge during the three days, but I'll continue working on it and hope to make a PR before the next workshop.
  • I second "had a great time and met new people"!

Ricardo Buring:

Vincent Neiger:

Hello, small report (on my remote participation): besides a bug fix on n_primitive_root, I have been working on a small prime FFT (prime up to ~60 bits, not using floating point conversions). Initially this was with nmod_poly_mat multiplication in mind, but in the end I thought it was good to understand better the FFT for nmod_poly first, and then move to the matrix case. I still need some more time (e.g. only forward FFT is done until now, and with no TFT) and then I should also do some more testing. But my current code is relatively concise and matches the performance of NTL's forward FFT. It also seems competitive with the current fft_small, if not faster, which surprises me: I would very much welcome any help on a good benchmarking file for fft_small's forward DFT for various sizes (not counting the time for precomputing root tables).

Bill Allombert:

  • Did some benchmarking of FLINT vs Pari/GP, identified polynomial factoring and L-function bottlenecks
  • Fixed include paths in example programs to allow normal compilation outside of Flint's build system

Kartik Venkatram

Oscar Benjamin

Fredrik Johansson

  • Fixed several generics issues reported by participants
  • Refactored the generic power series code
  • Optimized flint_mpn_mulmod_preinvn and related functions using mulhigh
  • Implemented generic C mulhigh
  • Started working on optimized mpn_mod code

When and where

  • March 18 - 22, 2024
  • University of Bordeaux, Bordeaux, France
  • We have booked rooms 74 and 73 (ground floor) at LaBRI for the whole week (how to get to LaBRI)

location

Schedule

  • 9:30 Monday morning - 17:00 Friday afternoon (but feel free to come only for a part of the week)
  • Thursday 10:00-12:00 we will co-host the usual weekly Bordeaux SageMath meeting

Discussion

Planned projects

  • Performance tuning
  • Integration in other software (SageMath, Oscar, python-flint, SymPy, etc.)
  • Numerical and exact linear algebra
  • p-adic arithmetic
  • Generics
  • Theta functions
  • Noncommutative polynomials

Organizers

Registration

To register for the workshop, please contact Fredrik. We expect to have funds to cover local expenses and/or travel for some participants, but we are still waiting for confirmation about the budget. Remote participation will be possible.

Participants

  • Albin Ahlbäck
  • Bill Allombert
  • Oscar Benjamin (Tuesday - Thursday)
  • Alex Best (tentatively, remote only)
  • Ricardo Buring
  • Xavier Caruso (tentatively, part of the week)
  • Edgar Costa
  • Vincent Delecroix
  • Andreas Enge (except for Thursday)
  • Fredrik Johansson
  • Jean Kieffer (Tuesday - Thursday)
  • Sébastien Labbé (Thursday)
  • Marc Mezzarobba
  • Hartmut Monien
  • Vincent Neiger (remote, maybe in person)
  • Aurel Page (Thursday morning)
  • Julian Rüth (remote)
  • Éric Schost (remote)
  • Kartik Venkatram

Funding