Pairing: remove preCompute and go routines in MillerLoop #27
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.
@yelhousni following your recent awesome PR (#26) did some experiments and benchmarks on various architectures (x64), that confirms that for a small number of pair of points in the
Pairing
function, there is a severe penalty (specifically onamd
platforms).In this PR, I just removed the go routines, the multiple
[68]lineEvaluation
(replace by a singlelineEvaluation
object) and merged thepreCompute
loop within the line evaluation / result compute loop. Did onbn256
andbls381
.** If we want to deal with large number of pairs in
Pairing
, then we should probably revisit thepreCompute
strategy **Here is where we're at on our reference benchmark (running on AWS z1d.3xlarge instance, with hyperthreading disabled) :
For the before/after removal of go routines and precompute:
on AMD Ryzen 3700X, bn256 and bls381:
on Intel MBP, less conclusive but not too bad: