From 5ee730fa6a7a137a3307e2983f0b9e249283cf84 Mon Sep 17 00:00:00 2001 From: TeachRaccooon Date: Thu, 7 Dec 2023 07:44:51 -0800 Subject: [PATCH] Benchmark fux --- RandLAPACK/drivers/rl_hqrrp.hh | 10 ++++----- .../bench_RBKI/RBKI_speed_comparisons.cc | 22 ++++++++++++------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/RandLAPACK/drivers/rl_hqrrp.hh b/RandLAPACK/drivers/rl_hqrrp.hh index 1dd6f2d3..8a568376 100644 --- a/RandLAPACK/drivers/rl_hqrrp.hh +++ b/RandLAPACK/drivers/rl_hqrrp.hh @@ -98,7 +98,7 @@ void _LAPACK_lafrb( & m_, & n_, & k_, (double *) buff_U, & ldim_U, (double *) buff_T, & ldim_T, (double *) buff_B, & ldim_B, (double *) buff_W, & ldim_W #ifdef LAPACK_FORTRAN_STRLEN_END - , 1, 1, 1, 1 + //, 1, 1, 1, 1 #endif ); } else if (typeid(T) == typeid(float)) { @@ -106,7 +106,7 @@ void _LAPACK_lafrb( & m_, & n_, & k_, (float *) buff_U, & ldim_U, (float *) buff_T, & ldim_T, (float *) buff_B, & ldim_B, (float *) buff_W, & ldim_W #ifdef LAPACK_FORTRAN_STRLEN_END - , 1, 1, 1, 1 + //, 1, 1, 1, 1 #endif ); } else { @@ -136,7 +136,7 @@ void _LAPACK_larf( (double *) C, & ldc_, (double *) work #ifdef LAPACK_FORTRAN_STRLEN_END - , 1 + //, 1 #endif ); } else if (typeid(T) == typeid(float)) { @@ -146,7 +146,7 @@ void _LAPACK_larf( (float *) C, & ldc_, (float *) work #ifdef LAPACK_FORTRAN_STRLEN_END - , 1 + //, 1 #endif ); } else { @@ -398,7 +398,7 @@ static int64_t NoFLA_QRP_downdate_partial_norms( char dlmach_param = 'E'; tol3z = sqrt( LAPACK_dlamch( & dlmach_param #ifdef LAPACK_FORTRAN_STRLEN_END - , 1 + //, 1 #endif ) ); ptr_d = buff_d; diff --git a/benchmark/bench_RBKI/RBKI_speed_comparisons.cc b/benchmark/bench_RBKI/RBKI_speed_comparisons.cc index cfec8ccc..568f42e0 100644 --- a/benchmark/bench_RBKI/RBKI_speed_comparisons.cc +++ b/benchmark/bench_RBKI/RBKI_speed_comparisons.cc @@ -81,9 +81,11 @@ static void call_all_algs( auto m = all_data.row; auto n = all_data.col; auto tol = all_data.tolerance; - T norm_svd; + T norm_svd_k; + T norm_svd_lanc; T err_rbki; T err_lan; + int64_t k_lanc = std::min((int64_t) (num_krylov_iters / (T) 2), k); // Set the threshold for Lanchosz // Setting up Lanchosz - RBKI with k = 1. @@ -116,7 +118,7 @@ static void call_all_algs( dur_lanchosz = duration_cast(stop_lanchosz - start_lanchosz).count(); // Update best timing and save the singular values. - update_best_time(i, t_lanchosz_best, dur_lanchosz, all_data.Sigma.data(), all_data.Sigma_cpy_3.data(), 1); + update_best_time(i, t_lanchosz_best, dur_lanchosz, all_data.Sigma.data(), all_data.Sigma_cpy_3.data(), k_lanc); state_gen = state; data_regen(m_info, all_data, state_gen); @@ -148,13 +150,17 @@ static void call_all_algs( data_regen(m_info, all_data, state_gen); } - for(j = 0; j < k; ++j) { + for(j = 0; j < k; ++j) all_data.Sigma_cpy_1[j] -= all_data.Sigma_cpy_2[j]; + + for(j = 0; j < k_lanc; ++j) all_data.Sigma_cpy_3[j] -= all_data.Sigma_cpy_2[j]; - } - norm_svd = blas::nrm2(k, all_data.Sigma_cpy_2.data(), 1); - err_rbki = blas::nrm2(k, all_data.Sigma_cpy_1.data(), 1) / norm_svd; - err_lan = blas::nrm2(k, all_data.Sigma_cpy_3.data(), 1) / norm_svd; + + norm_svd_k = blas::nrm2(k, all_data.Sigma_cpy_2.data(), 1); + norm_svd_lanc = blas::nrm2(k_lanc, all_data.Sigma_cpy_2.data(), 1); + + err_rbki = blas::nrm2(k, all_data.Sigma_cpy_1.data(), 1) / norm_svd_k; + err_lan = blas::nrm2(k_lanc, all_data.Sigma_cpy_3.data(), 1) / norm_svd_lanc; // Print accuracy info printf("||Sigma_ksvd - Sigma_rbki||_F / ||Sigma_ksvd||_F: %.16e\n", err_rbki); @@ -179,7 +185,7 @@ int main(int argc, char *argv[]) { int64_t k_stop = 0; int64_t num_krylov_iters_start = 2; int64_t num_krylov_iters_curr = num_krylov_iters_start; - int64_t num_krylov_iters_stop = 2048; + int64_t num_krylov_iters_stop = 64; double tol = std::pow(std::numeric_limits::epsilon(), 0.85); auto state = RandBLAS::RNGState(); auto state_constant = state;