Skip to content

Commit 70b3eb8

Browse files
committed
support MPI-IO large count APIs
1 parent 0ad3933 commit 70b3eb8

File tree

4 files changed

+814
-1
lines changed

4 files changed

+814
-1
lines changed

darshan-runtime/configure.ac

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -770,6 +770,46 @@ if test "x$enable_darshan_runtime" = xyes ; then
770770
[AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])],
771771
[AC_MSG_RESULT(no)]
772772
)
773+
774+
dnl MPI_Count was first introduced in MPI 3.0. Check MPI-IOfunctions that make
775+
dnl use of MPI_Count.
776+
AC_CHECK_FUNCS([MPI_File_read_c \
777+
MPI_File_read_all_c \
778+
MPI_File_read_all_begin_c \
779+
MPI_File_read_at_c \
780+
MPI_File_read_at_all_c \
781+
MPI_File_read_at_all_begin_c \
782+
MPI_File_read_ordered_c \
783+
MPI_File_read_ordered_begin_c \
784+
MPI_File_read_shared_c \
785+
MPI_File_write_c \
786+
MPI_File_write_all_c \
787+
MPI_File_write_all_begin_c \
788+
MPI_File_write_at_c \
789+
MPI_File_write_at_all_c \
790+
MPI_File_write_at_all_begin_c \
791+
MPI_File_write_ordered_c \
792+
MPI_File_write_ordered_begin_c \
793+
MPI_File_write_shared_c \
794+
MPI_File_iread_c \
795+
MPI_File_iread_all_c \
796+
MPI_File_iread_at_c \
797+
MPI_File_iread_at_all_c \
798+
MPI_File_iread_shared_c \
799+
MPI_File_iwrite_c \
800+
MPI_File_iwrite_all_c \
801+
MPI_File_iwrite_at_c \
802+
MPI_File_iwrite_at_all_c \
803+
MPI_File_iwrite_shared_c],
804+
[have_mpi_io_large_count_apis=yes],
805+
[have_mpi_io_large_count_apis=no])
806+
807+
if test "x$have_mpi_io_large_count_apis" = "xyes" ; then
808+
AC_DEFINE(HAVE_MPI_LARGE_COUNT, 1,
809+
[Define if MPI-IO support large count feature])
810+
fi
811+
else
812+
have_mpi_io_large_count_apis=no
773813
fi
774814

775815
#
@@ -833,6 +873,7 @@ else
833873
enable_ldms_mod=no
834874
with_log_path=
835875
with_jobid_env=
876+
have_mpi_io_large_count_apis=no
836877
fi
837878

838879
AC_SUBST(ENABLE_LD_PRELOAD, ["$enable_ld_preload"])
@@ -972,5 +1013,6 @@ if test "x$enable_darshan_runtime" = xyes ; then
9721013
Log file env variables - $__log_path_by_env
9731014
Location of Darshan log files - $__log_path
9741015
Job ID env variable - $with_jobid_env
975-
MPI-IO hints - $__DARSHAN_LOG_HINTS"
1016+
MPI-IO hints - $__DARSHAN_LOG_HINTS
1017+
MPI-IO large-count support - $have_mpi_io_large_count_apis"
9761018
fi

