Skip to content

Commit

Permalink
Merge pull request hypre-space#165 from hypre-space/fix-mixed-int
Browse files Browse the repository at this point in the history
fixed some mixed-int issues.
  • Loading branch information
ulrikeyang committed Jul 30, 2020
2 parents d8f683d + e98ac77 commit 13e2cad
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 26 deletions.
1 change: 1 addition & 0 deletions src/parcsr_mv/_hypre_parcsr_mv.h
Original file line number Diff line number Diff line change
Expand Up @@ -740,6 +740,7 @@ hypre_CSRMatrix *hypre_ParCSRMatrixExtractAExt ( hypre_ParCSRMatrix *A , HYPRE_I

/* par_csr_assumed_part.c */
HYPRE_Int hypre_LocateAssummedPartition ( MPI_Comm comm , HYPRE_BigInt row_start , HYPRE_BigInt row_end , HYPRE_BigInt global_first_row , HYPRE_BigInt global_num_rows , hypre_IJAssumedPart *part , HYPRE_Int myid );
hypre_IJAssumedPart *hypre_AssumedPartitionCreate ( MPI_Comm comm , HYPRE_BigInt global_num , HYPRE_BigInt start , HYPRE_BigInt end );
HYPRE_Int hypre_ParCSRMatrixCreateAssumedPartition ( hypre_ParCSRMatrix *matrix );
HYPRE_Int hypre_AssumedPartitionDestroy ( hypre_IJAssumedPart *apart );
HYPRE_Int hypre_GetAssumedPartitionProcFromRow ( MPI_Comm comm , HYPRE_BigInt row , HYPRE_BigInt global_first_row , HYPRE_BigInt global_num_rows , HYPRE_Int *proc_id );
Expand Down
52 changes: 30 additions & 22 deletions src/parcsr_mv/gen_fffc.c
Original file line number Diff line number Diff line change
Expand Up @@ -162,12 +162,14 @@ hypre_ParCSRMatrixGenerateFFFC( hypre_ParCSRMatrix *A,

if (my_thread_num == 0)
{
HYPRE_BigInt big_Fpts;
n_Fpts = fpt_array[num_threads];
big_Fpts = n_Fpts;

#ifdef HYPRE_NO_GLOBAL_PARTITION
fpts_starts = hypre_TAlloc(HYPRE_BigInt, 2, HYPRE_MEMORY_HOST);
hypre_MPI_Scan(&n_Fpts, fpts_starts+1, 1, HYPRE_MPI_BIG_INT, hypre_MPI_SUM, comm);
fpts_starts[0] = fpts_starts[1] - n_Fpts;
fpts_starts = hypre_CTAlloc(HYPRE_BigInt, 2, HYPRE_MEMORY_HOST);
hypre_MPI_Scan(&big_Fpts, fpts_starts+1, 1, HYPRE_MPI_BIG_INT, hypre_MPI_SUM, comm);
fpts_starts[0] = fpts_starts[1] - big_Fpts;
if (my_id == num_procs - 1)
{
total_global_fpts = fpts_starts[1];
Expand All @@ -177,7 +179,7 @@ hypre_ParCSRMatrixGenerateFFFC( hypre_ParCSRMatrix *A,
hypre_MPI_Bcast(&total_global_cpts, 1, HYPRE_MPI_BIG_INT, num_procs-1, comm);
#else
fpts_starts = hypre_CTAlloc(HYPRE_BigInt, num_procs+1, HYPRE_MEMORY_HOST);
hypre_MPI_Allgather(&n_Fpts, 1, HYPRE_MPI_BIG_INT, &fpts_starts[1], 1, HYPRE_MPI_BIG_INT, comm);
hypre_MPI_Allgather(&big_Fpts, 1, HYPRE_MPI_BIG_INT, &fpts_starts[1], 1, HYPRE_MPI_BIG_INT, comm);
fpts_starts[0] = 0;
for (i = 2; i < num_procs+1; i++)
{
Expand Down Expand Up @@ -656,16 +658,19 @@ hypre_ParCSRMatrixGenerateFFFC3( hypre_ParCSRMatrix *A,

if (my_thread_num == 0)
{
HYPRE_BigInt big_Fpts, big_new_Fpts;
n_Fpts = fpt_array[num_threads];
n_new_Fpts = new_fpt_array[num_threads];
big_Fpts = n_Fpts;
big_new_Fpts = n_new_Fpts;

#ifdef HYPRE_NO_GLOBAL_PARTITION
fpts_starts = hypre_TAlloc(HYPRE_BigInt, 2, HYPRE_MEMORY_HOST);
new_fpts_starts = hypre_TAlloc(HYPRE_BigInt, 2, HYPRE_MEMORY_HOST);
hypre_MPI_Scan(&n_Fpts, fpts_starts+1, 1, HYPRE_MPI_BIG_INT, hypre_MPI_SUM, comm);
hypre_MPI_Scan(&n_new_Fpts, new_fpts_starts+1, 1, HYPRE_MPI_BIG_INT, hypre_MPI_SUM, comm);
fpts_starts[0] = fpts_starts[1] - n_Fpts;
new_fpts_starts[0] = new_fpts_starts[1] - n_new_Fpts;
fpts_starts = hypre_CTAlloc(HYPRE_BigInt, 2, HYPRE_MEMORY_HOST);
new_fpts_starts = hypre_CTAlloc(HYPRE_BigInt, 2, HYPRE_MEMORY_HOST);
hypre_MPI_Scan(&big_Fpts, fpts_starts+1, 1, HYPRE_MPI_BIG_INT, hypre_MPI_SUM, comm);
hypre_MPI_Scan(&big_new_Fpts, new_fpts_starts+1, 1, HYPRE_MPI_BIG_INT, hypre_MPI_SUM, comm);
fpts_starts[0] = fpts_starts[1] - big_Fpts;
new_fpts_starts[0] = new_fpts_starts[1] - big_new_Fpts;
if (my_id == num_procs - 1)
{
total_global_new_fpts = new_fpts_starts[1];
Expand All @@ -677,9 +682,9 @@ hypre_ParCSRMatrixGenerateFFFC3( hypre_ParCSRMatrix *A,
hypre_MPI_Bcast(&total_global_cpts, 1, HYPRE_MPI_BIG_INT, num_procs-1, comm);
#else
fpts_starts = hypre_CTAlloc(HYPRE_BigInt, num_procs+1, HYPRE_MEMORY_HOST);
new_fpts_starts = hypre_TAlloc(HYPRE_BigInt, num_procs+1, HYPRE_MEMORY_HOST);
hypre_MPI_Allgather(&n_Fpts, 1, HYPRE_MPI_BIG_INT, &fpts_starts[1], 1, HYPRE_MPI_BIG_INT, comm);
hypre_MPI_Allgather(&n_new_Fpts, 1, HYPRE_MPI_BIG_INT, &new_fpts_starts[1], 1, HYPRE_MPI_BIG_INT, comm);
new_fpts_starts = hypre_CTAlloc(HYPRE_BigInt, num_procs+1, HYPRE_MEMORY_HOST);
hypre_MPI_Allgather(&big_Fpts, 1, HYPRE_MPI_BIG_INT, &fpts_starts[1], 1, HYPRE_MPI_BIG_INT, comm);
hypre_MPI_Allgather(&big_new_Fpts, 1, HYPRE_MPI_BIG_INT, &new_fpts_starts[1], 1, HYPRE_MPI_BIG_INT, comm);
fpts_starts[0] = 0;
new_fpts_starts[0] = 0;
for (i = 2; i < num_procs+1; i++)
Expand Down Expand Up @@ -1205,16 +1210,19 @@ hypre_ParCSRMatrixGenerateFFFCD3( hypre_ParCSRMatrix *A,

if (my_thread_num == 0)
{
HYPRE_BigInt big_Fpts, big_new_Fpts;
n_Fpts = fpt_array[num_threads];
n_new_Fpts = new_fpt_array[num_threads];
big_Fpts = n_Fpts;
big_new_Fpts = n_new_Fpts;

#ifdef HYPRE_NO_GLOBAL_PARTITION
fpts_starts = hypre_TAlloc(HYPRE_BigInt, 2, HYPRE_MEMORY_HOST);
new_fpts_starts = hypre_TAlloc(HYPRE_BigInt, 2, HYPRE_MEMORY_HOST);
hypre_MPI_Scan(&n_Fpts, fpts_starts+1, 1, HYPRE_MPI_BIG_INT, hypre_MPI_SUM, comm);
hypre_MPI_Scan(&n_new_Fpts, new_fpts_starts+1, 1, HYPRE_MPI_BIG_INT, hypre_MPI_SUM, comm);
fpts_starts[0] = fpts_starts[1] - n_Fpts;
new_fpts_starts[0] = new_fpts_starts[1] - n_new_Fpts;
fpts_starts = hypre_CTAlloc(HYPRE_BigInt, 2, HYPRE_MEMORY_HOST);
new_fpts_starts = hypre_CTAlloc(HYPRE_BigInt, 2, HYPRE_MEMORY_HOST);
hypre_MPI_Scan(&big_Fpts, fpts_starts+1, 1, HYPRE_MPI_BIG_INT, hypre_MPI_SUM, comm);
hypre_MPI_Scan(&big_new_Fpts, new_fpts_starts+1, 1, HYPRE_MPI_BIG_INT, hypre_MPI_SUM, comm);
fpts_starts[0] = fpts_starts[1] - big_Fpts;
new_fpts_starts[0] = new_fpts_starts[1] - big_new_Fpts;
if (my_id == num_procs - 1)
{
total_global_new_fpts = new_fpts_starts[1];
Expand All @@ -1226,9 +1234,9 @@ hypre_ParCSRMatrixGenerateFFFCD3( hypre_ParCSRMatrix *A,
hypre_MPI_Bcast(&total_global_cpts, 1, HYPRE_MPI_BIG_INT, num_procs-1, comm);
#else
fpts_starts = hypre_CTAlloc(HYPRE_BigInt, num_procs+1, HYPRE_MEMORY_HOST);
new_fpts_starts = hypre_TAlloc(HYPRE_BigInt, num_procs+1, HYPRE_MEMORY_HOST);
hypre_MPI_Allgather(&n_Fpts, 1, HYPRE_MPI_BIG_INT, &fpts_starts[1], 1, HYPRE_MPI_BIG_INT, comm);
hypre_MPI_Allgather(&n_new_Fpts, 1, HYPRE_MPI_BIG_INT, &new_fpts_starts[1], 1, HYPRE_MPI_BIG_INT, comm);
new_fpts_starts = hypre_CTAlloc(HYPRE_BigInt, num_procs+1, HYPRE_MEMORY_HOST);
hypre_MPI_Allgather(&big_Fpts, 1, HYPRE_MPI_BIG_INT, &fpts_starts[1], 1, HYPRE_MPI_BIG_INT, comm);
hypre_MPI_Allgather(&big_new_Fpts, 1, HYPRE_MPI_BIG_INT, &new_fpts_starts[1], 1, HYPRE_MPI_BIG_INT, comm);
fpts_starts[0] = 0;
new_fpts_starts[0] = 0;
for (i = 2; i < num_procs+1; i++)
Expand Down
6 changes: 3 additions & 3 deletions src/parcsr_mv/par_csr_assumed_part.c
Original file line number Diff line number Diff line change
Expand Up @@ -307,9 +307,9 @@ hypre_LocateAssummedPartition(MPI_Comm comm, HYPRE_BigInt row_start, HYPRE_BigIn

hypre_IJAssumedPart*
hypre_AssumedPartitionCreate(MPI_Comm comm,
HYPRE_Int global_num,
HYPRE_Int start,
HYPRE_Int end)
HYPRE_BigInt global_num,
HYPRE_BigInt start,
HYPRE_BigInt end)
{
hypre_IJAssumedPart *apart;
HYPRE_Int myid;
Expand Down
2 changes: 1 addition & 1 deletion src/parcsr_mv/par_csr_matop_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -658,7 +658,7 @@ hypre_ParCSRMatrixGenerateFFFCDevice( hypre_ParCSRMatrix *A,
{
nC_global = cpts_starts[1];
}
hypre_MPI_Bcast(&nC_global, 1, HYPRE_MPI_INT, num_procs-1, comm);
hypre_MPI_Bcast(&nC_global, 1, HYPRE_MPI_BIG_INT, num_procs-1, comm);
nC_local = (HYPRE_Int) (cpts_starts[1] - cpts_starts[0]);
fpts_starts = hypre_TAlloc(HYPRE_BigInt, 2, HYPRE_MEMORY_HOST);
fpts_starts[0] = row_starts[0] - cpts_starts[0];
Expand Down

0 comments on commit 13e2cad

Please sign in to comment.