Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
HPC GAP TODO
Things that need to be done in HPC-GAP. See also: List of open issues with HPC-GAP label
Unification with GAP
- complete kernel unification: issue #1216
- complete library unification: see HPC-GAP library unification TODO
- add readline support (see issue #467)
- add color prompt (see issue #39)
- fix copy&paste in terminal (see issue #1474]
stable and highly usable single-threaded mode:
- [ ]reduce the performance difference in single threaded mode; right now HPC-GAP is slower than GAP in that mode; one major factor that supposedly is Boehm GC (for details, talk to Reimer, or also to Chris, Markus, Max)
- fix usage issues caused by e.g. things being in different regions, even though the user really only uses a single thread
make it trivial to compile kernel extensions against HPC-GAP, e.g. from the
iopackage (right now, one needs to set custom
CPPFLAGS, otherwise headers for Boehm GC and libatomic_ops are not found; might also be a problem for GMP headers, if GAP built its own GMP)
Backporting code to GAP
Some code in HPC-GAP could be of interest for "plain" GAP, too, and we should investigate backporting it. That includes adding tests and documentation.
- Object sets and maps: src/objset.c. src/objset.h. lib/objset.g
- Serialization code: src/hpc/serialize.c, src/hpc/serialize.h
- Object traversal code: src/hpc/traverse.c, src/hpc/traverse.h
- Boehm Garbage collector: optionally allow compiling GAP with Boehm GC instead of GASMAN (this would help us to understand and improve/reduce the negative impact of Boehm GC on performance in HPC-GAP, as it would be isolated from any threading related performance issues)
Improve accessibility of new features
Improve documentation for users
- verify description of new features, make sure it is correct and up-to-date, and helpful
- add tons of examples
- Add some HPC tutorials which show with somewhat non-trivial examples how to use various features together.
Improve documentation for package authors
- e.g. provide instructions and help for "porting" packages to HPC-GAP
Improve documentation for library & kernel developers
- e.g. instructions on how to integrate ward into build system for C kernel extensions...
- ... and perhaps also some guidelines for packages with C++ kernel extensions (which ward doesn't support)
- Some related (though possibly outdated or obsolete) references:
- Document various global #defines like HPCGAP and WARD_ENABLED in a prominent place
- Allow using system wide versions of Boehm GC and libatomic ops (see issue #1446)
- Figure out what to do with the MPI code that HPC-GAP brought along (based on ParGAP); see also the relevant pull requests and discussion on the GAP mailing list
- Adapt packages ...
- ... to at least load and be usable in single-threaded HPC-GAP ...
- ... to work in multi-threaded HPC-GAP ...
- ... to take advantage of multi-threaded HPC-GAP