Dcsrmv analysis (#458)
This PR (by @pbauman #430) is a hook to be able to call rocsparse_dcsrmv_analysis when using rocSPARSE on AMD GPUs. Co-authored-by: Paul T. Bauman <ptbauman@gmail.com>
This commit is contained in:
parent
16f9f3835c
commit
dd9f1ea31c
@ -20,8 +20,6 @@ hypre_CsrsvData*
|
|||||||
hypre_CsrsvDataCreate()
|
hypre_CsrsvDataCreate()
|
||||||
{
|
{
|
||||||
hypre_CsrsvData *data = hypre_CTAlloc(hypre_CsrsvData, 1, HYPRE_MEMORY_HOST);
|
hypre_CsrsvData *data = hypre_CTAlloc(hypre_CsrsvData, 1, HYPRE_MEMORY_HOST);
|
||||||
hypre_CsrsvDataBufferSize(data) = 0;
|
|
||||||
hypre_CsrsvDataBuffer(data) = NULL;
|
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
@ -1991,3 +1989,20 @@ hypre_SortCSRRocsparse( HYPRE_Int n,
|
|||||||
}
|
}
|
||||||
#endif // #if defined(HYPRE_USING_ROCSPARSE)
|
#endif // #if defined(HYPRE_USING_ROCSPARSE)
|
||||||
|
|
||||||
|
void hypre_CSRMatrixGpuSpMVAnalysis(hypre_CSRMatrix *matrix)
|
||||||
|
{
|
||||||
|
#if defined(HYPRE_USING_ROCSPARSE)
|
||||||
|
|
||||||
|
HYPRE_ROCSPARSE_CALL( rocsparse_dcsrmv_analysis(hypre_HandleCusparseHandle(hypre_handle()),
|
||||||
|
rocsparse_operation_none,
|
||||||
|
hypre_CSRMatrixNumRows(matrix),
|
||||||
|
hypre_CSRMatrixNumCols(matrix),
|
||||||
|
hypre_CSRMatrixNumNonzeros(matrix),
|
||||||
|
hypre_CSRMatrixGPUMatDescr(matrix),
|
||||||
|
hypre_CSRMatrixData(matrix),
|
||||||
|
hypre_CSRMatrixI(matrix),
|
||||||
|
hypre_CSRMatrixJ(matrix),
|
||||||
|
hypre_CSRMatrixGPUMatInfo(matrix)) );
|
||||||
|
|
||||||
|
#endif // #if defined(HYPRE_USING_ROCSPARSE)
|
||||||
|
}
|
||||||
|
|||||||
@ -234,3 +234,4 @@ hypre_GpuMatData* hypre_CSRMatrixGetGPUMatData(hypre_CSRMatrix *matrix);
|
|||||||
#define hypre_CSRMatrixGPUMatDescr(matrix) ( hypre_GpuMatDataMatDecsr(hypre_CSRMatrixGetGPUMatData(matrix)) )
|
#define hypre_CSRMatrixGPUMatDescr(matrix) ( hypre_GpuMatDataMatDecsr(hypre_CSRMatrixGetGPUMatData(matrix)) )
|
||||||
#define hypre_CSRMatrixGPUMatInfo(matrix) ( hypre_GpuMatDataMatInfo (hypre_CSRMatrixGetGPUMatData(matrix)) )
|
#define hypre_CSRMatrixGPUMatInfo(matrix) ( hypre_GpuMatDataMatInfo (hypre_CSRMatrixGetGPUMatData(matrix)) )
|
||||||
#endif
|
#endif
|
||||||
|
void hypre_CSRMatrixGpuSpMVAnalysis(hypre_CSRMatrix *matrix);
|
||||||
|
|||||||
@ -506,6 +506,7 @@ hypre_GpuMatData* hypre_CSRMatrixGetGPUMatData(hypre_CSRMatrix *matrix);
|
|||||||
#define hypre_CSRMatrixGPUMatDescr(matrix) ( hypre_GpuMatDataMatDecsr(hypre_CSRMatrixGetGPUMatData(matrix)) )
|
#define hypre_CSRMatrixGPUMatDescr(matrix) ( hypre_GpuMatDataMatDecsr(hypre_CSRMatrixGetGPUMatData(matrix)) )
|
||||||
#define hypre_CSRMatrixGPUMatInfo(matrix) ( hypre_GpuMatDataMatInfo (hypre_CSRMatrixGetGPUMatData(matrix)) )
|
#define hypre_CSRMatrixGPUMatInfo(matrix) ( hypre_GpuMatDataMatInfo (hypre_CSRMatrixGetGPUMatData(matrix)) )
|
||||||
#endif
|
#endif
|
||||||
|
void hypre_CSRMatrixGpuSpMVAnalysis(hypre_CSRMatrix *matrix);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2265,6 +2265,8 @@ main( hypre_int argc,
|
|||||||
else if ( build_matrix_type == 4 )
|
else if ( build_matrix_type == 4 )
|
||||||
{
|
{
|
||||||
BuildParLaplacian27pt(argc, argv, build_matrix_arg_index, &parcsr_A);
|
BuildParLaplacian27pt(argc, argv, build_matrix_arg_index, &parcsr_A);
|
||||||
|
|
||||||
|
hypre_CSRMatrixGpuSpMVAnalysis(hypre_ParCSRMatrixDiag(parcsr_A));
|
||||||
}
|
}
|
||||||
else if ( build_matrix_type == 5 )
|
else if ( build_matrix_type == 5 )
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user