I got curious, so I collected some data.  Here are timing results comparing 
NTL's zz_pX multiplication
to zn_poly's zn_array_mul.  For various values of n, I multiplied 
polynomials of degree < n
modulo a 50 bit number.  The values of n are powers of 2 and halfway 
between powers of 2,
ranging between 512 and 512K.
Both NTL and zn_poly were compiled using their default configurations.
Timings were done on a Skylake Xeon using gcc 8.2.0.
Each row reports n and the ratio (time for zn_poly)/(time for NTL).
So a ratio > 1 means NTL is faster.

Also, by now, NTL implements a divide-and-conquer style truncated FFT, 
using code some of which
is ultimately derived from some other code originally written by David 
Harvey (fft62).

512 0.706683
768 0.84687
1024 0.922457
1536 0.923881
2048 1.02458
3072 0.982044
4096 1.0894
6144 1.32346
8192 1.33724
12288 1.61943
16384 1.44681
24576 1.35887
32768 1.43008
49152 1.34462
65536 1.40433
98304 1.48556
131072 1.42532
196608 1.3503
262144 1.43245
393216 1.61353

One can also compile NTL with an option that enables an AVX-based FFT 
implementation.
With that option set, the numbers look like this.

512 1.30262
768 1.45693
1024 1.60583
1536 1.46475
2048 1.58405
3072 1.6219
4096 1.78167
6144 2.1571
8192 2
12288 2.52612
16384 2.25737
24576 2.25134
32768 2.32498
49152 2.28747
65536 2.15306
98304 2.52464
131072 2.18056
196608 2.22606
262144 2.13347
393216 2.56471

If anyone wants to the program I used for timing, let me know.

On Friday, September 7, 2018 at 9:53:43 AM UTC-4, Erik Bray wrote:
>
> Hi all, 
>
> Does anyone know what that current status is of the upstream zn_poly 
> package?  According to its website 
> http://cims.nyu.edu/~harvey/zn_poly/ it is "no longer maintained", 
> though it has been re-released under a BSD-compatible license. 
>
> Since its last upstream release the package for it in Sage has 
> accumulated a number of patches as well, and I believe I may need to 
> add one more patch to it for building properly on Cygwin :(  See 
> https://trac.sagemath.org/ticket/26050 
>
> If it's alright, I would propose creating a new repository for it 
> under the sagemath gitlab organization (or GitHub) which would become 
> the new "upstream" for zn_poly.  Then we can merge in all these 
> patches; maybe even implement a new, more standard build system (I 
> would be happy to do this).  In fact the current "build system" is 
> going to have problems long-term, as it currently consists primarily 
> of a Python script that will not work, as written, on Python 3. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to