XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_coll, smpi, "Logging specific to SMPI (coll)");
s_mpi_coll_description_t mpi_coll_gather_description[] = {
- {"default", "gather default collective", (void*)smpi_mpi_gather},
+ {"default", "gather default collective", reinterpret_cast<void*>(&smpi_mpi_gather)},
COLL_GATHERS(COLL_DESCRIPTION, COLL_COMMA), {NULL, NULL, NULL} /* this array must be NULL terminated */
};
s_mpi_coll_description_t mpi_coll_allgather_description[] = {
{"default",
"allgather default collective",
- (void*)smpi_mpi_allgather},
+ reinterpret_cast<void*>(&smpi_mpi_allgather)},
COLL_ALLGATHERS(COLL_DESCRIPTION, COLL_COMMA),
{NULL, NULL, NULL} /* this array must be NULL terminated */
};
s_mpi_coll_description_t mpi_coll_allgatherv_description[] = {
{"default",
"allgatherv default collective",
- (void*)smpi_mpi_allgatherv},
+ reinterpret_cast<void*>(&smpi_mpi_allgatherv)},
COLL_ALLGATHERVS(COLL_DESCRIPTION, COLL_COMMA),
{NULL, NULL, NULL} /* this array must be NULL terminated */
};
s_mpi_coll_description_t mpi_coll_allreduce_description[] = {
{"default",
"allreduce default collective",
- (void*)smpi_mpi_allreduce},
+ reinterpret_cast<void*>(&smpi_mpi_allreduce)},
COLL_ALLREDUCES(COLL_DESCRIPTION, COLL_COMMA),
{NULL, NULL, NULL} /* this array must be NULL terminated */
};
s_mpi_coll_description_t mpi_coll_reduce_scatter_description[] = {
{"default",
"reduce_scatter default collective",
- (void*)smpi_mpi_reduce_scatter},
+ reinterpret_cast<void*>(&smpi_mpi_reduce_scatter)},
COLL_REDUCE_SCATTERS(COLL_DESCRIPTION, COLL_COMMA),
{NULL, NULL, NULL} /* this array must be NULL terminated */
};
s_mpi_coll_description_t mpi_coll_scatter_description[] = {
{"default",
"scatter default collective",
- (void*)smpi_mpi_scatter},
+ reinterpret_cast<void*>(&smpi_mpi_scatter)},
COLL_SCATTERS(COLL_DESCRIPTION, COLL_COMMA),
{NULL, NULL, NULL} /* this array must be NULL terminated */
};
s_mpi_coll_description_t mpi_coll_barrier_description[] = {
{"default",
"barrier default collective",
- (void*)smpi_mpi_barrier},
+ reinterpret_cast<void*>(&smpi_mpi_barrier)},
COLL_BARRIERS(COLL_DESCRIPTION, COLL_COMMA),
{NULL, NULL, NULL} /* this array must be NULL terminated */
};
s_mpi_coll_description_t mpi_coll_alltoall_description[] = {
{"default",
"Ompi alltoall default collective",
- (void*)smpi_coll_tuned_alltoall_ompi2},
+ reinterpret_cast<void*>(&smpi_coll_tuned_alltoall_ompi2)},
COLL_ALLTOALLS(COLL_DESCRIPTION, COLL_COMMA),
{"bruck",
"Alltoall Bruck (SG) collective",
- (void*)smpi_coll_tuned_alltoall_bruck},
+ reinterpret_cast<void*>(&smpi_coll_tuned_alltoall_bruck)},
{"basic_linear",
"Alltoall basic linear (SG) collective",
- (void*)smpi_coll_tuned_alltoall_basic_linear},
+ reinterpret_cast<void*>(&smpi_coll_tuned_alltoall_basic_linear)},
{NULL, NULL, NULL} /* this array must be NULL terminated */
};
s_mpi_coll_description_t mpi_coll_alltoallv_description[] = {
{"default",
"Ompi alltoallv default collective",
- (void*)smpi_coll_basic_alltoallv},
+ reinterpret_cast<void*>(&smpi_coll_basic_alltoallv)},
COLL_ALLTOALLVS(COLL_DESCRIPTION, COLL_COMMA),
{NULL, NULL, NULL} /* this array must be NULL terminated */
};
s_mpi_coll_description_t mpi_coll_bcast_description[] = {
{"default",
"bcast default collective ",
- (void*)smpi_mpi_bcast},
+ reinterpret_cast<void*>(&smpi_mpi_bcast)},
COLL_BCASTS(COLL_DESCRIPTION, COLL_COMMA),
{NULL, NULL, NULL} /* this array must be NULL terminated */
};
s_mpi_coll_description_t mpi_coll_reduce_description[] = {
{"default",
"reduce default collective",
- (void*)smpi_mpi_reduce},
+ reinterpret_cast<void*>(&smpi_mpi_reduce)},
COLL_REDUCES(COLL_DESCRIPTION, COLL_COMMA),
{NULL, NULL, NULL} /* this array must be NULL terminated */
};
int selector_on=0;
if (name==NULL || name[0] == '\0') {
//no argument provided, use active selector's algorithm
- name=(char*)xbt_cfg_get_string("smpi/coll-selector");
+ name=static_cast<char*>(xbt_cfg_get_string("smpi/coll-selector"));
selector_on=1;
}
for (int i = 0; table[i].name; i++)
if(selector_on){
// collective seems not handled by the active selector, try with default one
- name=(char*)"default";
+ name=const_cast<char*>("default");
for (int i = 0; table[i].name; i++)
if (!strcmp(name, table[i].name)) {
return i;
for (int i = 1; table[i].name; i++) {
name_list = static_cast<char*>(xbt_realloc(name_list,
strlen(name_list) + strlen(table[i].name) + 3));
- strcat(name_list, ", ");
- strcat(name_list, table[i].name);
+ strncat(name_list, ", ",2);
+ strncat(name_list, table[i].name, strlen(table[i].name));
}
xbt_die("Collective '%s' is invalid! Valid collectives are: %s.", name, name_list);
return -1;
smpi_datatype_extent(recvtype, &lb, &recvext);
/* Local copy from self */
err =
- smpi_datatype_copy((char *)sendbuf + rank * sendcount * sendext,
+ smpi_datatype_copy(static_cast<char *>(sendbuf) + rank * sendcount * sendext,
sendcount, sendtype,
- (char *)recvbuf + rank * recvcount * recvext,
+ static_cast<char *>(recvbuf) + rank * recvcount * recvext,
recvcount, recvtype);
if (err == MPI_SUCCESS && size > 1) {
/* Initiate all send/recv to/from others. */
count = 0;
/* Create all receives that will be posted first */
for (i = 0; i < size; ++i) {
- if (i == rank) {
+ if (i != rank) {
+ requests[count] =
+ smpi_irecv_init(static_cast<char *>(recvbuf) + i * recvcount * recvext, recvcount,
+ recvtype, i, system_tag, comm);
+ count++;
+ }else{
XBT_DEBUG("<%d> skip request creation [src = %d, recvcount = %d]",
rank, i, recvcount);
- continue;
}
- requests[count] =
- smpi_irecv_init((char *)recvbuf + i * recvcount * recvext, recvcount,
- recvtype, i, system_tag, comm);
- count++;
}
/* Now create all sends */
for (i = 0; i < size; ++i) {
- if (i == rank) {
+ if (i != rank) {
+ requests[count] =
+ smpi_isend_init(static_cast<char *>(sendbuf) + i * sendcount * sendext, sendcount,
+ sendtype, i, system_tag, comm);
+ count++;
+ }else{
XBT_DEBUG("<%d> skip request creation [dst = %d, sendcount = %d]",
rank, i, sendcount);
- continue;
}
- requests[count] =
- smpi_isend_init((char *)sendbuf + i * sendcount * sendext, sendcount,
- sendtype, i, system_tag, comm);
- count++;
}
/* Wait for them all. */
smpi_mpi_startall(count, requests);
XBT_DEBUG("<%d> wait for %d requests", rank, count);
smpi_mpi_waitall(count, requests, MPI_STATUS_IGNORE);
for(i = 0; i < count; i++) {
- if(requests[i]!=MPI_REQUEST_NULL) smpi_mpi_request_free(&requests[i]);
+ if(requests[i]!=MPI_REQUEST_NULL)
+ smpi_mpi_request_free(&requests[i]);
}
xbt_free(requests);
}
smpi_datatype_extent(sendtype, &lb, &sendext);
smpi_datatype_extent(recvtype, &lb, &recvext);
/* simple optimization */
- err = smpi_datatype_copy((char *)sendbuf + rank * sendcount * sendext,
+ err = smpi_datatype_copy(static_cast<char *>(sendbuf) + rank * sendcount * sendext,
sendcount, sendtype,
- (char *)recvbuf + rank * recvcount * recvext,
+ static_cast<char *>(recvbuf) + rank * recvcount * recvext,
recvcount, recvtype);
if (err == MPI_SUCCESS && size > 1) {
/* Initiate all send/recv to/from others. */
count = 0;
for (i = (rank + 1) % size; i != rank; i = (i + 1) % size) {
requests[count] =
- smpi_irecv_init((char *)recvbuf + i * recvcount * recvext, recvcount,
+ smpi_irecv_init(static_cast<char *>(recvbuf) + i * recvcount * recvext, recvcount,
recvtype, i, system_tag, comm);
count++;
}
*/
for (i = (rank + size - 1) % size; i != rank; i = (i + size - 1) % size) {
requests[count] =
- smpi_isend_init((char *)sendbuf + i * sendcount * sendext, sendcount,
+ smpi_isend_init(static_cast<char *>(sendbuf) + i * sendcount * sendext, sendcount,
sendtype, i, system_tag, comm);
count++;
}
XBT_DEBUG("<%d> wait for %d requests", rank, count);
smpi_mpi_waitall(count, requests, MPI_STATUS_IGNORE);
for(i = 0; i < count; i++) {
- if(requests[i]!=MPI_REQUEST_NULL) smpi_mpi_request_free(&requests[i]);
+ if(requests[i]!=MPI_REQUEST_NULL)
+ smpi_mpi_request_free(&requests[i]);
}
xbt_free(requests);
}
smpi_datatype_extent(recvtype, &lb, &recvext);
/* Local copy from self */
err =
- smpi_datatype_copy((char *)sendbuf + senddisps[rank] * sendext,
+ smpi_datatype_copy(static_cast<char *>(sendbuf) + senddisps[rank] * sendext,
sendcounts[rank], sendtype,
- (char *)recvbuf + recvdisps[rank] * recvext,
+ static_cast<char *>(recvbuf) + recvdisps[rank] * recvext,
recvcounts[rank], recvtype);
if (err == MPI_SUCCESS && size > 1) {
/* Initiate all send/recv to/from others. */
count = 0;
/* Create all receives that will be posted first */
for (i = 0; i < size; ++i) {
- if (i == rank || recvcounts[i] == 0) {
+ if (i != rank && recvcounts[i] != 0) {
+ requests[count] =
+ smpi_irecv_init(static_cast<char *>(recvbuf) + recvdisps[i] * recvext,
+ recvcounts[i], recvtype, i, system_tag, comm);
+ count++;
+ }else{
XBT_DEBUG
("<%d> skip request creation [src = %d, recvcounts[src] = %d]",
rank, i, recvcounts[i]);
- continue;
}
- requests[count] =
- smpi_irecv_init((char *)recvbuf + recvdisps[i] * recvext,
- recvcounts[i], recvtype, i, system_tag, comm);
- count++;
}
/* Now create all sends */
for (i = 0; i < size; ++i) {
- if (i == rank || sendcounts[i] == 0) {
+ if (i != rank && sendcounts[i] != 0) {
+ requests[count] =
+ smpi_isend_init(static_cast<char *>(sendbuf) + senddisps[i] * sendext,
+ sendcounts[i], sendtype, i, system_tag, comm);
+ count++;
+ }else{
XBT_DEBUG
("<%d> skip request creation [dst = %d, sendcounts[dst] = %d]",
rank, i, sendcounts[i]);
- continue;
}
- requests[count] =
- smpi_isend_init((char *)sendbuf + senddisps[i] * sendext,
- sendcounts[i], sendtype, i, system_tag, comm);
- count++;
}
/* Wait for them all. */
smpi_mpi_startall(count, requests);
XBT_DEBUG("<%d> wait for %d requests", rank, count);
smpi_mpi_waitall(count, requests, MPI_STATUS_IGNORE);
for(i = 0; i < count; i++) {
- if(requests[i]!=MPI_REQUEST_NULL) smpi_mpi_request_free(&requests[i]);
+ if(requests[i]!=MPI_REQUEST_NULL)
+ smpi_mpi_request_free(&requests[i]);
}
xbt_free(requests);
}
xbt_dict_foreach((*type)->attributes, cursor, key, value){
smpi_type_key_elem elem =
static_cast<smpi_type_key_elem>(xbt_dict_get_or_null_ext(smpi_type_keyvals, reinterpret_cast<const char*>(key), sizeof(int)));
- if(elem!=NULL && elem->delete_fn)
+ if(elem!=NULL && elem->delete_fn!=NULL)
elem->delete_fn(*type,*key, value, &flag);
}
xbt_dict_free(&(*type)->attributes);
int i;
int retval;
int size = 0;
- int contiguous=1;
+ bool contiguous=true;
MPI_Aint lb = 0;
MPI_Aint ub = 0;
if(count>0){
ub = indices[i]*smpi_datatype_get_extent(old_type)+blocklens[i]*smpi_datatype_ub(old_type);
if ( (i< count -1) && (indices[i]+blocklens[i] != indices[i+1]) )
- contiguous=0;
+ contiguous=false;
}
if (old_type->sizeof_substruct != 0)
- contiguous=0;
+ contiguous=false;
if(!contiguous){
s_smpi_mpi_indexed_t* subtype = smpi_datatype_indexed_create( blocklens, indices, count, old_type,
int i;
int retval;
int size = 0;
- int contiguous=1;
+ bool contiguous=true;
MPI_Aint lb = 0;
MPI_Aint ub = 0;
if(count>0){
ub = indices[i]+blocklens[i]*smpi_datatype_ub(old_type);
if ( (i< count -1) && (indices[i]+blocklens[i]*(static_cast<int>(smpi_datatype_size(old_type))) != indices[i+1]) )
- contiguous=0;
+ contiguous=false;
}
if (old_type->sizeof_substruct != 0 || lb!=0)
- contiguous=0;
+ contiguous=false;
if(!contiguous){
s_smpi_mpi_hindexed_t* subtype = smpi_datatype_hindexed_create( blocklens, indices, count, old_type,
{
int i;
size_t size = 0;
- int contiguous=1;
+ bool contiguous=true;
size = 0;
MPI_Aint lb = 0;
MPI_Aint ub = 0;
lb=indices[0] + smpi_datatype_lb(old_types[0]);
ub=indices[0] + blocklens[0]*smpi_datatype_ub(old_types[0]);
}
- int forced_lb=0;
- int forced_ub=0;
+ bool forced_lb=false;
+ bool forced_ub=false;
for(i=0; i< count; i++){
if (blocklens[i]<0)
return MPI_ERR_ARG;
if (old_types[i]->sizeof_substruct != 0)
- contiguous=0;
+ contiguous=false;
size += blocklens[i]*smpi_datatype_size(old_types[i]);
if (old_types[i]==MPI_LB){
lb=indices[i];
- forced_lb=1;
+ forced_lb=true;
}
if (old_types[i]==MPI_UB){
ub=indices[i];
- forced_ub=1;
+ forced_ub=true;
}
if(!forced_lb && indices[i]+smpi_datatype_lb(old_types[i])<lb)
ub = indices[i]+blocklens[i]*smpi_datatype_ub(old_types[i]);
if ( (i< count -1) && (indices[i]+blocklens[i]*static_cast<int>(smpi_datatype_size(old_types[i])) != indices[i+1]) )
- contiguous=0;
+ contiguous=false;
}
- if(contiguous==0){
+ if(!contiguous){
s_smpi_mpi_struct_t* subtype = smpi_datatype_struct_create( blocklens, indices, count, old_types);
smpi_datatype_create(new_type, size, lb, ub,sizeof(s_smpi_mpi_struct_t), subtype, DT_FLAG_DATA);
typedef struct s_smpi_mpi_op {
MPI_User_function *func;
- int is_commute;
+ bool is_commute;
} s_smpi_mpi_op_t;
#define MAX_OP(a, b) (b) = (a) < (b) ? (b) : (a)
CREATE_MPI_OP(MPI_MINLOC, minloc_func);
CREATE_MPI_OP(MPI_REPLACE, replace_func);
-MPI_Op smpi_op_new(MPI_User_function * function, int commute)
+MPI_Op smpi_op_new(MPI_User_function * function, bool commute)
{
MPI_Op op;
op = xbt_new(s_smpi_mpi_op_t, 1);
return op;
}
-int smpi_op_is_commute(MPI_Op op)
+bool smpi_op_is_commute(MPI_Op op)
{
- return (op==MPI_OP_NULL) ? 1 : op-> is_commute;
+ return (op==MPI_OP_NULL) ? true : op-> is_commute;
}
void smpi_op_destroy(MPI_Op op)
int smpi_type_attr_get(MPI_Datatype type, int keyval, void* attr_value, int* flag){
smpi_type_key_elem elem =
static_cast<smpi_type_key_elem>(xbt_dict_get_or_null_ext(smpi_type_keyvals, reinterpret_cast<const char*>(&keyval), sizeof(int)));
- if(!elem)
+ if(elem==NULL)
return MPI_ERR_ARG;
xbt_ex_t ex;
if(type->attributes==NULL){
}
int smpi_type_attr_put(MPI_Datatype type, int keyval, void* attr_value){
- if(!smpi_type_keyvals)
- smpi_type_keyvals = xbt_dict_new();
+ if(smpi_type_keyvals==NULL)
+ smpi_type_keyvals = xbt_dict_new();
smpi_type_key_elem elem =
static_cast<smpi_type_key_elem>(xbt_dict_get_or_null_ext(smpi_type_keyvals, reinterpret_cast<const char*>(&keyval), sizeof(int)));
if(elem==NULL)
int flag;
void* value;
smpi_type_attr_get(type, keyval, &value, &flag);
- if(flag && elem->delete_fn!=MPI_NULL_DELETE_FN){
+ if(flag!=0 && elem->delete_fn!=MPI_NULL_DELETE_FN){
int ret = elem->delete_fn(type, keyval, value, &flag);
if(ret!=MPI_SUCCESS)
return ret;
int smpi_type_keyval_create(MPI_Type_copy_attr_function* copy_fn, MPI_Type_delete_attr_function* delete_fn, int* keyval,
void* extra_state){
- if(!smpi_type_keyvals)
- smpi_type_keyvals = xbt_dict_new();
+ if(smpi_type_keyvals==NULL)
+ smpi_type_keyvals = xbt_dict_new();
smpi_type_key_elem value = (smpi_type_key_elem) xbt_new0(s_smpi_mpi_type_key_elem_t,1);
int smpi_type_keyval_free(int* keyval){
smpi_type_key_elem elem =
static_cast<smpi_type_key_elem>(xbt_dict_get_or_null_ext(smpi_type_keyvals, reinterpret_cast<const char*>(keyval), sizeof(int)));
- if(!elem){
+ if(elem==0){
return MPI_ERR_ARG;
}
xbt_dict_remove_ext(smpi_type_keyvals, reinterpret_cast<const char*>(keyval), sizeof(int));