diff --git a/src/seq_mv/csr_matop_device.c b/src/seq_mv/csr_matop_device.c index 74eebb8f2..25c8f2abe 100644 --- a/src/seq_mv/csr_matop_device.c +++ b/src/seq_mv/csr_matop_device.c @@ -20,8 +20,6 @@ hypre_CsrsvData* hypre_CsrsvDataCreate() { hypre_CsrsvData *data = hypre_CTAlloc(hypre_CsrsvData, 1, HYPRE_MEMORY_HOST); - hypre_CsrsvDataBufferSize(data) = 0; - hypre_CsrsvDataBuffer(data) = NULL; return data; } @@ -1991,3 +1989,20 @@ hypre_SortCSRRocsparse( HYPRE_Int n, } #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) +} diff --git a/src/seq_mv/protos.h b/src/seq_mv/protos.h index 5e43a0056..63a0bf3cd 100644 --- a/src/seq_mv/protos.h +++ b/src/seq_mv/protos.h @@ -234,3 +234,4 @@ hypre_GpuMatData* hypre_CSRMatrixGetGPUMatData(hypre_CSRMatrix *matrix); #define hypre_CSRMatrixGPUMatDescr(matrix) ( hypre_GpuMatDataMatDecsr(hypre_CSRMatrixGetGPUMatData(matrix)) ) #define hypre_CSRMatrixGPUMatInfo(matrix) ( hypre_GpuMatDataMatInfo (hypre_CSRMatrixGetGPUMatData(matrix)) ) #endif +void hypre_CSRMatrixGpuSpMVAnalysis(hypre_CSRMatrix *matrix); diff --git a/src/seq_mv/seq_mv.h b/src/seq_mv/seq_mv.h index b0ea2b33a..049137086 100644 --- a/src/seq_mv/seq_mv.h +++ b/src/seq_mv/seq_mv.h @@ -506,6 +506,7 @@ hypre_GpuMatData* hypre_CSRMatrixGetGPUMatData(hypre_CSRMatrix *matrix); #define hypre_CSRMatrixGPUMatDescr(matrix) ( hypre_GpuMatDataMatDecsr(hypre_CSRMatrixGetGPUMatData(matrix)) ) #define hypre_CSRMatrixGPUMatInfo(matrix) ( hypre_GpuMatDataMatInfo (hypre_CSRMatrixGetGPUMatData(matrix)) ) #endif +void hypre_CSRMatrixGpuSpMVAnalysis(hypre_CSRMatrix *matrix); #ifdef __cplusplus } diff --git a/src/test/ij.c b/src/test/ij.c index fd404a9e0..804ba56d8 100644 --- a/src/test/ij.c +++ b/src/test/ij.c @@ -2265,6 +2265,8 @@ main( hypre_int argc, else if ( build_matrix_type == 4 ) { BuildParLaplacian27pt(argc, argv, build_matrix_arg_index, &parcsr_A); + + hypre_CSRMatrixGpuSpMVAnalysis(hypre_ParCSRMatrixDiag(parcsr_A)); } else if ( build_matrix_type == 5 ) {