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
Chord: use MSG_task_dsend when possible
[simgrid.git]
/
examples
/
msg
/
actions
/
actions.c
diff --git
a/examples/msg/actions/actions.c
b/examples/msg/actions/actions.c
index
0958e56
..
aec65c7
100644
(file)
--- a/
examples/msg/actions/actions.c
+++ b/
examples/msg/actions/actions.c
@@
-12,11
+12,13
@@
#include "simgrid_config.h" /* getline */
#include "instr/instr_private.h"
#include "simgrid_config.h" /* getline */
#include "instr/instr_private.h"
+void SIMIX_ctx_raw_factory_init(smx_context_factory_t *factory);
+
XBT_LOG_NEW_DEFAULT_CATEGORY(actions,
"Messages specific for this msg example");
int communicator_size = 0;
XBT_LOG_NEW_DEFAULT_CATEGORY(actions,
"Messages specific for this msg example");
int communicator_size = 0;
-static void action_Isend(
xbt_dynar_t
action);
+static void action_Isend(
char*const*
action);
typedef struct {
int last_Irecv_sender_id;
typedef struct {
int last_Irecv_sender_id;
@@
-59,24
+61,22
@@
static void asynchronous_cleanup(void) {
}
/* My actions */
}
/* My actions */
-static void action_send(
xbt_dynar_t
action)
+static void action_send(
char*const*
action)
{
char *name = NULL;
char to[250];
{
char *name = NULL;
char to[250];
- c
har *size_str = xbt_dynar_get_as(action, 3, char *)
;
+ c
onst char *size_str = action[3]
;
double size=parse_double(size_str);
double clock = MSG_get_clock(); /* this "call" is free thanks to inlining */
double size=parse_double(size_str);
double clock = MSG_get_clock(); /* this "call" is free thanks to inlining */
- sprintf(to, "%s_%s", MSG_process_get_name(MSG_process_self()),
- xbt_dynar_get_as(action, 2, char *));
- // char *to = xbt_dynar_get_as(action, 2, char *);
+ sprintf(to, "%s_%s", MSG_process_get_name(MSG_process_self()),action[2]);
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
- name = xbt_str_join(action, " ");
+ name = xbt_str_join
_array
(action, " ");
#ifdef HAVE_TRACING
int rank = get_rank(MSG_process_get_name(MSG_process_self()));
#ifdef HAVE_TRACING
int rank = get_rank(MSG_process_get_name(MSG_process_self()));
- int dst_traced = get_rank(
xbt_dynar_get_as(action, 2, char *)
);
+ int dst_traced = get_rank(
action[2]
);
TRACE_smpi_ptp_in(rank, rank, dst_traced, "send");
TRACE_smpi_send(rank, rank, dst_traced);
#endif
TRACE_smpi_ptp_in(rank, rank, dst_traced, "send");
TRACE_smpi_send(rank, rank, dst_traced);
#endif
@@
-100,45
+100,42
@@
static void action_send(xbt_dynar_t action)
asynchronous_cleanup();
}
asynchronous_cleanup();
}
-static void action_Isend(
xbt_dynar_t
action)
+static void action_Isend(
char*const*
action)
{
char to[250];
{
char to[250];
- // char *to = xbt_dynar_get_as(action, 2, char *);
- char *size = xbt_dynar_get_as(action, 3, char *);
+ const char *size = action[3];
double clock = MSG_get_clock();
process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
double clock = MSG_get_clock();
process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
- sprintf(to, "%s_%s", MSG_process_get_name(MSG_process_self()),
- xbt_dynar_get_as(action, 2, char *));
-
+ sprintf(to, "%s_%s", MSG_process_get_name(MSG_process_self()),action[2]);
msg_comm_t comm =
MSG_task_isend( MSG_task_create(to,0,parse_double(size),NULL), to);
xbt_dynar_push(globals->isends,&comm);
DEBUG1("Isend on %s", MSG_process_get_name(MSG_process_self()));
msg_comm_t comm =
MSG_task_isend( MSG_task_create(to,0,parse_double(size),NULL), to);
xbt_dynar_push(globals->isends,&comm);
DEBUG1("Isend on %s", MSG_process_get_name(MSG_process_self()));
- VERB2("%s %f", xbt_str_join(action, " "), MSG_get_clock() - clock);
+ VERB2("%s %f", xbt_str_join
_array
(action, " "), MSG_get_clock() - clock);
asynchronous_cleanup();
}
asynchronous_cleanup();
}
-static void action_recv(
xbt_dynar_t
action)
+static void action_recv(
char*const*
action)
{
char *name = NULL;
char mailbox_name[250];
m_task_t task = NULL;
double clock = MSG_get_clock();
{
char *name = NULL;
char mailbox_name[250];
m_task_t task = NULL;
double clock = MSG_get_clock();
- sprintf(mailbox_name, "%s_%s",
xbt_dynar_get_as(action, 2, char *)
,
+ sprintf(mailbox_name, "%s_%s",
action[2]
,
MSG_process_get_name(MSG_process_self()));
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
MSG_process_get_name(MSG_process_self()));
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
- name = xbt_str_join(action, " ");
+ name = xbt_str_join
_array
(action, " ");
#ifdef HAVE_TRACING
int rank = get_rank(MSG_process_get_name(MSG_process_self()));
#ifdef HAVE_TRACING
int rank = get_rank(MSG_process_get_name(MSG_process_self()));
- int src_traced = get_rank(
xbt_dynar_get_as(action, 2, char *)
);
+ int src_traced = get_rank(
action[2]
);
TRACE_smpi_ptp_in(rank, src_traced, rank, "recv");
#endif
TRACE_smpi_ptp_in(rank, src_traced, rank, "recv");
#endif
@@
-158,7
+155,7
@@
static void action_recv(xbt_dynar_t action)
asynchronous_cleanup();
}
asynchronous_cleanup();
}
-static void action_Irecv(
xbt_dynar_t
action)
+static void action_Irecv(
char*const*
action)
{
char mailbox[250];
double clock = MSG_get_clock();
{
char mailbox[250];
double clock = MSG_get_clock();
@@
-167,14
+164,14
@@
static void action_Irecv(xbt_dynar_t action)
DEBUG1("Irecv on %s", MSG_process_get_name(MSG_process_self()));
#ifdef HAVE_TRACING
int rank = get_rank(MSG_process_get_name(MSG_process_self()));
DEBUG1("Irecv on %s", MSG_process_get_name(MSG_process_self()));
#ifdef HAVE_TRACING
int rank = get_rank(MSG_process_get_name(MSG_process_self()));
- int src_traced = get_rank(
xbt_dynar_get_as(action, 2, char *)
);
+ int src_traced = get_rank(
action[2]
);
globals->last_Irecv_sender_id = src_traced;
MSG_process_set_data(MSG_process_self(), (void *) globals);
TRACE_smpi_ptp_in(rank, src_traced, rank, "Irecv");
#endif
globals->last_Irecv_sender_id = src_traced;
MSG_process_set_data(MSG_process_self(), (void *) globals);
TRACE_smpi_ptp_in(rank, src_traced, rank, "Irecv");
#endif
- sprintf(mailbox, "%s_%s",
xbt_dynar_get_as(action, 2, char *)
,
+ sprintf(mailbox, "%s_%s",
action[2]
,
MSG_process_get_name(MSG_process_self()));
m_task_t t=NULL;
xbt_dynar_push(globals->tasks,&t);
MSG_process_get_name(MSG_process_self()));
m_task_t t=NULL;
xbt_dynar_push(globals->tasks,&t);
@@
-184,7
+181,7
@@
static void action_Irecv(xbt_dynar_t action)
mailbox);
xbt_dynar_push(globals->irecvs,&c);
mailbox);
xbt_dynar_push(globals->irecvs,&c);
- VERB2("%s %f", xbt_str_join(action, " "), MSG_get_clock() - clock);
+ VERB2("%s %f", xbt_str_join
_array
(action, " "), MSG_get_clock() - clock);
#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, src_traced, rank, "Irecv");
#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, src_traced, rank, "Irecv");
@@
-194,7
+191,7
@@
static void action_Irecv(xbt_dynar_t action)
}
}
-static void action_wait(
xbt_dynar_t
action)
+static void action_wait(
char*const*
action)
{
char *name = NULL;
m_task_t task = NULL;
{
char *name = NULL;
m_task_t task = NULL;
@@
-203,10
+200,10
@@
static void action_wait(xbt_dynar_t action)
process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
xbt_assert1(xbt_dynar_length(globals->irecvs),
process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
xbt_assert1(xbt_dynar_length(globals->irecvs),
- "action wait not prece
eded by any irecv: %s", xbt_str_join
(action," "));
+ "action wait not prece
ded by any irecv: %s", xbt_str_join_array
(action," "));
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
- name = xbt_str_join(action, " ");
+ name = xbt_str_join
_array
(action, " ");
#ifdef HAVE_TRACING
process_globals_t counters = (process_globals_t) MSG_process_get_data(MSG_process_self());
int src_traced = counters->last_Irecv_sender_id;
#ifdef HAVE_TRACING
process_globals_t counters = (process_globals_t) MSG_process_get_data(MSG_process_self());
int src_traced = counters->last_Irecv_sender_id;
@@
-232,7
+229,7
@@
static void action_wait(xbt_dynar_t action)
}
/* FIXME: that's a poor man's implementation: we should take the message exchanges into account */
}
/* FIXME: that's a poor man's implementation: we should take the message exchanges into account */
-static void action_barrier(
xbt_dynar_t
action)
+static void action_barrier(
char*const*
action)
{
char *name = NULL;
static smx_mutex_t mutex = NULL;
{
char *name = NULL;
static smx_mutex_t mutex = NULL;
@@
-240,7
+237,7
@@
static void action_barrier(xbt_dynar_t action)
static int processes_arrived_sofar=0;
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
static int processes_arrived_sofar=0;
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
- name = xbt_str_join(action, " ");
+ name = xbt_str_join
_array
(action, " ");
if (mutex == NULL) { // first arriving on the barrier
mutex = SIMIX_req_mutex_init();
if (mutex == NULL) { // first arriving on the barrier
mutex = SIMIX_req_mutex_init();
@@
-272,13
+269,13
@@
static void action_barrier(xbt_dynar_t action)
}
}
-static void action_reduce(
xbt_dynar_t
action)
+static void action_reduce(
char*const*
action)
{
int i;
char *reduce_identifier;
char mailbox[80];
{
int i;
char *reduce_identifier;
char mailbox[80];
- double comm_size = parse_double(
xbt_dynar_get_as(action, 2, char *)
);
- double comp_size = parse_double(
xbt_dynar_get_as(action, 3, char *)
);
+ double comm_size = parse_double(
action[2]
);
+ double comp_size = parse_double(
action[3]
);
m_task_t comp_task = NULL;
const char *process_name;
double clock = MSG_get_clock();
m_task_t comp_task = NULL;
const char *process_name;
double clock = MSG_get_clock();
@@
-322,16
+319,16
@@
static void action_reduce(xbt_dynar_t action)
mailbox);
}
mailbox);
}
- VERB2("%s %f", xbt_str_join(action, " "), MSG_get_clock() - clock);
+ VERB2("%s %f", xbt_str_join
_array
(action, " "), MSG_get_clock() - clock);
free(reduce_identifier);
}
free(reduce_identifier);
}
-static void action_bcast(
xbt_dynar_t
action)
+static void action_bcast(
char*const*
action)
{
int i;
char *bcast_identifier;
char mailbox[80];
{
int i;
char *bcast_identifier;
char mailbox[80];
- double comm_size = parse_double(
xbt_dynar_get_as(action, 2, char *)
);
+ double comm_size = parse_double(
action[2]
);
m_task_t task = NULL;
const char *process_name;
double clock = MSG_get_clock();
m_task_t task = NULL;
const char *process_name;
double clock = MSG_get_clock();
@@
-371,19
+368,19
@@
static void action_bcast(xbt_dynar_t action)
DEBUG2("%s: %s has received", bcast_identifier, process_name);
}
DEBUG2("%s: %s has received", bcast_identifier, process_name);
}
- VERB2("%s %f", xbt_str_join(action, " "), MSG_get_clock() - clock);
+ VERB2("%s %f", xbt_str_join
_array
(action, " "), MSG_get_clock() - clock);
free(bcast_identifier);
}
free(bcast_identifier);
}
-static void action_sleep(
xbt_dynar_t
action)
+static void action_sleep(
char*const*
action)
{
char *name = NULL;
{
char *name = NULL;
- c
har *duration = xbt_dynar_get_as(action, 2, char *)
;
+ c
onst char *duration = action[2]
;
double clock = MSG_get_clock();
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
double clock = MSG_get_clock();
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
- name = xbt_str_join(action, " ");
+ name = xbt_str_join
_array
(action, " ");
DEBUG1("Entering %s", name);
MSG_process_sleep(parse_double(duration));
DEBUG1("Entering %s", name);
MSG_process_sleep(parse_double(duration));
@@
-393,12
+390,12
@@
static void action_sleep(xbt_dynar_t action)
free(name);
}
free(name);
}
-static void action_allReduce(
xbt_dynar_t
action) {
+static void action_allReduce(
char*const*
action) {
int i;
char *allreduce_identifier;
char mailbox[80];
int i;
char *allreduce_identifier;
char mailbox[80];
- double comm_size = parse_double(
xbt_dynar_get_as(action, 2, char *)
);
- double comp_size = parse_double(
xbt_dynar_get_as(action, 3, char *)
);
+ double comm_size = parse_double(
action[2]
);
+ double comp_size = parse_double(
action[3]
);
m_task_t task = NULL, comp_task = NULL;
const char *process_name;
double clock = MSG_get_clock();
m_task_t task = NULL, comp_task = NULL;
const char *process_name;
double clock = MSG_get_clock();
@@
-461,33
+458,33
@@
static void action_allReduce(xbt_dynar_t action) {
DEBUG2("%s: %s has received", allreduce_identifier, process_name);
}
DEBUG2("%s: %s has received", allreduce_identifier, process_name);
}
- VERB2("%s %f", xbt_str_join(action, " "), MSG_get_clock() - clock);
+ VERB2("%s %f", xbt_str_join
_array
(action, " "), MSG_get_clock() - clock);
free(allreduce_identifier);
}
free(allreduce_identifier);
}
-static void action_comm_size(
xbt_dynar_t
action)
+static void action_comm_size(
char*const*
action)
{
char *name = NULL;
{
char *name = NULL;
- c
har *size = xbt_dynar_get_as(action, 2, char *)
;
+ c
onst char *size = action[2]
;
double clock = MSG_get_clock();
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
double clock = MSG_get_clock();
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
- name = xbt_str_join(action, " ");
+ name = xbt_str_join
_array
(action, " ");
communicator_size = parse_double(size);
VERB2("%s %f", name, MSG_get_clock() - clock);
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
free(name);
}
communicator_size = parse_double(size);
VERB2("%s %f", name, MSG_get_clock() - clock);
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
free(name);
}
-static void action_compute(
xbt_dynar_t
action)
+static void action_compute(
char*const*
action)
{
char *name = NULL;
{
char *name = NULL;
- c
har *amout = xbt_dynar_get_as(action, 2, char *)
;
+ c
onst char *amout = action[2]
;
m_task_t task = MSG_task_create(name, parse_double(amout), 0, NULL);
double clock = MSG_get_clock();
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
m_task_t task = MSG_task_create(name, parse_double(amout), 0, NULL);
double clock = MSG_get_clock();
if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose))
- name = xbt_str_join(action, " ");
+ name = xbt_str_join
_array
(action, " ");
DEBUG1("Entering %s", name);
MSG_task_execute(task);
MSG_task_destroy(task);
DEBUG1("Entering %s", name);
MSG_task_execute(task);
MSG_task_destroy(task);
@@
-496,7
+493,7
@@
static void action_compute(xbt_dynar_t action)
free(name);
}
free(name);
}
-static void action_init(
xbt_dynar_t
action)
+static void action_init(
char*const*
action)
{
#ifdef HAVE_TRACING
TRACE_smpi_init(get_rank(MSG_process_get_name(MSG_process_self())));
{
#ifdef HAVE_TRACING
TRACE_smpi_init(get_rank(MSG_process_get_name(MSG_process_self())));
@@
-510,7
+507,7
@@
static void action_init(xbt_dynar_t action)
}
}
-static void action_finalize(
xbt_dynar_t
action)
+static void action_finalize(
char*const*
action)
{
#ifdef HAVE_TRACING
TRACE_smpi_finalize(get_rank(MSG_process_get_name(MSG_process_self())));
{
#ifdef HAVE_TRACING
TRACE_smpi_finalize(get_rank(MSG_process_get_name(MSG_process_self())));
@@
-518,6
+515,8
@@
static void action_finalize(xbt_dynar_t action)
process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
if (globals){
xbt_dynar_free_container(&(globals->isends));
process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self());
if (globals){
xbt_dynar_free_container(&(globals->isends));
+ xbt_dynar_free_container(&(globals->irecvs));
+ xbt_dynar_free_container(&(globals->tasks));
free(globals);
}
}
free(globals);
}
}
@@
-527,6
+526,8
@@
int main(int argc, char *argv[])
{
MSG_error_t res = MSG_OK;
{
MSG_error_t res = MSG_OK;
+ smx_factory_initializer_to_use = SIMIX_ctx_raw_factory_init;
+
/* Check the given arguments */
MSG_global_init(&argc, argv);
if (argc < 3) {
/* Check the given arguments */
MSG_global_init(&argc, argv);
if (argc < 3) {