#include "smpi_mpi_dt_private.h"
#include "mc/mc.h"
#include "xbt/replay.h"
+#include <xbt/ex.hpp>
#include "simgrid/modelchecker.h"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_mpi_dt, smpi, "Logging specific to SMPI (datatype)");
static s_smpi_mpi_datatype_t mpi_##name = { \
(char*) # name, \
sizeof(type), /* size */ \
- 0, /*was 1 sizeof_substruct*/ \
+ 0, /*was 1 sizeof_substruct*/ \
0, /* lb */ \
sizeof(type), /* ub = lb + size */ \
DT_FLAG_BASIC, /* flags */ \
- nullptr, /* attributes */ \
- nullptr, /* pointer on extended struct*/ \
+ nullptr, /* attributes */ \
+ nullptr, /* pointer on extended struct*/ \
0 /* in_use counter */ \
}; \
const MPI_Datatype name = &mpi_##name;
static s_smpi_mpi_datatype_t mpi_##name = { \
(char*) # name, \
0, /* size */ \
- 0, /* was 1 sizeof_substruct*/ \
+ 0, /* was 1 sizeof_substruct*/ \
0, /* lb */ \
0, /* ub = lb + size */ \
DT_FLAG_BASIC, /* flags */ \
- nullptr, /* attributes */ \
- nullptr, /* pointer on extended struct*/ \
+ nullptr, /* attributes */ \
+ nullptr, /* pointer on extended struct*/ \
0 /* in_use counter */ \
}; \
const MPI_Datatype name = &mpi_##name;
* Copies noncontiguous data into contiguous memory.
* @param contiguous_vector - output vector
* @param noncontiguous_vector - input vector
- * @param type - pointer contening :
+ * @param type - pointer containing :
* - stride - stride of between noncontiguous data
* - block_length - the width or height of blocked matrix
* - count - the number of rows of matrix
}
/* Create a Sub type contiguous to be able to serialize and unserialize it the structure s_smpi_mpi_contiguous_t is
- * erived from s_smpi_subtype which required the functions unserialize and serialize */
+ * derived from s_smpi_subtype which required the functions unserialize and serialize */
s_smpi_mpi_contiguous_t* smpi_datatype_contiguous_create( MPI_Aint lb, int block_count, MPI_Datatype old_type,
int size_oldtype){
if(block_count==0)
DT_FLAG_VECTOR);
retval=MPI_SUCCESS;
}else{
- /* in this situation the data are contignous thus it's not required to serialize and unserialize it*/
+ /* in this situation the data are contiguous thus it's not required to serialize and unserialize it*/
smpi_datatype_create(new_type, count * blocklen * smpi_datatype_size(old_type), 0, ((count -1) * stride + blocklen)*
smpi_datatype_size(old_type), 0, nullptr, DT_FLAG_VECTOR|DT_FLAG_CONTIGUOUS);
retval=MPI_SUCCESS;
new_t->base.subtype_use = &use_hindexed;
new_t->block_lengths= xbt_new(int, block_count);
new_t->block_indices= xbt_new(MPI_Aint, block_count);
- int i;
- for(i=0;i<block_count;i++){
+ for(int i=0;i<block_count;i++){
new_t->block_lengths[i]=block_lengths[i];
new_t->block_indices[i]=block_indices[i];
}
if(elem==nullptr)
return MPI_ERR_ARG;
if(elem->delete_fn!=MPI_NULL_DELETE_FN){
- void * value;
+ void * value = nullptr;
int flag;
if(smpi_type_attr_get(type, keyval, &value, &flag)==MPI_SUCCESS){
int ret = elem->delete_fn(type, keyval, value, &flag);
static_cast<smpi_type_key_elem>(xbt_dict_get_or_null_ext(smpi_type_keyvals, reinterpret_cast<const char*>(&keyval), sizeof(int)));
if(elem==nullptr)
return MPI_ERR_ARG;
- xbt_ex_t ex;
if(type->attributes==nullptr){
*flag=0;
return MPI_SUCCESS;
}
- TRY {
+ try {
*static_cast<void**>(attr_value) = xbt_dict_get_ext(type->attributes, reinterpret_cast<const char*>(&keyval), sizeof(int));
*flag=1;
}
- CATCH(ex) {
+ catch (xbt_ex& ex) {
*flag=0;
- xbt_ex_free(ex);
}
return MPI_SUCCESS;
}
if(elem==nullptr)
return MPI_ERR_ARG;
int flag;
- void* value;
+ void* value = nullptr;
smpi_type_attr_get(type, keyval, &value, &flag);
if(flag!=0 && elem->delete_fn!=MPI_NULL_DELETE_FN){
int ret = elem->delete_fn(type, keyval, value, &flag);