Lines Matching refs:part

9 static PetscErrorCode MatPartitioningApply_Current(MatPartitioning part, IS *partitioning)  in MatPartitioningApply_Current()  argument
15 PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)part), &size)); in MatPartitioningApply_Current()
16 if (part->n != size) { in MatPartitioningApply_Current()
18 PetscCall(PetscObjectGetOptionsPrefix((PetscObject)part, &prefix)); in MatPartitioningApply_Current()
19 …SETERRQ(PetscObjectComm((PetscObject)part), PETSC_ERR_SUP, "This is the DEFAULT NO-OP partitioner,… in MatPartitioningApply_Current()
21 PetscCallMPI(MPI_Comm_rank(PetscObjectComm((PetscObject)part), &rank)); in MatPartitioningApply_Current()
23 PetscCall(MatGetLocalSize(part->adj, &m, NULL)); in MatPartitioningApply_Current()
24 PetscCall(ISCreateStride(PetscObjectComm((PetscObject)part), m, rank, 0, partitioning)); in MatPartitioningApply_Current()
31 static PetscErrorCode MatPartitioningApply_Average(MatPartitioning part, IS *partitioning) in MatPartitioningApply_Average() argument
36 PetscCall(MatGetSize(part->adj, &M, NULL)); in MatPartitioningApply_Average()
37 PetscCall(MatGetLocalSize(part->adj, &m, NULL)); in MatPartitioningApply_Average()
38 nparts = part->n; in MatPartitioningApply_Average()
46 PetscCall(MatGetOwnershipRange(part->adj, &start, &end)); in MatPartitioningApply_Average()
54 …PetscCall(ISCreateGeneral(PetscObjectComm((PetscObject)part), m, indices, PETSC_OWN_POINTER, parti… in MatPartitioningApply_Average()
58 static PetscErrorCode MatPartitioningApply_Square(MatPartitioning part, IS *partitioning) in MatPartitioningApply_Square() argument
64 PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)part), &size)); in MatPartitioningApply_Square()
65 …PetscCheck(part->n == size, PetscObjectComm((PetscObject)part), PETSC_ERR_SUP, "Currently only sup… in MatPartitioningApply_Square()
66 p = (PetscInt)PetscSqrtReal((PetscReal)part->n); in MatPartitioningApply_Square()
67 …PetscCheck(p * p == part->n, PetscObjectComm((PetscObject)part), PETSC_ERR_SUP, "Square partitioni… in MatPartitioningApply_Square()
69 PetscCall(MatGetSize(part->adj, &N, NULL)); in MatPartitioningApply_Square()
71 …PetscCheck(n * n == N, PetscObjectComm((PetscObject)part), PETSC_ERR_SUP, "Square partitioning req… in MatPartitioningApply_Square()
73 PetscCall(MatGetOwnershipRange(part->adj, &rstart, &rend)); in MatPartitioningApply_Square()
77 …PetscCall(ISCreateGeneral(PetscObjectComm((PetscObject)part), rend - rstart, color, PETSC_OWN_POIN… in MatPartitioningApply_Square()
81 PETSC_EXTERN PetscErrorCode MatPartitioningCreate_Current(MatPartitioning part) in MatPartitioningCreate_Current() argument
84 part->ops->apply = MatPartitioningApply_Current; in MatPartitioningCreate_Current()
85 part->ops->view = NULL; in MatPartitioningCreate_Current()
86 part->ops->destroy = NULL; in MatPartitioningCreate_Current()
90 PETSC_EXTERN PetscErrorCode MatPartitioningCreate_Average(MatPartitioning part) in MatPartitioningCreate_Average() argument
93 part->ops->apply = MatPartitioningApply_Average; in MatPartitioningCreate_Average()
94 part->ops->view = NULL; in MatPartitioningCreate_Average()
95 part->ops->destroy = NULL; in MatPartitioningCreate_Average()
99 PETSC_EXTERN PetscErrorCode MatPartitioningCreate_Square(MatPartitioning part) in MatPartitioningCreate_Square() argument
102 part->ops->apply = MatPartitioningApply_Square; in MatPartitioningCreate_Square()
103 part->ops->view = NULL; in MatPartitioningCreate_Square()
104 part->ops->destroy = NULL; in MatPartitioningCreate_Square()
232 PetscErrorCode MatPartitioningSetNParts(MatPartitioning part, PetscInt n) in MatPartitioningSetNParts() argument
235 part->n = n; in MatPartitioningSetNParts()
421 PetscErrorCode MatPartitioningSetAdjacency(MatPartitioning part, Mat adj) in MatPartitioningSetAdjacency() argument
424 PetscValidHeaderSpecific(part, MAT_PARTITIONING_CLASSID, 1); in MatPartitioningSetAdjacency()
426 part->adj = adj; in MatPartitioningSetAdjacency()
442 PetscErrorCode MatPartitioningDestroy(MatPartitioning *part) in MatPartitioningDestroy() argument
445 if (!*part) PetscFunctionReturn(PETSC_SUCCESS); in MatPartitioningDestroy()
446 PetscValidHeaderSpecific(*part, MAT_PARTITIONING_CLASSID, 1); in MatPartitioningDestroy()
447 if (--((PetscObject)*part)->refct > 0) { in MatPartitioningDestroy()
448 *part = NULL; in MatPartitioningDestroy()
452 PetscTryTypeMethod(*part, destroy); in MatPartitioningDestroy()
453 PetscCall(PetscFree((*part)->vertex_weights)); in MatPartitioningDestroy()
454 PetscCall(PetscFree((*part)->part_weights)); in MatPartitioningDestroy()
455 PetscCall(PetscHeaderDestroy(part)); in MatPartitioningDestroy()
482 PetscErrorCode MatPartitioningSetVertexWeights(MatPartitioning part, const PetscInt weights[]) in MatPartitioningSetVertexWeights() argument
485 PetscValidHeaderSpecific(part, MAT_PARTITIONING_CLASSID, 1); in MatPartitioningSetVertexWeights()
486 PetscCall(PetscFree(part->vertex_weights)); in MatPartitioningSetVertexWeights()
487 part->vertex_weights = (PetscInt *)weights; in MatPartitioningSetVertexWeights()
516 PetscErrorCode MatPartitioningSetPartitionWeights(MatPartitioning part, const PetscReal weights[]) in MatPartitioningSetPartitionWeights() argument
519 PetscValidHeaderSpecific(part, MAT_PARTITIONING_CLASSID, 1); in MatPartitioningSetPartitionWeights()
520 PetscCall(PetscFree(part->part_weights)); in MatPartitioningSetPartitionWeights()
521 part->part_weights = (PetscReal *)weights; in MatPartitioningSetPartitionWeights()
543 PetscErrorCode MatPartitioningSetUseEdgeWeights(MatPartitioning part, PetscBool use_edge_weights) in MatPartitioningSetUseEdgeWeights() argument
546 PetscValidHeaderSpecific(part, MAT_PARTITIONING_CLASSID, 1); in MatPartitioningSetUseEdgeWeights()
547 part->use_edge_weights = use_edge_weights; in MatPartitioningSetUseEdgeWeights()
567 PetscErrorCode MatPartitioningGetUseEdgeWeights(MatPartitioning part, PetscBool *use_edge_weights) in MatPartitioningGetUseEdgeWeights() argument
570 PetscValidHeaderSpecific(part, MAT_PARTITIONING_CLASSID, 1); in MatPartitioningGetUseEdgeWeights()
572 *use_edge_weights = part->use_edge_weights; in MatPartitioningGetUseEdgeWeights()
594 MatPartitioning part; in MatPartitioningCreate() local
601 …PetscCall(PetscHeaderCreate(part, MAT_PARTITIONING_CLASSID, "MatPartitioning", "Matrix/graph parti… in MatPartitioningCreate()
602 part->vertex_weights = NULL; in MatPartitioningCreate()
603 part->part_weights = NULL; in MatPartitioningCreate()
604 part->use_edge_weights = PETSC_FALSE; /* By default we don't use edge weights */ in MatPartitioningCreate()
607 part->n = size; in MatPartitioningCreate()
608 part->ncon = 1; in MatPartitioningCreate()
610 *newp = part; in MatPartitioningCreate()
675 PetscErrorCode MatPartitioningView(MatPartitioning part, PetscViewer viewer) in MatPartitioningView() argument
680 PetscValidHeaderSpecific(part, MAT_PARTITIONING_CLASSID, 1); in MatPartitioningView()
681 if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)part), &viewer)); in MatPartitioningView()
683 PetscCheckSameComm(part, 1, viewer, 2); in MatPartitioningView()
687 PetscCall(PetscObjectPrintClassNamePrefixType((PetscObject)part, viewer)); in MatPartitioningView()
688 if (part->vertex_weights) PetscCall(PetscViewerASCIIPrintf(viewer, " Using vertex weights\n")); in MatPartitioningView()
691 PetscTryTypeMethod(part, view, viewer); in MatPartitioningView()
712 PetscErrorCode MatPartitioningSetType(MatPartitioning part, MatPartitioningType type) in MatPartitioningSetType() argument
718 PetscValidHeaderSpecific(part, MAT_PARTITIONING_CLASSID, 1); in MatPartitioningSetType()
721 PetscCall(PetscObjectTypeCompare((PetscObject)part, type, &match)); in MatPartitioningSetType()
724 PetscTryTypeMethod(part, destroy); in MatPartitioningSetType()
725 part->ops->destroy = NULL; in MatPartitioningSetType()
727 part->data = NULL; in MatPartitioningSetType()
728 PetscCall(PetscMemzero(part->ops, sizeof(struct _MatPartitioningOps))); in MatPartitioningSetType()
731 …PetscCheck(r, PetscObjectComm((PetscObject)part), PETSC_ERR_ARG_UNKNOWN_TYPE, "Unknown partitionin… in MatPartitioningSetType()
733 PetscCall((*r)(part)); in MatPartitioningSetType()
735 PetscCall(PetscFree(((PetscObject)part)->type_name)); in MatPartitioningSetType()
736 PetscCall(PetscStrallocpy(type, &((PetscObject)part)->type_name)); in MatPartitioningSetType()
761 PetscErrorCode MatPartitioningSetFromOptions(MatPartitioning part) in MatPartitioningSetFromOptions() argument
768 PetscObjectOptionsBegin((PetscObject)part); in MatPartitioningSetFromOptions()
769 if (!((PetscObject)part)->type_name) { in MatPartitioningSetFromOptions()
782 def = ((PetscObject)part)->type_name; in MatPartitioningSetFromOptions()
785 if (flag) PetscCall(MatPartitioningSetType(part, type)); in MatPartitioningSetFromOptions()
787 …tscOptionsInt("-mat_partitioning_nparts", "number of fine parts", NULL, part->n, &part->n, &flag)); in MatPartitioningSetFromOptions()
789 …se_edge_weights", "whether or not to use edge weights", NULL, part->use_edge_weights, &part->use_e… in MatPartitioningSetFromOptions()
794 if (!((PetscObject)part)->type_name) PetscCall(MatPartitioningSetType(part, def)); in MatPartitioningSetFromOptions()
796 PetscTryTypeMethod(part, setfromoptions, PetscOptionsObject); in MatPartitioningSetFromOptions()