Change hypre_AuxParCSRMatrix variables to HYPRE_BigInt (#842)

This PR changes the type of four variables in the auxiliary matrix data structure to avoid the multiplication of integers and floating-point numbers during `hypre_IJMatrixSetAddValuesParCSRDevice`
This commit is contained in:
Victor A. Paludetto Magri 2023-03-07 20:24:56 -05:00 committed by GitHub
parent 6907852618
commit 16c4d8304d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 18 additions and 16 deletions

View File

@ -101,9 +101,9 @@ hypre_IJMatrixSetAddValuesParCSRDevice( hypre_IJMatrix *matrix,
hypre_IJMatrixTranslator(matrix) = aux_matrix;
}
HYPRE_Int stack_elmts_max = hypre_AuxParCSRMatrixMaxStackElmts(aux_matrix);
HYPRE_Int stack_elmts_current = hypre_AuxParCSRMatrixCurrentStackElmts(aux_matrix);
HYPRE_Int stack_elmts_required = stack_elmts_current + nelms;
HYPRE_BigInt stack_elmts_max = hypre_AuxParCSRMatrixMaxStackElmts(aux_matrix);
HYPRE_BigInt stack_elmts_current = hypre_AuxParCSRMatrixCurrentStackElmts(aux_matrix);
HYPRE_BigInt stack_elmts_required = stack_elmts_current + (HYPRE_BigInt) nelms;
HYPRE_BigInt *stack_i = hypre_AuxParCSRMatrixStackI(aux_matrix);
HYPRE_BigInt *stack_j = hypre_AuxParCSRMatrixStackJ(aux_matrix);
HYPRE_Complex *stack_data = hypre_AuxParCSRMatrixStackData(aux_matrix);
@ -111,8 +111,10 @@ hypre_IJMatrixSetAddValuesParCSRDevice( hypre_IJMatrix *matrix,
if ( stack_elmts_max < stack_elmts_required )
{
HYPRE_Int stack_elmts_max_new = hypre_max(hypre_AuxParCSRMatrixUsrOnProcElmts (aux_matrix), 0) +
hypre_max(hypre_AuxParCSRMatrixUsrOffProcElmts(aux_matrix), 0);
HYPRE_BigInt stack_elmts_max_new =
hypre_max(hypre_AuxParCSRMatrixUsrOnProcElmts (aux_matrix), 0) +
hypre_max(hypre_AuxParCSRMatrixUsrOffProcElmts(aux_matrix), 0);
if ( hypre_AuxParCSRMatrixUsrOnProcElmts (aux_matrix) < 0 ||
hypre_AuxParCSRMatrixUsrOffProcElmts(aux_matrix) < 0 )
{
@ -205,7 +207,7 @@ hypre_IJMatrixSetAddValuesParCSRDevice( hypre_IJMatrix *matrix,
HYPRE_MEMORY_DEVICE);
}
hypre_AuxParCSRMatrixCurrentStackElmts(aux_matrix) += nelms;
hypre_AuxParCSRMatrixCurrentStackElmts(aux_matrix) += (HYPRE_BigInt) nelms;
hypre_TFree(row_ptr, HYPRE_MEMORY_DEVICE);

View File

@ -81,16 +81,16 @@ typedef struct
HYPRE_MemoryLocation memory_location;
#if defined(HYPRE_USING_CUDA) || defined(HYPRE_USING_HIP) || defined(HYPRE_USING_SYCL)
HYPRE_Int max_stack_elmts;
HYPRE_Int current_stack_elmts;
HYPRE_BigInt max_stack_elmts;
HYPRE_BigInt current_stack_elmts;
HYPRE_BigInt *stack_i;
HYPRE_BigInt *stack_j;
HYPRE_Complex *stack_data;
char *stack_sora; /* Set (1) or Add (0) */
HYPRE_Int usr_on_proc_elmts; /* user given num elmt on-proc */
HYPRE_Int usr_off_proc_elmts; /* user given num elmt off-proc */
HYPRE_Real init_alloc_factor;
HYPRE_Real grow_factor;
HYPRE_BigInt init_alloc_factor;
HYPRE_BigInt grow_factor;
#endif
} hypre_AuxParCSRMatrix;

View File

@ -61,8 +61,8 @@ hypre_AuxParCSRMatrixCreate( hypre_AuxParCSRMatrix **aux_matrix,
hypre_AuxParCSRMatrixStackSorA(matrix) = NULL;
hypre_AuxParCSRMatrixUsrOnProcElmts(matrix) = -1;
hypre_AuxParCSRMatrixUsrOffProcElmts(matrix) = -1;
hypre_AuxParCSRMatrixInitAllocFactor(matrix) = 5.0;
hypre_AuxParCSRMatrixGrowFactor(matrix) = 2.0;
hypre_AuxParCSRMatrixInitAllocFactor(matrix) = 5;
hypre_AuxParCSRMatrixGrowFactor(matrix) = 2;
#endif
*aux_matrix = matrix;

View File

@ -66,16 +66,16 @@ typedef struct
HYPRE_MemoryLocation memory_location;
#if defined(HYPRE_USING_CUDA) || defined(HYPRE_USING_HIP) || defined(HYPRE_USING_SYCL)
HYPRE_Int max_stack_elmts;
HYPRE_Int current_stack_elmts;
HYPRE_BigInt max_stack_elmts;
HYPRE_BigInt current_stack_elmts;
HYPRE_BigInt *stack_i;
HYPRE_BigInt *stack_j;
HYPRE_Complex *stack_data;
char *stack_sora; /* Set (1) or Add (0) */
HYPRE_Int usr_on_proc_elmts; /* user given num elmt on-proc */
HYPRE_Int usr_off_proc_elmts; /* user given num elmt off-proc */
HYPRE_Real init_alloc_factor;
HYPRE_Real grow_factor;
HYPRE_BigInt init_alloc_factor;
HYPRE_BigInt grow_factor;
#endif
} hypre_AuxParCSRMatrix;