Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Added a smpi_usleep function and usleep -> smpi_usleep macro
authorHenri Casanova <henric@hawaii.edu>
Thu, 8 May 2014 03:07:13 +0000 (17:07 -1000)
committerHenri Casanova <henric@hawaii.edu>
Thu, 8 May 2014 03:07:13 +0000 (17:07 -1000)
include/smpi/smpi.h
src/smpi/smpi_bench.c

index c520980..f9ebc00 100644 (file)
@@ -7,6 +7,7 @@
 #ifndef SMPI_H
 #define SMPI_H
 
+#include <unistd.h>
 #include <stddef.h>
 #include <sys/time.h>
 #include <xbt/misc.h>
@@ -708,6 +709,7 @@ XBT_PUBLIC(int) smpi_get_host_nb_pstates(void);
 XBT_PUBLIC(void) smpi_set_host_power_peak_at(int pstate_index);
 XBT_PUBLIC(double) smpi_get_host_consumed_energy(void);
 
+XBT_PUBLIC(int) smpi_usleep(useconds_t usecs);
 XBT_PUBLIC(unsigned int) smpi_sleep(unsigned int secs);
 XBT_PUBLIC(int) smpi_gettimeofday(struct timeval *tv, void* tz);
 XBT_PUBLIC(unsigned long long) smpi_rastro_resolution (void);
index 2cb5bb2..15fdb67 100644 (file)
@@ -227,6 +227,25 @@ unsigned int smpi_sleep(unsigned int secs)
   return secs;
 }
 
+int smpi_usleep(useconds_t usecs)
+{
+  smx_action_t action;
+
+  smpi_bench_end();
+
+  double flops = (double) (usecs/1000000.0)*simcall_host_get_speed(SIMIX_host_self());
+  XBT_DEBUG("Sleep for: %f flops", flops);
+  action = simcall_host_execute("computation", SIMIX_host_self(), flops, 1, 0, 0);
+  #ifdef HAVE_TRACING
+    simcall_set_category (action, TRACE_internal_smpi_get_category());
+  #endif
+  simcall_host_execution_wait(action);
+
+  smpi_bench_begin();
+  return 0;
+}
+
+
 int smpi_gettimeofday(struct timeval *tv, void* tz)
 {
   double now;