Lines Matching refs:hpart
36 MatPartitioning_Hierarchical *hpart = (MatPartitioning_Hierarchical *)part->data; in MatPartitioningApply_Hierarchical() local
72 …PetscCheck(hpart->nfineparts, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONG, " must set number of small sub… in MatPartitioningApply_Hierarchical()
73 …PetscCheck(hpart->ncoarseparts || part->n, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, " did not ei… in MatPartitioningApply_Hierarchical()
79 hpart->ncoarseparts = 1; in MatPartitioningApply_Hierarchical()
80 hpart->nfineparts = 1; in MatPartitioningApply_Hierarchical()
81 PetscCall(PetscStrallocpy("NONE", &hpart->coarseparttype)); in MatPartitioningApply_Hierarchical()
82 PetscCall(PetscStrallocpy("NONE", &hpart->fineparttype)); in MatPartitioningApply_Hierarchical()
88 hpart->ncoarseparts = part->n / hpart->nfineparts; in MatPartitioningApply_Hierarchical()
90 if (part->n % hpart->nfineparts != 0) hpart->ncoarseparts++; in MatPartitioningApply_Hierarchical()
92 part->n = hpart->ncoarseparts * hpart->nfineparts; in MatPartitioningApply_Hierarchical()
95 PetscCall(PetscMalloc1(hpart->ncoarseparts + 1, &offsets)); in MatPartitioningApply_Hierarchical()
96 PetscCall(PetscMalloc1(hpart->ncoarseparts, &part_weights)); in MatPartitioningApply_Hierarchical()
99 if (part->n % hpart->nfineparts != 0) offsets[1] = part->n % hpart->nfineparts; in MatPartitioningApply_Hierarchical()
100 else offsets[1] = hpart->nfineparts; in MatPartitioningApply_Hierarchical()
104 for (i = 2; i <= hpart->ncoarseparts; i++) { in MatPartitioningApply_Hierarchical()
105 offsets[i] = hpart->nfineparts; in MatPartitioningApply_Hierarchical()
110 for (i = 1; i <= hpart->ncoarseparts; i++) offsets[i] += offsets[i - 1]; in MatPartitioningApply_Hierarchical()
113 PetscCall(MatPartitioningDestroy(&hpart->coarseMatPart)); in MatPartitioningApply_Hierarchical()
114 PetscCall(MatPartitioningCreate(comm, &hpart->coarseMatPart)); in MatPartitioningApply_Hierarchical()
116 PetscCall(PetscObjectSetOptionsPrefix((PetscObject)hpart->coarseMatPart, prefix)); in MatPartitioningApply_Hierarchical()
117 PetscCall(PetscObjectAppendOptionsPrefix((PetscObject)hpart->coarseMatPart, "hierarch_coarse_")); in MatPartitioningApply_Hierarchical()
119 if (!hpart->coarseparttype) { in MatPartitioningApply_Hierarchical()
121 PetscCall(MatPartitioningSetType(hpart->coarseMatPart, MATPARTITIONINGPARMETIS)); in MatPartitioningApply_Hierarchical()
122 PetscCall(PetscStrallocpy(MATPARTITIONINGPARMETIS, &hpart->coarseparttype)); in MatPartitioningApply_Hierarchical()
124 PetscCall(MatPartitioningSetType(hpart->coarseMatPart, MATPARTITIONINGPTSCOTCH)); in MatPartitioningApply_Hierarchical()
125 PetscCall(PetscStrallocpy(MATPARTITIONINGPTSCOTCH, &hpart->coarseparttype)); in MatPartitioningApply_Hierarchical()
130 PetscCall(MatPartitioningSetType(hpart->coarseMatPart, hpart->coarseparttype)); in MatPartitioningApply_Hierarchical()
132 PetscCall(MatPartitioningSetAdjacency(hpart->coarseMatPart, adj)); in MatPartitioningApply_Hierarchical()
133 PetscCall(MatPartitioningSetNParts(hpart->coarseMatPart, hpart->ncoarseparts)); in MatPartitioningApply_Hierarchical()
138 PetscCall(MatPartitioningSetVertexWeights(hpart->coarseMatPart, coarse_vertex_weights)); in MatPartitioningApply_Hierarchical()
142 PetscCall(MatPartitioningSetUseEdgeWeights(hpart->coarseMatPart, use_edge_weights)); in MatPartitioningApply_Hierarchical()
144 PetscCall(MatPartitioningSetPartitionWeights(hpart->coarseMatPart, part_weights)); in MatPartitioningApply_Hierarchical()
145 PetscCall(MatPartitioningApply(hpart->coarseMatPart, &hpart->coarseparts)); in MatPartitioningApply_Hierarchical()
153 for (i = 0; i < hpart->ncoarseparts; i += size) { in MatPartitioningApply_Hierarchical()
155 …PetscCall(MatPartitioningHierarchical_DetermineDestination(part, hpart->coarseparts, i, i + size, … in MatPartitioningApply_Hierarchical()
175 if ((i + rank) < hpart->ncoarseparts) { in MatPartitioningApply_Hierarchical()
176 PetscCall(MatPartitioningDestroy(&hpart->fineMatPart)); in MatPartitioningApply_Hierarchical()
178 PetscCall(MatPartitioningCreate(scomm, &hpart->fineMatPart)); in MatPartitioningApply_Hierarchical()
179 PetscCall(PetscObjectSetOptionsPrefix((PetscObject)hpart->fineMatPart, prefix)); in MatPartitioningApply_Hierarchical()
180 PetscCall(PetscObjectAppendOptionsPrefix((PetscObject)hpart->fineMatPart, "hierarch_fine_")); in MatPartitioningApply_Hierarchical()
182 if (!hpart->fineparttype) { in MatPartitioningApply_Hierarchical()
184 PetscCall(MatPartitioningSetType(hpart->fineMatPart, MATPARTITIONINGPARMETIS)); in MatPartitioningApply_Hierarchical()
185 PetscCall(PetscStrallocpy(MATPARTITIONINGPARMETIS, &hpart->fineparttype)); in MatPartitioningApply_Hierarchical()
187 PetscCall(MatPartitioningSetType(hpart->fineMatPart, MATPARTITIONINGPTSCOTCH)); in MatPartitioningApply_Hierarchical()
188 PetscCall(PetscStrallocpy(MATPARTITIONINGPTSCOTCH, &hpart->fineparttype)); in MatPartitioningApply_Hierarchical()
190 PetscCall(MatPartitioningSetType(hpart->fineMatPart, MATPARTITIONINGCHACO)); in MatPartitioningApply_Hierarchical()
191 PetscCall(PetscStrallocpy(MATPARTITIONINGCHACO, &hpart->fineparttype)); in MatPartitioningApply_Hierarchical()
193 PetscCall(MatPartitioningSetType(hpart->fineMatPart, MATPARTITIONINGPARTY)); in MatPartitioningApply_Hierarchical()
194 PetscCall(PetscStrallocpy(PETSC_HAVE_PARTY, &hpart->fineparttype)); in MatPartitioningApply_Hierarchical()
199 PetscCall(MatPartitioningSetType(hpart->fineMatPart, hpart->fineparttype)); in MatPartitioningApply_Hierarchical()
201 PetscCall(MatPartitioningSetUseEdgeWeights(hpart->fineMatPart, use_edge_weights)); in MatPartitioningApply_Hierarchical()
202 PetscCall(MatPartitioningSetAdjacency(hpart->fineMatPart, sadj)); in MatPartitioningApply_Hierarchical()
203 …PetscCall(MatPartitioningSetNParts(hpart->fineMatPart, offsets[rank + 1 + i] - offsets[rank + i])); in MatPartitioningApply_Hierarchical()
204 …if (part->vertex_weights) PetscCall(MatPartitioningSetVertexWeights(hpart->fineMatPart, fp_vweight… in MatPartitioningApply_Hierarchical()
205 PetscCall(MatPartitioningApply(hpart->fineMatPart, &fineparts_temp)); in MatPartitioningApply_Hierarchical()
213 …PetscCall(MatPartitioningHierarchical_ReassembleFineparts(adj, fineparts_temp, mapping, &hpart->fi… in MatPartitioningApply_Hierarchical()
214 PetscCall(ISGetIndices(hpart->fineparts, &fineparts_indices)); in MatPartitioningApply_Hierarchical()
218 PetscCall(ISRestoreIndices(hpart->fineparts, &fineparts_indices)); in MatPartitioningApply_Hierarchical()
219 PetscCall(ISDestroy(&hpart->fineparts)); in MatPartitioningApply_Hierarchical()
226 …PetscCall(ISCreateGeneral(comm, mat_localsize, fineparts_indices_tmp, PETSC_OWN_POINTER, &hpart->f… in MatPartitioningApply_Hierarchical()
227 PetscCall(ISGetIndices(hpart->fineparts, &fineparts_indices)); in MatPartitioningApply_Hierarchical()
228 PetscCall(ISGetIndices(hpart->coarseparts, &coarseparts_indices)); in MatPartitioningApply_Hierarchical()
234 PetscCall(ISRestoreIndices(hpart->fineparts, &fineparts_indices)); in MatPartitioningApply_Hierarchical()
235 PetscCall(ISRestoreIndices(hpart->coarseparts, &coarseparts_indices)); in MatPartitioningApply_Hierarchical()
345 MatPartitioning_Hierarchical *hpart = (MatPartitioning_Hierarchical *)part->data; in MatPartitioningView_Hierarchical() local
354 …PetscCall(PetscViewerASCIIPrintf(viewer, " Number of coarse parts: %" PetscInt_FMT "\n", hpart->nc… in MatPartitioningView_Hierarchical()
355 PetscCall(PetscViewerASCIIPrintf(viewer, " Coarse partitioner: %s\n", hpart->coarseparttype)); in MatPartitioningView_Hierarchical()
356 if (hpart->coarseMatPart) { in MatPartitioningView_Hierarchical()
358 PetscCall(MatPartitioningView(hpart->coarseMatPart, viewer)); in MatPartitioningView_Hierarchical()
361 …PetscCall(PetscViewerASCIIPrintf(viewer, " Number of fine parts: %" PetscInt_FMT "\n", hpart->nfin… in MatPartitioningView_Hierarchical()
362 PetscCall(PetscViewerASCIIPrintf(viewer, " Fine partitioner: %s\n", hpart->fineparttype)); in MatPartitioningView_Hierarchical()
364 if (rank == 0 && hpart->fineMatPart) { in MatPartitioningView_Hierarchical()
366 PetscCall(MatPartitioningView(hpart->fineMatPart, sviewer)); in MatPartitioningView_Hierarchical()
376 MatPartitioning_Hierarchical *hpart = (MatPartitioning_Hierarchical *)part->data; in MatPartitioningHierarchicalGetFineparts() local
379 *fineparts = hpart->fineparts; in MatPartitioningHierarchicalGetFineparts()
380 PetscCall(PetscObjectReference((PetscObject)hpart->fineparts)); in MatPartitioningHierarchicalGetFineparts()
386 MatPartitioning_Hierarchical *hpart = (MatPartitioning_Hierarchical *)part->data; in MatPartitioningHierarchicalGetCoarseparts() local
389 *coarseparts = hpart->coarseparts; in MatPartitioningHierarchicalGetCoarseparts()
390 PetscCall(PetscObjectReference((PetscObject)hpart->coarseparts)); in MatPartitioningHierarchicalGetCoarseparts()
396 MatPartitioning_Hierarchical *hpart = (MatPartitioning_Hierarchical *)part->data; in MatPartitioningHierarchicalSetNcoarseparts() local
399 hpart->ncoarseparts = ncoarseparts; in MatPartitioningHierarchicalSetNcoarseparts()
405 MatPartitioning_Hierarchical *hpart = (MatPartitioning_Hierarchical *)part->data; in MatPartitioningHierarchicalSetNfineparts() local
408 hpart->nfineparts = nfineparts; in MatPartitioningHierarchicalSetNfineparts()
414 MatPartitioning_Hierarchical *hpart = (MatPartitioning_Hierarchical *)part->data; in MatPartitioningSetFromOptions_Hierarchical() local
422 PetscCall(PetscFree(hpart->coarseparttype)); in MatPartitioningSetFromOptions_Hierarchical()
423 PetscCall(PetscStrallocpy(value, &hpart->coarseparttype)); in MatPartitioningSetFromOptions_Hierarchical()
427 PetscCall(PetscFree(hpart->fineparttype)); in MatPartitioningSetFromOptions_Hierarchical()
428 PetscCall(PetscStrallocpy(value, &hpart->fineparttype)); in MatPartitioningSetFromOptions_Hierarchical()
430 …ng_hierarchical_ncoarseparts", "number of coarse parts", NULL, hpart->ncoarseparts, &hpart->ncoars… in MatPartitioningSetFromOptions_Hierarchical()
431 …tioning_hierarchical_nfineparts", "number of fine parts", NULL, hpart->nfineparts, &hpart->nfinepa… in MatPartitioningSetFromOptions_Hierarchical()
438 MatPartitioning_Hierarchical *hpart = (MatPartitioning_Hierarchical *)part->data; in MatPartitioningDestroy_Hierarchical() local
441 if (hpart->coarseparttype) PetscCall(PetscFree(hpart->coarseparttype)); in MatPartitioningDestroy_Hierarchical()
442 if (hpart->fineparttype) PetscCall(PetscFree(hpart->fineparttype)); in MatPartitioningDestroy_Hierarchical()
443 PetscCall(ISDestroy(&hpart->fineparts)); in MatPartitioningDestroy_Hierarchical()
444 PetscCall(ISDestroy(&hpart->coarseparts)); in MatPartitioningDestroy_Hierarchical()
445 PetscCall(MatPartitioningDestroy(&hpart->coarseMatPart)); in MatPartitioningDestroy_Hierarchical()
446 PetscCall(MatPartitioningDestroy(&hpart->fineMatPart)); in MatPartitioningDestroy_Hierarchical()
447 PetscCall(MatPartitioningDestroy(&hpart->improver)); in MatPartitioningDestroy_Hierarchical()
448 PetscCall(PetscFree(hpart)); in MatPartitioningDestroy_Hierarchical()
457 MatPartitioning_Hierarchical *hpart = (MatPartitioning_Hierarchical *)part->data; in MatPartitioningImprove_Hierarchical() local
477 PetscCall(MatPartitioningDestroy(&hpart->improver)); in MatPartitioningImprove_Hierarchical()
478 PetscCall(MatPartitioningCreate(PetscObjectComm((PetscObject)part), &hpart->improver)); in MatPartitioningImprove_Hierarchical()
480 PetscCall(PetscObjectSetOptionsPrefix((PetscObject)hpart->improver, prefix)); in MatPartitioningImprove_Hierarchical()
481 PetscCall(PetscObjectAppendOptionsPrefix((PetscObject)hpart->improver, "hierarch_improver_")); in MatPartitioningImprove_Hierarchical()
484 PetscCall(MatPartitioningSetType(hpart->improver, MATPARTITIONINGPARMETIS)); in MatPartitioningImprove_Hierarchical()
485 PetscCall(MatPartitioningSetAdjacency(hpart->improver, adj)); in MatPartitioningImprove_Hierarchical()
486 PetscCall(MatPartitioningSetNParts(hpart->improver, part->n)); in MatPartitioningImprove_Hierarchical()
491 PetscCall(MatPartitioningSetVertexWeights(hpart->improver, vertex_weights)); in MatPartitioningImprove_Hierarchical()
493 PetscCall(MatPartitioningImprove(hpart->improver, partitioning)); in MatPartitioningImprove_Hierarchical()
531 MatPartitioning_Hierarchical *hpart; in MatPartitioningCreate_Hierarchical() local
534 PetscCall(PetscNew(&hpart)); in MatPartitioningCreate_Hierarchical()
535 part->data = (void *)hpart; in MatPartitioningCreate_Hierarchical()
537 hpart->fineparttype = NULL; /* fine level (second) partitioner */ in MatPartitioningCreate_Hierarchical()
538 hpart->coarseparttype = NULL; /* coarse level (first) partitioner */ in MatPartitioningCreate_Hierarchical()
539 …hpart->nfineparts = 1; /* we do not further partition coarse partition any more by default … in MatPartitioningCreate_Hierarchical()
540 hpart->ncoarseparts = 0; /* number of coarse parts (first level) */ in MatPartitioningCreate_Hierarchical()
541 hpart->coarseparts = NULL; in MatPartitioningCreate_Hierarchical()
542 hpart->fineparts = NULL; in MatPartitioningCreate_Hierarchical()
543 hpart->coarseMatPart = NULL; in MatPartitioningCreate_Hierarchical()
544 hpart->fineMatPart = NULL; in MatPartitioningCreate_Hierarchical()