coll/libnbc: correctly handle changed types.
this fixes open-mpi/ompi@d816d1c194 thanks Jeff for the review
Этот коммит содержится в:
родитель
d7b437ecaa
Коммит
37c978f5e9
@ -51,8 +51,8 @@ int ompi_coll_libnbc_ialltoall(const void* sendbuf, int sendcount, MPI_Datatype
|
||||
MPI_Datatype recvtype, struct ompi_communicator_t *comm, ompi_request_t ** request,
|
||||
struct mca_coll_base_module_2_1_0_t *module)
|
||||
{
|
||||
int rank, p, res, a2asize, datasize;
|
||||
size_t sndsize;
|
||||
int rank, p, res, datasize;
|
||||
size_t a2asize, sndsize;
|
||||
NBC_Schedule *schedule;
|
||||
MPI_Aint rcvext, sndext;
|
||||
#ifdef NBC_CACHE_SCHEDULE
|
||||
@ -94,7 +94,7 @@ int ompi_coll_libnbc_ialltoall(const void* sendbuf, int sendcount, MPI_Datatype
|
||||
* total communicated size is smaller than 1<<17 *and* if we don't
|
||||
* have eager messages (msgsize < 1<<13) */
|
||||
alg = NBC_A2A_LINEAR;
|
||||
} else if(a2asize < (1<<12)*p) {
|
||||
} else if(a2asize < (1<<12)*(unsigned int)p) {
|
||||
/*alg = NBC_A2A_DISS;*/
|
||||
alg = NBC_A2A_LINEAR;
|
||||
} else
|
||||
|
@ -1,11 +1,11 @@
|
||||
/* -*- Mode: C; c-basic-offset:2 ; indent-tabs-mode:nil -*- */
|
||||
/*
|
||||
* Copyright (c) 2006 The Trustees of Indiana University and Indiana
|
||||
* University Research and Technology
|
||||
* Corporation. All rights reserved.
|
||||
* Copyright (c) 2006 The Technical University of Chemnitz. All
|
||||
* rights reserved.
|
||||
* Copyright (c) 2014 Research Organization for Information Science
|
||||
* Copyright (c) 2006 The Trustees of Indiana University and Indiana
|
||||
* University Research and Technology
|
||||
* Corporation. All rights reserved.
|
||||
* Copyright (c) 2006 The Technical University of Chemnitz. All
|
||||
* rights reserved.
|
||||
* Copyright (c) 2014-2015 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
|
||||
* reserved.
|
||||
@ -20,7 +20,7 @@ static inline int bcast_sched_binomial(int rank, int p, int root, NBC_Schedule *
|
||||
static inline int bcast_sched_linear(int rank, int p, int root, NBC_Schedule *schedule, void *buffer, int count,
|
||||
MPI_Datatype datatype);
|
||||
static inline int bcast_sched_chain(int rank, int p, int root, NBC_Schedule *schedule, void *buffer, int count,
|
||||
MPI_Datatype datatype, int fragsize, int size);
|
||||
MPI_Datatype datatype, int fragsize, size_t size);
|
||||
|
||||
#ifdef NBC_CACHE_SCHEDULE
|
||||
/* tree comparison function for schedule cache */
|
||||
@ -252,7 +252,7 @@ static inline int bcast_sched_linear(int rank, int p, int root, NBC_Schedule *sc
|
||||
}
|
||||
|
||||
/* simple chained MPI_Ibcast */
|
||||
static inline int bcast_sched_chain(int rank, int p, int root, NBC_Schedule *schedule, void *buffer, int count, MPI_Datatype datatype, int fragsize, int size) {
|
||||
static inline int bcast_sched_chain(int rank, int p, int root, NBC_Schedule *schedule, void *buffer, int count, MPI_Datatype datatype, int fragsize, size_t size) {
|
||||
int res, vrank, rpeer, speer, numfrag, fragcount, thiscount;
|
||||
MPI_Aint ext;
|
||||
char *buf;
|
||||
|
@ -5,7 +5,7 @@
|
||||
* Corporation. All rights reserved.
|
||||
* Copyright (c) 2006 The Technical University of Chemnitz. All
|
||||
* rights reserved.
|
||||
* Copyright (c) 2014 Research Organization for Information Science
|
||||
* Copyright (c) 2014-2015 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* Copyright (c) 2015 Los Alamos National Security, LLC. All rights
|
||||
* reserved.
|
||||
@ -19,17 +19,10 @@ int ompi_coll_libnbc_ibcast_inter(void *buffer, int count, MPI_Datatype datatype
|
||||
struct ompi_communicator_t *comm, ompi_request_t ** request,
|
||||
struct mca_coll_base_module_2_1_0_t *module) {
|
||||
int res;
|
||||
size_t size;
|
||||
NBC_Schedule *schedule;
|
||||
NBC_Handle *handle;
|
||||
ompi_coll_libnbc_module_t *libnbc_module = (ompi_coll_libnbc_module_t*) module;
|
||||
|
||||
res = ompi_datatype_type_size(datatype, &size);
|
||||
if (MPI_SUCCESS != res) {
|
||||
NBC_Error("MPI Error in ompi_datatype_type_size() (%i)", res);
|
||||
return res;
|
||||
}
|
||||
|
||||
schedule = OBJ_NEW(NBC_Schedule);
|
||||
if (OPAL_UNLIKELY(NULL == schedule)) {
|
||||
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||
|
@ -18,7 +18,7 @@
|
||||
static inline int red_sched_binomial (int rank, int p, int root, const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
|
||||
MPI_Op op, void *redbuf, NBC_Schedule *schedule, NBC_Handle *handle);
|
||||
static inline int red_sched_chain (int rank, int p, int root, const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
|
||||
MPI_Op op, int ext, int size, NBC_Schedule *schedule, NBC_Handle *handle, int fragsize);
|
||||
MPI_Op op, int ext, size_t size, NBC_Schedule *schedule, NBC_Handle *handle, int fragsize);
|
||||
|
||||
static inline int red_sched_linear (int rank, int rsize, int root, const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
|
||||
MPI_Op op, NBC_Schedule *schedule, NBC_Handle *handle);
|
||||
@ -360,7 +360,7 @@ static inline int red_sched_binomial (int rank, int p, int root, const void *sen
|
||||
|
||||
/* chain send ... */
|
||||
static inline int red_sched_chain (int rank, int p, int root, const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
|
||||
MPI_Op op, int ext, int size, NBC_Schedule *schedule, NBC_Handle *handle, int fragsize) {
|
||||
MPI_Op op, int ext, size_t size, NBC_Schedule *schedule, NBC_Handle *handle, int fragsize) {
|
||||
int res, vrank, rpeer, speer, numfrag, fragcount, thiscount;
|
||||
long offset;
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user