1
0
mirror of https://github.com/TREX-CoE/qmckl.git synced 2024-09-27 03:51:09 +02:00

Fix preprocessor else and remove old cuBLAS interface

This commit is contained in:
Aurélien Delval 2022-04-05 14:37:57 +02:00
parent eb71a752f5
commit 0ce0a93522
2 changed files with 4 additions and 96 deletions

View File

@ -2288,98 +2288,6 @@ qmckl_transpose (qmckl_context context,
#+end_src
* cuBLAS interface (optional)
We propose a cuBLAS version of some QMCkl kernels. However, because cuBLAS is written in C, we need to define a Fortran interface for it. We start by defining functions to manage the cuBLAS handle structure from Fortran, before writing interfaces for the specific cuBLAS functions we are interested in.
TODO These are the C functions that are supposed to be called from Fortran. We still need to write the interfaces themselves.
#+begin_src c :tangle (eval h_private_func) :comments org
#ifdef HAVE_CUBLAS_OFFLOAD
#include <cublas_v2.h>
#endif
#+end_src
#+begin_src c :tangle (eval h_private_func) :comments org
#ifdef HAVE_CUBLAS_OFFLOAD
cublasHandle_t* get_cublas_handle_interfaced();
#endif
#+end_src
#+begin_src c :comments org :tangle (eval c) :exports none
#ifdef HAVE_CUBLAS_OFFLOAD
cublasHandle_t* get_cublas_handle_interfaced() {
cublasHandle_t* handle = malloc(sizeof(cublasHandle_t));
cublasStatus_t status = cublasCreate(handle);
if (status != CUBLAS_STATUS_SUCCESS){
fprintf(stderr, "Error while initializing cuBLAS\n");
exit(1);
}
return handle;
}
#endif
#+end_src
#+begin_src c :tangle (eval h_private_func) :comments org
#ifdef HAVE_CUBLAS_OFFLOAD
void destroy_cublas_handle_interfaced(cublasHandle_t* handle);
#endif
#+end_src
#+begin_src c :comments org :tangle (eval c) :exports none
#ifdef HAVE_CUBLAS_OFFLOAD
void destroy_cublas_handle_interfaced(cublasHandle_t* handle) {
if(handle != NULL) {
free(handle);
}
}
#endif
#+end_src
** DGEMM
#+begin_src c :tangle (eval h_private_func) :comments org
#ifdef HAVE_CUBLAS_OFFLOAD
cublasStatus_t cublasDgemm_f(
cublasHandle_t* handle,
cublasOperation_t* transa, cublasOperation_t* transb,
int* m, int* n, int* k,
const double* alpha,
const double*A, int* lda,
const double* B, int* ldb,
const double* beta,
double*C, int* ldc
);
#endif
#+end_src
#+begin_src c :comments org :tangle (eval c) :exports none
#ifdef HAVE_CUBLAS_OFFLOAD
cublasStatus_t cublasDgemm_f(
cublasHandle_t* handle,
cublasOperation_t* transa, cublasOperation_t* transb,
int* m, int* n, int* k,
const double* alpha,
const double*A, int* lda,
const double* B, int* ldb,
const double* beta,
double*C, int* ldc
) {
return cublasDgemm_f(
handle,
transa, transb,
m, n, k,
alpha, A, lda, B,ldb,
beta, C, ldc
);
}
#endif
#+end_src
* End of files :noexport:

View File

@ -4903,7 +4903,7 @@ qmckl_exit_code qmckl_provide_tmp_c(qmckl_context context)
ctx->jastrow.een_rescaled_e,
ctx->jastrow.een_rescaled_n,
ctx->jastrow.tmp_c);
#elif
#else
rc = qmckl_compute_tmp_c(context,
ctx->jastrow.cord_num,
ctx->electron.num,
@ -4926,7 +4926,7 @@ qmckl_exit_code qmckl_provide_tmp_c(qmckl_context context)
ctx->jastrow.een_rescaled_e,
ctx->jastrow.een_rescaled_n,
ctx->jastrow.tmp_c);
#elif
#else
rc = qmckl_compute_tmp_c(context,
ctx->jastrow.cord_num,
ctx->electron.num,
@ -4999,7 +4999,7 @@ qmckl_exit_code qmckl_provide_dtmp_c(qmckl_context context)
ctx->jastrow.een_rescaled_e_deriv_e,
ctx->jastrow.een_rescaled_n,
ctx->jastrow.dtmp_c);
#elif
#else
rc = qmckl_compute_dtmp_c(context,
ctx->jastrow.cord_num,
ctx->electron.num,
@ -5020,7 +5020,7 @@ qmckl_exit_code qmckl_provide_dtmp_c(qmckl_context context)
ctx->jastrow.een_rescaled_e_deriv_e,
ctx->jastrow.een_rescaled_n,
ctx->jastrow.dtmp_c);
#elif
#else
rc = qmckl_compute_dtmp_c(context,
ctx->jastrow.cord_num,
ctx->electron.num,