A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add new entry in Release_Notes.
[simgrid.git]
/
src
/
smpi
/
bindings
/
smpi_pmpi.cpp
diff --git
a/src/smpi/bindings/smpi_pmpi.cpp
b/src/smpi/bindings/smpi_pmpi.cpp
index d1b76c9ce8f8fdfe0301d3775b92bbedde95eb4f..93dca485d66a09b8c0ddfd67a91753a097cebf81 100644
(file)
--- a/
src/smpi/bindings/smpi_pmpi.cpp
+++ b/
src/smpi/bindings/smpi_pmpi.cpp
@@
-1,17
+1,19
@@
-/* Copyright (c) 2007-202
1
. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2007-202
3
. 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 "private.hpp"
/* 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 "private.hpp"
+#include "simgrid/host.h"
#include "simgrid/instr.h"
#include "simgrid/s4u/Engine.hpp"
#include "simgrid/s4u/Host.hpp"
#include "simgrid/version.h"
#include "simgrid/instr.h"
#include "simgrid/s4u/Engine.hpp"
#include "simgrid/s4u/Host.hpp"
#include "simgrid/version.h"
+#include "smpi_coll.hpp"
#include "smpi_comm.hpp"
#include "smpi_datatype_derived.hpp"
#include "smpi_status.hpp"
#include "smpi_comm.hpp"
#include "smpi_datatype_derived.hpp"
#include "smpi_status.hpp"
-#include "s
mpi_col
l.hpp"
+#include "s
rc/kernel/EngineImp
l.hpp"
#include "src/kernel/actor/ActorImpl.hpp"
#include "src/smpi/include/smpi_actor.hpp"
#include "src/kernel/actor/ActorImpl.hpp"
#include "src/smpi/include/smpi_actor.hpp"
@@
-25,7
+27,7
@@
void TRACE_smpi_set_category(const char *category)
if (category != nullptr) {
// declare category
if (category != nullptr) {
// declare category
-
TRACE
_category(category);
+
simgrid::instr::declare_tracing
_category(category);
smpi_process()->set_tracing_category(category);
}
}
smpi_process()->set_tracing_category(category);
}
}
@@
-52,10
+54,11
@@
int PMPI_Init(int*, char***)
simgrid::smpi::ActorExt::init();
TRACE_smpi_init(simgrid::s4u::this_actor::get_pid(), __func__);
simgrid::smpi::ActorExt::init();
TRACE_smpi_init(simgrid::s4u::this_actor::get_pid(), __func__);
+ smpi_mpi_init();
smpi_bench_begin();
smpi_process()->mark_as_initialized();
smpi_bench_begin();
smpi_process()->mark_as_initialized();
- smpi_mpi_init();
+ CHECK_COLLECTIVE(smpi_process()->comm_world(), "MPI_Init")
return MPI_SUCCESS;
}
return MPI_SUCCESS;
}
@@
-63,10
+66,12
@@
int PMPI_Init(int*, char***)
int PMPI_Finalize()
{
smpi_bench_end();
int PMPI_Finalize()
{
smpi_bench_end();
+ CHECK_COLLECTIVE(smpi_process()->comm_world(), "MPI_Finalize")
aid_t rank_traced = simgrid::s4u::this_actor::get_pid();
aid_t rank_traced = simgrid::s4u::this_actor::get_pid();
+ smpi_process()->mark_as_finalizing();
TRACE_smpi_comm_in(rank_traced, __func__, new simgrid::instr::NoOpTIData("finalize"));
TRACE_smpi_comm_in(rank_traced, __func__, new simgrid::instr::NoOpTIData("finalize"));
- if
(simgrid::config::get_value<bool>("smpi/finalization-barrier
"))
+ if
(simgrid::config::get_value<bool>("smpi/barrier-finalization
"))
simgrid::smpi::colls::barrier(MPI_COMM_WORLD);
smpi_process()->finalize();
simgrid::smpi::colls::barrier(MPI_COMM_WORLD);
smpi_process()->finalize();
@@
-88,7
+93,7
@@
int PMPI_Get_version (int *version,int *subversion){
}
int PMPI_Get_library_version (char *version,int *len){
}
int PMPI_Get_library_version (char *version,int *len){
- snprintf(version, MPI_MAX_LIBRARY_VERSION_STRING, "SMPI Version %d.%d. Copyright The SimGrid Team 2007-202
1
",
+ snprintf(version, MPI_MAX_LIBRARY_VERSION_STRING, "SMPI Version %d.%d. Copyright The SimGrid Team 2007-202
3
",
SIMGRID_VERSION_MAJOR, SIMGRID_VERSION_MINOR);
*len = std::min(static_cast<int>(strlen(version)), MPI_MAX_LIBRARY_VERSION_STRING);
return MPI_SUCCESS;
SIMGRID_VERSION_MAJOR, SIMGRID_VERSION_MINOR);
*len = std::min(static_cast<int>(strlen(version)), MPI_MAX_LIBRARY_VERSION_STRING);
return MPI_SUCCESS;
@@
-131,14
+136,14
@@
int PMPI_Abort(MPI_Comm comm, int /*errorcode*/)
smpi_bench_end();
CHECK_COMM(1)
XBT_WARN("MPI_Abort was called, something went probably wrong in this simulation ! Killing all processes sharing the same MPI_COMM_WORLD");
smpi_bench_end();
CHECK_COMM(1)
XBT_WARN("MPI_Abort was called, something went probably wrong in this simulation ! Killing all processes sharing the same MPI_COMM_WORLD");
-
smx_actor_t myself = SIMIX_process_
self();
+
auto* myself = simgrid::kernel::actor::ActorImpl::
self();
for (int i = 0; i < comm->size(); i++){
for (int i = 0; i < comm->size(); i++){
-
smx_actor_t actor = simgrid::kernel::actor::ActorImpl::
by_pid(comm->group()->actor(i));
+
auto* actor = simgrid::kernel::EngineImpl::get_instance()->get_actor_
by_pid(comm->group()->actor(i));
if (actor != nullptr && actor != myself)
if (actor != nullptr && actor != myself)
- simgrid::kernel::actor::simcall([actor] { actor->exit(); });
+ simgrid::kernel::actor::simcall
_answered
([actor] { actor->exit(); });
}
// now ourself
}
// now ourself
- simgrid::kernel::actor::simcall([myself] { myself->exit(); });
+ simgrid::kernel::actor::simcall
_answered
([myself] { myself->exit(); });
return MPI_SUCCESS;
}
return MPI_SUCCESS;
}
@@
-147,10
+152,10
@@
double PMPI_Wtime()
return smpi_mpi_wtime();
}
return smpi_mpi_wtime();
}
-extern double sg_
maxmin_precision
;
+extern double sg_
precision_timing
;
double PMPI_Wtick()
{
double PMPI_Wtick()
{
- return sg_
maxmin_precision
;
+ return sg_
precision_timing
;
}
int PMPI_Address(const void* location, MPI_Aint* address)
}
int PMPI_Address(const void* location, MPI_Aint* address)
@@
-183,7
+188,7
@@
MPI_Aint PMPI_Aint_diff(MPI_Aint address, MPI_Aint disp)
int PMPI_Get_processor_name(char *name, int *resultlen)
{
int len = std::min(static_cast<int>(sg_host_self()->get_name().size()), MPI_MAX_PROCESSOR_NAME - 1);
int PMPI_Get_processor_name(char *name, int *resultlen)
{
int len = std::min(static_cast<int>(sg_host_self()->get_name().size()), MPI_MAX_PROCESSOR_NAME - 1);
- s
td::string(sg_host_self()->get_name()
).copy(name, len);
+ s
g_host_self()->get_name(
).copy(name, len);
name[len] = '\0';
*resultlen = len;
name[len] = '\0';
*resultlen = len;
@@
-197,10
+202,9
@@
int PMPI_Get_count(const MPI_Status * status, MPI_Datatype datatype, int *count)
} else if (not datatype->is_valid()) {
return MPI_ERR_TYPE;
} else {
} else if (not datatype->is_valid()) {
return MPI_ERR_TYPE;
} else {
- size_t size = datatype->size();
- if (size == 0) {
+ if (datatype->size() == 0) {
*count = 0;
*count = 0;
- } else if (status->count %
size
!= 0) {
+ } else if (status->count %
datatype->size()
!= 0) {
*count = MPI_UNDEFINED;
} else {
*count = simgrid::smpi::Status::get_count(status, datatype);
*count = MPI_UNDEFINED;
} else {
*count = simgrid::smpi::Status::get_count(status, datatype);