45 typename matrix_type::local_ordinal_type blkPartSize,
53 const std::string& droppingMethod,
55 const bool aggregationMayCreateDirichlet,
56 const bool symmetrizeDroppedGraph,
57 const bool useBlocking,
58 DistanceFunctorType& dist2,
61 auto lclA = A.getLocalMatrixDevice();
65 if (droppingMethod ==
"point-wise") {
66 auto dist_laplacian_dropping = DistanceLaplacian::make_vector_drop_functor<SoC>(A, mergedA, threshold, dist2, results, rowTranslation, colTranslation);
68 if (aggregationMayCreateDirichlet) {
69 if (symmetrizeDroppedGraph) {
71 VectorDroppingDistanceLaplacian::runDroppingFunctors(A, mergedA, blkPartSize, rowTranslation, colTranslation, results, filtered_rowptr, graph_rowptr, nnz, useBlocking, level, factory,
72 dist_laplacian_dropping,
75 mark_singletons_as_boundary);
78 VectorDroppingDistanceLaplacian::runDroppingFunctors(A, mergedA, blkPartSize, rowTranslation, colTranslation, results, filtered_rowptr, graph_rowptr, nnz, useBlocking, level, factory,
79 dist_laplacian_dropping,
82 mark_singletons_as_boundary);
85 if (symmetrizeDroppedGraph) {
87 VectorDroppingDistanceLaplacian::runDroppingFunctors(A, mergedA, blkPartSize, rowTranslation, colTranslation, results, filtered_rowptr, graph_rowptr, nnz, useBlocking, level, factory,
88 dist_laplacian_dropping,
93 VectorDroppingDistanceLaplacian::runDroppingFunctors(A, mergedA, blkPartSize, rowTranslation, colTranslation, results, filtered_rowptr, graph_rowptr, nnz, useBlocking, level, factory,
94 dist_laplacian_dropping,
99 }
else if (droppingMethod ==
"cut-drop") {
100 auto comparison = CutDrop::make_dlap_comparison_functor<SoC>(A, dist2, results);
103 if (symmetrizeDroppedGraph) {
105 VectorDroppingDistanceLaplacian::runDroppingFunctors(A, mergedA, blkPartSize, rowTranslation, colTranslation, results, filtered_rowptr, graph_rowptr, nnz, useBlocking, level, factory,
111 VectorDroppingDistanceLaplacian::runDroppingFunctors(A, mergedA, blkPartSize, rowTranslation, colTranslation, results, filtered_rowptr, graph_rowptr, nnz, useBlocking, level, factory,