Lines Matching refs:mapin
93 static PetscErrorCode PetscParallelSampleSelect(PetscLayout mapin, PetscLayout mapout, PetscInt key… in PetscParallelSampleSelect() argument
101 PetscCallMPI(MPI_Comm_size(mapin->comm, &size)); in PetscParallelSampleSelect()
102 PetscCallMPI(MPI_Comm_rank(mapin->comm, &rank)); in PetscParallelSampleSelect()
109 if (!mapin->n) { in PetscParallelSampleSelect()
117 … index = ((PetscReal)mapout->range[i + 1]) * ((PetscReal)mapin->n) / ((PetscReal)mapout->N); in PetscParallelSampleSelect()
118 index = PetscMin(index, mapin->n - 1); in PetscParallelSampleSelect()
124 PetscCall(PetscParallelSortInt_Bitonic(mapin->comm, size - 1, pivots)); in PetscParallelSampleSelect()
128 PetscCall(PetscParallelSortedInt(mapin->comm, size - 1, pivots, &sorted)); in PetscParallelSampleSelect()
129 PetscCheck(sorted, mapin->comm, PETSC_ERR_PLIB, "bitonic sort failed"); in PetscParallelSampleSelect()
154 …I(MPI_Allgather(pivots, max_keys_per, MPIU_INT, finalpivots, max_keys_per, MPIU_INT, mapin->comm)); in PetscParallelSampleSelect()
234 static PetscErrorCode PetscParallelSortInt_Samplesort(PetscLayout mapin, PetscLayout mapout, PetscI… in PetscParallelSortInt_Samplesort() argument
242 PetscCallMPI(MPI_Comm_size(mapin->comm, &size)); in PetscParallelSortInt_Samplesort()
243 PetscCallMPI(MPI_Comm_rank(mapin->comm, &rank)); in PetscParallelSortInt_Samplesort()
246 PetscCall(PetscSortInt(mapin->n, keysin)); in PetscParallelSortInt_Samplesort()
248 PetscCall(PetscParallelSampleSelect(mapin, mapout, keysin, &pivots)); in PetscParallelSortInt_Samplesort()
254 while ((j < mapin->n) && (keysin[j] < pivots[i])) j++; in PetscParallelSortInt_Samplesort()
259 PetscCall(PetscMPIIntCast(mapin->n - j, &keys_per_snd[size - 1])); in PetscParallelSortInt_Samplesort()
260 PetscCall(PetscMPIIntCast(mapin->n, &offsets_snd[size])); in PetscParallelSortInt_Samplesort()
262 PetscCallMPI(MPI_Alltoall(keys_per_snd, 1, MPI_INT, keys_per_rcv, 1, MPI_INT, mapin->comm)); in PetscParallelSortInt_Samplesort()
268 …n, keys_per_snd, offsets_snd, MPIU_INT, buffer, keys_per_rcv, offsets_rcv, MPIU_INT, mapin->comm)); in PetscParallelSortInt_Samplesort()
278 PetscCall(PetscParallelSortedInt(mapin->comm, nrecv, buffer, &sorted)); in PetscParallelSortInt_Samplesort()
279 PetscCheck(sorted, mapin->comm, PETSC_ERR_PLIB, "samplesort (pre-redistribute) sort failed"); in PetscParallelSortInt_Samplesort()
320 PetscErrorCode PetscParallelSortInt(PetscLayout mapin, PetscLayout mapout, PetscInt keysin[], Petsc… in PetscParallelSortInt() argument
327 PetscAssertPointer(mapin, 1); in PetscParallelSortInt()
329 PetscCallMPI(MPI_Comm_compare(mapin->comm, mapout->comm, &result)); in PetscParallelSortInt()
330 …PetscCheck(result == MPI_IDENT || result == MPI_CONGRUENT, mapin->comm, PETSC_ERR_ARG_NOTSAMECOMM,… in PetscParallelSortInt()
331 PetscCall(PetscLayoutSetUp(mapin)); in PetscParallelSortInt()
333 if (mapin->n) PetscAssertPointer(keysin, 3); in PetscParallelSortInt()
335 …mapin->N == mapout->N, mapin->comm, PETSC_ERR_ARG_SIZ, "Input and output layouts have different gl… in PetscParallelSortInt()
336 PetscCallMPI(MPI_Comm_size(mapin->comm, &size)); in PetscParallelSortInt()
338 if (keysout != keysin) PetscCall(PetscArraycpy(keysout, keysin, mapin->n)); in PetscParallelSortInt()
343 PetscCall(PetscMalloc1(mapin->n, &keysincopy)); in PetscParallelSortInt()
344 PetscCall(PetscArraycpy(keysincopy, keysin, mapin->n)); in PetscParallelSortInt()
347 PetscCall(PetscParallelSortInt_Samplesort(mapin, mapout, keysin, keysout)); in PetscParallelSortInt()