Skip to content

Commit 292be92

Browse files
committed
Add analysis scripts
1 parent e8e0981 commit 292be92

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#!/usr/bin/env python
2+
3+
from argparse import ArgumentParser, FileType
4+
import numpy as np
5+
import re
6+
import sys
7+
8+
9+
def accumulate(data_file):
10+
regex = re.compile(r'^([a-z]+).+?:\s+(\d+(?:\.\d+)(?:e[+-]\d+)?)')
11+
timings = dict()
12+
for line in data_file:
13+
match = regex.search(line)
14+
if match:
15+
test = match.group(1)
16+
time = float(match.group(2))
17+
if test not in timings:
18+
timings[test] = list()
19+
timings[test].append(time)
20+
return timings
21+
22+
23+
def print_stats(test, data_list):
24+
print(f'{test}:')
25+
data = np.array(data_list)
26+
print(f' min: {data.min()}')
27+
print(f' median: {np.median(data)}')
28+
print(f' mean: {data.mean()}')
29+
print(f' max: {data.max()}')
30+
print(f' n: {len(data)}')
31+
32+
33+
def main():
34+
arg_parser = ArgumentParser(description='analyze mpifitness data')
35+
arg_parser.add_argument('file', type=FileType('r'), help='file to analyse')
36+
options = arg_parser.parse_args()
37+
timings = accumulate(options.file)
38+
for test, data_list in timings.items():
39+
print_stats(test, data_list)
40+
return 0
41+
42+
43+
if __name__ == '__main__':
44+
sys.exit(main())
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/usr/bin/env python
2+
3+
from argparse import ArgumentParser, FileType
4+
import matplotlib.pyplot as plt
5+
import seaborn as sns
6+
import sys
7+
from analyze_mpifitness_data import accumulate
8+
9+
10+
def main():
11+
arg_parser = ArgumentParser(description='plot MPI time distirbution')
12+
arg_parser.add_argument('--file', required=True, type=FileType('r'),
13+
help='file to plot data from')
14+
arg_parser.add_argument('--test', required=True,
15+
choices=['pingpong', 'bcast', 'scatter', 'gather',
16+
'alltoall', 'reduce'],
17+
help='test to visualize')
18+
arg_parser.add_argument('--bins', type=int, default=5,
19+
help='number of bins in histogram')
20+
arg_parser.add_argument('--rug', action='store_true', help='show rug')
21+
options = arg_parser.parse_args()
22+
timings = accumulate(options.file)
23+
if options.rug:
24+
sns.distplot(timings[options.test], rug=True, hist=False)
25+
else:
26+
sns.distplot(timings[options.test], bins=options.bins)
27+
plt.show()
28+
return 0
29+
30+
31+
if __name__ == '__main__':
32+
sys.exit(main())

0 commit comments

Comments
 (0)