X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/767a7a537b2ac742705d23b8dcb25d64cd36a2ee..8a67f74657d886d80a3512beb8b9b522fd3e9d13:/src/smpi/smpi_pmpi.cpp diff --git a/src/smpi/smpi_pmpi.cpp b/src/smpi/smpi_pmpi.cpp index 65389eb29c..729c51a3fd 100644 --- a/src/smpi/smpi_pmpi.cpp +++ b/src/smpi/smpi_pmpi.cpp @@ -159,7 +159,7 @@ int PMPI_Type_free(MPI_Datatype * datatype) if (*datatype == MPI_DATATYPE_NULL) { retval = MPI_ERR_ARG; } else { - smpi_datatype_free(datatype); + smpi_datatype_unuse(*datatype); retval = MPI_SUCCESS; } return retval; @@ -718,7 +718,7 @@ int PMPI_Comm_group(MPI_Comm comm, MPI_Group * group) } else { *group = smpi_comm_group(comm); if(*group!= smpi_comm_group(MPI_COMM_WORLD) && *group != MPI_GROUP_NULL - && *group != smpi_comm_group(MPI_COMM_SELF) && *group != MPI_GROUP_EMPTY) + && *group != MPI_GROUP_EMPTY) smpi_group_use(*group); retval = MPI_SUCCESS; } @@ -775,7 +775,7 @@ int PMPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm * newcomm) *newcomm= MPI_COMM_NULL; retval = MPI_SUCCESS; }else{ - + smpi_group_use(group); *newcomm = smpi_comm_new(group, NULL); retval = MPI_SUCCESS; } @@ -1494,11 +1494,14 @@ int PMPI_Waitany(int count, MPI_Request requests[], int *index, MPI_Status * sta smpi_bench_end(); //save requests information for tracing int i; - int *srcs = xbt_new0(int, count); - int *dsts = xbt_new0(int, count); - int *recvs = xbt_new0(int, count); - MPI_Comm *comms = xbt_new0(MPI_Comm, count); - + int *srcs = NULL, *dsts = NULL, *recvs = NULL; + MPI_Comm* comms = NULL; + if(count>0){ + srcs = xbt_new0(int, count); + dsts = xbt_new0(int, count); + recvs = xbt_new0(int, count); + comms = xbt_new0(MPI_Comm, count); + } for (i = 0; i < count; i++) { MPI_Request req = requests[i]; //already received requests are no longer valid if (req) { @@ -1651,11 +1654,11 @@ int PMPI_Bcast(void *buf, int count, MPI_Datatype datatype, int root, MPI_Comm c dt_size_send = smpi_datatype_size(datatype); extra->send_size = count*dt_size_send; TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra); - + if(smpi_comm_size(comm)>1) mpi_coll_bcast_fun(buf, count, datatype, root, comm); - retval = MPI_SUCCESS; + retval = MPI_SUCCESS; - TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__); + TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__); } smpi_bench_begin(); @@ -2635,7 +2638,7 @@ int PMPI_Type_create_resized(MPI_Datatype oldtype,MPI_Aint lb, MPI_Aint extent, MPI_Datatype types[3] = { MPI_LB, oldtype, MPI_UB }; s_smpi_mpi_struct_t* subtype = smpi_datatype_struct_create( blocks, disps, 3, types); - smpi_datatype_create(newtype,oldtype->size, lb, lb + extent, 1 , subtype, DT_FLAG_VECTOR); + smpi_datatype_create(newtype,oldtype->size, lb, lb + extent, sizeof(s_smpi_mpi_struct_t) , subtype, DT_FLAG_VECTOR); (*newtype)->flags &= ~DT_FLAG_COMMITED; return MPI_SUCCESS; @@ -2702,6 +2705,7 @@ int PMPI_Win_get_group(MPI_Win win, MPI_Group * group){ retval = MPI_ERR_WIN; }else { smpi_mpi_win_get_group(win, group); + smpi_group_use(*group); } return retval; } @@ -3163,6 +3167,7 @@ int PMPI_Info_get(MPI_Info info,char *key,int valuelen, char *value, int *flag){ return MPI_ERR_INFO_VALUE; char* tmpvalue=(char*)xbt_dict_get_or_null(info->info_dict, key); if(tmpvalue){ + memset(value, 0, valuelen); memcpy(value,tmpvalue, (strlen(tmpvalue) + 1 < static_cast(valuelen)) ? strlen(tmpvalue) + 1 : valuelen); *flag=true; } @@ -3174,6 +3179,7 @@ int PMPI_Info_dup(MPI_Info info, MPI_Info *newinfo){ return MPI_ERR_ARG; *newinfo = xbt_new(s_smpi_mpi_info_t, 1); (*newinfo)->info_dict= xbt_dict_new_homogeneous(NULL); + (*newinfo)->refcount=1; xbt_dict_cursor_t cursor = NULL; int *key; void* data; @@ -3213,7 +3219,8 @@ int PMPI_Info_get_nthkey( MPI_Info info, int n, char *key){ int num=0; xbt_dict_foreach(info->info_dict,cursor,keyn,data){ if(num==n){ - strcpy(key,keyn); + strcpy(key,keyn); + xbt_dict_cursor_free(&cursor); return MPI_SUCCESS; } num++; @@ -3223,7 +3230,7 @@ int PMPI_Info_get_nthkey( MPI_Info info, int n, char *key){ int PMPI_Info_get_valuelen( MPI_Info info, char *key, int *valuelen, int *flag){ *flag=false; - if (info == NULL || key == NULL || valuelen==NULL || *valuelen <0) + if (info == NULL || key == NULL || valuelen==NULL) return MPI_ERR_ARG; char* tmpvalue=(char*)xbt_dict_get_or_null(info->info_dict, key); if(tmpvalue){ @@ -3266,436 +3273,3 @@ int PMPI_Pack_size(int incount, MPI_Datatype datatype, MPI_Comm comm, int* size) return MPI_SUCCESS; } - -/* The following calls are not yet implemented and will fail at runtime. */ -/* Once implemented, please move them above this notice. */ - -#define NOT_YET_IMPLEMENTED { \ - XBT_WARN("Not yet implemented : %s. Please contact the Simgrid team if support is needed", __FUNCTION__); \ - return MPI_SUCCESS; \ - } - -MPI_Errhandler PMPI_Errhandler_f2c(MPI_Fint errhandler){ - NOT_YET_IMPLEMENTED -} - -MPI_Fint PMPI_Errhandler_c2f(MPI_Errhandler errhandler){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Cart_map(MPI_Comm comm_old, int ndims, int* dims, int* periods, int* newrank) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Graph_create(MPI_Comm comm_old, int nnodes, int* index, int* edges, int reorder, MPI_Comm* comm_graph) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Graph_get(MPI_Comm comm, int maxindex, int maxedges, int* index, int* edges) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Graph_map(MPI_Comm comm_old, int nnodes, int* index, int* edges, int* newrank) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Graph_neighbors(MPI_Comm comm, int rank, int maxneighbors, int* neighbors) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Graph_neighbors_count(MPI_Comm comm, int rank, int* nneighbors) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Graphdims_get(MPI_Comm comm, int* nnodes, int* nedges) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Topo_test(MPI_Comm comm, int* top_type) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Errhandler_create(MPI_Handler_function* function, MPI_Errhandler* errhandler) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Errhandler_free(MPI_Errhandler* errhandler) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Errhandler_get(MPI_Comm comm, MPI_Errhandler* errhandler) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Error_string(int errorcode, char* string, int* resultlen) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Errhandler_set(MPI_Comm comm, MPI_Errhandler errhandler) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_set_errhandler(MPI_Comm comm, MPI_Errhandler errhandler) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Win_set_errhandler(MPI_Win win, MPI_Errhandler errhandler) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_get_errhandler(MPI_Comm comm, MPI_Errhandler* errhandler) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Cancel(MPI_Request* request) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Buffer_attach(void* buffer, int size) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Buffer_detach(void* buffer, int* size) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_test_inter(MPI_Comm comm, int* flag) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Pcontrol(const int level ) -{ - NOT_YET_IMPLEMENTED -} - -int PMPI_Intercomm_create(MPI_Comm local_comm, int local_leader, MPI_Comm peer_comm, int remote_leader, int tag, - MPI_Comm* comm_out) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Intercomm_merge(MPI_Comm comm, int high, MPI_Comm* comm_out) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Bsend(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Bsend_init(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, - MPI_Request* request) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Ibsend(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request* request) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_remote_group(MPI_Comm comm, MPI_Group* group) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_remote_size(MPI_Comm comm, int* size) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Rsend(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Rsend_init(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, - MPI_Request* request) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Irsend(void* buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request* request) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Test_cancelled(MPI_Status* status, int* flag) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Pack_external_size(char *datarep, int incount, MPI_Datatype datatype, MPI_Aint *size){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Pack_external(char *datarep, void *inbuf, int incount, MPI_Datatype datatype, void *outbuf, MPI_Aint outcount, - MPI_Aint *position){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Unpack_external(char *datarep, void *inbuf, MPI_Aint insize, MPI_Aint *position, void *outbuf, int outcount, - MPI_Datatype datatype){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Get_elements(MPI_Status* status, MPI_Datatype datatype, int* elements) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Type_get_envelope(MPI_Datatype datatype, int *num_integers, int *num_addresses, int *num_datatypes, - int *combiner){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Type_get_contents(MPI_Datatype datatype, int max_integers, int max_addresses, int max_datatypes, - int* array_of_integers, MPI_Aint* array_of_addresses, MPI_Datatype* array_of_datatypes){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Type_create_darray(int size, int rank, int ndims, int* array_of_gsizes, int* array_of_distribs, - int* array_of_dargs, int* array_of_psizes,int order, MPI_Datatype oldtype, - MPI_Datatype *newtype) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Type_create_subarray(int ndims,int *array_of_sizes, int *array_of_subsizes, int *array_of_starts, int order, - MPI_Datatype oldtype, MPI_Datatype *newtype){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Type_match_size(int typeclass,int size,MPI_Datatype *datatype){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Alltoallw( void *sendbuf, int *sendcnts, int *sdispls, MPI_Datatype *sendtypes, - void *recvbuf, int *recvcnts, int *rdispls, MPI_Datatype *recvtypes, MPI_Comm comm){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_set_name(MPI_Comm comm, char* name){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_dup_with_info(MPI_Comm comm, MPI_Info info, MPI_Comm * newcomm){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_split_type(MPI_Comm comm, int split_type, int key, MPI_Info info, MPI_Comm *newcomm){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_set_info (MPI_Comm comm, MPI_Info info){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_get_info (MPI_Comm comm, MPI_Info* info){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_create_errhandler( MPI_Comm_errhandler_fn *function, MPI_Errhandler *errhandler){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Add_error_class( int *errorclass){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Add_error_code( int errorclass, int *errorcode){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Add_error_string( int errorcode, char *string){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_call_errhandler(MPI_Comm comm,int errorcode){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Request_get_status( MPI_Request request, int *flag, MPI_Status *status){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Grequest_start(MPI_Grequest_query_function *query_fn, MPI_Grequest_free_function *free_fn, - MPI_Grequest_cancel_function *cancel_fn, void *extra_state, MPI_Request *request){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Grequest_complete( MPI_Request request){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Status_set_cancelled(MPI_Status *status,int flag){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Status_set_elements( MPI_Status *status, MPI_Datatype datatype, int count){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_connect( char *port_name, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *newcomm){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Publish_name( char *service_name, MPI_Info info, char *port_name){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Unpublish_name( char *service_name, MPI_Info info, char *port_name){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Lookup_name( char *service_name, MPI_Info info, char *port_name){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_join( int fd, MPI_Comm *intercomm){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Open_port( MPI_Info info, char *port_name){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Close_port(char *port_name){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_accept( char *port_name, MPI_Info info, int root, MPI_Comm comm, MPI_Comm *newcomm){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_spawn(char *command, char **argv, int maxprocs, MPI_Info info, int root, MPI_Comm comm, - MPI_Comm *intercomm, int* array_of_errcodes){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_spawn_multiple( int count, char **array_of_commands, char*** array_of_argv, - int* array_of_maxprocs, MPI_Info* array_of_info, int root, - MPI_Comm comm, MPI_Comm *intercomm, int* array_of_errcodes){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Comm_get_parent( MPI_Comm *parent){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Win_lock(int lock_type, int rank, int assert, MPI_Win win) { - NOT_YET_IMPLEMENTED -} - -int PMPI_Win_test(MPI_Win win, int *flag){ - NOT_YET_IMPLEMENTED -} - -int PMPI_Win_unlock(int rank, MPI_Win win){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_get_errhandler (MPI_File file, MPI_Errhandler *errhandler){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_set_errhandler(MPI_File file, MPI_Errhandler errhandler){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_open(MPI_Comm comm, const char *filename, int amode, MPI_Info info, MPI_File *fh){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_close(MPI_File *fh){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_delete(const char *filename, MPI_Info info){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_set_size(MPI_File fh, MPI_Offset size){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_get_size(MPI_File fh, MPI_Offset *size){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_set_view(MPI_File fh, MPI_Offset disp, MPI_Datatype etype, MPI_Datatype filetype, const char *datarep, MPI_Info info){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_get_view(MPI_File fh, MPI_Offset *disp, MPI_Datatype *etype, MPI_Datatype *filetype, char *datarep){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_read_at(MPI_File fh, MPI_Offset offset, void *buf, int count, MPI_Datatype datatype, MPI_Status *status){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_read_at_all(MPI_File fh, MPI_Offset offset, void * buf, int count, - MPI_Datatype datatype, MPI_Status *status){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_write_at(MPI_File fh, MPI_Offset offset, const void * buf, int count, - MPI_Datatype datatype, MPI_Status *status){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_write_at_all(MPI_File fh, MPI_Offset offset, const void *buf, int count, MPI_Datatype datatype, MPI_Status *status){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_set_atomicity(MPI_File fh, int flag){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_get_atomicity(MPI_File fh, int *flag){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_sync(MPI_File fh){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_read_at_all_begin(MPI_File fh, MPI_Offset offset, void *buf, int count, - MPI_Datatype datatype){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_read_at_all_end(MPI_File fh, void *buf, MPI_Status *status){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_write_at_all_begin(MPI_File fh, MPI_Offset offset, const void *buf, int count,MPI_Datatype datatype){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_write_at_all_end(MPI_File fh, const void *buf, MPI_Status *status){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_read_all_begin(MPI_File fh, void *buf, int count, MPI_Datatype datatype){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_read_all_end(MPI_File fh, void *buf, MPI_Status *status){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_write_all_begin(MPI_File fh, const void *buf, int count, MPI_Datatype datatype){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_write_all_end(MPI_File fh, const void *buf, MPI_Status *status){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_read_ordered_begin(MPI_File fh, void *buf, int count, MPI_Datatype datatype){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_read_ordered_end(MPI_File fh, void *buf, MPI_Status *status){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_write_ordered_begin(MPI_File fh, const void *buf, int count, MPI_Datatype datatype){ - NOT_YET_IMPLEMENTED -} - -int PMPI_File_write_ordered_end(MPI_File fh, const void *buf, MPI_Status *status){ - NOT_YET_IMPLEMENTED -} - -