X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ea74f5d95928a521a588737e81f1de94eef25d19..1b211507e0c2abe5f2b7fbe56988af46d3189b51:/include/smpi/smpi.h diff --git a/include/smpi/smpi.h b/include/smpi/smpi.h index e110d697ae..d13615cea2 100644 --- a/include/smpi/smpi.h +++ b/include/smpi/smpi.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2022. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2023. 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. */ @@ -21,15 +21,10 @@ #include #endif -#ifdef _WIN32 -#define MPI_CALL(type, name, args) \ - type name args; \ - type _XBT_CONCAT(P, name) args -#else #define MPI_CALL(type, name, args) \ type name args __attribute__((weak)); \ - type _XBT_CONCAT(P, name) args -#endif + type _XBT_CONCAT(P, name) \ + args SG_BEGIN_DECL #define MPI_THREAD_SINGLE 0 @@ -239,15 +234,11 @@ typedef SMPI_Info* MPI_Info; #define MPI_STATUSES_IGNORE ((MPI_Status*)NULL) #define MPI_STATUS_SIZE 5 -#if !defined(DLL_EXPORT) #if defined(c_plusplus) || defined(__cplusplus) #define SMPI_PREDEFINED_POINTER(type, internal) (static_cast (static_cast (&(internal)))) #else #define SMPI_PREDEFINED_POINTER(type, internal) ((type) ((void *) &(internal))) #endif -#else -#define SMPI_PREDEFINED_POINTER(type, internal) ((type) &(internal)) -#endif extern SMPI_Datatype smpi_MPI_DATATYPE_NULL; extern SMPI_Datatype smpi_MPI_CHAR; @@ -1138,7 +1129,6 @@ MPI_CALL(XBT_PUBLIC int, MPI_Status_c2f, (MPI_Status *c_status, MPI_Fint *f_stat //FIXME: End of all the not yet implemented stuff // smpi functions -XBT_PUBLIC int smpi_global_size(); XBT_PUBLIC MPI_Comm smpi_process_comm_self(); XBT_PUBLIC MPI_Info smpi_process_info_env(); XBT_PUBLIC void* smpi_process_get_user_data(); @@ -1155,13 +1145,13 @@ XBT_PUBLIC void smpi_bench_end(); XBT_PUBLIC unsigned long long smpi_rastro_resolution(); XBT_PUBLIC unsigned long long smpi_rastro_timestamp(); -XBT_PUBLIC void smpi_sample_1(int global, const char* file, const char* tag, int iters, double threshold); -XBT_PUBLIC int smpi_sample_2(int global, const char* file, const char* tag, int iter_count); -XBT_PUBLIC void smpi_sample_3(int global, const char* file, const char* tag); +XBT_PUBLIC int smpi_sample_cond(int global, const char* file, const char* tag, int iters, double threshold, + int iter_count); +XBT_PUBLIC void smpi_sample_iter(int global, const char* file, const char* tag); XBT_PUBLIC int smpi_sample_exit(int global, const char* file, const char* tag, int iter_count); /** * Need a public setter for SMPI copy_callback function, so users can define - * their own while still using default SIMIX_copy_callback for S4U copies. + * their own while still using default copy callback for S4U copies. */ XBT_PUBLIC void smpi_comm_set_copy_data_callback(void (*callback)(smx_activity_t, void*, size_t)); @@ -1182,8 +1172,8 @@ XBT_PUBLIC void smpi_trace_set_call_location__(const char* file, const int* line #define SMPI_CTAG_NAME(line) SMPI_CTAG_NAME1(line) #define SMPI_SAMPLE_LOOP(loop_init, loop_end, loop_iter, global, iters, thres, tag) \ - char SMPI_CTAG_NAME(__LINE__) [132]; \ - snprintf( SMPI_CTAG_NAME(__LINE__), 132, "%s%d", tag, __LINE__); \ + char SMPI_CTAG_NAME(__LINE__)[132]; \ + snprintf(SMPI_CTAG_NAME(__LINE__), 132, "%s%d", tag, __LINE__); \ int SMPI_ITER_NAME(__LINE__) = 0; \ { \ loop_init; \ @@ -1192,11 +1182,11 @@ XBT_PUBLIC void smpi_trace_set_call_location__(const char* file, const int* line (loop_iter); \ } \ } \ - for ( loop_init; \ - (loop_end) ? (smpi_sample_1((global), __FILE__, SMPI_CTAG_NAME(__LINE__), (iters), (thres)) \ - , (smpi_sample_2((global), __FILE__, SMPI_CTAG_NAME(__LINE__), SMPI_ITER_NAME(__LINE__)))) \ - : smpi_sample_exit((global), __FILE__, SMPI_CTAG_NAME(__LINE__), SMPI_ITER_NAME(__LINE__)); \ - smpi_sample_3((global), __FILE__, SMPI_CTAG_NAME(__LINE__)), (loop_iter) ) + for (loop_init; \ + (loop_end) ? smpi_sample_cond((global), __FILE__, SMPI_CTAG_NAME(__LINE__), (iters), (thres), \ + SMPI_ITER_NAME(__LINE__)) \ + : smpi_sample_exit((global), __FILE__, SMPI_CTAG_NAME(__LINE__), SMPI_ITER_NAME(__LINE__)); \ + smpi_sample_iter((global), __FILE__, SMPI_CTAG_NAME(__LINE__)), (loop_iter)) #define SMPI_SAMPLE_LOCAL(loop_init, loop_end, loop_iter, iters, thres) \ SMPI_SAMPLE_LOOP(loop_init, (loop_end), (loop_iter), 0, (iters), (thres), "") @@ -1242,8 +1232,14 @@ XBT_PUBLIC void SMPI_thread_create(); SG_END_DECL -/* C++ declarations for shared_malloc and default copy buffer callback */ #ifdef __cplusplus +XBT_PUBLIC void SMPI_app_instance_start(const char* name, std::function const& code, + std::vector const& hosts); + +/* This version without parameter is nice to use with SMPI_app_instance_start() */ +XBT_PUBLIC void MPI_Init(); + +/* C++ declarations for shared_malloc and default copy buffer callback */ XBT_PUBLIC int smpi_is_shared(const void* ptr, std::vector>& private_blocks, size_t* offset); std::vector> shift_and_frame_private_blocks(const std::vector>& vec,