X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0762447a6350557e47757737c8d787552e213eaa..1f32679abc2f9c0cae9e27951b643a0f70d71b3a:/src/smpi/smpi_pmpi.cpp diff --git a/src/smpi/smpi_pmpi.cpp b/src/smpi/smpi_pmpi.cpp index 90bd6cb81d..62ca0f186c 100644 --- a/src/smpi/smpi_pmpi.cpp +++ b/src/smpi/smpi_pmpi.cpp @@ -1,10 +1,9 @@ - -/* Copyright (c) 2007-2015. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2007-2016. 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. */ +#include #include #include "private.h" @@ -185,6 +184,21 @@ int PMPI_Type_size(MPI_Datatype datatype, int *size) return retval; } +int PMPI_Type_size_x(MPI_Datatype datatype, MPI_Count *size) +{ + int retval = 0; + + if (datatype == MPI_DATATYPE_NULL) { + retval = MPI_ERR_TYPE; + } else if (size == nullptr) { + retval = MPI_ERR_ARG; + } else { + *size = static_cast(smpi_datatype_size(datatype)); + retval = MPI_SUCCESS; + } + return retval; +} + int PMPI_Type_get_extent(MPI_Datatype datatype, MPI_Aint * lb, MPI_Aint * extent) { int retval = 0; @@ -500,7 +514,7 @@ int PMPI_Group_excl(MPI_Group group, int n, int *ranks, MPI_Group * newgroup) } else { if (n == 0) { *newgroup = group; - if(group!= smpi_comm_group(MPI_COMM_WORLD) && group != MPI_GROUP_NULL + if (group != smpi_comm_group(MPI_COMM_WORLD) && group != smpi_comm_group(MPI_COMM_SELF) && group != MPI_GROUP_EMPTY) smpi_group_use(group); } else if (n == smpi_group_size(group)) { @@ -603,7 +617,7 @@ int PMPI_Group_range_excl(MPI_Group group, int n, int ranges[][3], MPI_Group * n } else { if (n == 0) { *newgroup = group; - if(group!= smpi_comm_group(MPI_COMM_WORLD) && group != MPI_GROUP_NULL + if (group!= smpi_comm_group(MPI_COMM_WORLD) && group != smpi_comm_group(MPI_COMM_SELF) && group != MPI_GROUP_EMPTY) smpi_group_use(group); } else { @@ -1347,7 +1361,7 @@ int PMPI_Test(MPI_Request * request, int *flag, MPI_Status * status) smpi_empty_status(status); retval = MPI_SUCCESS; } else { - int rank = (request!=nullptr && (*request)->comm != MPI_COMM_NULL) ? smpi_process_index() : -1; + int rank = ((*request)->comm != MPI_COMM_NULL) ? smpi_process_index() : -1; instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1); extra->type = TRACING_TEST; @@ -1655,15 +1669,15 @@ int PMPI_Barrier(MPI_Comm comm) if (comm == MPI_COMM_NULL) { retval = MPI_ERR_COMM; } else { - int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1; - instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1); - extra->type = TRACING_BARRIER; - TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra); + int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1; + instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1); + extra->type = TRACING_BARRIER; + TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra); - mpi_coll_barrier_fun(comm); - retval = MPI_SUCCESS; + mpi_coll_barrier_fun(comm); + retval = MPI_SUCCESS; - TRACE_smpi_collective_out(rank, -1, __FUNCTION__); + TRACE_smpi_collective_out(rank, -1, __FUNCTION__); } smpi_bench_begin(); @@ -2328,9 +2342,9 @@ int PMPI_Get_processor_name(char *name, int *resultlen) { int retval = MPI_SUCCESS; - strncpy(name, sg_host_get_name(SIMIX_host_self()), - strlen(sg_host_get_name(SIMIX_host_self())) < MPI_MAX_PROCESSOR_NAME - 1 ? - strlen(sg_host_get_name(SIMIX_host_self())) +1 : MPI_MAX_PROCESSOR_NAME - 1 ); + strncpy(name, SIMIX_host_self()->cname(), strlen(SIMIX_host_self()->cname()) < MPI_MAX_PROCESSOR_NAME - 1 + ? strlen(SIMIX_host_self()->cname()) + 1 + : MPI_MAX_PROCESSOR_NAME - 1); *resultlen = strlen(name) > MPI_MAX_PROCESSOR_NAME ? MPI_MAX_PROCESSOR_NAME : strlen(name); return retval;