Skip to content

HPC GAP library unification TODO

Max Horn edited this page Jul 3, 2017 · 12 revisions

This page collects information about the difference between the files in hpcgap/lib compared to their lib counterparts.

The changes can be grouped into a few categories, depending on the cause of the diff.

Caching code

The following files contain diffs due to the use of some kind of "caching" logic. This typically needs to be handled differently in HPC-GAP. Our plan is to address this by introducing a generic "caching" system which can be used by the code, and which then gets different implementations in GAP versus HPC-GAP (see also the short not on this under Unifying GAP4 and HPC GAP).

Note that I lump some quite different things together here: Both "transient" caches for things we could potentially throw away if, say, memory was getting tight; and on the other hand data structures that record things that must stay around indefinitely (or perhaps until all objects referencing certain objects or information are gone). Example for the former: Bernoulli2 stores Bernoulli that were already computed.. Example for the latter: CATEGORIES_COLLECTIONS, which stores a map from filters to its "collections category".

  • algsc.gi: QuaternionAlgebraData
  • basis.{gd,gi}: NiceBasisFiltersInfo
  • coll.{gd,gi}: CATEGORIES_COLLECTIONS, SUBSET_MAINTAINED_INFO, ISOMORPHISM_MAINTAINED_INFO, FACTOR_MAINTAINED_INFO
  • combinat.gi: Bernoulli2
  • ffe.g: TYPE_FFE, TYPE_FFE0
  • ffe.{gd,gi}: GALOIS_FIELDS, FAMS_FFE_LARGE, GFCACHE
  • filter.g:
  • fldabnum.{gd,gi}: CYCLOTOMIC_FIELDS, ABELIAN_NUMBER_FIELDS, ...
  • integer.gi: Primes2, ProbablePrimes2
  • mgmfree.gi: SHIFTED_CATALAN
  • numtheor.gi PrimeResiduesCache (actually, this one is currently not being written to, but it clearly fits into the same pattern as e.g. SHIFTED_CATALAN)
  • pcgsperm.gi: CYCLICACHE
  • polyrat.gi: APPROXROOTS
  • primality.gi: PrimesProofs, Primes2, ProbablePrimes2
  • upolyirr.gi: IRR_POLS_OVER_GF_CACHE
  • zmodnz.gi: Z_MOD_NZ
  • ...

Matrix / vector code

The following files contain diffs because their GAP versions use ConvertToVectorRep or ConvertToMatrixRep or something related. This needs to be changed for HPC-GAP. Here, the plan is to also change this on the GAP side, possibly as byproduct of the "MatrixObj" project. In the meantime, it would already help if e.g. CopyToVectorRep was also available in GAP (and if it was less annoying to use, i.e. if it did not force the callers to restrict the input value q manually). See also PR #141.

  • algfld.gi
  • claspcgs.gi
  • grpfp.gi
  • grppccom.gi
  • grppcext.gi
  • grppcint.gi
  • grppcnrm.gi
  • meatauto.gi
  • meataxe.gi
  • modulrow.gi
  • onecohom.gi
  • oprt.gi -- here, having an ImmutableVector pendant to ImmutableMatrix would help
  • polyfinf.gi -- use ImmutableVector, PR #1409
  • vec8bit.gi
  • vecmat.gi
  • vspcrow.gi -- use ImmutableVector
  • ...

Others

  • cmdleditx.g
  • galois.gi: accesses TRANSSHAPEFREQS and other parts of the transgrp library/package, and use atomic for that
  • helpbase.gi, helpdef.gi: use custom HELP_REGION -- this also requires changes to GAPDoc. Can we hide this under some kind of abstraction layer?
  • info.gi: uses InfoData a lot
  • vecmat.gi
  • ...
Clone this wiki locally