Skip to content
Snippets Groups Projects
Commit c1b5ea81 authored by Kurt A. O'Hearn's avatar Kurt A. O'Hearn
Browse files

Rename benchmark. Fix SuperLU-MT build. Update benchmark script.

parent 78769c1f
No related branches found
No related tags found
No related merge requests found
File moved
...@@ -58,7 +58,7 @@ if test "x$BUILD_OPENMP" = "xyes"; then ...@@ -58,7 +58,7 @@ if test "x$BUILD_OPENMP" = "xyes"; then
fi fi
fi fi
if test "x$BUILD_SUPERLU_MT" != "xno" if test "x$BUILD_SUPERLU_MT" != "x"
then then
CPPFLAGS="${CPPFLAGS} -I${BUILD_SUPERLU_MT}/include" CPPFLAGS="${CPPFLAGS} -I${BUILD_SUPERLU_MT}/include"
LDFLAGS="${LDFLAGS} -L${BUILD_SUPERLU_MT}/lib" LDFLAGS="${LDFLAGS} -L${BUILD_SUPERLU_MT}/lib"
......
...@@ -3,49 +3,89 @@ ...@@ -3,49 +3,89 @@
from fileinput import input from fileinput import input
from re import sub from re import sub
from subprocess import Popen, PIPE from subprocess import Popen, PIPE
from os import environ, path, rename from os import getcwd, environ, path, rename
from sys import exit
from time import time from time import time
base_dir = os.getcwd() base_dir = getcwd()
control_dir = path.join(base_dir, 'environ') control_dir = path.join(base_dir, 'environ')
data_dir = path.join(base_dir, 'data') data_dir = path.join(base_dir, 'data/benchmarks')
puremd_args = [ \ puremd_args = [ \
(path.join(data_dir, 'water_6540.pdb'), path.join(data_dir, 'ffield.water'), path.join(control_dir, 'param.gpu.water')), \ # (path.join(data_dir, 'water/water_6540.pdb'), path.join(data_dir, 'water/ffield.water'), path.join(control_dir, 'param.gpu.water')), \
(path.join(data_dir, 'water_52320.pdb'), path.join(data_dir, 'ffield.water'), path.join(control_dir, 'param.gpu.water')), \ # (path.join(data_dir, 'water/water_78480.pdb'), path.join(data_dir, 'water/ffield.water'), path.join(control_dir, 'param.gpu.water')), \
(path.join(data_dir, 'water_80000.geo'), path.join(data_dir, 'ffield.water'), path.join(control_dir, 'param.gpu.water')), \ # (path.join(data_dir, 'water/water_327000.geo'), path.join(data_dir, 'water/ffield.water'), path.join(control_dir, 'param.gpu.water')), \
(path.join(data_dir, 'bilayer.pdb'), path.join(data_dir, 'ffield-bio'), path.join(control_dir, 'param.gpu.water')), \ # (path.join(data_dir, 'bilayer/bilayer_56800.pdb'), path.join(data_dir, 'bilayer/ffield-bio'), path.join(control_dir, 'param.gpu.water')), \
(path.join(data_dir, 'dna.pdb'), path.join(data_dir, 'ffield-dna'), path.join(control_dir, 'param.gpu.water')), \ (path.join(data_dir, 'dna/dna_19733.pdb'), path.join(data_dir, 'dna/ffield-dna'), path.join(control_dir, 'param.gpu.water')), \
(path.join(data_dir, 'silica/silica_6000.pdb'), path.join(data_dir, 'silica/ffield-bio'), path.join(control_dir, 'param.gpu.water')), \
# (path.join(data_dir, 'silica/silica_72000.geo'), path.join(data_dir, 'silica/ffield-bio'), path.join(control_dir, 'param.gpu.water')), \
# (path.join(data_dir, 'silica/silica_300000.geo'), path.join(data_dir, 'silica/ffield-bio'), path.join(control_dir, 'param.gpu.water')), \
# (path.join(data_dir, 'petn/petn_48256.pdb'), path.join(data_dir, 'petn/ffield.petn'), path.join(control_dir, 'param.gpu.water')), \
] ]
header_fmt_str = '{:20}|{:5}|{:10}|{:10}' header_fmt_str = '{:20}|{:5}|{:5}|{:5}|{:10}|{:10}|{:10}|{:10}|{:10}|{:10}'
body_fmt_str = '{:20} {:5} {:10} {:10d}' body_fmt_str = '{:20} {:5} {:5} {:5} {:10.6f} {:10.6f} {:10.6f} {:10.6f} {:10} {:10.6f}'
tols = ['1e-6', '1e-8', '1e-10', '1e-14'] steps = ['20'] #['100']
threads = ['1', '2', '4', '10', '20'] qeq_solver_tol = ['1e-6'] #['1e-6', '1e-8', '1e-10', '1e-14']
pre_comp_type = ['2'] #['0', '1', '2']
threads = ['1', '2', '4', '12', '24']
patterns = [ \ patterns = [ \
lambda l, x: sub(r'(?P<key>q_err\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l.rstrip()), \ lambda l, x: sub(r'(?P<key>simulation_name\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
lambda l, x: sub(r'(?P<key>nsteps\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
lambda l, x: sub(r'(?P<key>qeq_solver_q_err\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
lambda l, x: sub(r'(?P<key>pre_comp_type\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
lambda l, x: sub(r'(?P<key>geo_format\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
] ]
d = dict(environ) d = dict(environ)
print header_fmt_str.format('Data Set', 'Tol', 'Threads', 'Time (ms)') print header_fmt_str.format('Data Set', 'Steps', 'Q Tol', 'Pre T', 'Pre Comp',
'Pre App', 'Iters', 'SpMV', 'Threads', 'Time (s)')
for i in xrange(len(puremd_args)): for i in xrange(len(puremd_args)):
for j in xrange(len(tols)): for s in xrange(len(steps)):
for line in input(puremd_args[i][2], inplace=1): for j in xrange(len(qeq_solver_tol)):
for p in patterns: for t in xrange(len(pre_comp_type)):
line = p(line, tols[j]) for k in xrange(len(threads)):
print line for line in input(puremd_args[i][2], inplace=1):
for k in xrange(len(threads)): line = line.rstrip()
d['OMP_NUM_THREADS'] = threads[k] line = patterns[0](line, path.basename(puremd_args[i][0]).split('.')[0]
start = time() + '_' + 'tol' + qeq_solver_tol[j] + '_precomp' + pre_comp_type[t] + '_thread' + threads[k])
p = Popen([path.join(base_dir, 'sPuReMD/spuremd')] + list(puremd_args[i]), line = patterns[1](line, steps[s])
stdout=PIPE, stderr=PIPE, env=d) line = patterns[2](line, qeq_solver_tol[j])
stdout, stderr = p.communicate() line = patterns[3](line, pre_comp_type[t])
stop = time() print line
print body_fmt_str.format(path.basename(puremd_args[i][0]), tols[j], threads[k],
int((stop - start) * 1000)) d['OMP_NUM_THREADS'] = threads[k]
start = time()
rename('water.6.notab.log', path.basename(puremd_args[i][0]).split('.')[0] p = Popen([path.join(base_dir, 'sPuReMD/bin/spuremd')] + list(puremd_args[i]),
+ '_' + tols[j] + 'tol_' + threads[k] + 'thread' + '.log') stdout=PIPE, stderr=PIPE, env=d)
rename('water.6.notab.out', path.basename(puremd_args[i][0]).split('.')[0] stdout, stderr = p.communicate()
+ '_' + tols[j] + 'tol_' + threads[k] + 'thread' + '.out') stop = time()
iters = 0.
pre_comp = 0.
pre_app = 0.
spmv = 0.
cnt = 0
with open(path.basename(puremd_args[i][0]).split('.')[0]
+ '_' + 'tol' + qeq_solver_tol[j] + '_precomp' + pre_comp_type[t] + '_thread'
+ threads[k] + '.log', 'r') as fp:
for line in fp:
line = line.split()
try:
iters = iters + float(line[7])
pre_comp = pre_comp + float(line[8])
pre_app = pre_app + float(line[9])
spmv = spmv + float(line[10])
cnt = cnt + 1
except Exception:
pass
cnt = cnt - 1
iters = iters / cnt
pre_comp = pre_comp / cnt
pre_app = pre_app / cnt
spmv = spmv / cnt
print body_fmt_str.format(path.basename(puremd_args[i][0]).split('.')[0],
steps[s], qeq_solver_tol[j], pre_comp_type[t], pre_comp, pre_app, iters, spmv,
threads[k], stop - start)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment