From 8ba882675e3ee098b8cf949b8083b0519adf49da Mon Sep 17 00:00:00 2001 From: Francois Coppens Date: Mon, 20 Feb 2023 18:51:20 +0100 Subject: [PATCH] Renamed function prefixes. --- org/qmckl_sherman_morrison_woodbury.org | 244 ++++++++++++------------ 1 file changed, 122 insertions(+), 122 deletions(-) diff --git a/org/qmckl_sherman_morrison_woodbury.org b/org/qmckl_sherman_morrison_woodbury.org index 4c69d63..c91e185 100644 --- a/org/qmckl_sherman_morrison_woodbury.org +++ b/org/qmckl_sherman_morrison_woodbury.org @@ -34,9 +34,9 @@ range(2, 3) * Naïve Sherman-Morrison -** ~qmckl_sherman_morrison_naive~ +** ~qmckl_sm_naive~ :PROPERTIES: -:Name: qmckl_sherman_morrison_naive +:Name: qmckl_sm_naive :CRetType: qmckl_exit_code :FRetType: qmckl_exit_code :END: @@ -75,7 +75,7 @@ If the determinant of the Slater-matrix is passed, it will be updated to the det from applying the updates to the original matrix. *** API -#+NAME: qmckl_sherman_morrison_naive_args +#+NAME: qmckl_sm_naive_args | Variable | Type | In/Out | Description | |-----------------+-------------------------+--------+------------------------------------------------------| | ~context~ | ~qmckl_context~ | in | Global state | @@ -150,7 +150,7 @@ end subroutine copy_back #+end_src #+begin_src f90 :tangle (eval f) -integer function qmckl_sherman_morrison_naive_doc_f(context, & +integer function qmckl_sm_naive_doc_f(context, & lds, dim, & nupdates, & upds, & @@ -230,20 +230,20 @@ integer function qmckl_sherman_morrison_naive_doc_f(context, & info = QMCKL_SUCCESS -end function qmckl_sherman_morrison_naive_doc_f +end function qmckl_sm_naive_doc_f #+end_src **** C interface to the pedagogical kernel (not directly exposed) -The following Fortran function ~qmckl_sherman_morrison_naive_doc~ makes sure -that the pedagogical kernel ~qmckl_sherman_morrison_naive_doc_f~, written in -Fortran, can be called from C using the ~ISO_C_BINDING~. The Fortran function ~qmckl_sherman_morrison_naive_doc~ will be exposed in the header file 'qmckl.h' +The following Fortran function ~qmckl_sm_naive_doc~ makes sure +that the pedagogical kernel ~qmckl_sm_naive_doc_f~, written in +Fortran, can be called from C using the ~ISO_C_BINDING~. The Fortran function ~qmckl_sm_naive_doc~ will be exposed in the header file 'qmckl.h' for C users and in the module file 'qmckl_f.F90' for Fortran users. -#+CALL: generate_c_interface(table=qmckl_sherman_morrison_naive_args,rettyp=get_value("CRetType"),fname="qmckl_sherman_morrison_naive_doc") +#+CALL: generate_c_interface(table=qmckl_sm_naive_args,rettyp=get_value("CRetType"),fname="qmckl_sm_naive_doc") #+RESULTS: #+begin_src f90 :tangle (eval f) :comments org :exports none -integer(c_int32_t) function qmckl_sherman_morrison_naive_doc & +integer(c_int32_t) function qmckl_sm_naive_doc & (context, LDS, Dim, N_updates, Updates, Updates_index, breakdown, Slater_inv, determinant) & bind(C) result(info) @@ -260,20 +260,20 @@ integer(c_int32_t) function qmckl_sherman_morrison_naive_doc & real (c_double ) , intent(inout) :: Slater_inv(Dim*LDS) real (c_double ) , intent(inout) :: determinant - integer(c_int32_t), external :: qmckl_sherman_morrison_naive_doc_f - info = qmckl_sherman_morrison_naive_doc_f & + integer(c_int32_t), external :: qmckl_sm_naive_doc_f + info = qmckl_sm_naive_doc_f & (context, LDS, Dim, N_updates, Updates, Updates_index, breakdown, Slater_inv, determinant) -end function qmckl_sherman_morrison_naive_doc +end function qmckl_sm_naive_doc #+end_src *** C headers (exposed in qmckl.h) -#+CALL: generate_c_header(table=qmckl_sherman_morrison_naive_args,rettyp=get_value("CRetType"),fname=get_value("Name")) +#+CALL: generate_c_header(table=qmckl_sm_naive_args,rettyp=get_value("CRetType"),fname=get_value("Name")) #+RESULTS: #+begin_src c :tangle (eval h_func) : comments org -qmckl_exit_code qmckl_sherman_morrison_naive ( +qmckl_exit_code qmckl_sm_naive ( const qmckl_context context, const uint64_t LDS, const uint64_t Dim, @@ -285,11 +285,11 @@ qmckl_exit_code qmckl_sherman_morrison_naive ( double* determinant ); #+end_src -#+CALL: generate_c_header(table=qmckl_sherman_morrison_naive_args,rettyp=get_value("CRetType"),fname="qmckl_sherman_morrison_naive_hpc") +#+CALL: generate_c_header(table=qmckl_sm_naive_args,rettyp=get_value("CRetType"),fname="qmckl_sm_naive_hpc") #+RESULTS: #+begin_src c :tangle (eval h_private_func) :comments org -qmckl_exit_code qmckl_sherman_morrison_naive_hpc ( +qmckl_exit_code qmckl_sm_naive_hpc ( const qmckl_context context, const uint64_t LDS, const uint64_t Dim, @@ -301,11 +301,11 @@ qmckl_exit_code qmckl_sherman_morrison_naive_hpc ( double* determinant ); #+end_src -#+CALL: generate_c_header(table=qmckl_sherman_morrison_naive_args,rettyp=get_value("CRetType"),fname="qmckl_sherman_morrison_naive_doc") +#+CALL: generate_c_header(table=qmckl_sm_naive_args,rettyp=get_value("CRetType"),fname="qmckl_sm_naive_doc") #+RESULTS: #+begin_src c :tangle (eval h_func) :comments org -qmckl_exit_code qmckl_sherman_morrison_naive_doc ( +qmckl_exit_code qmckl_sm_naive_doc ( const qmckl_context context, const uint64_t LDS, const uint64_t Dim, @@ -344,8 +344,8 @@ Common includes and macros used by all the Sherman-Morrison-Woodbury kernels. #endif #+end_src -~qmckl_sherman_morrison_naive_hpc~ is a high performance variation of -~qmckl_sherman_morrison_naive~ written in C. It is used in cases when ~Dim~ is +~qmckl_sm_naive_hpc~ is a high performance variation of +~qmckl_sm_naive~ written in C. It is used in cases when ~Dim~ is smaller than the leading dimension ~LDS~, irrespective of whetether ~LDS~ includes zero padding to benefit from SIMD instructions or not. Cases like this include situations where one wants to apply updates to a square submatrix of the @@ -354,7 +354,7 @@ It takes advantage of memory aligned data and assumes no data dependencies inside the loops. The loops are fully vectorised whenever ~Dim~ is an integer multiple of ~SIMD_LEGTH~. #+begin_src c :tangle (eval c) :comments org -qmckl_exit_code qmckl_sherman_morrison_naive_hpc( +qmckl_exit_code qmckl_sm_naive_hpc( const qmckl_context context, const uint64_t LDS, const uint64_t Dim, @@ -368,7 +368,7 @@ qmckl_exit_code qmckl_sherman_morrison_naive_hpc( if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { return qmckl_failwith( context, QMCKL_NULL_CONTEXT, - "qmckl_sherman_morrison_naive_hpc", + "qmckl_sm_naive_hpc", NULL); } @@ -423,10 +423,10 @@ qmckl_exit_code qmckl_sherman_morrison_naive_hpc( } #+end_src -~qmckl_exit_code qmckl_sherman_morrison_naive_{Dim}~ is a C function-template that is used to genereate instances of C fucntions based on the range given above. The advantage of this method is that for each of these instances all the dimensions and loop-bounds are known at compile time, allowing the compiler to optimize more aggressively. +~qmckl_exit_code qmckl_sm_naive_{Dim}~ is a C function-template that is used to genereate instances of C fucntions based on the range given above. The advantage of this method is that for each of these instances all the dimensions and loop-bounds are known at compile time, allowing the compiler to optimize more aggressively. #+NAME:naive_template_code #+begin_src c - static inline qmckl_exit_code qmckl_sherman_morrison_naive_{Dim}( + static inline qmckl_exit_code qmckl_sm_naive_{Dim}( const qmckl_context context, const uint64_t N_updates, const double* __restrict Updates, @@ -438,7 +438,7 @@ qmckl_exit_code qmckl_sherman_morrison_naive_hpc( if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { return qmckl_failwith(context, QMCKL_NULL_CONTEXT, - "qmckl_sherman_morrison_naive_{Dim}", + "qmckl_sm_naive_{Dim}", NULL); } @@ -516,7 +516,7 @@ Python script that generated C switch cases that call individual kernel instance #+begin_src python :noweb yes text=""" case {Dim}: - return qmckl_sherman_morrison_naive_{Dim}(context, + return qmckl_sm_naive_{Dim}(context, N_updates, Updates, Updates_index, @@ -536,9 +536,9 @@ return '\n'.join(result) <> #+end_src -~qmckl_sherman_morrison_naive~ is a generic function that contains decision making logic that calls the proper kernel based on the used library configuration (~--enable-doc~ and ~--enable-hpc~) and the passed array dimensions ~LDS~ and ~Dim~. +~qmckl_sm_naive~ is a generic function that contains decision making logic that calls the proper kernel based on the used library configuration (~--enable-doc~ and ~--enable-hpc~) and the passed array dimensions ~LDS~ and ~Dim~. #+begin_src c :tangle (eval c) :comments org :noweb yes -qmckl_exit_code qmckl_sherman_morrison_naive(const qmckl_context context, +qmckl_exit_code qmckl_sm_naive(const qmckl_context context, const uint64_t LDS, const uint64_t Dim, const uint64_t N_updates, @@ -551,7 +551,7 @@ qmckl_exit_code qmckl_sherman_morrison_naive(const qmckl_context context, if (qmckl_context_check(context) == QMCKL_NULL_CONTEXT) { return qmckl_failwith(context, QMCKL_NULL_CONTEXT, - "qmckl_sherman_morrison_naive", + "qmckl_sm_naive", NULL); } @@ -562,7 +562,7 @@ qmckl_exit_code qmckl_sherman_morrison_naive(const qmckl_context context, } } else { // Updating smaller sub-matrix - return qmckl_sherman_morrison_naive_hpc(context, + return qmckl_sm_naive_hpc(context, LDS, Dim, N_updates, @@ -573,7 +573,7 @@ qmckl_exit_code qmckl_sherman_morrison_naive(const qmckl_context context, determinant); } #else - return qmckl_sherman_morrison_naive_doc(context, + return qmckl_sm_naive_doc(context, LDS, Dim, N_updates, @@ -590,17 +590,17 @@ qmckl_exit_code qmckl_sherman_morrison_naive(const qmckl_context context, *** Fortran interfaces (exposed in qmckl_f.F90) :PROPERTIES: - :Name: qmckl_sherman_morrison_naive + :Name: qmckl_sm_naive :CRetType: qmckl_exit_code :FRetType: qmckl_exit_code :END: -#+CALL: generate_f_interface(table=qmckl_sherman_morrison_naive_args,rettyp=get_value("FRetType"),fname="qmckl_sherman_morrison_naive_hpc") +#+CALL: generate_f_interface(table=qmckl_sm_naive_args,rettyp=get_value("FRetType"),fname="qmckl_sm_naive_hpc") #+RESULTS: #+begin_src f90 :tangle (eval fh_func) :comments org :exports none interface - integer(c_int32_t) function qmckl_sherman_morrison_naive_hpc & + integer(c_int32_t) function qmckl_sm_naive_hpc & (context, LDS, Dim, N_updates, Updates, Updates_index, breakdown, Slater_inv, determinant) & bind(C) use, intrinsic :: iso_c_binding @@ -617,16 +617,16 @@ interface real (c_double ) , intent(inout) :: Slater_inv(Dim*LDS) real (c_double ) , intent(inout) :: determinant - end function qmckl_sherman_morrison_naive_hpc + end function qmckl_sm_naive_hpc end interface #+end_src -#+CALL: generate_f_interface(table=qmckl_sherman_morrison_naive_args,rettyp=get_value("FRetType"),fname="qmckl_sherman_morrison_naive_doc") +#+CALL: generate_f_interface(table=qmckl_sm_naive_args,rettyp=get_value("FRetType"),fname="qmckl_sm_naive_doc") #+RESULTS: #+begin_src f90 :tangle (eval fh_func) :comments org :exports none interface - integer(c_int32_t) function qmckl_sherman_morrison_naive_doc & + integer(c_int32_t) function qmckl_sm_naive_doc & (context, LDS, Dim, N_updates, Updates, Updates_index, breakdown, Slater_inv, determinant) & bind(C) use, intrinsic :: iso_c_binding @@ -643,16 +643,16 @@ interface real (c_double ) , intent(inout) :: Slater_inv(Dim*LDS) real (c_double ) , intent(inout) :: determinant - end function qmckl_sherman_morrison_naive_doc + end function qmckl_sm_naive_doc end interface #+end_src -#+CALL: generate_f_interface(table=qmckl_sherman_morrison_naive_args,rettyp=get_value("FRetType"),fname="qmckl_sherman_morrison_naive") +#+CALL: generate_f_interface(table=qmckl_sm_naive_args,rettyp=get_value("FRetType"),fname="qmckl_sm_naive") #+RESULTS: #+begin_src f90 :tangle (eval fh_func) :comments org :exports none interface - integer(c_int32_t) function qmckl_sherman_morrison_naive & + integer(c_int32_t) function qmckl_sm_naive & (context, LDS, Dim, N_updates, Updates, Updates_index, breakdown, Slater_inv, determinant) & bind(C) use, intrinsic :: iso_c_binding @@ -669,7 +669,7 @@ interface real (c_double ) , intent(inout) :: Slater_inv(Dim*LDS) real (c_double ) , intent(inout) :: determinant - end function qmckl_sherman_morrison_naive + end function qmckl_sm_naive end interface #+end_src @@ -701,7 +701,7 @@ assert(Slater_inv1 != NULL); // original determinant of Slater1 (before applying updates) double det = 3.407025646103221e-10; -rc = qmckl_sherman_morrison_naive(context, +rc = qmckl_sm_naive(context, LDS, Dim, N_updates1, @@ -738,15 +738,15 @@ assert(rc == QMCKL_SUCCESS); * Sherman-Morrison with Slagel Splitting (core) -** ~qmckl_slagel_splitting~ +** ~qmckl_sm_splitting_core~ :PROPERTIES: -:Name: qmckl_slagel_splitting +:Name: qmckl_sm_splitting_core :CRetType: qmckl_exit_code :FRetType: qmckl_exit_code :END: *** Introduction -~qmckl_slagel_splitting~ is the inner core part of 'Sherman-Morrison with update splitting' in the next section. +~qmckl_sm_splitting_core~ is the inner core part of 'Sherman-Morrison with update splitting' in the next section. It is not normally used by itself but it is possible to use it nonetheless. It has three extra parameters in its API: @@ -754,14 +754,14 @@ It has three extra parameters in its API: - ~later_index~ initially empty array that will contain the row/column numbers of the updates that were split during execution - ~later~ initially zero integer that records the number of updates that were split during exection. -It is up to the user to decide what to do with these updates once the kernel returns. Normally ~qmckl_slagel_splitting~ is -used as the core part of a recursive function, as is done in ~qmckl_sherman_morrison_splitting~ or as part of a more complex +It is up to the user to decide what to do with these updates once the kernel returns. Normally ~qmckl_sm_splitting_core~ is +used as the core part of a recursive function, as is done in ~qmckl_sm_splitting~ or as part of a more complex kernel like ~qmckl_sherman_morrison_smw32s~. If the determinant is passed it will only be partially updated if there were any update splits. *** API -#+NAME: qmckl_slagel_splitting_args +#+NAME: qmckl_sm_splitting_core_args | Variable | Type | In/Out | Description | |-----------------+-------------------------+--------+---------------------------------------------------------------| | ~context~ | ~qmckl_context~ | in | Global state | @@ -795,7 +795,7 @@ able to do numerically correct computations, it does not do it in the most effic not be used in real workloads. #+begin_src f90 :tangle (eval f) -integer function qmckl_slagel_splitting_doc_f( & +integer function qmckl_sm_splitting_core_doc_f( & context, & lds, dim, & nupdates, & @@ -843,21 +843,21 @@ integer function qmckl_slagel_splitting_doc_f( & info = QMCKL_SUCCESS -end function qmckl_slagel_splitting_doc_f +end function qmckl_sm_splitting_core_doc_f #+end_src **** C interface to the pedagogical kernel (not directly exposed) -The following Fortran function ~qmckl_slagel_splitting_doc~ makes sure -that the pedagogical kernel ~qmckl_slagel_splitting_doc_f~, written in +The following Fortran function ~qmckl_sm_splitting_core_doc~ makes sure +that the pedagogical kernel ~qmckl_sm_splitting_core_doc_f~, written in Fortran, can be called from C using the ~ISO_C_BINDING~. The Fortran function -~qmckl_slagel_splitting_doc~ will be exposed in the header file 'qmckl.h' +~qmckl_sm_splitting_core_doc~ will be exposed in the header file 'qmckl.h' for C users and in the module file 'qmckl_f.F90' for Fortran users. -#+CALL: generate_c_interface(table=qmckl_slagel_splitting_args,rettyp=get_value("CRetType"),fname="qmckl_slagel_splitting_doc") +#+CALL: generate_c_interface(table=qmckl_sm_splitting_core_args,rettyp=get_value("CRetType"),fname="qmckl_sm_splitting_core_doc") #+RESULTS: #+begin_src f90 :tangle (eval f) :comments org :exports none -integer(c_int32_t) function qmckl_slagel_splitting_doc & +integer(c_int32_t) function qmckl_sm_splitting_core_doc & (context, & LDS, & Dim, & @@ -888,8 +888,8 @@ integer(c_int32_t) function qmckl_slagel_splitting_doc & integer (c_int64_t) , intent(inout) :: later real (c_double ) , intent(inout) :: determinant - integer(c_int32_t), external :: qmckl_slagel_splitting_doc_f - info = qmckl_slagel_splitting_doc_f & + integer(c_int32_t), external :: qmckl_sm_splitting_core_doc_f + info = qmckl_sm_splitting_core_doc_f & (context, & LDS, & Dim, & @@ -903,15 +903,15 @@ integer(c_int32_t) function qmckl_slagel_splitting_doc & later, & determinant) -end function qmckl_slagel_splitting_doc +end function qmckl_sm_splitting_core_doc #+end_src *** C headers (exposed in qmckl.h) -#+CALL: generate_c_header(table=qmckl_slagel_splitting_args,rettyp=get_value("CRetType"),fname=get_value("Name")) +#+CALL: generate_c_header(table=qmckl_sm_splitting_core_args,rettyp=get_value("CRetType"),fname=get_value("Name")) #+RESULTS: #+begin_src c :tangle (eval h_func) :comments org -qmckl_exit_code qmckl_slagel_splitting ( +qmckl_exit_code qmckl_sm_splitting_core ( const qmckl_context context, const uint64_t LDS, const uint64_t Dim, @@ -926,11 +926,11 @@ qmckl_exit_code qmckl_slagel_splitting ( double* determinant ); #+end_src -#+CALL: generate_c_header(table=qmckl_slagel_splitting_args,rettyp=get_value("CRetType"),fname="qmckl_slagel_splitting_doc") +#+CALL: generate_c_header(table=qmckl_sm_splitting_core_args,rettyp=get_value("CRetType"),fname="qmckl_sm_splitting_core_doc") #+RESULTS: #+begin_src c :tangle (eval h_func) :comments org -qmckl_exit_code qmckl_slagel_splitting_doc ( +qmckl_exit_code qmckl_sm_splitting_core_doc ( const qmckl_context context, const uint64_t LDS, const uint64_t Dim, @@ -947,7 +947,7 @@ qmckl_exit_code qmckl_slagel_splitting_doc ( *** C sources #+begin_src c :tangle (eval c) :comments org -qmckl_exit_code qmckl_slagel_splitting_hpc( +qmckl_exit_code qmckl_sm_splitting_core_hpc( const qmckl_context context, uint64_t LDS, uint64_t Dim, @@ -965,7 +965,7 @@ qmckl_exit_code qmckl_slagel_splitting_hpc( return qmckl_failwith( context, QMCKL_NULL_CONTEXT, - "qmckl_slagel_splitting_hpc", + "qmckl_sm_splitting_core_hpc", NULL); } @@ -1033,7 +1033,7 @@ qmckl_exit_code qmckl_slagel_splitting_hpc( #+NAME:slagel_splitting_template_code #+begin_src c -static inline qmckl_exit_code qmckl_slagel_splitting_{Dim}( +static inline qmckl_exit_code qmckl_sm_splitting_core_{Dim}( const qmckl_context context, uint64_t N_updates, const double* __restrict Updates, @@ -1049,7 +1049,7 @@ static inline qmckl_exit_code qmckl_slagel_splitting_{Dim}( return qmckl_failwith( context, QMCKL_NULL_CONTEXT, - "qmckl_slagel_splitting_{Dim}", + "qmckl_sm_splitting_core_{Dim}", NULL); } @@ -1132,7 +1132,7 @@ return '\n'.join(result) #+begin_src python :noweb yes text=""" case {Dim}: { - return qmckl_slagel_splitting_{Dim}( + return qmckl_sm_splitting_core_{Dim}( context, N_updates, Updates, @@ -1159,7 +1159,7 @@ return '\n'.join(result) #+end_src #+begin_src c :tangle (eval c) :comments org :noweb yes -qmckl_exit_code qmckl_slagel_splitting( +qmckl_exit_code qmckl_sm_splitting_core( const qmckl_context context, const uint64_t LDS, const uint64_t Dim, @@ -1184,7 +1184,7 @@ qmckl_exit_code qmckl_slagel_splitting( } } else { // Updating smaller sub-matrix - return qmckl_slagel_splitting_hpc( + return qmckl_sm_splitting_core_hpc( context, LDS, Dim, @@ -1199,7 +1199,7 @@ qmckl_exit_code qmckl_slagel_splitting( determinant); } #else - // return qmckl_slagel_splitting_doc( + // return qmckl_sm_splitting_core_doc( // context, // LDS, // Dim, @@ -1212,7 +1212,7 @@ qmckl_exit_code qmckl_slagel_splitting( // later_index, // later, // determinant); - return qmckl_slagel_splitting_hpc( + return qmckl_sm_splitting_core_hpc( context, LDS, Dim, @@ -1233,17 +1233,17 @@ qmckl_exit_code qmckl_slagel_splitting( *** Fortran interfaces (exposed in qmckl_f.F90) :PROPERTIES: -:Name: qmckl_slagel_splitting +:Name: qmckl_sm_splitting_core :CRetType: qmckl_exit_code :FRetType: qmckl_exit_code :END: -#+CALL: generate_f_interface(table=qmckl_slagel_splitting_args,rettyp=get_value("FRetType"),fname="qmckl_slagel_splitting_hpc") +#+CALL: generate_f_interface(table=qmckl_sm_splitting_core_args,rettyp=get_value("FRetType"),fname="qmckl_sm_splitting_core_hpc") #+RESULTS: #+begin_src f90 :tangle (eval fh_func) :comments org :exports none interface - integer(c_int32_t) function qmckl_slagel_splitting_hpc & + integer(c_int32_t) function qmckl_sm_splitting_core_hpc & (context, LDS, Dim, N_updates, Updates, Updates_index, breakdown, & Slater_inv, later_updates, later_index, later, determinant) & bind(C) @@ -1264,16 +1264,16 @@ interface integer (c_int64_t) , intent(inout) :: later real (c_double ) , intent(inout) :: determinant - end function qmckl_slagel_splitting_hpc + end function qmckl_sm_splitting_core_hpc end interface #+end_src -#+CALL: generate_f_interface(table=qmckl_slagel_splitting_args,rettyp=get_value("FRetType"),fname="qmckl_slagel_splitting_doc") +#+CALL: generate_f_interface(table=qmckl_sm_splitting_core_args,rettyp=get_value("FRetType"),fname="qmckl_sm_splitting_core_doc") #+RESULTS: #+begin_src f90 :tangle (eval fh_func) :comments org :exports none interface - integer(c_int32_t) function qmckl_slagel_splitting_doc & + integer(c_int32_t) function qmckl_sm_splitting_core_doc & (context, LDS, Dim, N_updates, Updates, Updates_index, breakdown, & Slater_inv, later_updates, later_index, later, determinant) & bind(C) @@ -1294,16 +1294,16 @@ interface integer (c_int64_t) , intent(inout) :: later real (c_double ) , intent(inout) :: determinant - end function qmckl_slagel_splitting_doc + end function qmckl_sm_splitting_core_doc end interface #+end_src -#+CALL: generate_f_interface(table=qmckl_slagel_splitting_args,rettyp=get_value("FRetType"),fname="qmckl_slagel_splitting") +#+CALL: generate_f_interface(table=qmckl_sm_splitting_core_args,rettyp=get_value("FRetType"),fname="qmckl_sm_splitting_core") #+RESULTS: #+begin_src f90 :tangle (eval fh_func) :comments org :exports none interface - integer(c_int32_t) function qmckl_slagel_splitting & + integer(c_int32_t) function qmckl_sm_splitting_core & (context, LDS, Dim, N_updates, Updates, Updates_index, breakdown, & Slater_inv, later_updates, later_index, later, determinant) & bind(C) @@ -1324,7 +1324,7 @@ interface integer (c_int64_t) , intent(inout) :: later real (c_double ) , intent(inout) :: determinant - end function qmckl_slagel_splitting + end function qmckl_sm_splitting_core end interface #+end_src @@ -1334,9 +1334,9 @@ with Sherman-Morrison and update splitting. Please look at the performance recco * Sherman-Morrison with Slagel Splitting -** ~qmckl_sherman_morrison_splitting~ +** ~qmckl_sm_splitting~ :PROPERTIES: -:Name: qmckl_sherman_morrison_splitting +:Name: qmckl_sm_splitting :CRetType: qmckl_exit_code :FRetType: qmckl_exit_code :END: @@ -1357,7 +1357,7 @@ If the determinant of the Slater-matrix is passed, it will be updated to the det from applying the updates to the original matrix. *** API -#+NAME: qmckl_sherman_morrison_splitting_args +#+NAME: qmckl_sm_splitting_args | Variable | Type | In/Out | Description | |---------------+-----------------------+--------+------------------------------------------------------| | context | qmckl_context | in | Global state | @@ -1386,7 +1386,7 @@ able to do numerically correct computations, it does not do it in the most effic not be used in real workloads. #+begin_src f90 :tangle (eval f) -integer function qmckl_sherman_morrison_splitting_doc_f(context, & +integer function qmckl_sm_splitting_doc_f(context, & lds, dim, & nupdates, & upds, & @@ -1422,21 +1422,21 @@ integer function qmckl_sherman_morrison_splitting_doc_f(context, & info = QMCKL_SUCCESS -end function qmckl_sherman_morrison_splitting_doc_f +end function qmckl_sm_splitting_doc_f #+end_src **** C interface to the pedagogical kernel (not directly exposed) -The following Fortran function ~qmckl_slagel_splitting_doc~ makes sure -that the pedagogical kernel ~qmckl_slagel_splitting_doc_f~, written in +The following Fortran function ~qmckl_sm_splitting_core_doc~ makes sure +that the pedagogical kernel ~qmckl_sm_splitting_core_doc_f~, written in Fortran, can be called from C using the ~ISO_C_BINDING~. The Fortran function -~qmckl_slagel_splitting_doc~ will be exposed in the header file 'qmckl.h' +~qmckl_sm_splitting_core_doc~ will be exposed in the header file 'qmckl.h' for C users and in the module file 'qmckl_f.F90' for Fortran users. -#+CALL: generate_c_interface(table=qmckl_sherman_morrison_splitting_args,rettyp=get_value("CRetType"),fname="qmckl_sherman_morrison_splitting_doc") +#+CALL: generate_c_interface(table=qmckl_sm_splitting_args,rettyp=get_value("CRetType"),fname="qmckl_sm_splitting_doc") #+RESULTS: #+begin_src f90 :tangle (eval f) :comments org :exports none -integer(c_int32_t) function qmckl_sherman_morrison_splitting_doc & +integer(c_int32_t) function qmckl_sm_splitting_doc & (context, LDS, Dim, N_updates, Updates, Updates_index, breakdown, Slater_inv, determinant) & bind(C) result(info) @@ -1453,20 +1453,20 @@ integer(c_int32_t) function qmckl_sherman_morrison_splitting_doc & real (c_double ) , intent(inout) :: Slater_inv(Dim*LDS) real (c_double ) , intent(inout) :: determinant - integer(c_int32_t), external :: qmckl_sherman_morrison_splitting_doc_f - info = qmckl_sherman_morrison_splitting_doc_f & + integer(c_int32_t), external :: qmckl_sm_splitting_doc_f + info = qmckl_sm_splitting_doc_f & (context, LDS, Dim, N_updates, Updates, Updates_index, breakdown, Slater_inv, determinant) -end function qmckl_sherman_morrison_splitting_doc +end function qmckl_sm_splitting_doc #+end_src *** C headers (exposed in qmckl.h) -#+CALL: generate_c_header(table=qmckl_sherman_morrison_splitting_args,rettyp=get_value("CRetType"),fname=get_value("Name")) +#+CALL: generate_c_header(table=qmckl_sm_splitting_args,rettyp=get_value("CRetType"),fname=get_value("Name")) #+RESULTS: #+begin_src c :tangle (eval h_func) :comments org -qmckl_exit_code qmckl_sherman_morrison_splitting ( +qmckl_exit_code qmckl_sm_splitting ( const qmckl_context context, const uint64_t LDS, const uint64_t Dim, @@ -1478,11 +1478,11 @@ qmckl_exit_code qmckl_sherman_morrison_splitting ( double* determinant ); #+end_src -#+CALL: generate_c_header(table=qmckl_sherman_morrison_splitting_args,rettyp=get_value("CRetType"),fname="qmckl_sherman_morrison_splitting_hpc") +#+CALL: generate_c_header(table=qmckl_sm_splitting_args,rettyp=get_value("CRetType"),fname="qmckl_sm_splitting_hpc") #+RESULTS: #+begin_src c :tangle (eval h_func) :comments org -qmckl_exit_code qmckl_sherman_morrison_splitting_hpc ( +qmckl_exit_code qmckl_sm_splitting_hpc ( const qmckl_context context, const uint64_t LDS, const uint64_t Dim, @@ -1494,11 +1494,11 @@ qmckl_exit_code qmckl_sherman_morrison_splitting_hpc ( double* determinant ); #+end_src -#+CALL: generate_c_header(table=qmckl_sherman_morrison_splitting_args,rettyp=get_value("CRetType"),fname="qmckl_sherman_morrison_splitting_doc") +#+CALL: generate_c_header(table=qmckl_sm_splitting_args,rettyp=get_value("CRetType"),fname="qmckl_sm_splitting_doc") #+RESULTS: #+begin_src c :tangle (eval h_func) :comments org -qmckl_exit_code qmckl_sherman_morrison_splitting_doc ( +qmckl_exit_code qmckl_sm_splitting_doc ( const qmckl_context context, const uint64_t LDS, const uint64_t Dim, @@ -1515,7 +1515,7 @@ qmckl_exit_code qmckl_sherman_morrison_splitting_doc ( #+begin_src python :noweb yes text=""" case {Dim}: { - rc = qmckl_slagel_splitting_{Dim}( + rc = qmckl_sm_splitting_core_{Dim}( context, N_updates, Updates, @@ -1536,7 +1536,7 @@ return '\n'.join(result) #+end_src #+begin_src c :tangle (eval c) :comments org :noweb yes -qmckl_exit_code qmckl_sherman_morrison_splitting_hpc( +qmckl_exit_code qmckl_sm_splitting_hpc( const qmckl_context context, const uint64_t LDS, const uint64_t Dim, @@ -1551,7 +1551,7 @@ qmckl_exit_code qmckl_sherman_morrison_splitting_hpc( return qmckl_failwith( context, QMCKL_NULL_CONTEXT, - "qmckl_sherman_morrison_splitting_hpc", + "qmckl_sm_splitting_hpc", NULL); } @@ -1569,7 +1569,7 @@ qmckl_exit_code qmckl_sherman_morrison_splitting_hpc( } } } else { - rc = qmckl_slagel_splitting_hpc( + rc = qmckl_sm_splitting_core_hpc( context, LDS, Dim, N_updates, Updates, Updates_index, breakdown, Slater_inv, later_updates, later_index, &later, determinant); @@ -1577,7 +1577,7 @@ qmckl_exit_code qmckl_sherman_morrison_splitting_hpc( if (rc != QMCKL_SUCCESS) return QMCKL_FAILURE; if (later > 0) { - qmckl_exit_code rc = qmckl_sherman_morrison_splitting_hpc( + qmckl_exit_code rc = qmckl_sm_splitting_hpc( context, LDS, Dim, later, later_updates, later_index, breakdown, Slater_inv, determinant); @@ -1589,7 +1589,7 @@ qmckl_exit_code qmckl_sherman_morrison_splitting_hpc( #+end_src #+begin_src c :tangle (eval c) :comment org -qmckl_exit_code qmckl_sherman_morrison_splitting( +qmckl_exit_code qmckl_sm_splitting( const qmckl_context context, const uint64_t LDS, const uint64_t Dim, @@ -1604,11 +1604,11 @@ qmckl_exit_code qmckl_sherman_morrison_splitting( return qmckl_failwith( context, QMCKL_NULL_CONTEXT, - "qmckl_sherman_morrison_splitting", + "qmckl_sm_splitting", NULL); } #ifdef HAS_HPC - return qmckl_sherman_morrison_splitting_hpc( + return qmckl_sm_splitting_hpc( context, LDS, Dim, @@ -1619,7 +1619,7 @@ qmckl_exit_code qmckl_sherman_morrison_splitting( Slater_inv, determinant); #else - // return qmckl_sherman_morrison_splitting_doc( + // return qmckl_sm_splitting_doc( // context, // LDS, // Dim, @@ -1629,7 +1629,7 @@ qmckl_exit_code qmckl_sherman_morrison_splitting( // breakdown, // Slater_inv, // determinant); - return qmckl_sherman_morrison_splitting_hpc( + return qmckl_sm_splitting_hpc( context, LDS, Dim, @@ -1647,17 +1647,17 @@ qmckl_exit_code qmckl_sherman_morrison_splitting( *** Fortran interfaces (exposed in qmckl_f.F90) :PROPERTIES: - :Name: qmckl_sherman_morrison_naive + :Name: qmckl_sm_naive :CRetType: qmckl_exit_code :FRetType: qmckl_exit_code :END: -#+CALL: generate_f_interface(table=qmckl_sherman_morrison_splitting_args,rettyp=get_value("FRetType"),fname="qmckl_sherman_morrison_splitting_hpc") +#+CALL: generate_f_interface(table=qmckl_sm_splitting_args,rettyp=get_value("FRetType"),fname="qmckl_sm_splitting_hpc") #+RESULTS: #+begin_src f90 :tangle (eval fh_func) :comments org :exports none interface - integer(c_int32_t) function qmckl_sherman_morrison_splitting_hpc & + integer(c_int32_t) function qmckl_sm_splitting_hpc & (context, LDS, Dim, N_updates, Updates, Updates_index, breakdown, Slater_inv, determinant) & bind(C) use, intrinsic :: iso_c_binding @@ -1674,16 +1674,16 @@ interface real (c_double ) , intent(inout) :: Slater_inv(Dim*LDS) real (c_double ) , intent(inout) :: determinant - end function qmckl_sherman_morrison_splitting_hpc + end function qmckl_sm_splitting_hpc end interface #+end_src -#+CALL: generate_f_interface(table=qmckl_sherman_morrison_splitting_args,rettyp=get_value("FRetType"),fname="qmckl_sherman_morrison_splitting_doc") +#+CALL: generate_f_interface(table=qmckl_sm_splitting_args,rettyp=get_value("FRetType"),fname="qmckl_sm_splitting_doc") #+RESULTS: #+begin_src f90 :tangle (eval fh_func) :comments org :exports none interface - integer(c_int32_t) function qmckl_sherman_morrison_splitting_doc & + integer(c_int32_t) function qmckl_sm_splitting_doc & (context, LDS, Dim, N_updates, Updates, Updates_index, breakdown, Slater_inv, determinant) & bind(C) use, intrinsic :: iso_c_binding @@ -1700,16 +1700,16 @@ interface real (c_double ) , intent(inout) :: Slater_inv(Dim*LDS) real (c_double ) , intent(inout) :: determinant - end function qmckl_sherman_morrison_splitting_doc + end function qmckl_sm_splitting_doc end interface #+end_src -#+CALL: generate_f_interface(table=qmckl_sherman_morrison_splitting_args,rettyp=get_value("FRetType"),fname="qmckl_sherman_morrison_splitting") +#+CALL: generate_f_interface(table=qmckl_sm_splitting_args,rettyp=get_value("FRetType"),fname="qmckl_sm_splitting") #+RESULTS: #+begin_src f90 :tangle (eval fh_func) :comments org :exports none interface - integer(c_int32_t) function qmckl_sherman_morrison_splitting & + integer(c_int32_t) function qmckl_sm_splitting & (context, LDS, Dim, N_updates, Updates, Updates_index, breakdown, Slater_inv, determinant) & bind(C) use, intrinsic :: iso_c_binding @@ -1726,7 +1726,7 @@ interface real (c_double ) , intent(inout) :: Slater_inv(Dim*LDS) real (c_double ) , intent(inout) :: determinant - end function qmckl_sherman_morrison_splitting + end function qmckl_sm_splitting end interface #+end_src @@ -1739,7 +1739,7 @@ assert(Updates3 != NULL); assert(Updates_index3 != NULL); assert(Slater_inv3_2 != NULL); det = -1.23743195512859e-09; -rc = qmckl_sherman_morrison_splitting(context, LDS, Dim, N_updates3, Updates3, Updates_index3, breakdown, Slater_inv3_2, &det); +rc = qmckl_sm_splitting(context, LDS, Dim, N_updates3, Updates3, Updates_index3, breakdown, Slater_inv3_2, &det); assert(fabs(det - 1.602708950725074e-10) < 1e-15); for (unsigned int i = 0; i < Dim; i++) { for (unsigned int j = 0; j < Dim; j++) {