Lines Matching refs:de

372 static PetscErrorCode _DMSwarmDataExConvertProcIdToLocalIndex(DMSwarmDataEx de, PetscMPIInt proc_id…  in _DMSwarmDataExConvertProcIdToLocalIndex()  argument
377 np = de->n_neighbour_procs; in _DMSwarmDataExConvertProcIdToLocalIndex()
380 if (proc_id == de->neighbour_procs[i]) { in _DMSwarmDataExConvertProcIdToLocalIndex()
388 PetscErrorCode DMSwarmDataExInitializeSendCount(DMSwarmDataEx de) in DMSwarmDataExInitializeSendCount() argument
393 …PetscCheck(de->topology_status == DEOBJECT_FINALIZED, de->comm, PETSC_ERR_ORDER, "Topology not fin… in DMSwarmDataExInitializeSendCount()
395 de->message_lengths_status = DEOBJECT_INITIALIZED; in DMSwarmDataExInitializeSendCount()
396 for (i = 0; i < de->n_neighbour_procs; ++i) de->messages_to_be_sent[i] = 0; in DMSwarmDataExInitializeSendCount()
403 PetscErrorCode DMSwarmDataExAddToSendCount(DMSwarmDataEx de, const PetscMPIInt proc_id, const Petsc… in DMSwarmDataExAddToSendCount() argument
408 …PetscCheck(de->message_lengths_status != DEOBJECT_FINALIZED, de->comm, PETSC_ERR_ORDER, "Message l… in DMSwarmDataExAddToSendCount()
409 …PetscCheck(de->message_lengths_status == DEOBJECT_INITIALIZED, de->comm, PETSC_ERR_ORDER, "Message… in DMSwarmDataExAddToSendCount()
411 PetscCall(_DMSwarmDataExConvertProcIdToLocalIndex(de, proc_id, &local_val)); in DMSwarmDataExAddToSendCount()
414 de->messages_to_be_sent[local_val] = de->messages_to_be_sent[local_val] + count; in DMSwarmDataExAddToSendCount()
418 PetscErrorCode DMSwarmDataExFinalizeSendCount(DMSwarmDataEx de) in DMSwarmDataExFinalizeSendCount() argument
421 …PetscCheck(de->message_lengths_status == DEOBJECT_INITIALIZED, de->comm, PETSC_ERR_ORDER, "Message… in DMSwarmDataExFinalizeSendCount()
423 de->message_lengths_status = DEOBJECT_FINALIZED; in DMSwarmDataExFinalizeSendCount()
436 static PetscErrorCode _DMSwarmDataExInitializeTmpStorage(DMSwarmDataEx de) in _DMSwarmDataExInitializeTmpStorage() argument
441 np = de->n_neighbour_procs; in _DMSwarmDataExInitializeTmpStorage()
444 de->messages_to_be_recvieved[i] = -1; in _DMSwarmDataExInitializeTmpStorage()
446 PetscCall(PetscFree(de->send_message)); in _DMSwarmDataExInitializeTmpStorage()
447 PetscCall(PetscFree(de->recv_message)); in _DMSwarmDataExInitializeTmpStorage()
457 PetscErrorCode DMSwarmDataExPackInitialize(DMSwarmDataEx de, size_t unit_message_size) in DMSwarmDataExPackInitialize() argument
463 …PetscCheck(de->topology_status == DEOBJECT_FINALIZED, de->comm, PETSC_ERR_ORDER, "Topology not fin… in DMSwarmDataExPackInitialize()
464 …PetscCheck(de->message_lengths_status == DEOBJECT_FINALIZED, de->comm, PETSC_ERR_ORDER, "Message l… in DMSwarmDataExPackInitialize()
466 de->packer_status = DEOBJECT_INITIALIZED; in DMSwarmDataExPackInitialize()
467 PetscCall(_DMSwarmDataExInitializeTmpStorage(de)); in DMSwarmDataExPackInitialize()
468 np = de->n_neighbour_procs; in DMSwarmDataExPackInitialize()
469 de->unit_message_size = unit_message_size; in DMSwarmDataExPackInitialize()
472 if (de->messages_to_be_sent[i] == -1) { in DMSwarmDataExPackInitialize()
473 PetscMPIInt proc_neighour = de->neighbour_procs[i]; in DMSwarmDataExPackInitialize()
476 total = total + de->messages_to_be_sent[i]; in DMSwarmDataExPackInitialize()
479 PetscCall(PetscMalloc(unit_message_size * (total + 1), &de->send_message)); in DMSwarmDataExPackInitialize()
481 PetscCall(PetscMemzero(de->send_message, unit_message_size * (total + 1))); in DMSwarmDataExPackInitialize()
483 de->send_message_length = total; in DMSwarmDataExPackInitialize()
484 de->message_offsets[0] = 0; in DMSwarmDataExPackInitialize()
485 total = de->messages_to_be_sent[0]; in DMSwarmDataExPackInitialize()
487 de->message_offsets[i] = total; in DMSwarmDataExPackInitialize()
488 total = total + de->messages_to_be_sent[i]; in DMSwarmDataExPackInitialize()
491 de->total_pack_cnt = 0; in DMSwarmDataExPackInitialize()
492 for (i = 0; i < np; ++i) de->pack_cnt[i] = 0; in DMSwarmDataExPackInitialize()
499 PetscErrorCode DMSwarmDataExPackData(DMSwarmDataEx de, PetscMPIInt proc_id, PetscInt n, void *data) in DMSwarmDataExPackData() argument
506 …PetscCheck(de->packer_status != DEOBJECT_FINALIZED, de->comm, PETSC_ERR_ORDER, "Packed data have b… in DMSwarmDataExPackData()
507 …PetscCheck(de->packer_status == DEOBJECT_INITIALIZED, de->comm, PETSC_ERR_ORDER, "Packed data must… in DMSwarmDataExPackData()
509 …PetscCheck(de->send_message, de->comm, PETSC_ERR_ORDER, "send_message is not initialized. Call DMS… in DMSwarmDataExPackData()
510 PetscCall(_DMSwarmDataExConvertProcIdToLocalIndex(de, proc_id, &local)); in DMSwarmDataExPackData()
512de->pack_cnt[local] <= de->messages_to_be_sent[local], PETSC_COMM_SELF, PETSC_ERR_ARG_WRONG, "Tryi… in DMSwarmDataExPackData()
515 insert_location = de->message_offsets[local] + de->pack_cnt[local]; in DMSwarmDataExPackData()
516 dest = ((char *)de->send_message) + de->unit_message_size * insert_location; in DMSwarmDataExPackData()
517 PetscCall(PetscMemcpy(dest, data, de->unit_message_size * n)); in DMSwarmDataExPackData()
519 de->pack_cnt[local] = de->pack_cnt[local] + n; in DMSwarmDataExPackData()
526 PetscErrorCode DMSwarmDataExPackFinalize(DMSwarmDataEx de) in DMSwarmDataExPackFinalize() argument
532 …PetscCheck(de->packer_status == DEOBJECT_INITIALIZED, de->comm, PETSC_ERR_ORDER, "Packer has not b… in DMSwarmDataExPackFinalize()
533 np = de->n_neighbour_procs; in DMSwarmDataExPackFinalize()
535de->pack_cnt[i] == de->messages_to_be_sent[i], PETSC_COMM_SELF, PETSC_ERR_ARG_WRONGSTATE, "Not all… in DMSwarmDataExPackFinalize()
538 for (i = 0; i < np; ++i) de->messages_to_be_recvieved[i] = -1; in DMSwarmDataExPackFinalize()
540 …i) PetscCallMPI(MPIU_Isend(&de->messages_to_be_sent[i], 1, MPIU_INT, de->neighbour_procs[i], de->s… in DMSwarmDataExPackFinalize()
541 … PetscCallMPI(MPIU_Irecv(&de->messages_to_be_recvieved[i], 1, MPIU_INT, de->neighbour_procs[i], de in DMSwarmDataExPackFinalize()
542 PetscCallMPI(MPI_Waitall(2 * np, de->_requests, de->_stats)); in DMSwarmDataExPackFinalize()
545 for (i = 0; i < np; ++i) total = total + de->messages_to_be_recvieved[i]; in DMSwarmDataExPackFinalize()
546 PetscCall(PetscMalloc(de->unit_message_size * (total + 1), &de->recv_message)); in DMSwarmDataExPackFinalize()
548 PetscCall(PetscMemzero(de->recv_message, de->unit_message_size * (total + 1))); in DMSwarmDataExPackFinalize()
550 de->recv_message_length = total; in DMSwarmDataExPackFinalize()
551 de->packer_status = DEOBJECT_FINALIZED; in DMSwarmDataExPackFinalize()
552 de->communication_status = DEOBJECT_INITIALIZED; in DMSwarmDataExPackFinalize()
558 PetscErrorCode DMSwarmDataExBegin(DMSwarmDataEx de) in DMSwarmDataExBegin() argument
564 …PetscCheck(de->topology_status == DEOBJECT_FINALIZED, de->comm, PETSC_ERR_ORDER, "Topology not fin… in DMSwarmDataExBegin()
565 …PetscCheck(de->message_lengths_status == DEOBJECT_FINALIZED, de->comm, PETSC_ERR_ORDER, "Message l… in DMSwarmDataExBegin()
566 …PetscCheck(de->packer_status == DEOBJECT_FINALIZED, de->comm, PETSC_ERR_ORDER, "Packer not finaliz… in DMSwarmDataExBegin()
567 …PetscCheck(de->communication_status != DEOBJECT_FINALIZED, de->comm, PETSC_ERR_ORDER, "Communicati… in DMSwarmDataExBegin()
568 …PetscCheck(de->recv_message, de->comm, PETSC_ERR_ORDER, "recv_message has not been initialized. Mu… in DMSwarmDataExBegin()
570 np = de->n_neighbour_procs; in DMSwarmDataExBegin()
573 dest = ((char *)de->send_message) + de->unit_message_size * de->message_offsets[i]; in DMSwarmDataExBegin()
574 …(MPIU_Isend(dest, de->messages_to_be_sent[i] * de->unit_message_size, MPI_CHAR, de->neighbour_proc… in DMSwarmDataExBegin()
581 PetscErrorCode DMSwarmDataExEnd(DMSwarmDataEx de) in DMSwarmDataExEnd() argument
589 …PetscCheck(de->communication_status == DEOBJECT_INITIALIZED, de->comm, PETSC_ERR_ORDER, "Communica… in DMSwarmDataExEnd()
590 …PetscCheck(de->recv_message, de->comm, PETSC_ERR_ORDER, "recv_message has not been initialized. Mu… in DMSwarmDataExEnd()
592 np = de->n_neighbour_procs; in DMSwarmDataExEnd()
595 total = de->messages_to_be_recvieved[0]; in DMSwarmDataExEnd()
598 total = total + de->messages_to_be_recvieved[i]; in DMSwarmDataExEnd()
602 dest = ((char *)de->recv_message) + de->unit_message_size * message_recv_offsets[i]; in DMSwarmDataExEnd()
603 …IU_Irecv(dest, de->messages_to_be_recvieved[i] * de->unit_message_size, MPI_CHAR, de->neighbour_pr… in DMSwarmDataExEnd()
605 PetscCallMPI(MPI_Waitall(2 * np, de->_requests, de->_stats)); in DMSwarmDataExEnd()
607 de->communication_status = DEOBJECT_FINALIZED; in DMSwarmDataExEnd()
612 PetscErrorCode DMSwarmDataExGetSendData(DMSwarmDataEx de, PetscInt *length, void **send) in DMSwarmDataExGetSendData() argument
615 …PetscCheck(de->packer_status == DEOBJECT_FINALIZED, de->comm, PETSC_ERR_ARG_WRONGSTATE, "Data has … in DMSwarmDataExGetSendData()
616 *length = de->send_message_length; in DMSwarmDataExGetSendData()
617 *send = de->send_message; in DMSwarmDataExGetSendData()
621 PetscErrorCode DMSwarmDataExGetRecvData(DMSwarmDataEx de, PetscInt *length, void **recv) in DMSwarmDataExGetRecvData() argument
624 …PetscCheck(de->communication_status == DEOBJECT_FINALIZED, de->comm, PETSC_ERR_ARG_WRONGSTATE, "Da… in DMSwarmDataExGetRecvData()
625 *length = de->recv_message_length; in DMSwarmDataExGetRecvData()
626 *recv = de->recv_message; in DMSwarmDataExGetRecvData()
630 PetscErrorCode DMSwarmDataExTopologyGetNeighbours(DMSwarmDataEx de, PetscMPIInt *n, PetscMPIInt *ne… in DMSwarmDataExTopologyGetNeighbours() argument
633 if (n) *n = de->n_neighbour_procs; in DMSwarmDataExTopologyGetNeighbours()
634 if (neigh) *neigh = de->neighbour_procs; in DMSwarmDataExTopologyGetNeighbours()