xbt_dict_free(&calls);
}
+XBT_PUBLIC(void) smpi_execute_flops_(double *flops);
+void smpi_execute_flops_(double *flops)
+{
+ smpi_execute_flops(*flops);
+}
+
+XBT_PUBLIC(void) smpi_execute_(double *duration);
+void smpi_execute_(double *duration)
+{
+ smpi_execute(*duration);
+}
+
void smpi_execute_flops(double flops) {
smx_action_t action;
smx_host_t host;
host = SIMIX_host_self();
- XBT_DEBUG("Handle real computation time: %g flops", flops);
- action = simcall_host_execute("computation", host, flops, 1);
+ XBT_DEBUG("Handle real computation time: %f flops", flops);
+ action = simcall_host_execute("computation", host, flops, 1, 0, 0);
#ifdef HAVE_TRACING
simcall_set_category (action, TRACE_internal_smpi_get_category());
#endif
simcall_host_execution_wait(action);
}
-static void smpi_execute(double duration)
+void smpi_execute(double duration)
{
if (duration >= smpi_cpu_threshold) {
XBT_DEBUG("Sleep for %g to handle real computation time", duration);
double flops = (double) secs*simcall_host_get_speed(SIMIX_host_self());
XBT_DEBUG("Sleep for: %f flops", flops);
- action = simcall_host_execute("computation", SIMIX_host_self(), flops, 1);
+ 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
}
#endif
-int smpi_shared_known_call(const char* func, const char* input) {
- char* loc = bprintf("%s:%s", func, input);
- xbt_ex_t ex;
- int known;
+int smpi_shared_known_call(const char* func, const char* input)
+{
+ char* loc = bprintf("%s:%s", func, input);
+ xbt_ex_t ex;
+ int known = 0;
- if(!calls) {
- calls = xbt_dict_new_homogeneous(NULL);
- }
- TRY {
- xbt_dict_get(calls, loc); /* Succeed or throw */
- known = 1;
- }
- CATCH(ex) {
- if(ex.category == not_found_error) {
- known = 0;
- xbt_ex_free(ex);
- } else {
- RETHROW;
- }
- }
- free(loc);
- return known;
+ if (!calls) {
+ calls = xbt_dict_new_homogeneous(NULL);
+ }
+ TRY {
+ xbt_dict_get(calls, loc); /* Succeed or throw */
+ known = 1;
+ }
+ TRY_CLEANUP {
+ xbt_free(loc);
+ }
+ CATCH(ex) {
+ if (ex.category != not_found_error)
+ RETHROW;
+ xbt_ex_free(ex);
+ }
+ return known;
}
void* smpi_shared_get_call(const char* func, const char* input) {