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)