File: vprotocol_pessimist_recv.c

package info (click to toggle)
openmpi 5.0.7-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 202,312 kB
  • sloc: ansic: 612,441; makefile: 42,495; sh: 11,230; javascript: 9,244; f90: 7,052; java: 6,404; perl: 5,154; python: 1,856; lex: 740; fortran: 61; cpp: 20; tcl: 12
file content (68 lines) | stat: -rw-r--r-- 2,149 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
 * Copyright (c) 2004-2007 The Trustees of the University of Tennessee.
 *                         All rights reserved.
 * $COPYRIGHT$
 *
 * Additional copyrights may follow
 *
 * $HEADER$
 */

#include "ompi_config.h"
#include "ompi/request/request.h"
#include "ompi/mca/pml/base/pml_base_recvreq.h"
#include "vprotocol_pessimist.h"





int mca_vprotocol_pessimist_irecv(void *addr,
                     size_t count,
                     ompi_datatype_t * datatype,
                     int src,
                     int tag,
                     struct ompi_communicator_t *comm,
                     struct ompi_request_t **request)
{
  int ret;

  V_OUTPUT_VERBOSE(50, "pessimist:\tirecv\trequest\t%"PRIpclock"\tfrom %d\ttag %d\tsize %lu",
                        mca_vprotocol_pessimist.clock, src, tag, (unsigned long) count);

  /* first, see if we have to enforce matching order */
  VPROTOCOL_PESSIMIST_MATCHING_REPLAY(src);
  /* now just let the host pml do its job */
  ret = mca_pml_v.host_pml.pml_irecv(addr, count, datatype, src, tag, comm, request);
  VPESSIMIST_FTREQ_INIT(*request);
  vprotocol_pessimist_matching_log_prepare(*request);
  return ret;
}





int mca_vprotocol_pessimist_recv(void *addr,
                      size_t count,
                      ompi_datatype_t * datatype,
                      int src,
                      int tag,
                      struct ompi_communicator_t *comm,
                      ompi_status_public_t * status )
{
  ompi_request_t *request = MPI_REQUEST_NULL;
  int ret;

  V_OUTPUT_VERBOSE(50, "pessimist:\trecv\tposted\t%"PRIpclock"\tfrom %d\ttag %d\tsize %lu",
                       mca_vprotocol_pessimist.clock, src, tag, (unsigned long) count);
  /* first, see if we have to enforce matching order */
  VPROTOCOL_PESSIMIST_MATCHING_REPLAY(src);
  /* now just let the pml do its job */
  ret = mca_pml_v.host_pml.pml_irecv(addr, count, datatype, src, tag, comm, &request);
  VPESSIMIST_FTREQ_INIT(request);
  vprotocol_pessimist_matching_log_prepare(request);
  /* block until the request is completed */
  VPROTOCOL_PESSIMIST_WAIT(&request, status, ret);
  return ret;
}