-/* Copyright (c) 2007-2020. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2007-2021. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
return MPI_ERR_TYPE;
} else {
simgrid::smpi::Datatype::unref(*datatype);
+ *datatype=MPI_DATATYPE_NULL;
return MPI_SUCCESS;
}
}
return datatype->extent(lb, extent);
}
+int PMPI_Type_get_extent_x(MPI_Datatype datatype, MPI_Count * lb, MPI_Count * extent)
+{
+ MPI_Aint tmplb, tmpext;
+ int ret = PMPI_Type_get_extent(datatype, &tmplb, &tmpext);
+ if(ret == MPI_SUCCESS){
+ *lb = static_cast<MPI_Count>(tmplb);
+ *extent = static_cast<MPI_Count>(tmpext);
+ }
+ return ret;
+}
+
int PMPI_Type_get_true_extent(MPI_Datatype datatype, MPI_Aint * lb, MPI_Aint * extent)
{
return PMPI_Type_get_extent(datatype, lb, extent);
}
+int PMPI_Type_get_true_extent_x(MPI_Datatype datatype, MPI_Count * lb, MPI_Count * extent)
+{
+ return PMPI_Type_get_extent_x(datatype, lb, extent);
+}
+
int PMPI_Type_extent(MPI_Datatype datatype, MPI_Aint * extent)
{
CHECK_MPI_NULL(1, MPI_DATATYPE_NULL, MPI_ERR_TYPE, datatype)
int PMPI_Type_dup(MPI_Datatype datatype, MPI_Datatype *newtype){
int retval = MPI_SUCCESS;
CHECK_MPI_NULL(1, MPI_DATATYPE_NULL, MPI_ERR_TYPE, datatype)
- *newtype = datatype->clone();
+ retval = datatype->clone(newtype);
//error when duplicating, free the new datatype
if(retval!=MPI_SUCCESS){
simgrid::smpi::Datatype::unref(*newtype);
{
CHECK_COUNT(1, count)
CHECK_MPI_NULL(4, MPI_DATATYPE_NULL, MPI_ERR_TYPE, old_type)
- int* blocklens=static_cast<int*>(xbt_malloc(blocklength*count*sizeof(int)));
+ auto* blocklens = static_cast<int*>(xbt_malloc(blocklength * count * sizeof(int)));
for (int i = 0; i < count; i++)
blocklens[i]=blocklength;
int retval = simgrid::smpi::Datatype::create_indexed(count, blocklens, indices, old_type, new_type);
MPI_Datatype* new_type) {
CHECK_COUNT(1, count)
CHECK_MPI_NULL(4, MPI_DATATYPE_NULL, MPI_ERR_TYPE, old_type)
- int* blocklens=(int*)xbt_malloc(blocklength*count*sizeof(int));
+ auto* blocklens = static_cast<int*>(xbt_malloc(blocklength * count * sizeof(int)));
for (int i = 0; i < count; i++)
blocklens[i] = blocklength;
int retval = simgrid::smpi::Datatype::create_hindexed(count, blocklens, indices, old_type, new_type);