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:
parent
6907852618
commit
16c4d8304d
@ -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_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);
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user