Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
darshan
darshan
Commits
cad82a11
Commit
cad82a11
authored
Apr 26, 2020
by
Rob Latham
Committed by
Shane Snyder
Apr 26, 2020
Browse files
Instrument offsets in DXT_MPIIO module
parent
73972e98
Changes
8
Hide whitespace changes
Inline
Side-by-side
darshan-dxt-log-format.h
View file @
cad82a11
...
...
@@ -8,7 +8,7 @@
/* current DXT log format version */
#define DXT_POSIX_VER 1
#define DXT_MPIIO_VER
1
#define DXT_MPIIO_VER
2
#define HOSTNAME_SIZE 64
...
...
darshan-runtime/configure
View file @
cad82a11
...
...
@@ -4675,10 +4675,10 @@ int
main ()
{
MPI_Comm comm;
char* filename;
int amode;
MPI_Info info;
MPI_Comm comm
=0
;
char* filename
=0
;
int amode
=0
;
MPI_Info info
=0
;
MPI_File fh;
MPI_File_open(comm, filename, amode, info, &fh);
;
...
...
darshan-runtime/configure.in
View file @
cad82a11
...
...
@@ -392,10 +392,10 @@ AS_IF([test "x$ENABLE_MPI" = "x1"], [
# determine if the MPI library includes MPI-IO functions or not
AC_MSG_CHECKING(for MPI-IO support in MPI)
AC_TRY_LINK([#include <mpi.h>], [
MPI_Comm comm;
char* filename;
int amode;
MPI_Info info;
MPI_Comm comm
=0
;
char* filename
=0
;
int amode
=0
;
MPI_Info info
=0
;
MPI_File fh;
MPI_File_open(comm, filename, amode, info, &fh);],
AC_MSG_RESULT(yes),
...
...
darshan-runtime/darshan-common.h
View file @
cad82a11
...
...
@@ -82,7 +82,7 @@
* added to the common access counter, rather than just incrementing it.
*/
#define DARSHAN_COMMON_VAL_COUNTER_INC(__val_p, __cnt_p, __value, __count, __add_flag) do {\
int i; \
int i
_
; \
int inc_count, total_count; \
int64_t tmp_val[4] = {0}; \
int64_t tmp_cnt[4] = {0}; \
...
...
@@ -92,21 +92,21 @@
inc_count = 1; \
else \
inc_count = __count; \
for(i=0; i<4; i++) { \
if(*(__val_p + i) == __value) { \
total_count = *(__cnt_p + i) + inc_count; \
for(i
_
=0; i
_
<4; i
_
++) { \
if(*(__val_p + i
_
) == __value) { \
total_count = *(__cnt_p + i
_
) + inc_count; \
break; \
} \
} \
if(i == 4) total_count = __count; \
if(i
_
== 4) total_count = __count; \
/* first, copy over any counters that should be sorted above this one \
* (counters with higher counts or equal counts and larger values) \
*/
\
for(i=0;i < 4; i++) { \
if((*(__cnt_p + i) > total_count) || \
((*(__cnt_p + i) == total_count) && (*(__val_p + i) > __value))) { \
tmp_val[tmp_ndx] = *(__val_p + i); \
tmp_cnt[tmp_ndx] = *(__cnt_p + i); \
for(i
_
=0;i
_
< 4; i
_
++) { \
if((*(__cnt_p + i
_
) > total_count) || \
((*(__cnt_p + i
_
) == total_count) && (*(__val_p + i
_
) > __value))) { \
tmp_val[tmp_ndx] = *(__val_p + i
_
); \
tmp_cnt[tmp_ndx] = *(__cnt_p + i
_
); \
tmp_ndx++; \
} \
else break; \
...
...
@@ -118,12 +118,12 @@
tmp_ndx++; \
/* last, copy over any remaining counters to make sure we have 4 sets total */
\
while(tmp_ndx != 4) { \
if(*(__val_p + i) != __value) { \
tmp_val[tmp_ndx] = *(__val_p + i); \
tmp_cnt[tmp_ndx] = *(__cnt_p + i); \
if(*(__val_p + i
_
) != __value) { \
tmp_val[tmp_ndx] = *(__val_p + i
_
); \
tmp_cnt[tmp_ndx] = *(__cnt_p + i
_
); \
tmp_ndx++; \
} \
i++; \
i
_
++; \
} \
memcpy(__val_p, tmp_val, 4*sizeof(int64_t)); \
memcpy(__cnt_p, tmp_cnt, 4*sizeof(int64_t)); \
...
...
darshan-runtime/darshan-dxt.h
View file @
cad82a11
...
...
@@ -45,10 +45,10 @@ void dxt_posix_read(darshan_record_id rec_id, int64_t offset,
* with 'length' size. 'start_time' and 'end_time' are starting and ending
* timestamps for the operation, respectively.
*/
void
dxt_mpiio_write
(
darshan_record_id
rec_id
,
int64_t
length
,
double
start_time
,
double
end_time
);
void
dxt_mpiio_read
(
darshan_record_id
rec_id
,
int64_t
length
,
double
start_time
,
double
end_time
);
void
dxt_mpiio_write
(
darshan_record_id
rec_id
,
int64_t
offset
,
int64_t
length
,
double
start_time
,
double
end_time
);
void
dxt_mpiio_read
(
darshan_record_id
rec_id
,
int64_t
offset
,
int64_t
length
,
double
start_time
,
double
end_time
);
void
dxt_posix_filter_dynamic_traces
(
struct
darshan_posix_file
*
(
*
rec_id_to_psx_file
)(
darshan_record_id
));
...
...
darshan-runtime/lib/darshan-dxt.c
View file @
cad82a11
...
...
@@ -517,8 +517,8 @@ void dxt_posix_read(darshan_record_id rec_id, int64_t offset,
DXT_UNLOCK
();
}
void
dxt_mpiio_write
(
darshan_record_id
rec_id
,
int64_t
length
,
double
start_time
,
double
end_time
)
void
dxt_mpiio_write
(
darshan_record_id
rec_id
,
int64_t
offset
,
int64_t
length
,
double
start_time
,
double
end_time
)
{
struct
dxt_file_record_ref
*
rec_ref
=
NULL
;
struct
dxt_file_record
*
file_rec
;
...
...
@@ -566,6 +566,7 @@ void dxt_mpiio_write(darshan_record_id rec_id, int64_t length,
}
rec_ref
->
write_traces
[
file_rec
->
write_count
].
length
=
length
;
rec_ref
->
write_traces
[
file_rec
->
write_count
].
offset
=
offset
;
rec_ref
->
write_traces
[
file_rec
->
write_count
].
start_time
=
start_time
;
rec_ref
->
write_traces
[
file_rec
->
write_count
].
end_time
=
end_time
;
file_rec
->
write_count
+=
1
;
...
...
@@ -573,8 +574,8 @@ void dxt_mpiio_write(darshan_record_id rec_id, int64_t length,
DXT_UNLOCK
();
}
void
dxt_mpiio_read
(
darshan_record_id
rec_id
,
int64_t
length
,
double
start_time
,
double
end_time
)
void
dxt_mpiio_read
(
darshan_record_id
rec_id
,
int64_t
offset
,
int64_t
length
,
double
start_time
,
double
end_time
)
{
struct
dxt_file_record_ref
*
rec_ref
=
NULL
;
struct
dxt_file_record
*
file_rec
;
...
...
@@ -622,6 +623,7 @@ void dxt_mpiio_read(darshan_record_id rec_id, int64_t length,
}
rec_ref
->
read_traces
[
file_rec
->
read_count
].
length
=
length
;
rec_ref
->
read_traces
[
file_rec
->
read_count
].
offset
=
offset
;
rec_ref
->
read_traces
[
file_rec
->
read_count
].
start_time
=
start_time
;
rec_ref
->
read_traces
[
file_rec
->
read_count
].
end_time
=
end_time
;
file_rec
->
read_count
+=
1
;
...
...
darshan-runtime/lib/darshan-mpiio.c
View file @
cad82a11
...
...
@@ -236,17 +236,19 @@ static int my_rank = -1;
if(newpath != __path) free(newpath); \
} while(0)
#define MPIIO_RECORD_READ(__ret, __fh, __count, __datatype, __counter, __tm1, __tm2) do { \
#define MPIIO_RECORD_READ(__ret, __fh, __count, __datatype,
__offset,
__counter, __tm1, __tm2) do { \
struct mpiio_file_record_ref *rec_ref; \
int size = 0; \
MPI_Offset displacement=0;\
double __elapsed = __tm2-__tm1; \
if(__ret != MPI_SUCCESS) break; \
rec_ref = darshan_lookup_record_ref(mpiio_runtime->fh_hash, &(__fh), sizeof(MPI_File)); \
if(!rec_ref) break; \
PMPI_Type_size(__datatype, &size); \
size = size * __count; \
MPI_File_get_byte_offset(__fh, __offset, &displacement);\
/* DXT to record detailed read tracing information */
\
dxt_mpiio_read(rec_ref->file_rec->base_rec.id, size, __tm1, __tm2); \
dxt_mpiio_read(rec_ref->file_rec->base_rec.id,
displacement,
size, __tm1, __tm2); \
DARSHAN_BUCKET_INC(&(rec_ref->file_rec->counters[MPIIO_SIZE_READ_AGG_0_100]), size); \
darshan_common_val_counter(&rec_ref->access_root, &rec_ref->access_count, size, \
&(rec_ref->file_rec->counters[MPIIO_ACCESS1_ACCESS]), \
...
...
@@ -267,9 +269,10 @@ static int my_rank = -1;
__tm1, __tm2, rec_ref->last_read_end); \
} while(0)
#define MPIIO_RECORD_WRITE(__ret, __fh, __count, __datatype, __counter, __tm1, __tm2) do { \
#define MPIIO_RECORD_WRITE(__ret, __fh, __count, __datatype,
__offset,
__counter, __tm1, __tm2) do { \
struct mpiio_file_record_ref *rec_ref; \
int size = 0; \
MPI_Offset displacement; \
double __elapsed = __tm2-__tm1; \
if(__ret != MPI_SUCCESS) break; \
rec_ref = darshan_lookup_record_ref(mpiio_runtime->fh_hash, &(__fh), sizeof(MPI_File)); \
...
...
@@ -277,7 +280,8 @@ static int my_rank = -1;
PMPI_Type_size(__datatype, &size); \
size = size * __count; \
/* DXT to record detailed write tracing information */
\
dxt_mpiio_write(rec_ref->file_rec->base_rec.id, size, __tm1, __tm2); \
MPI_File_get_byte_offset(__fh, __offset, &displacement); \
dxt_mpiio_write(rec_ref->file_rec->base_rec.id, displacement, size, __tm1, __tm2); \
DARSHAN_BUCKET_INC(&(rec_ref->file_rec->counters[MPIIO_SIZE_WRITE_AGG_0_100]), size); \
darshan_common_val_counter(&rec_ref->access_root, &rec_ref->access_count, size, \
&(rec_ref->file_rec->counters[MPIIO_ACCESS1_ACCESS]), \
...
...
@@ -347,15 +351,17 @@ int DARSHAN_DECL(MPI_File_read)(MPI_File fh, void *buf, int count,
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_read
);
MPI_File_get_position
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_read
(
fh
,
buf
,
count
,
datatype
,
status
);
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
MPIIO_INDEP_READS
,
tm1
,
tm2
);
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_INDEP_READS
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -373,15 +379,17 @@ int DARSHAN_DECL(MPI_File_write)(MPI_File fh, void *buf, int count,
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_write
);
MPI_File_get_position
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_write
(
fh
,
buf
,
count
,
datatype
,
status
);
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
MPIIO_INDEP_WRITES
,
tm1
,
tm2
);
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_INDEP_WRITES
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -408,7 +416,7 @@ int DARSHAN_DECL(MPI_File_read_at)(MPI_File fh, MPI_Offset offset, void *buf,
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
MPIIO_INDEP_READS
,
tm1
,
tm2
);
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_INDEP_READS
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -435,7 +443,7 @@ int DARSHAN_DECL(MPI_File_write_at)(MPI_File fh, MPI_Offset offset, void *buf,
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
MPIIO_INDEP_WRITES
,
tm1
,
tm2
);
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_INDEP_WRITES
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -452,16 +460,18 @@ int DARSHAN_DECL(MPI_File_read_all)(MPI_File fh, void * buf, int count, MPI_Data
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_read_all
);
MPI_File_get_position
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_read_all
(
fh
,
buf
,
count
,
datatype
,
status
);
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
MPIIO_COLL_READS
,
tm1
,
tm2
);
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_COLL_READS
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -477,16 +487,18 @@ int DARSHAN_DECL(MPI_File_write_all)(MPI_File fh, void * buf, int count, MPI_Dat
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_write_all
);
MPI_File_get_position
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_write_all
(
fh
,
buf
,
count
,
datatype
,
status
);
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
MPIIO_COLL_WRITES
,
tm1
,
tm2
);
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_COLL_WRITES
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -513,7 +525,7 @@ int DARSHAN_DECL(MPI_File_read_at_all)(MPI_File fh, MPI_Offset offset, void * bu
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
MPIIO_COLL_READS
,
tm1
,
tm2
);
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_COLL_READS
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -541,7 +553,7 @@ int DARSHAN_DECL(MPI_File_write_at_all)(MPI_File fh, MPI_Offset offset, void * b
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
MPIIO_COLL_WRITES
,
tm1
,
tm2
);
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_COLL_WRITES
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -560,16 +572,18 @@ int DARSHAN_DECL(MPI_File_read_shared)(MPI_File fh, void * buf, int count, MPI_D
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_read_shared
);
MPI_File_get_position_shared
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_read_shared
(
fh
,
buf
,
count
,
datatype
,
status
);
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
MPIIO_INDEP_READS
,
tm1
,
tm2
);
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_INDEP_READS
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -585,16 +599,18 @@ int DARSHAN_DECL(MPI_File_write_shared)(MPI_File fh, void * buf, int count, MPI_
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_write_shared
);
MPI_File_get_position_shared
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_write_shared
(
fh
,
buf
,
count
,
datatype
,
status
);
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
MPIIO_INDEP_WRITES
,
tm1
,
tm2
);
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_INDEP_WRITES
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -613,16 +629,18 @@ int DARSHAN_DECL(MPI_File_read_ordered)(MPI_File fh, void * buf, int count,
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_read_ordered
);
MPI_File_get_position_shared
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_read_ordered
(
fh
,
buf
,
count
,
datatype
,
status
);
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
MPIIO_COLL_READS
,
tm1
,
tm2
);
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_COLL_READS
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -641,8 +659,10 @@ int DARSHAN_DECL(MPI_File_write_ordered)(MPI_File fh, void * buf, int count,
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_write_ordered
);
MPI_File_get_position_shared
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_write_ordered
(
fh
,
buf
,
count
,
...
...
@@ -650,7 +670,7 @@ int DARSHAN_DECL(MPI_File_write_ordered)(MPI_File fh, void * buf, int count,
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
MPIIO_COLL_WRITES
,
tm1
,
tm2
);
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_COLL_WRITES
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -669,15 +689,17 @@ int DARSHAN_DECL(MPI_File_read_all_begin)(MPI_File fh, void * buf, int count, MP
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_read_all_begin
);
MPI_File_get_position_shared
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_read_all_begin
(
fh
,
buf
,
count
,
datatype
);
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
MPIIO_SPLIT_READS
,
tm1
,
tm2
);
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_SPLIT_READS
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -693,15 +715,18 @@ int DARSHAN_DECL(MPI_File_write_all_begin)(MPI_File fh, void * buf, int count, M
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_write_all_begin
);
MPI_File_get_position_shared
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_write_all_begin
(
fh
,
buf
,
count
,
datatype
);
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
MPIIO_SPLIT_WRITES
,
tm1
,
tm2
);
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_SPLIT_WRITES
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -728,7 +753,7 @@ int DARSHAN_DECL(MPI_File_read_at_all_begin)(MPI_File fh, MPI_Offset offset, voi
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
MPIIO_SPLIT_READS
,
tm1
,
tm2
);
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_SPLIT_READS
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -755,7 +780,7 @@ int DARSHAN_DECL(MPI_File_write_at_all_begin)(MPI_File fh, MPI_Offset offset, vo
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
MPIIO_SPLIT_WRITES
,
tm1
,
tm2
);
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_SPLIT_WRITES
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -772,16 +797,18 @@ int DARSHAN_DECL(MPI_File_read_ordered_begin)(MPI_File fh, void * buf, int count
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_read_ordered_begin
);
MPI_File_get_position_shared
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_read_ordered_begin
(
fh
,
buf
,
count
,
datatype
);
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
MPIIO_SPLIT_READS
,
tm1
,
tm2
);
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_SPLIT_READS
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -797,16 +824,18 @@ int DARSHAN_DECL(MPI_File_write_ordered_begin)(MPI_File fh, void * buf, int coun
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_write_ordered_begin
);
MPI_File_get_position_shared
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_write_ordered_begin
(
fh
,
buf
,
count
,
datatype
);
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
MPIIO_SPLIT_WRITES
,
tm1
,
tm2
);
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_SPLIT_WRITES
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -823,15 +852,17 @@ int DARSHAN_DECL(MPI_File_iread)(MPI_File fh, void * buf, int count, MPI_Datatyp
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_iread
);
MPI_File_get_position_shared
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_iread
(
fh
,
buf
,
count
,
datatype
,
request
);
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
MPIIO_NB_READS
,
tm1
,
tm2
);
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_NB_READS
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -849,15 +880,17 @@ int DARSHAN_DECL(MPI_File_iwrite)(MPI_File fh, void * buf, int count,
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_iwrite
);
MPI_File_get_position
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_iwrite
(
fh
,
buf
,
count
,
datatype
,
request
);
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
MPIIO_NB_WRITES
,
tm1
,
tm2
);
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_NB_WRITES
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -886,7 +919,7 @@ int DARSHAN_DECL(MPI_File_iread_at)(MPI_File fh, MPI_Offset offset, void * buf,
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
MPIIO_NB_READS
,
tm1
,
tm2
);
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_NB_READS
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -914,7 +947,7 @@ int DARSHAN_DECL(MPI_File_iwrite_at)(MPI_File fh, MPI_Offset offset, void * buf,
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
MPIIO_NB_WRITES
,
tm1
,
tm2
);
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_NB_WRITES
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -934,16 +967,18 @@ int DARSHAN_DECL(MPI_File_iread_shared)(MPI_File fh, void * buf, int count,
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_iread_shared
);
MPI_File_get_position_shared
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_iread_shared
(
fh
,
buf
,
count
,
datatype
,
request
);
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
MPIIO_NB_READS
,
tm1
,
tm2
);
MPIIO_RECORD_READ
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_NB_READS
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -962,16 +997,18 @@ int DARSHAN_DECL(MPI_File_iwrite_shared)(MPI_File fh, void * buf, int count,
{
int
ret
;
double
tm1
,
tm2
;
MPI_Offset
offset
;
MAP_OR_FAIL
(
PMPI_File_iwrite_shared
);
MPI_File_get_position_shared
(
fh
,
&
offset
);
tm1
=
darshan_core_wtime
();
ret
=
__real_PMPI_File_iwrite_shared
(
fh
,
buf
,
count
,
datatype
,
request
);
tm2
=
darshan_core_wtime
();
MPIIO_PRE_RECORD
();
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
MPIIO_NB_WRITES
,
tm1
,
tm2
);
MPIIO_RECORD_WRITE
(
ret
,
fh
,
count
,
datatype
,
offset
,
MPIIO_NB_WRITES
,
tm1
,
tm2
);
MPIIO_POST_RECORD
();
return
(
ret
);
...
...
@@ -1477,6 +1514,7 @@ void darshan_mpiio_shutdown_bench_setup(int test_case)
{
char
filepath
[
256
];
MPI_File
*
fh_array
;
MPI_Offset
*
offset_array
;
int64_t
*
size_array
;
int
i
;
intptr_t
j
;
...
...
@@ -1489,12 +1527,15 @@ void darshan_mpiio_shutdown_bench_setup(int test_case)
srand
(
my_rank
);
fh_array
=
malloc
(
1024
*
sizeof
(
MPI_File
));
size_array
=
malloc
(
DARSHAN_COMMON_VAL_MAX_RUNTIME_COUNT
*
sizeof
(
int64_t
));
offset_array
=
malloc
(
DARSHAN_COMMON_VAL_MAX_RUNTIME_COUNT
*
sizeof
(
MPI_Offset
));
assert
(
fh_array
&&
size_array
);
for
(
j
=
0
;
j
<
1024
;
j
++
)
fh_array
[
j
]
=
(
MPI_File
)
j
;
for
(
i
=
0
;
i
<
DARSHAN_COMMON_VAL_MAX_RUNTIME_COUNT
;
i
++
)
for
(
i
=
0
;
i
<
DARSHAN_COMMON_VAL_MAX_RUNTIME_COUNT
;
i
++
)
{
offset_array
[
i
]
=
rand
();
size_array
[
i
]
=
rand
();
}
switch
(
test_case
)
{
...
...
@@ -1503,8 +1544,8 @@ void darshan_mpiio_shutdown_bench_setup(int test_case)
MPIIO_RECORD_OPEN
(
MPI_SUCCESS
,
filepath
,
fh_array
[
0
],
MPI_COMM_SELF
,
2
,
MPI_INFO_NULL
,
0
,
1
);
MPIIO_RECORD_WRITE
(
MPI_SUCCESS
,
fh_array
[
0
],
size_array
[
0
],
MPI_BYTE
,
MPIIO_INDEP_WRITES
,
1
,
2
);
MPIIO_RECORD_WRITE
(
MPI_SUCCESS
,
fh_array
[
0
],
size_array
[
0
],
offset_array
[
0
]
,
MPI_BYTE
,
MPIIO_INDEP_WRITES
,
1
,
2
);
break
;
case
2
:
/* single shared file */
...
...
@@ -1512,8 +1553,8 @@ void darshan_mpiio_shutdown_bench_setup(int test_case)
MPIIO_RECORD_OPEN
(
MPI_SUCCESS
,
filepath
,
fh_array
[
0
],
MPI_COMM_WORLD
,
2
,
MPI_INFO_NULL
,
0
,
1
);
MPIIO_RECORD_WRITE
(
MPI_SUCCESS
,
fh_array
[
0
],
size_array
[
0
],
MPI_BYTE
,
MPIIO_COLL_WRITES
,
1
,
2
);
MPIIO_RECORD_WRITE
(
MPI_SUCCESS
,
fh_array
[
0
],
size_array
[
0
],
offset_array
[
0
]
,
MPI_BYTE
,
MPIIO_COLL_WRITES
,
1
,
2
);
break
;
case
3
:
/* 1024 unique files per proc */
...
...
@@ -1525,6 +1566,7 @@ void darshan_mpiio_shutdown_bench_setup(int test_case)
2
,
MPI_INFO_NULL
,
0
,
1
);
MPIIO_RECORD_WRITE
(
MPI_SUCCESS
,
fh_array
[
i
],
size_array
[
i
%
DARSHAN_COMMON_VAL_MAX_RUNTIME_COUNT
],
offset_array
[
i
%
DARSHAN_COMMON_VAL_MAX_RUNTIME_COUNT
],
MPI_BYTE
,
MPIIO_INDEP_WRITES
,
1
,
2
);
}
...
...
@@ -1538,6 +1580,7 @@ void darshan_mpiio_shutdown_bench_setup(int test_case)