1
0
mirror of https://github.com/TREX-CoE/qmckl.git synced 2025-04-30 12:24:49 +02:00

Try to solve qmckl_malloc

This commit is contained in:
Anthony Scemama 2025-02-05 18:25:52 +01:00
parent 45efa5cb5e
commit 2ec57f996a
2 changed files with 14 additions and 8 deletions

View File

@ -1199,7 +1199,7 @@ qmckl_get_electron_en_distance(qmckl_context context,
"distance is a null pointer"); "distance is a null pointer");
} }
size_t sze = ctx->point.num * ctx->nucleus.num; int64_t sze = ctx->point.num * ctx->nucleus.num;
if (size_max < sze) { if (size_max < sze) {
return qmckl_failwith( context, return qmckl_failwith( context,
QMCKL_INVALID_ARG_3, QMCKL_INVALID_ARG_3,

View File

@ -112,8 +112,10 @@ typedef struct qmckl_jastrow_champ_single_struct{
double * restrict een_rescaled_single_n_gl; double * restrict een_rescaled_single_n_gl;
uint64_t een_rescaled_single_n_gl_date; uint64_t een_rescaled_single_n_gl_date;
double* delta_p_gl; double* delta_p_gl;
uint64_t delta_p_gl_maxsize;
uint64_t delta_p_gl_date; uint64_t delta_p_gl_date;
double* delta_een_gl; double* delta_een_gl;
uint64_t delta_een_gl_maxsize;
uint64_t delta_een_gl_date; uint64_t delta_een_gl_date;
double* delta_een_g; double* delta_een_g;
uint64_t delta_een_g_date; uint64_t delta_een_g_date;
@ -3156,7 +3158,11 @@ qmckl_exit_code qmckl_provide_jastrow_champ_delta_p_gl(qmckl_context context)
/* Compute if necessary */ /* Compute if necessary */
if (ctx->single_point.date > ctx->single_point.delta_p_gl_date) { if (ctx->single_point.date > ctx->single_point.delta_p_gl_date) {
if (ctx->electron.walker.num > ctx->electron.walker_old.num) { qmckl_memory_info_struct mem_info = qmckl_memory_info_struct_zero;
mem_info.size = 4 * ctx->electron.walker.num * ctx->jastrow_champ.cord_num *
(ctx->jastrow_champ.cord_num + 1) * ctx->nucleus.num * ctx->electron.num * sizeof(double);
if (mem_info.size > ctx->single_point.delta_p_gl_maxsize) {
if (ctx->single_point.delta_p_gl != NULL) { if (ctx->single_point.delta_p_gl != NULL) {
rc = qmckl_free(context, ctx->single_point.delta_p_gl); rc = qmckl_free(context, ctx->single_point.delta_p_gl);
if (rc != QMCKL_SUCCESS) { if (rc != QMCKL_SUCCESS) {
@ -3171,10 +3177,8 @@ qmckl_exit_code qmckl_provide_jastrow_champ_delta_p_gl(qmckl_context context)
/* Allocate array */ /* Allocate array */
if (ctx->single_point.delta_p_gl == NULL) { if (ctx->single_point.delta_p_gl == NULL) {
qmckl_memory_info_struct mem_info = qmckl_memory_info_struct_zero;
mem_info.size = 4 * ctx->electron.walker.num * ctx->jastrow_champ.cord_num *
(ctx->jastrow_champ.cord_num + 1) * ctx->nucleus.num * ctx->electron.num * sizeof(double);
double* delta_p_gl = (double*) qmckl_malloc(context, mem_info); double* delta_p_gl = (double*) qmckl_malloc(context, mem_info);
ctx->single_point.delta_p_gl_maxsize = mem_info.size;
if (delta_p_gl == NULL) { if (delta_p_gl == NULL) {
return qmckl_failwith( context, return qmckl_failwith( context,
@ -3551,7 +3555,10 @@ qmckl_exit_code qmckl_provide_jastrow_champ_single_een_gl(qmckl_context context)
/* Compute if necessary */ /* Compute if necessary */
if (ctx->single_point.date > ctx->single_point.delta_een_gl_date) { if (ctx->single_point.date > ctx->single_point.delta_een_gl_date) {
if (ctx->electron.walker.num > ctx->electron.walker_old.num) { qmckl_memory_info_struct mem_info = qmckl_memory_info_struct_zero;
mem_info.size = 4 * ctx->electron.num * ctx->electron.walker.num * sizeof(double);
if (mem_info.size > ctx->single_point.delta_een_gl_maxsize) {
if (ctx->single_point.delta_een_gl != NULL) { if (ctx->single_point.delta_een_gl != NULL) {
rc = qmckl_free(context, ctx->single_point.delta_een_gl); rc = qmckl_free(context, ctx->single_point.delta_een_gl);
if (rc != QMCKL_SUCCESS) { if (rc != QMCKL_SUCCESS) {
@ -3566,9 +3573,8 @@ qmckl_exit_code qmckl_provide_jastrow_champ_single_een_gl(qmckl_context context)
/* Allocate array */ /* Allocate array */
if (ctx->single_point.delta_een_gl == NULL) { if (ctx->single_point.delta_een_gl == NULL) {
qmckl_memory_info_struct mem_info = qmckl_memory_info_struct_zero;
mem_info.size = 4 * ctx->electron.num * ctx->electron.walker.num * sizeof(double);
double* delta_een_gl = (double*) qmckl_malloc(context, mem_info); double* delta_een_gl = (double*) qmckl_malloc(context, mem_info);
ctx->single_point.delta_een_gl_maxsize = mem_info.size;
if (delta_een_gl == NULL) { if (delta_een_gl == NULL) {
return qmckl_failwith( context, return qmckl_failwith( context,