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_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); | ||||
| 
 | ||||
|  | ||||
| @ -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
	 Victor A. Paludetto Magri
						Victor A. Paludetto Magri