Improve conversion between GAP and OSCAR finite fields #4581
+17
−14
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a change I started last April and never finished. I am resurrecting it now after a discussion with @mjrodgers and @ThomasBreuer
I wanted to refactor and possibly optimize the conversion between GAP and OSCAR finite field elements. While I got some modest improvements in one case, another got slightly slower. I also realized that there are some serious bottlenecks in Nemo that we probably should take care of. More on that below.
For now, some (old) timiings:
Before:
After:
One limitation is the conversion from a list of coefficients into an Nemo FFE (finite
field element). It looks like this:
So we take an integer vector, convert that into a polynomial, and feed that into C code which then copies the coefficients out of the polynomial, and then we discard the polynomial.
Perhaps @mjrodgers can file an issue at Nemo.jl about this, so we don't forget to improve this at some point.