darshan-runtime/lib/darshan-dynamic.h

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,39 @@ DARSHAN_EXTERN_DECL(PMPI_Gather, int, (const void *sendbuf, int sendcount, MPI_D
148148
DARSHAN_EXTERN_DECL(PMPI_Gather, int, (void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm));
149149
#endif
150150
DARSHAN_EXTERN_DECL(PMPI_Barrier, int, (MPI_Comm comm));
151+
152+
/* If MPI-IO supports large-count feature */
153+
#ifdef HAVE_MPI_LARGE_COUNT
154+
DARSHAN_EXTERN_DECL(PMPI_File_iread_all_c, int, (MPI_File fh, void *buf, MPI_Count count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
155+
DARSHAN_EXTERN_DECL(PMPI_File_iread_at_all_c, int, (MPI_File fh, MPI_Offset offset, void *buf, MPI_Count count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
156+
DARSHAN_EXTERN_DECL(PMPI_File_iread_at_c, int, (MPI_File fh, MPI_Offset offset, void *buf, MPI_Count count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
157+
DARSHAN_EXTERN_DECL(PMPI_File_iread_c, int, (MPI_File fh, void *buf, MPI_Count count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
158+
DARSHAN_EXTERN_DECL(PMPI_File_iread_shared_c, int, (MPI_File fh, void *buf, MPI_Count count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
159+
DARSHAN_EXTERN_DECL(PMPI_File_iwrite_all_c, int, (MPI_File fh, const void *buf, MPI_Count count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
160+
DARSHAN_EXTERN_DECL(PMPI_File_iwrite_at_all_c, int, (MPI_File fh, MPI_Offset offset, const void *buf, MPI_Count count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
161+
DARSHAN_EXTERN_DECL(PMPI_File_iwrite_at_c, int, (MPI_File fh, MPI_Offset offset, const void *buf, MPI_Count count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
162+
DARSHAN_EXTERN_DECL(PMPI_File_iwrite_c, int, (MPI_File fh, const void *buf, MPI_Count count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
163+
DARSHAN_EXTERN_DECL(PMPI_File_iwrite_shared_c, int, (MPI_File fh, const void *buf, MPI_Count count, MPI_Datatype datatype, __D_MPI_REQUEST *request));
164+
DARSHAN_EXTERN_DECL(PMPI_File_read_all_begin_c, int, (MPI_File fh, void *buf, MPI_Count count, MPI_Datatype datatype));
165+
DARSHAN_EXTERN_DECL(PMPI_File_read_all_c, int, (MPI_File fh, void *buf, MPI_Count count, MPI_Datatype datatype, MPI_Status *status));
166+
DARSHAN_EXTERN_DECL(PMPI_File_read_at_all_begin_c, int, (MPI_File fh, MPI_Offset offset, void *buf, MPI_Count count, MPI_Datatype datatype));
167+
DARSHAN_EXTERN_DECL(PMPI_File_read_at_all_c, int, (MPI_File fh, MPI_Offset offset, void *buf, MPI_Count count, MPI_Datatype datatype, MPI_Status *status));
168+
DARSHAN_EXTERN_DECL(PMPI_File_read_at_c, int, (MPI_File fh, MPI_Offset offset, void *buf, MPI_Count count, MPI_Datatype datatype, MPI_Status *status));
169+
DARSHAN_EXTERN_DECL(PMPI_File_read_c, int, (MPI_File fh, void *buf, MPI_Count count, MPI_Datatype datatype, MPI_Status *status));
170+
DARSHAN_EXTERN_DECL(PMPI_File_read_ordered_begin_c, int, (MPI_File fh, void *buf, MPI_Count count, MPI_Datatype datatype));
171+
DARSHAN_EXTERN_DECL(PMPI_File_read_ordered_c, int, (MPI_File fh, void *buf, MPI_Count count, MPI_Datatype datatype, MPI_Status *status));
172+
DARSHAN_EXTERN_DECL(PMPI_File_read_shared_c, int, (MPI_File fh, void *buf, MPI_Count count, MPI_Datatype datatype, MPI_Status *status));
173+
DARSHAN_EXTERN_DECL(PMPI_File_write_all_begin_c, int, (MPI_File fh, const void *buf, MPI_Count count, MPI_Datatype datatype));
174+
DARSHAN_EXTERN_DECL(PMPI_File_write_all_c, int, (MPI_File fh, const void *buf, MPI_Count count, MPI_Datatype datatype, MPI_Status *status));
175+
DARSHAN_EXTERN_DECL(PMPI_File_write_at_all_begin_c, int, (MPI_File fh, MPI_Offset offset, const void *buf, MPI_Count count, MPI_Datatype datatype));
176+
DARSHAN_EXTERN_DECL(PMPI_File_write_at_all_c, int, (MPI_File fh, MPI_Offset offset, const void *buf, MPI_Count count, MPI_Datatype datatype, MPI_Status *status));
177+
DARSHAN_EXTERN_DECL(PMPI_File_write_at_c, int, (MPI_File fh, MPI_Offset offset, const void *buf, MPI_Count count, MPI_Datatype datatype, MPI_Status *status));
178+
DARSHAN_EXTERN_DECL(PMPI_File_write_c, int, (MPI_File fh, const void *buf, MPI_Count count, MPI_Datatype datatype, MPI_Status *status));
179+
DARSHAN_EXTERN_DECL(PMPI_File_write_ordered_begin_c, int, (MPI_File fh, const void *buf, MPI_Count count, MPI_Datatype datatype));
180+
DARSHAN_EXTERN_DECL(PMPI_File_write_ordered_c, int, (MPI_File fh, const void *buf, MPI_Count count, MPI_Datatype datatype, MPI_Status *status));
181+
DARSHAN_EXTERN_DECL(PMPI_File_write_shared_c, int, (MPI_File fh, const void *buf, MPI_Count count, MPI_Datatype datatype, MPI_Status *status));
182+
#endif
183+
151184
#endif /* HAVE_MPI */
152185

153186
#endif

0 commit comments

Comments
 (0)