MPI_Datatype datatype, MPI_Op op));
MPI_CALL(XBT_PUBLIC(int), MPI_Win_free,( MPI_Win* win));
-
MPI_CALL(XBT_PUBLIC(int), MPI_Win_create,( void *base, MPI_Aint size, int disp_unit, MPI_Info info, MPI_Comm comm, MPI_Win *win));
-
+MPI_CALL(XBT_PUBLIC(int), MPI_Win_set_name,(MPI_Win win, char * name));
+MPI_CALL(XBT_PUBLIC(int), MPI_Win_get_name,(MPI_Win win, char * name, int* len));
MPI_CALL(XBT_PUBLIC(int), MPI_Win_fence,( int assert, MPI_Win win));
MPI_CALL(XBT_PUBLIC(int), MPI_Get,( void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank,
MPI_Win smpi_mpi_win_create( void *base, MPI_Aint size, int disp_unit, MPI_Info info, MPI_Comm comm);
+void smpi_mpi_win_get_name(MPI_Win win, char* name, int* length);
+void smpi_mpi_win_set_name(MPI_Win win, char* name);
+
int smpi_mpi_win_fence( int assert, MPI_Win win);
int smpi_mpi_get( void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank,
void mpi_win_fence_( int* assert, int* win, int* ierr);
void mpi_win_free_( int* win, int* ierr);
void mpi_win_create_( int *base, MPI_Aint* size, int* disp_unit, int* info, int* comm, int *win, int* ierr);
+void mpi_win_set_name_ (int* win, char * name, int* ierr);
+void mpi_win_get_name_ (int* win, char * name, int* len, int* ierr);
void mpi_info_create_( int *info, int* ierr);
void mpi_info_set_( int *info, char *key, char *value, int* ierr);
void mpi_info_free_(int* info, int* ierr);
}
}
+void mpi_win_set_name_ (int* win, char * name, int* ierr){
+
+ *ierr = MPI_Win_set_name(get_win(*win), name);
+}
+
+void mpi_win_get_name_ (int* win, char * name, int* len, int* ierr){
+
+ *ierr = MPI_Win_get_name(get_win(*win),name,len);
+}
+
void mpi_info_create_( int *info, int* ierr){
*ierr = MPI_Info_create( (MPI_Info *)info);
}
return PMPI_Win_create( base, size, disp_unit, info, comm,win);
}
+int MPI_Win_set_name(MPI_Win win, char * name)
+{
+ return PMPI_Win_set_name(win, name);
+}
+
+int MPI_Win_get_name(MPI_Win win, char * name, int* len)
+{
+ return PMPI_Win_get_name(win,name,len);
+}
+
int MPI_Info_create( MPI_Info *info){
return PMPI_Info_create( info);
}
return retval;
}
+int PMPI_Win_set_name(MPI_Win win, char * name)
+{
+ int retval = 0;
+ if (win == MPI_WIN_NULL) {
+ retval = MPI_ERR_TYPE;
+ } else if (name == NULL) {
+ retval = MPI_ERR_ARG;
+ } else {
+ smpi_mpi_win_set_name(win, name);
+ retval = MPI_SUCCESS;
+ }
+ return retval;
+}
+
+int PMPI_Win_get_name(MPI_Win win, char * name, int* len)
+{
+ int retval = 0;
+
+ if (win == MPI_WIN_NULL) {
+ retval = MPI_ERR_TYPE;
+ } else if (name == NULL) {
+ retval = MPI_ERR_ARG;
+ } else {
+ smpi_mpi_win_get_name(win, name, len);
+ retval = MPI_SUCCESS;
+ }
+ return retval;
+}
+
int PMPI_Win_fence( int assert, MPI_Win win){
int retval = 0;
xbt_dynar_t requests;
xbt_bar_t bar;
MPI_Win* connected_wins;
+ char* name;
} s_smpi_mpi_win_t;
win->assert = 0;
//win->info = info;
win->comm = comm;
+ win->name = NULL;
win->requests = xbt_dynar_new(sizeof(MPI_Request), NULL);
win->connected_wins = xbt_malloc0(comm_size*sizeof(MPI_Win));
win->connected_wins[rank] = win;
xbt_barrier_wait((*win)->bar);
xbt_dynar_free(&(*win)->requests);
xbt_free((*win)->connected_wins);
+ if ((*win)->name != NULL){
+ xbt_free((*win)->name);
+ }
xbt_free(*win);
win = MPI_WIN_NULL;
return MPI_SUCCESS;
}
+void smpi_mpi_win_get_name(MPI_Win win, char* name, int* length){
+ *length = strlen(win->name);
+ strcpy(name, win->name);
+}
+
+void smpi_mpi_win_set_name(MPI_Win win, char* name){
+ win->name = strdup(name);;
+}
+
int smpi_mpi_win_fence( int assert, MPI_Win win){
# add_executable(winattrf winattrf.f)
# add_executable(c2f2cwinf c2f2cwinf.f c2f2cwin.c)
add_executable(wingetf wingetf.f)
-# add_executable(winnamef winnamef.f)
+ add_executable(winnamef winnamef.f)
# add_executable(winscale1f winscale1f.f)
# add_executable(winscale2f winscale2f.f)
#target_link_libraries(winattr2f simgrid mtest_f77)
#target_link_libraries(winattrf simgrid mtest_f77)
target_link_libraries(wingetf simgrid mtest_f77)
-#target_link_libraries(winnamef simgrid mtest_f77)
+target_link_libraries(winnamef simgrid mtest_f77)
#target_link_libraries(winscale1f simgrid mtest_f77)
#target_link_libraries(winscale2f simgrid mtest_f77)
# add_executable(winattrf90 winattrf90.f90)
# add_executable(c2f2cwinf90 c2f2cwinf90.f90 c2f2cwin.c)
add_executable(wingetf90 wingetf90.f90)
-# add_executable(winnamef90 winnamef90.f90)
+ add_executable(winnamef90 winnamef90.f90)
# add_executable(winscale1f90 winscale1f90.f90)
# add_executable(winscale2f90 winscale2f90.f90)
#target_link_libraries(winattr2f90 simgrid mtest_f90)
#target_link_libraries(winattrf90 simgrid mtest_f90)
target_link_libraries(wingetf90 simgrid mtest_f90)
-#target_link_libraries(winnamef90 simgrid mtest_f90)
+target_link_libraries(winnamef90 simgrid mtest_f90)
#target_link_libraries(winscale1f90 simgrid mtest_f90)
#target_link_libraries(winscale2f90 simgrid mtest_f90)
-#Needs Win set name, win_get_name needed
+#Needs win_create_keyval win_set_attr, win_get_attr
#winname 2
allocmem 2
putfence1 4