int rank = atoi((*argv)[2]);
index = SIMIX_process_get_PID(proc) -1;
-#ifdef SMPI_F2C
- smpi_current_rank = index;
-#endif
if(!index_to_process_data){
index_to_process_data=(int*)xbt_malloc(SIMIX_process_count()*sizeof(int));
}
*/
void smpi_process_finalize(void)
{
+ // This leads to an explosion of the search graph
+ // which cannot be reduced:
+ if(MC_is_active())
+ return;
+
int index = smpi_process_index();
// wait for all pending asynchronous comms to finish
xbt_barrier_wait(process_data[index_to_process_data[index]]->finalization_barrier);
-
}
/**
}
-#ifdef SMPI_F2C
-int smpi_process_argc(void)
-{
- smpi_process_data_t data = smpi_process_data();
- return data->argc ? *(data->argc) - 1 : 0;
-}
-
-int smpi_process_getarg(integer * index, char *dst, ftnlen len)
-{
- smpi_process_data_t data = smpi_process_data();
- char *arg;
- ftnlen i;
-
- if (!data->argc || !data->argv || *index < 1 || *index >= *(data->argc)) {
- return -1;
- }
- arg = (*data->argv)[*index];
- for (i = 0; i < len && arg[i] != '\0'; i++) {
- dst[i] = arg[i];
- }
- for (; i < len; i++) {
- dst[i] = ' ';
- }
- return 0;
-}
-#endif
-
int smpi_global_size(void)
{
char *value = getenv("SMPI_GLOBAL_SIZE");
return data ? data->index : MPI_UNDEFINED;
}
+int smpi_process_index_of_smx_process(smx_process_t process) {
+ smpi_process_data_t data = SIMIX_process_get_data(process);
+ return data ? data->index : MPI_UNDEFINED;
+}
+
MPI_Comm smpi_process_comm_world(void)
{
smpi_process_data_t data = smpi_process_data();
XBT_INFO("You did not set the power of the host running the simulation. "
"The timings will certainly not be accurate. "
"Use the option \"--cfg=smpi/running_power:<flops>\" to set its value."
- "Check http://simgrid.org/simgrid/latest/doc/options.html#options_smpi_bench for more information. ");
+ "Check http://simgrid.org/simgrid/latest/doc/options.html#options_smpi_bench for more information.");
}
}
+int smpi_enabled(void) {
+ return process_data != NULL;
+}
+
void smpi_global_init(void)
{
int i;
smpi_free_static();
}
-/* Fortran specific stuff */
-/* With smpicc, the following weak symbols are used */
-/* With smpiff, the following weak symbols are replaced by those in libf2c */
-int __attribute__ ((weak)) xargc;
-char ** __attribute__ ((weak)) xargv;
-
#ifndef WIN32
void __attribute__ ((weak)) user_main_()
{
return smpi_main(smpi_simulated_main_, argc, argv);
}
-int __attribute__ ((weak)) MAIN__()
-{
- return smpi_main(smpi_simulated_main_, xargc, xargv);
-};
#endif
static void smpi_init_logs(){
XBT_LOG_CONNECT(smpi_mpi_dt);
XBT_LOG_CONNECT(smpi_pmpi);
XBT_LOG_CONNECT(smpi_replay);
+ XBT_LOG_CONNECT(smpi_rma);
}