1
1

remove hard coded constants for value of MPI_TAG_UB and the max CID and add

the values to the PML structure.  This will allow PMLs that want to do
hardware matching at the cost of a smaller range of valid tags and cids.
Updated all the places that used the MPI_TAG_UB_VALUE constant to instead
look at the pml struct.

This commit was SVN r6778.
Этот коммит содержится в:
Brian Barrett 2005-08-09 14:56:04 +00:00
родитель eee5b649a7
Коммит 95fd068ffa
27 изменённых файлов: 49 добавлений и 38 удалений

Просмотреть файл

@ -147,7 +147,6 @@ typedef int (MPI_Grequest_cancel_function)(void *, int);
#define MPI_DISTRIBUTE_CYCLIC 1 /* cyclic distribution */
#define MPI_DISTRIBUTE_NONE 2 /* not distributed */
#define MPI_DISTRIBUTE_DFLT_DARG (-1) /* default distribution arg */
#define MPI_TAG_UB_VALUE (0x7fffffff)
/*
* Since these values are arbitrary to Open MPI, we might as well make

Просмотреть файл

@ -80,14 +80,15 @@
#include "attribute/attribute.h"
#include "errhandler/errclass.h"
#include "communicator/communicator.h"
#include "util/proc_info.h"
#include "util/sys_info.h"
#include "mca/ns/ns.h"
#include "mca/gpr/gpr.h"
#include "mca/errmgr/errmgr.h"
#include "mca/schema/schema.h"
#include "ompi/errhandler/errclass.h"
#include "ompi/communicator/communicator.h"
#include "orte/util/proc_info.h"
#include "opal/util/sys_info.h"
#include "ompi/mca/pml/pml.h"
#include "orte/mca/ns/ns.h"
#include "orte/mca/gpr/gpr.h"
#include "orte/mca/errmgr/errmgr.h"
#include "orte/mca/schema/schema.h"
/*
@ -145,7 +146,7 @@ int ompi_attr_create_predefined(void)
where triggers aren't set, there won't be COMM_SPAWN, so APPNUM
probably isn't a big deal. */
if (OMPI_SUCCESS != (ret = set_f(MPI_TAG_UB, MPI_TAG_UB_VALUE)) ||
if (OMPI_SUCCESS != (ret = set_f(MPI_TAG_UB, MCA_PML_CALL(max_tag))) ||
OMPI_SUCCESS != (ret = set_f(MPI_HOST, MPI_PROC_NULL)) ||
OMPI_SUCCESS != (ret = set_f(MPI_IO, MPI_ANY_SOURCE)) ||
OMPI_SUCCESS != (ret = set_f(MPI_WTIME_IS_GLOBAL, 0)) ||

Просмотреть файл

@ -30,8 +30,6 @@
#include "mca/coll/base/base.h"
#include "mca/rml/rml.h"
#define OMPI_MAX_COMM 32768
#if defined(c_plusplus) || defined(__cplusplus)
extern "C" {
#endif
@ -166,7 +164,7 @@ int ompi_comm_nextcid ( ompi_communicator_t* newcomm,
OPAL_THREAD_UNLOCK(&ompi_cid_lock);
for (i=start; i<OMPI_MAX_COMM ;i++) {
for (i=start; i < MCA_PML_CALL(max_contextid) ; i++) {
flag=ompi_pointer_array_test_and_set_item(&ompi_mpi_communicators, i, comm);
if (true == flag) {
nextlocal_cid = i;

Просмотреть файл

@ -30,7 +30,9 @@ mca_pml_example_t mca_pml_example = {
mca_pml_example_send,
mca_pml_example_iprobe,
mca_pml_example_probe,
mca_pml_example_start
mca_pml_example_start,
32768,
(0x7fffffff)
}
};

Просмотреть файл

@ -49,7 +49,9 @@ mca_pml_ob1_t mca_pml_ob1 = {
mca_pml_ob1_send,
mca_pml_ob1_iprobe,
mca_pml_ob1_probe,
mca_pml_ob1_start
mca_pml_ob1_start,
32768,
(0x7fffffff)
}
};

Просмотреть файл

@ -462,6 +462,10 @@ struct mca_pml_base_module_1_0_0_t {
mca_pml_base_module_iprobe_fn_t pml_iprobe;
mca_pml_base_module_probe_fn_t pml_probe;
mca_pml_base_module_start_fn_t pml_start;
/* maximum constant sizes */
uint32_t pml_max_contextid;
int pml_max_tag;
};
typedef struct mca_pml_base_module_1_0_0_t mca_pml_base_module_1_0_0_t;
typedef mca_pml_base_module_1_0_0_t mca_pml_base_module_t;

Просмотреть файл

@ -52,7 +52,9 @@ mca_pml_teg_t mca_pml_teg = {
mca_pml_teg_send,
mca_pml_teg_iprobe,
mca_pml_teg_probe,
mca_pml_teg_start
mca_pml_teg_start,
32768,
(0x7fffffff)
}
};

Просмотреть файл

@ -53,7 +53,9 @@ mca_pml_uniq_t mca_pml_uniq = {
mca_pml_uniq_send,
mca_pml_uniq_iprobe,
mca_pml_uniq_probe,
mca_pml_uniq_start
mca_pml_uniq_start,
32768,
(0x7fffffff)
}
};

Просмотреть файл

@ -49,7 +49,7 @@ int MPI_Bsend(void *buf, int count, MPI_Datatype type, int dest, int tag, MPI_Co
rc = MPI_ERR_COUNT;
} else if (type == MPI_DATATYPE_NULL) {
rc = MPI_ERR_TYPE;
} else if (tag < 0 || tag > MPI_TAG_UB_VALUE) {
} else if (tag < 0 || tag > MCA_PML_CALL(max_tag)) {
rc = MPI_ERR_TAG;
} else if (ompi_comm_peer_invalid(comm, dest)) {
rc = MPI_ERR_RANK;

Просмотреть файл

@ -50,7 +50,7 @@ int MPI_Bsend_init(void *buf, int count, MPI_Datatype type,
rc = MPI_ERR_COUNT;
} else if (type == MPI_DATATYPE_NULL) {
rc = MPI_ERR_TYPE;
} else if (tag < 0 || tag > MPI_TAG_UB_VALUE) {
} else if (tag < 0 || tag > MCA_PML_CALL(max_tag)) {
rc = MPI_ERR_TAG;
} else if (ompi_comm_peer_invalid(comm, dest)) {
rc = MPI_ERR_RANK;

Просмотреть файл

@ -51,7 +51,7 @@ int MPI_Ibsend(void *buf, int count, MPI_Datatype type, int dest,
rc = MPI_ERR_COUNT;
} else if (type == MPI_DATATYPE_NULL) {
rc = MPI_ERR_TYPE;
} else if (tag < 0 || tag > MPI_TAG_UB_VALUE) {
} else if (tag < 0 || tag > MCA_PML_CALL(max_tag)) {
rc = MPI_ERR_TAG;
} else if (ompi_comm_peer_invalid(comm, dest)) {
rc = MPI_ERR_RANK;

Просмотреть файл

@ -48,7 +48,7 @@ int MPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status
if ( MPI_PARAM_CHECK ) {
rc = MPI_SUCCESS;
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
if (((tag < 0) && (tag != MPI_ANY_TAG)) || (tag > MPI_TAG_UB_VALUE)) {
if (((tag < 0) && (tag != MPI_ANY_TAG)) || (tag > MCA_PML_CALL(max_tag))) {
rc = MPI_ERR_TAG;
} else if (ompi_comm_invalid(comm)) {
rc = MPI_ERR_COMM;

Просмотреть файл

@ -50,7 +50,7 @@ int MPI_Irecv(void *buf, int count, MPI_Datatype type, int source,
rc = MPI_ERR_COUNT;
} else if (type == MPI_DATATYPE_NULL) {
rc = MPI_ERR_TYPE;
} else if (((tag < 0) && (tag != MPI_ANY_TAG)) || (tag > MPI_TAG_UB_VALUE)) {
} else if (((tag < 0) && (tag != MPI_ANY_TAG)) || (tag > MCA_PML_CALL(max_tag))) {
rc = MPI_ERR_TAG;
} else if (source != MPI_ANY_SOURCE &&
source != MPI_PROC_NULL &&

Просмотреть файл

@ -50,7 +50,7 @@ int MPI_Irsend(void *buf, int count, MPI_Datatype type, int dest,
rc = MPI_ERR_COUNT;
} else if (type == MPI_DATATYPE_NULL) {
rc = MPI_ERR_TYPE;
} else if (tag < 0 || tag > MPI_TAG_UB_VALUE) {
} else if (tag < 0 || tag > MCA_PML_CALL(max_tag)) {
rc = MPI_ERR_TAG;
} else if (ompi_comm_peer_invalid(comm, dest)) {
rc = MPI_ERR_RANK;

Просмотреть файл

@ -50,7 +50,7 @@ int MPI_Isend(void *buf, int count, MPI_Datatype type, int dest,
rc = MPI_ERR_COUNT;
} else if (type == MPI_DATATYPE_NULL) {
rc = MPI_ERR_TYPE;
} else if (tag < 0 || tag > MPI_TAG_UB_VALUE) {
} else if (tag < 0 || tag > MCA_PML_CALL(max_tag)) {
rc = MPI_ERR_TAG;
} else if (ompi_comm_peer_invalid(comm, dest)) {
rc = MPI_ERR_RANK;

Просмотреть файл

@ -51,7 +51,7 @@ int MPI_Issend(void *buf, int count, MPI_Datatype type, int dest,
rc = MPI_ERR_COUNT;
} else if (type == MPI_DATATYPE_NULL) {
rc = MPI_ERR_TYPE;
} else if (tag < 0 || tag > MPI_TAG_UB_VALUE) {
} else if (tag < 0 || tag > MCA_PML_CALL(max_tag)) {
rc = MPI_ERR_TAG;
} else if (ompi_comm_peer_invalid(comm, dest)) {
rc = MPI_ERR_RANK;

Просмотреть файл

@ -47,7 +47,7 @@ int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status)
if ( MPI_PARAM_CHECK ) {
rc = MPI_SUCCESS;
OMPI_ERR_INIT_FINALIZE(FUNC_NAME);
if (((tag < 0) && (tag != MPI_ANY_TAG)) || (tag > MPI_TAG_UB_VALUE)) {
if (((tag < 0) && (tag != MPI_ANY_TAG)) || (tag > MCA_PML_CALL(max_tag))) {
rc = MPI_ERR_TAG;
} else if (ompi_comm_invalid(comm)) {
rc = MPI_ERR_COMM;

Просмотреть файл

@ -55,7 +55,7 @@ int MPI_Recv(void *buf, int count, MPI_Datatype type, int source,
rc = MPI_ERR_COUNT;
} else if (type == MPI_DATATYPE_NULL) {
rc = MPI_ERR_TYPE;
} else if (((tag < 0) && (tag != MPI_ANY_TAG)) || (tag > MPI_TAG_UB_VALUE)) {
} else if (((tag < 0) && (tag != MPI_ANY_TAG)) || (tag > MCA_PML_CALL(max_tag))) {
rc = MPI_ERR_TAG;
} else if (source != MPI_ANY_SOURCE && ompi_comm_peer_invalid(comm, source)) {
rc = MPI_ERR_RANK;

Просмотреть файл

@ -50,7 +50,7 @@ int MPI_Recv_init(void *buf, int count, MPI_Datatype type, int source,
rc = MPI_ERR_COUNT;
} else if (type == MPI_DATATYPE_NULL) {
rc = MPI_ERR_TYPE;
} else if (((tag < 0) && (tag != MPI_ANY_TAG)) || (tag > MPI_TAG_UB_VALUE)) {
} else if (((tag < 0) && (tag != MPI_ANY_TAG)) || (tag > MCA_PML_CALL(max_tag))) {
rc = MPI_ERR_TAG;
} else if (source != MPI_ANY_SOURCE &&
source != MPI_PROC_NULL &&

Просмотреть файл

@ -48,7 +48,7 @@ int MPI_Rsend(void *buf, int count, MPI_Datatype type, int dest, int tag, MPI_Co
rc = MPI_ERR_COUNT;
} else if (type == MPI_DATATYPE_NULL) {
rc = MPI_ERR_TYPE;
} else if (tag < 0 || tag > MPI_TAG_UB_VALUE) {
} else if (tag < 0 || tag > MCA_PML_CALL(max_tag)) {
rc = MPI_ERR_TAG;
} else if (ompi_comm_peer_invalid(comm, dest)) {
rc = MPI_ERR_RANK;

Просмотреть файл

@ -51,7 +51,7 @@ int MPI_Rsend_init(void *buf, int count, MPI_Datatype type,
rc = MPI_ERR_COUNT;
} else if (type == MPI_DATATYPE_NULL) {
rc = MPI_ERR_TYPE;
} else if (tag < 0 || tag > MPI_TAG_UB_VALUE) {
} else if (tag < 0 || tag > MCA_PML_CALL(max_tag)) {
rc = MPI_ERR_TAG;
} else if (ompi_comm_peer_invalid(comm, dest)) {
rc = MPI_ERR_RANK;

Просмотреть файл

@ -48,7 +48,7 @@ int MPI_Send(void *buf, int count, MPI_Datatype type, int dest,
return OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_COMM, FUNC_NAME);
} else if (count < 0) {
rc = MPI_ERR_COUNT;
} else if (tag < 0 || tag > MPI_TAG_UB_VALUE) {
} else if (tag < 0 || tag > MCA_PML_CALL(max_tag)) {
rc = MPI_ERR_TAG;
} else if (ompi_comm_peer_invalid(comm, dest)) {
rc = MPI_ERR_RANK;

Просмотреть файл

@ -51,7 +51,7 @@ int MPI_Send_init(void *buf, int count, MPI_Datatype type,
rc = MPI_ERR_COUNT;
} else if (type == MPI_DATATYPE_NULL) {
rc = MPI_ERR_TYPE;
} else if (tag < 0 || tag > MPI_TAG_UB_VALUE) {
} else if (tag < 0 || tag > MCA_PML_CALL(max_tag)) {
rc = MPI_ERR_TAG;
} else if (ompi_comm_peer_invalid(comm, dest)) {
rc = MPI_ERR_RANK;

Просмотреть файл

@ -51,7 +51,7 @@ int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
rc = MPI_ERR_TYPE;
} else if (dest != MPI_PROC_NULL && ompi_comm_peer_invalid(comm, dest)) {
rc = MPI_ERR_RANK;
} else if (sendtag < 0 || sendtag > MPI_TAG_UB_VALUE) {
} else if (sendtag < 0 || sendtag > MCA_PML_CALL(max_tag) ) {
rc = MPI_ERR_TAG;
} else if (recvcount < 0) {
rc = MPI_ERR_COUNT;
@ -59,7 +59,7 @@ int MPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
rc = MPI_ERR_TYPE;
} else if (source != MPI_PROC_NULL && source != MPI_ANY_SOURCE && ompi_comm_peer_invalid(comm, source)) {
rc = MPI_ERR_RANK;
} else if (((recvtag < 0) && (recvtag != MPI_ANY_TAG)) || (recvtag > MPI_TAG_UB_VALUE)) {
} else if (((recvtag < 0) && (recvtag != MPI_ANY_TAG)) || (recvtag > MCA_PML_CALL(max_tag))) {
rc = MPI_ERR_TAG;
}
OMPI_ERRHANDLER_CHECK(rc, comm, rc, FUNC_NAME);

Просмотреть файл

@ -22,6 +22,7 @@
#include "datatype/datatype.h"
#include "datatype/convertor.h"
#include "errhandler/errhandler.h"
#include "ompi/mca/pml/pml.h"
#if OMPI_HAVE_WEAK_SYMBOLS && OMPI_PROFILING_DEFINES
#pragma weak MPI_Sendrecv_replace = PMPI_Sendrecv_replace
@ -51,11 +52,11 @@ int MPI_Sendrecv_replace(void * buf, int count, MPI_Datatype datatype,
rc = MPI_ERR_TYPE;
} else if (dest != MPI_PROC_NULL && ompi_comm_peer_invalid(comm, dest)) {
rc = MPI_ERR_RANK;
} else if (sendtag < 0 || sendtag > MPI_TAG_UB_VALUE) {
} else if (sendtag < 0 || sendtag > MCA_PML_CALL(max_tag) ) {
rc = MPI_ERR_TAG;
} else if (source != MPI_PROC_NULL && source != MPI_ANY_SOURCE && ompi_comm_peer_invalid(comm, source)) {
rc = MPI_ERR_RANK;
} else if (((recvtag < 0) && (recvtag != MPI_ANY_TAG)) || (recvtag > MPI_TAG_UB_VALUE)) {
} else if (((recvtag < 0) && (recvtag != MPI_ANY_TAG)) || (recvtag > MCA_PML_CALL(max_tag))) {
rc = MPI_ERR_TAG;
}
OMPI_ERRHANDLER_CHECK(rc, comm, rc, FUNC_NAME);

Просмотреть файл

@ -48,7 +48,7 @@ int MPI_Ssend(void *buf, int count, MPI_Datatype type, int dest, int tag, MPI_Co
rc = MPI_ERR_COUNT;
} else if (type == MPI_DATATYPE_NULL) {
rc = MPI_ERR_TYPE;
} else if (tag < 0 || tag > MPI_TAG_UB_VALUE) {
} else if (tag < 0 || tag > MCA_PML_CALL(max_tag)) {
rc = MPI_ERR_TAG;
} else if (ompi_comm_peer_invalid(comm, dest)) {
rc = MPI_ERR_RANK;

Просмотреть файл

@ -51,7 +51,7 @@ int MPI_Ssend_init(void *buf, int count, MPI_Datatype type,
rc = MPI_ERR_COUNT;
} else if (type == MPI_DATATYPE_NULL) {
rc = MPI_ERR_TYPE;
} else if (tag < 0 || tag > MPI_TAG_UB_VALUE) {
} else if (tag < 0 || tag > MCA_PML_CALL(max_tag)) {
rc = MPI_ERR_TAG;
} else if (ompi_comm_peer_invalid(comm, dest)) {
rc = MPI_ERR_RANK;