bug fix matvecT
This commit is contained in:
parent
3f39f5d4fa
commit
67c545fce0
@ -961,7 +961,7 @@ HYPRE_Int hypre_ParCSRMatrixDropSmallEntriesHost( hypre_ParCSRMatrix *A, HYPRE_R
|
|||||||
HYPRE_Int hypre_ParCSRMatrixDropSmallEntriesDevice( hypre_ParCSRMatrix *A, HYPRE_Complex tol,
|
HYPRE_Int hypre_ParCSRMatrixDropSmallEntriesDevice( hypre_ParCSRMatrix *A, HYPRE_Complex tol,
|
||||||
HYPRE_Int type);
|
HYPRE_Int type);
|
||||||
|
|
||||||
HYPRE_Int hypre_ParCSRCommPkgCreateMatrixE( hypre_ParCSRCommPkg *comm_pkg, HYPRE_Int local_nrows );
|
HYPRE_Int hypre_ParCSRCommPkgCreateMatrixE( hypre_ParCSRCommPkg *comm_pkg, HYPRE_Int local_ncols );
|
||||||
|
|
||||||
#ifdef HYPRE_USING_PERSISTENT_COMM
|
#ifdef HYPRE_USING_PERSISTENT_COMM
|
||||||
hypre_ParCSRPersistentCommHandle* hypre_ParCSRPersistentCommHandleCreate(HYPRE_Int job,
|
hypre_ParCSRPersistentCommHandle* hypre_ParCSRPersistentCommHandleCreate(HYPRE_Int job,
|
||||||
@ -1074,7 +1074,7 @@ HYPRE_Int hypre_ParCSRMatrixMatvec ( HYPRE_Complex alpha, hypre_ParCSRMatrix *A,
|
|||||||
HYPRE_Complex beta, hypre_ParVector *y );
|
HYPRE_Complex beta, hypre_ParVector *y );
|
||||||
HYPRE_Int hypre_ParCSRMatrixMatvecT ( HYPRE_Complex alpha, hypre_ParCSRMatrix *A,
|
HYPRE_Int hypre_ParCSRMatrixMatvecT ( HYPRE_Complex alpha, hypre_ParCSRMatrix *A,
|
||||||
hypre_ParVector *x, HYPRE_Complex beta, hypre_ParVector *y );
|
hypre_ParVector *x, HYPRE_Complex beta, hypre_ParVector *y );
|
||||||
HYPRE_Int hypre_ParCSRMatrixMatvecT_unpack( HYPRE_Int nrows, HYPRE_Complex *locl_data,
|
HYPRE_Int hypre_ParCSRMatrixMatvecT_unpack( HYPRE_Int ncols, HYPRE_Complex *locl_data,
|
||||||
HYPRE_Complex *recv_data,
|
HYPRE_Complex *recv_data,
|
||||||
hypre_ParCSRCommPkg *comm_pkg );
|
hypre_ParCSRCommPkg *comm_pkg );
|
||||||
HYPRE_Int hypre_ParCSRMatrixMatvec_FF ( HYPRE_Complex alpha, hypre_ParCSRMatrix *A,
|
HYPRE_Int hypre_ParCSRMatrixMatvec_FF ( HYPRE_Complex alpha, hypre_ParCSRMatrix *A,
|
||||||
|
|||||||
@ -943,13 +943,13 @@ hypre_ParcsrGetExternalRowsDeviceWait(void *vrequest)
|
|||||||
|
|
||||||
HYPRE_Int
|
HYPRE_Int
|
||||||
hypre_ParCSRCommPkgCreateMatrixE( hypre_ParCSRCommPkg *comm_pkg,
|
hypre_ParCSRCommPkgCreateMatrixE( hypre_ParCSRCommPkg *comm_pkg,
|
||||||
HYPRE_Int local_nrows )
|
HYPRE_Int local_ncols )
|
||||||
{
|
{
|
||||||
HYPRE_Int num_sends = hypre_ParCSRCommPkgNumSends(comm_pkg);
|
HYPRE_Int num_sends = hypre_ParCSRCommPkgNumSends(comm_pkg);
|
||||||
HYPRE_Int num_elemt = hypre_ParCSRCommPkgSendMapStart(comm_pkg, num_sends);
|
HYPRE_Int num_elemt = hypre_ParCSRCommPkgSendMapStart(comm_pkg, num_sends);
|
||||||
HYPRE_Int *send_map = hypre_ParCSRCommPkgDeviceSendMapElmts(comm_pkg);
|
HYPRE_Int *send_map = hypre_ParCSRCommPkgDeviceSendMapElmts(comm_pkg);
|
||||||
|
|
||||||
hypre_CSRMatrix *matrix_E = hypre_CSRMatrixCreate(local_nrows, num_elemt, num_elemt);
|
hypre_CSRMatrix *matrix_E = hypre_CSRMatrixCreate(local_ncols, num_elemt, num_elemt);
|
||||||
hypre_CSRMatrixMemoryLocation(matrix_E) = HYPRE_MEMORY_DEVICE;
|
hypre_CSRMatrixMemoryLocation(matrix_E) = HYPRE_MEMORY_DEVICE;
|
||||||
|
|
||||||
HYPRE_Int *e_ii = hypre_TAlloc(HYPRE_Int, num_elemt, HYPRE_MEMORY_DEVICE);
|
HYPRE_Int *e_ii = hypre_TAlloc(HYPRE_Int, num_elemt, HYPRE_MEMORY_DEVICE);
|
||||||
@ -960,7 +960,7 @@ hypre_ParCSRCommPkgCreateMatrixE( hypre_ParCSRCommPkg *comm_pkg,
|
|||||||
HYPRE_THRUST_CALL( sequence, e_j, e_j + num_elemt);
|
HYPRE_THRUST_CALL( sequence, e_j, e_j + num_elemt);
|
||||||
HYPRE_THRUST_CALL( stable_sort_by_key, e_ii, e_ii + num_elemt, e_j );
|
HYPRE_THRUST_CALL( stable_sort_by_key, e_ii, e_ii + num_elemt, e_j );
|
||||||
|
|
||||||
HYPRE_Int *e_i = hypreDevice_CsrRowIndicesToPtrs(local_nrows, num_elemt, e_ii);
|
HYPRE_Int *e_i = hypreDevice_CsrRowIndicesToPtrs(local_ncols, num_elemt, e_ii);
|
||||||
|
|
||||||
HYPRE_Int *new_end = HYPRE_THRUST_CALL( unique, e_ii, e_ii + num_elemt);
|
HYPRE_Int *new_end = HYPRE_THRUST_CALL( unique, e_ii, e_ii + num_elemt);
|
||||||
HYPRE_Int nid = new_end - e_ii;
|
HYPRE_Int nid = new_end - e_ii;
|
||||||
|
|||||||
@ -722,7 +722,7 @@ hypre_ParCSRMatrixMatvecT( HYPRE_Complex alpha,
|
|||||||
|
|
||||||
#if defined(HYPRE_USING_CUDA) || defined(HYPRE_USING_HIP)
|
#if defined(HYPRE_USING_CUDA) || defined(HYPRE_USING_HIP)
|
||||||
/* unpack recv data on device */
|
/* unpack recv data on device */
|
||||||
hypre_ParCSRMatrixMatvecT_unpack( hypre_ParCSRMatrixNumRows(A), locl_data, recv_data, comm_pkg );
|
hypre_ParCSRMatrixMatvecT_unpack( hypre_ParCSRMatrixNumCols(A), locl_data, recv_data, comm_pkg );
|
||||||
#elif defined(HYPRE_USING_DEVICE_OPENMP)
|
#elif defined(HYPRE_USING_DEVICE_OPENMP)
|
||||||
HYPRE_Int i, j;
|
HYPRE_Int i, j;
|
||||||
/* unpack recv data on device */
|
/* unpack recv data on device */
|
||||||
@ -922,7 +922,7 @@ hypre_ParCSRMatrixMatvec_FF( HYPRE_Complex alpha,
|
|||||||
|
|
||||||
#if defined(HYPRE_USING_CUDA) || defined(HYPRE_USING_HIP)
|
#if defined(HYPRE_USING_CUDA) || defined(HYPRE_USING_HIP)
|
||||||
HYPRE_Int
|
HYPRE_Int
|
||||||
hypre_ParCSRMatrixMatvecT_unpack( HYPRE_Int nrows,
|
hypre_ParCSRMatrixMatvecT_unpack( HYPRE_Int ncols,
|
||||||
HYPRE_Complex *locl_data,
|
HYPRE_Complex *locl_data,
|
||||||
HYPRE_Complex *recv_data,
|
HYPRE_Complex *recv_data,
|
||||||
hypre_ParCSRCommPkg *comm_pkg )
|
hypre_ParCSRCommPkg *comm_pkg )
|
||||||
@ -937,7 +937,7 @@ hypre_ParCSRMatrixMatvecT_unpack( HYPRE_Int nrows,
|
|||||||
|
|
||||||
if (!hypre_ParCSRCommPkgMatrixE(comm_pkg))
|
if (!hypre_ParCSRCommPkgMatrixE(comm_pkg))
|
||||||
{
|
{
|
||||||
hypre_ParCSRCommPkgCreateMatrixE(comm_pkg, nrows);
|
hypre_ParCSRCommPkgCreateMatrixE(comm_pkg, ncols);
|
||||||
}
|
}
|
||||||
|
|
||||||
hypre_CSRMatrix *E = hypre_ParCSRCommPkgMatrixE(comm_pkg);
|
hypre_CSRMatrix *E = hypre_ParCSRCommPkgMatrixE(comm_pkg);
|
||||||
|
|||||||
@ -336,7 +336,7 @@ HYPRE_Int hypre_ParCSRMatrixDropSmallEntriesHost( hypre_ParCSRMatrix *A, HYPRE_R
|
|||||||
HYPRE_Int hypre_ParCSRMatrixDropSmallEntriesDevice( hypre_ParCSRMatrix *A, HYPRE_Complex tol,
|
HYPRE_Int hypre_ParCSRMatrixDropSmallEntriesDevice( hypre_ParCSRMatrix *A, HYPRE_Complex tol,
|
||||||
HYPRE_Int type);
|
HYPRE_Int type);
|
||||||
|
|
||||||
HYPRE_Int hypre_ParCSRCommPkgCreateMatrixE( hypre_ParCSRCommPkg *comm_pkg, HYPRE_Int local_nrows );
|
HYPRE_Int hypre_ParCSRCommPkgCreateMatrixE( hypre_ParCSRCommPkg *comm_pkg, HYPRE_Int local_ncols );
|
||||||
|
|
||||||
#ifdef HYPRE_USING_PERSISTENT_COMM
|
#ifdef HYPRE_USING_PERSISTENT_COMM
|
||||||
hypre_ParCSRPersistentCommHandle* hypre_ParCSRPersistentCommHandleCreate(HYPRE_Int job,
|
hypre_ParCSRPersistentCommHandle* hypre_ParCSRPersistentCommHandleCreate(HYPRE_Int job,
|
||||||
@ -449,7 +449,7 @@ HYPRE_Int hypre_ParCSRMatrixMatvec ( HYPRE_Complex alpha, hypre_ParCSRMatrix *A,
|
|||||||
HYPRE_Complex beta, hypre_ParVector *y );
|
HYPRE_Complex beta, hypre_ParVector *y );
|
||||||
HYPRE_Int hypre_ParCSRMatrixMatvecT ( HYPRE_Complex alpha, hypre_ParCSRMatrix *A,
|
HYPRE_Int hypre_ParCSRMatrixMatvecT ( HYPRE_Complex alpha, hypre_ParCSRMatrix *A,
|
||||||
hypre_ParVector *x, HYPRE_Complex beta, hypre_ParVector *y );
|
hypre_ParVector *x, HYPRE_Complex beta, hypre_ParVector *y );
|
||||||
HYPRE_Int hypre_ParCSRMatrixMatvecT_unpack( HYPRE_Int nrows, HYPRE_Complex *locl_data,
|
HYPRE_Int hypre_ParCSRMatrixMatvecT_unpack( HYPRE_Int ncols, HYPRE_Complex *locl_data,
|
||||||
HYPRE_Complex *recv_data,
|
HYPRE_Complex *recv_data,
|
||||||
hypre_ParCSRCommPkg *comm_pkg );
|
hypre_ParCSRCommPkg *comm_pkg );
|
||||||
HYPRE_Int hypre_ParCSRMatrixMatvec_FF ( HYPRE_Complex alpha, hypre_ParCSRMatrix *A,
|
HYPRE_Int hypre_ParCSRMatrixMatvec_FF ( HYPRE_Complex alpha, hypre_ParCSRMatrix *A,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user