libgpuverify

Signature verification on GPUs (WiP)
Log | Files | Refs | README | LICENSE

commit fc1b28189f7f0c62d8eba089551925fbf9aaa0da
parent 18fcd4a208c7aa9b50b24eb1b2ac94c2cacf3b62
Author: Cedric <cedric.zwahlen@students.bfh.ch>
Date:   Thu, 28 Dec 2023 18:51:48 +0100

Minor improvement

Diffstat:
Msource/lib-gpu-verify.c | 7++-----
Msource/montmodmult.c | 34++++++++++++++--------------------
Mxcode/lib-gpu-verify.xcodeproj/xcshareddata/xcschemes/lib-gpu-generate.xcscheme | 2+-
3 files changed, 17 insertions(+), 26 deletions(-)

diff --git a/source/lib-gpu-verify.c b/source/lib-gpu-verify.c @@ -22,12 +22,9 @@ int main(int argc, char** argv) mont_modmult_tests(); - // MARK: might have memory issues - //mont_rsa_tests(); + //rsa_tests(); -// rsa_tests(); - - //reference_tests(); + reference_tests(); diff --git a/source/montmodmult.c b/source/montmodmult.c @@ -25,7 +25,7 @@ void montmodmult_pairs_from_files(void *x_buf, void *m_buf, void *n_buf, void *ni_buf, void *msg_buf, void *exp_buf, - void *mod_buf, + //void *mod_buf, void *s_buf, unsigned long *pks, unsigned long *n) { @@ -67,7 +67,6 @@ void montmodmult_pairs_from_files(void *x_buf, void *m_buf, gpu_register *n_buf_t = n_buf; gpu_register *msg_buf_t = msg_buf; gpu_register *s_buf_t = s_buf; - gpu_register *mod_buf_t = mod_buf; gpu_register *exp_buf_t = exp_buf; int len = (BIT_LENGTH / 8) / sizeof(gpu_register); @@ -130,12 +129,7 @@ void montmodmult_pairs_from_files(void *x_buf, void *m_buf, mpz_sub(r_1, mod, r_1); } - // MARK: export - - // exponent as is and mod -> n, ni -> ni, r_1 -> r_1 - mpz_export(&n_buf_t[len * j], NULL, ORDER, sizeof(gpu_register), END, 0, mod); - mpz_export(&mod_buf_t[len * j], NULL, ORDER, sizeof(gpu_register), END, 0, mod); mpz_export(&ni_buf_t[len * j], NULL, ORDER, sizeof(gpu_register), END, 0, ni); mpz_export(&r_1_buf_t[len * j], NULL, ORDER, sizeof(gpu_register), END, 0, r_1); mpz_export(&exp_buf_t[j], NULL, ORDER, sizeof(gpu_register), END, 0, e); @@ -156,7 +150,6 @@ void montmodmult_pairs_from_files(void *x_buf, void *m_buf, mpz_mod(x, r, mod); - // message as is and 'signature' -> x , M -> m mpz_export(&msg_buf_t[len * i], NULL, ORDER, sizeof(gpu_register), END, 0, msg); mpz_export(&s_buf_t[len * i], NULL, ORDER, sizeof(gpu_register), END, 0, s); mpz_export(&x_buf_t[len * i], NULL, ORDER, sizeof(gpu_register), END, 0, x); @@ -183,13 +176,14 @@ void montmodmult_pairs_from_files(void *x_buf, void *m_buf, } + int modmult_opencl_prepare(struct gpu_info *info, struct gpu_state_alt *state, void *x_buf, void *m_buf, //void *r_1_buf, void *n_buf, void *ni_buf, void *msg_buf, void *exp_buf, - void *mod_buf, + // void *mod_buf, void *s_buf, unsigned long *pks, unsigned long n ) { @@ -296,7 +290,7 @@ int modmult_opencl_exec_kernel(struct gpu_info *info, struct gpu_state_alt *stat } -unsigned long modmult_opencl_results(struct gpu_info *info, struct gpu_state_alt *state, bool timed, void * msg_buf, void * r_1_buf, void * n_buf, void* s_buf, void *mod_buf, unsigned long n) { +unsigned long modmult_opencl_results(struct gpu_info *info, struct gpu_state_alt *state, bool timed, void * msg_buf, void * r_1_buf, void * n_buf, void* s_buf, unsigned long n) { if (state->skip) { // reset skip in the kernel execution @@ -401,7 +395,7 @@ void modmult_gpu_execute(struct gpu_info *info, struct gpu_state_alt *state, void *n_buf, void *ni_buf, void *msg_buf, void *exp_buf, - void *mod_buf, + //void *mod_buf, void *s_buf, unsigned long *pks, unsigned long n) { @@ -409,11 +403,11 @@ void modmult_gpu_execute(struct gpu_info *info, struct gpu_state_alt *state, x_buf, m_buf, //r_1_buf, n_buf, ni_buf, - msg_buf, exp_buf, mod_buf, s_buf, + msg_buf, exp_buf, s_buf, pks, n ); // prepares the next batch of signatures on CPU, naturally blocks until it's finished - state->result += modmult_opencl_results(info, state, false, msg_buf, r_1_buf, n_buf, s_buf, mod_buf, n); // waits for kernel, if it is not ready yet + state->result += modmult_opencl_results(info, state, false, msg_buf, r_1_buf, n_buf, s_buf, n); // waits for kernel, if it is not ready yet modmult_opencl_exec_kernel(info,state); // start kernel (returns immediately) modmult_opencl_release(state); // release buffers @@ -421,9 +415,9 @@ void modmult_gpu_execute(struct gpu_info *info, struct gpu_state_alt *state, } -unsigned long modmult_gpu_finish(struct gpu_info *info, struct gpu_state_alt *state, void * msg_buf, void * r_1_buf, void * n_buf, void *mod_buf, void* s_buf, unsigned long n) { +unsigned long modmult_gpu_finish(struct gpu_info *info, struct gpu_state_alt *state, void * msg_buf, void * r_1_buf, void * n_buf, void* s_buf, unsigned long n) { - state->result += modmult_opencl_results(info,state,true,msg_buf,r_1_buf,n_buf, s_buf, mod_buf, n); + state->result += modmult_opencl_results(info,state,true,msg_buf,r_1_buf,n_buf, s_buf, n); modmult_opencl_cleanup(info); @@ -453,7 +447,7 @@ int mont_modmult_tests(void) { gpu_register *ni_buf = malloc(digit_sz + pairs); gpu_register *msg_buf = malloc(digit_sz); gpu_register *s_buf = malloc(digit_sz); - gpu_register *mod_buf = malloc(digit_sz); + //gpu_register *mod_buf = malloc(digit_sz); gpu_register *exp_buf = malloc(pairs * sizeof(gpu_register)); memset(x_buf, 0, digit_sz); @@ -463,7 +457,7 @@ int mont_modmult_tests(void) { memset(ni_buf, 0, digit_sz); memset(msg_buf, 0, digit_sz); memset(s_buf, 0, digit_sz); - memset(mod_buf, 0, digit_sz); + //memset(mod_buf, 0, digit_sz); memset(exp_buf, 0, pairs * sizeof(gpu_register)); unsigned long *pks = malloc(arr_sz); @@ -477,7 +471,7 @@ int mont_modmult_tests(void) { n_buf, ni_buf, msg_buf, exp_buf, - mod_buf, + s_buf, pks, &pairs); @@ -494,11 +488,11 @@ int mont_modmult_tests(void) { n_buf, ni_buf, msg_buf, exp_buf, - mod_buf, + // mod_buf, s_buf, pks, pairs); - unsigned long res = modmult_gpu_finish(&info, &state, msg_buf, r_1_buf, n_buf, mod_buf,s_buf, pairs); + unsigned long res = modmult_gpu_finish(&info, &state, msg_buf, r_1_buf, n_buf,s_buf, pairs); if (res == pairs) { printf("VERIFICATION RESULT: %lu - OK\n\n",res); diff --git a/xcode/lib-gpu-verify.xcodeproj/xcshareddata/xcschemes/lib-gpu-generate.xcscheme b/xcode/lib-gpu-verify.xcodeproj/xcshareddata/xcschemes/lib-gpu-generate.xcscheme @@ -53,7 +53,7 @@ </BuildableProductRunnable> <CommandLineArguments> <CommandLineArgument - argument = "4096" + argument = "512" isEnabled = "YES"> </CommandLineArgument> <CommandLineArgument