16 static __managed__ uint8_t   
cmp[16 * 512];
 
   17 static __managed__ 
fr_t   fr_tmp[16 * 512];
 
   25     printf(
">>>> FFT Tests\n");
 
   45                                                      fr_t toeplitz_coefficients_fft_l[16][512]) {
 
   50     printf(
"=== RUN   %s\n", 
"fr_fft: toeplitz_coefficients -> toeplitz_coefficients_fft");
 
   51     memset(fr_tmp, 0xAA, 16 * 512 * 
sizeof(
fr_t)); 
 
   52     for(
int testIDX=0; testIDX<=1; testIDX++){
 
   54         fr_fft_wrapper<<<16, 256, fr_sharedmem>>>(fr_tmp, (
fr_t *)(toeplitz_coefficients_l));
 
   58         fr_eq_wrapper<<<256, 32>>>(
cmp, 16 * 512, fr_tmp, (
fr_t *)toeplitz_coefficients_fft_l);
 
   85     printf(
"=== RUN   %s\n", 
"g1p_fft: h -> h_fft");
 
   88     for(
int testIDX=0; testIDX<=1; testIDX++){
 
   90         g1p_fft_wrapper<<<1, 256, g1p_sharedmem>>>(
g1p_tmp, h_l);
 
   94         g1p_eq_wrapper<<<16, 32>>>(
cmp, 512, 
g1p_tmp, h_fft_l);
 
  121     printf(
"=== RUN   %s\n", 
"g1p_ift: h_fft -> h");
 
  123     for(
int testIDX=0; testIDX<=1; testIDX++){
 
  125         g1p_ift_wrapper<<<1, 256, g1p_sharedmem>>>(
g1p_tmp, h_fft_l);
 
  129         g1p_eq_wrapper<<<16, 32>>>(
cmp, 512, 
g1p_tmp, h_l);
 
  156     printf(
"=== RUN   %s\n", 
"g1p_ift: hext_fft -> h");
 
  158     for(
int testIDX=0; testIDX<=1; testIDX++){
 
  160         g1p_ift_wrapper<<<1, 256, g1p_sharedmem>>>(
g1p_tmp, hext_fft_l);
 
  164         g1p_eq_wrapper<<<8, 32>>>(
cmp, 256, 
g1p_tmp, h_l);    
 
  190     printf(
"=== RUN   %s\n", 
"fk20_hext_fft2h_fft: hext_fft -> h_fft");
 
  192     for(
int testIDX=0; testIDX<=1; testIDX++){
 
  194         fk20_hext_fft2h_fft<<<1, 256, g1p_sharedmem>>>(
g1p_tmp, hext_fft_l);
 
  198         g1p_eq_wrapper<<<16, 32>>>(
cmp, 512, 
g1p_tmp, h_fft_l);
 
const size_t g1p_sharedmem
 
#define SET_SHAREDMEM(SZ, FN)
 
#define CUDASYNC(fmt,...)
 
__global__ void fk20_hext_fft2h_fft(g1p_t *h_fft, const g1p_t *hext_fft)
hext_fft -> h_fft
 
__managed__ g1p_t hext_fft[512 *512]
 
__managed__ g1p_t h_fft[512 *512]
 
__managed__ fr_t toeplitz_coefficients[512 *16][512]
 
__managed__ fr_t toeplitz_coefficients_fft[512 *16][512]
 
void varMangle(fr_t *target, size_t size, unsigned step)
swap elements at positions multiple of step. Nondestructive, call a second time to undo the changes
 
__managed__ g1p_t h[512 *512]
 
__managed__ uint8_t cmp[16 *512]
 
void h_fft2h(g1p_t h_fft_l[512], g1p_t h_l[512])
Test for g1p_ift: h_fft -> h.
 
void h2h_fft(g1p_t h_l[512], g1p_t h_fft_l[512])
Test for g1p_fft: h -> h_fft.
 
void hext_fft2h_fft(g1p_t hext_fft_l[512], g1p_t h_fft_l[512])
Test for fk20_hext_fft2h_fft: hext_fft -> h_fft.
 
void toeplitz_coefficients2toeplitz_coefficients_fft(fr_t toeplitz_coefficients_l[16][512], fr_t toeplitz_coefficients_fft_l[16][512])
Test for fr_fft: toeplitz_coefficients -> toeplitz_coefficients_fft.
 
void hext_fft2h(g1p_t hext_fft_l[512], g1p_t h_l[512])
Test for g1p_ift: hext_fft -> h.
 
uint64_t fr_t[4]
Subgroup element stored as a 256-bit array (a 4-element little-endian array of uint64_t)....
 
__global__ void g1p_fft_wrapper(g1p_t *output, const g1p_t *input)
wrapper for g1p_fft: FFT for arrays of g1p_t with length 512
 
__global__ void g1p_ift_wrapper(g1p_t *output, const g1p_t *input)
wrapper for g1p_ift: inverse FFT for arrays of g1p_t with length 512
 
__shared__ g1p_t g1p_tmp[]
 
G1 point in projective coordinates.
 
#define NEGCMPCHECK(LENGTH)
 
#define NEGPRINTPASS(pass)