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

Update data collection tools.

parent a5454352
No related branches found
No related tags found
No related merge requests found
Reactive MD-force field: Pd/O/C/H March 11 2015
39 ! Number of general parameters
50.0000 !Overcoordination parameter
9.5469 !Overcoordination parameter
26.5405 !Valency angle conjugation parameter
1.7224 !Triple bond stabilisation parameter
6.8702 !Triple bond stabilisation parameter
60.4850 !C2-correction
1.0588 !Undercoordination parameter
4.6000 !Triple bond stabilisation parameter
12.1176 !Undercoordination parameter
13.3056 !Undercoordination parameter
-70.5044 !Triple bond stabilization energy
0.0000 !Lower Taper-radius
10.0000 !Upper Taper-radius
2.8793 !Not used
33.8667 !Valency undercoordination
6.0891 !Valency angle/lone pair parameter
1.0563 !Valency angle
2.0384 !Valency angle parameter
6.1431 !Not used
6.9290 !Double bond/angle parameter
0.3989 !Double bond/angle parameter: overcoord
3.9954 !Double bond/angle parameter: overcoord
-2.4837 !Not used
5.7796 !Torsion/BO parameter
10.0000 !Torsion overcoordination
1.9487 !Torsion overcoordination
-1.2327 !Conjugation 0 (not used)
2.1645 !Conjugation
1.5591 !vdWaals shielding
0.1000 !Cutoff for bond order (*100)
2.1365 !Valency angle conjugation parameter
0.6991 !Overcoordination parameter
50.0000 !Overcoordination parameter
1.8512 !Valency/lone pair parameter
0.5000 !Not used
20.0000 !Not used
5.0000 !Molecular energy (not used)
0.0000 !Molecular energy (not used)
2.6962 !Valency angle conjugation parameter
6 ! Nr of atoms; cov.r; valency;a.m;Rvdw;Evdw;gammaEEM;cov.r2;#
alfa;gammavdW;valency;Eunder;Eover;chiEEM;etaEEM;n.u.
cov r3;Elp;Heat inc.;n.u.;n.u.;n.u.;n.u.
ov/un;val1;n.u.;val3,vval4
C 1.3817 4.0000 12.0000 1.8903 0.1838 0.9000 1.1341 4.0000
9.7559 2.1346 4.0000 34.9350 79.5548 5.9666 7.0000 0.0000
1.2114 0.0000 202.5551 8.9539 34.9289 13.5366 0.8563 0.0000
-2.8983 2.5000 1.0564 4.0000 2.9663 0.0000 0.0000 0.0000
H 0.8930 1.0000 1.0080 1.3550 0.0930 0.8203 -0.1000 1.0000
8.2230 33.2894 1.0000 0.0000 121.1250 3.7248 9.6093 1.0000
-0.1000 0.0000 61.6606 3.0408 2.4197 0.0003 1.0698 0.0000
-19.4571 4.2733 1.0338 1.0000 2.8793 0.0000 0.0000 0.0000
O 1.2450 2.0000 15.9990 2.3890 0.1000 1.0898 1.0548 6.0000
9.7300 13.8449 4.0000 37.5000 116.0768 8.5000 8.3122 2.0000
0.9049 0.4056 59.0626 3.5027 0.7640 0.0021 0.9745 0.0000
-3.5500 2.9000 1.0493 4.0000 2.9225 0.0000 0.0000 0.0000
Pd 1.8582 2.0000 106.4200 2.0113 0.2465 1.0000 -1.0000 2.0000
12.5712 6.0083 2.0000 0.0000 0.0000 5.5005 6.6477 0.0000
-1.0000 0.0000 89.8000 27.2704 1.8727 0.1586 0.8563 0.0000
-13.0000 1.7287 1.0338 5.0000 2.5791 0.0000 0.0000 0.0000
Zn 1.8862 2.0000 65.3900 1.9200 0.2998 0.4828 -1.6836 2.0000
11.5134 18.3776 2.0000 0.0078 0.0000 2.0219 5.7915 0.0000
-1.2000 0.0000 266.4838 5.3430 10.1260 0.7590 0.0000 0.0000
-3.0614 2.1158 1.0338 6.2998 2.5791 0.0000 0.0000 0.0000
X -0.1000 2.0000 1.0080 2.0000 0.0000 1.0000 -0.1000 6.0000
10.0000 2.5000 4.0000 0.0000 0.0000 3.5000 85.0000 0.0000
-0.1000 0.0000 -2.3700 8.7410 13.3640 0.6690 0.9745 0.0000
-11.0000 2.7466 1.0338 6.2998 2.8793 0.0000 0.0000 0.0000
14 ! Nr of bonds; Edis1;LPpen;n.u.;pbe1;pbo5;13corr;pbo6
pbe2;pbo3;pbo4;n.u.;pbo1;pbo2;ovcorr
1 1 158.2004 99.1897 78.0000 -0.7738 -0.4550 1.0000 37.6117 0.4147
0.4590 -0.1000 9.1628 1.0000 -0.0777 6.7268 1.0000 0.0000
1 2 169.4760 0.0000 0.0000 -0.6083 0.0000 1.0000 6.0000 0.7652
5.2290 1.0000 0.0000 1.0000 -0.0500 6.9136 0.0000 0.0000
2 2 153.3934 0.0000 0.0000 -0.4600 0.0000 1.0000 6.0000 0.7300
6.2500 1.0000 0.0000 1.0000 -0.0790 6.0552 0.0000 0.0000
1 3 158.6946 107.4583 23.3136 -0.4240 -0.1743 1.0000 10.8209 1.0000
0.5322 -0.3113 7.0000 1.0000 -0.1447 5.2450 0.0000 0.0000
3 3 142.2858 145.0000 50.8293 0.2506 -0.1000 1.0000 29.7503 0.6051
0.3451 -0.1055 9.0000 1.0000 -0.1225 5.5000 1.0000 0.0000
2 3 160.0000 0.0000 0.0000 -0.5725 0.0000 1.0000 6.0000 0.5626
1.1150 1.0000 0.0000 0.0000 -0.0920 4.2790 0.0000 0.0000
1 4 195.8048 0.0000 0.0000 -0.2150 -0.2000 1.0000 16.0000 0.1001
10.7579 -0.2000 15.0000 1.0000 -0.1606 4.0000 1.0000 0.0000
2 4 67.5406 0.0000 0.0000 0.6327 0.0000 1.0000 6.0000 0.2077
0.7493 1.0000 0.0000 1.0000 -0.0547 4.0000 0.0000 0.0000
3 4 56.7412 0.0000 0.0000 0.7149 -0.2000 1.0000 16.0000 0.1000
11.9839 -0.2000 15.0000 1.0000 -0.3000 4.7089 1.0000 0.0000
4 4 90.7003 0.0000 0.0000 -0.1661 -0.2000 0.0000 16.0000 0.2578
3.0618 -0.2000 15.0000 1.0000 -0.0914 5.4665 0.0000 0.0000
2 5 0.0000 0.0000 0.0000 0.0000 -0.5000 1.0000 50.0000 0.5000
0.5000 -0.5000 30.0000 1.0000 -0.2000 8.0000 0.0000 0.0000
3 5 159.9755 0.0000 0.0000 -0.4548 -0.5000 0.0000 35.0000 0.0375
1.3099 -0.5000 25.0000 0.0000 -0.4787 4.6717 0.0000 0.0000
4 5 111.4523 0.0000 0.0000 -0.6216 -0.2000 0.0000 16.0000 0.0100
9.7771 -0.2000 15.0000 0.5000 -0.0500 11.7279 0.0000 0.0000
5 5 38.4643 0.0000 0.0000 -0.6944 -0.2000 0.0000 16.0000 0.2129
0.5059 -0.2000 15.0000 0.0000 -0.0814 6.0333 0.0000 0.0000
9 ! Nr of off-diagonal terms; Ediss;Ro;gamma;rsigma;rpi;rpi2
1 2 0.1239 1.4004 9.8467 1.1210 -1.0000 -1.0000
1 3 0.1156 1.8520 9.8317 1.2854 1.1352 1.0706
2 3 0.0283 1.2885 10.9190 0.9215 -1.0000 -1.0000
1 4 0.1169 2.3000 9.2890 1.6264 -1.0000 -1.0000
2 4 0.1445 1.1103 13.0000 1.5714 -1.0000 -1.0000
3 4 0.2237 1.6610 10.6568 1.7139 -1.0000 -1.0000
3 5 0.2744 2.1414 9.7703 1.9804 -1.0000 -1.0000
2 5 0.0987 1.8227 12.0654 0.1000 -1.0000 -1.0000
4 5 0.2718 3.0000 9.9705 2.5000 -1.0000 -1.0000
44 ! Nr of angles;at1;at2;at3;Thetao,o;ka;kb;pv1;pv2
1 1 1 59.0573 30.7029 0.7606 0.0000 0.7180 6.2933 1.1244
1 1 2 65.7758 14.5234 6.2481 0.0000 0.5665 0.0000 1.6255
2 1 2 70.2607 25.2202 3.7312 0.0000 0.0050 0.0000 2.7500
1 2 2 0.0000 0.0000 6.0000 0.0000 0.0000 0.0000 1.0400
1 2 1 0.0000 3.4110 7.7350 0.0000 0.0000 0.0000 1.0400
2 2 2 0.0000 27.9213 5.8635 0.0000 0.0000 0.0000 1.0400
1 1 3 49.6811 7.1713 4.3889 0.0000 0.7171 10.2661 1.0463
3 1 3 77.7473 40.1718 2.9802 -25.3063 1.6170 -46.1315 2.2503
2 1 3 65.0000 13.8815 5.0583 0.0000 0.4985 0.0000 1.4900
1 3 1 73.5312 44.7275 0.7354 0.0000 3.0000 0.0000 1.0684
1 3 3 79.4761 36.3701 1.8943 0.0000 0.7351 67.6777 3.0000
3 3 3 80.7324 30.4554 0.9953 0.0000 1.6310 50.0000 1.0783
1 3 2 70.1880 20.9562 0.3864 0.0000 0.0050 0.0000 1.6924
2 3 3 75.6935 50.0000 2.0000 0.0000 1.0000 0.0000 1.1680
2 3 2 85.8000 9.8453 2.2720 0.0000 2.8635 0.0000 1.5800
1 2 3 0.0000 25.0000 3.0000 0.0000 1.0000 0.0000 1.0400
3 2 3 0.0000 15.0000 2.8900 0.0000 0.0000 0.0000 2.8774
2 2 3 0.0000 8.5744 3.0000 0.0000 0.0000 0.0000 1.0421
4 3 4 53.8540 30.0000 2.0649 0.0000 1.0000 0.0000 1.7008
3 4 4 55.7429 4.8907 3.9242 0.0000 0.1000 0.0000 1.0000
3 3 4 90.0000 30.0000 1.6813 0.0000 1.0000 0.0000 1.9155
3 4 3 0.0100 30.0000 8.0000 0.0000 1.0000 0.0000 2.4156
2 4 2 25.6680 10.1984 7.6844 0.0000 1.0000 0.0000 1.2474
2 2 4 83.9156 13.0474 0.9983 0.0000 1.0001 0.0000 3.1381
4 2 4 0.9367 12.0943 6.6344 0.0000 1.0000 0.0000 1.0115
2 4 4 40.0354 9.2882 8.0000 0.0000 1.0000 0.0000 2.7288
1 1 4 23.3470 30.0000 4.9485 0.0000 0.1000 0.0000 2.6345
3 1 4 0.0100 30.0000 7.8334 0.0000 0.1000 0.0000 1.1134
1 4 4 81.4675 17.7241 8.0000 0.0000 0.1000 0.0000 3.3824
1 4 1 76.1959 30.0000 8.0000 0.0000 0.1000 0.0000 1.3967
4 1 4 0.0100 30.0000 7.8334 0.0000 0.1000 0.0000 1.1134
2 1 4 81.2014 30.0000 0.5384 0.0000 1.0000 0.0000 1.9241
1 4 2 90.0000 0.2503 0.0100 0.0000 1.0000 0.0000 2.1438
1 2 4 6.0617 0.0100 7.5704 0.0000 0.0000 0.0000 3.9408
2 3 4 50.4877 0.1082 1.9877 0.0000 1.0000 0.0000 1.3192
2 4 3 17.8836 0.0100 1.7426 0.5000 1.0000 0.0000 1.1872
2 3 5 77.5446 9.9016 2.3157 0.0000 0.4543 0.0000 2.3770
3 5 3 10.8790 38.9915 0.7072 0.0000 2.0000 0.0000 2.6162
5 3 5 37.5284 32.3525 0.2657 0.0000 0.4403 0.0000 1.1000
3 5 5 16.9624 30.3241 0.2697 0.0000 2.0000 0.0000 3.0708
3 3 5 60.0000 20.0000 0.5000 0.0000 1.0000 0.0000 2.0000
4 3 5 50.1894 15.0000 2.1212 0.0000 1.0000 0.0000 1.5879
3 5 4 90.0000 -1.0980 4.5745 0.0000 1.0000 0.0000 3.5758
3 4 5 -37.1165 15.0000 3.8385 0.0000 1.0000 0.0000 1.8045
25 ! Nr of torsions;at1;at2;at3;at4;;V1;V2;V3;V2(BO);vconj;n.u;n
1 1 1 1 -0.2500 34.7453 0.0288 -6.3507 -1.6000 0.0000 0.0000
1 1 1 2 -0.2500 29.2131 0.2945 -4.9581 -2.1802 0.0000 0.0000
2 1 1 2 -0.2500 31.2081 0.4539 -4.8923 -2.2677 0.0000 0.0000
1 1 1 3 -0.3495 22.2142 -0.2959 -2.5000 -1.9066 0.0000 0.0000
2 1 1 3 0.0646 24.3195 0.6259 -3.9603 -1.0000 0.0000 0.0000
3 1 1 3 -0.5456 5.5756 0.8433 -5.1924 -1.0180 0.0000 0.0000
1 1 3 1 1.7555 27.9267 0.0072 -2.6533 -1.0000 0.0000 0.0000
1 1 3 2 -1.4358 36.7830 -1.0000 -8.1821 -1.0000 0.0000 0.0000
2 1 3 1 -1.3959 34.5053 0.7200 -2.5714 -2.1641 0.0000 0.0000
2 1 3 2 -2.5000 70.0597 1.0000 -3.5539 -2.9929 0.0000 0.0000
1 1 3 3 0.6852 11.2819 -0.4784 -2.5000 -2.1085 0.0000 0.0000
2 1 3 3 0.1933 80.0000 1.0000 -4.0590 -3.0000 0.0000 0.0000
3 1 3 1 -1.9889 76.4820 -0.1796 -3.8301 -3.0000 0.0000 0.0000
3 1 3 2 0.2160 72.7707 -0.7087 -4.2100 -3.0000 0.0000 0.0000
3 1 3 3 -2.5000 71.0772 0.2542 -3.1631 -3.0000 0.0000 0.0000
1 3 3 1 2.5000 -0.6002 1.0000 -3.4297 -2.8858 0.0000 0.0000
1 3 3 2 -2.5000 -3.3822 0.7004 -5.4467 -2.9586 0.0000 0.0000
2 3 3 2 2.5000 -4.0000 0.9000 -2.5000 -1.0000 0.0000 0.0000
1 3 3 3 1.2329 -4.0000 1.0000 -2.5000 -1.7479 0.0000 0.0000
2 3 3 3 0.8302 -4.0000 -0.7763 -2.5000 -1.0000 0.0000 0.0000
3 3 3 3 -2.5000 -4.0000 1.0000 -2.5000 -1.0000 0.0000 0.0000
4 3 3 4 1.7276 50.0000 0.0100 -2.5000 -1.0000 0.0000 0.0000
1 1 1 4 2.1746 45.0000 0.6721 -2.5000 0.0000 0.0000 0.0000
4 1 1 4 5.5647 24.5181 8.0000 -2.5173 0.0000 0.0000 1.1091
2 1 1 4 0.0100 11.4523 2.1450 -3.5000 0.0000 0.0000 1.0000
1 ! Nr of hydrogen bonds;at1;at2;at3;Rhb;Dehb;vhb1
3 2 3 2.1200 -3.5800 1.4500 19.5000
This diff is collapsed.
...@@ -35,7 +35,7 @@ compress 0.008134 ! in ps^2 * A / amu ( 4.5X10^(-5 ...@@ -35,7 +35,7 @@ compress 0.008134 ! in ps^2 * A / amu ( 4.5X10^(-5
press_mode 0 ! 0: internal + external pressure, 1: ext only, 2: int only press_mode 0 ! 0: internal + external pressure, 1: ext only, 2: int only
geo_format 1 ! 0: xyz, 1: pdb, 2: bgf geo_format 1 ! 0: xyz, 1: pdb, 2: bgf
write_freq 1000 ! write trajectory after so many steps write_freq 0 ! write trajectory after so many steps
traj_compress 0 ! 0: no compression 1: uses zlib to compress trajectory output traj_compress 0 ! 0: no compression 1: uses zlib to compress trajectory output
traj_format 0 ! 0: our own format (below options apply to this only), 1: xyz, 2: bgf, 3: pdb traj_format 0 ! 0: our own format (below options apply to this only), 1: xyz, 2: bgf, 3: pdb
traj_title WATER_NVT ! (no white spaces) traj_title WATER_NVT ! (no white spaces)
......
#!/usr/bin/env python #!/usr/bin/env python
from fileinput import input from fileinput import input
from itertools import product
from re import sub from re import sub
from subprocess import Popen, PIPE from subprocess import Popen, PIPE
from os import getcwd, environ, path, rename from os import getcwd, environ, path, rename
from sys import exit from sys import exit
from time import time from time import time
base_dir = getcwd()
control_dir = path.join(base_dir, 'environ') class TestCase():
data_dir = path.join(base_dir, 'data/benchmarks') def __init__(self, geo_file, ffield_file, control_file, params={}, result_header_fmt='',
puremd_args = [ \ result_body_fmt='', result_file='result.txt'):
# (path.join(data_dir, 'water/water_6540.pdb'), path.join(data_dir, 'water/ffield.water'), path.join(control_dir, 'param.gpu.water')), \ self.__geo_file = geo_file
# (path.join(data_dir, 'water/water_78480.pdb'), path.join(data_dir, 'water/ffield.water'), path.join(control_dir, 'param.gpu.water')), \ self.__ffield_file = ffield_file
# (path.join(data_dir, 'water/water_327000.geo'), path.join(data_dir, 'water/ffield.water'), path.join(control_dir, 'param.gpu.water')), \ self.__control_file = control_file
# (path.join(data_dir, 'bilayer/bilayer_56800.pdb'), path.join(data_dir, 'bilayer/ffield-bio'), path.join(control_dir, 'param.gpu.water')), \ self.__param_names = sorted(params.keys())
(path.join(data_dir, 'dna/dna_19733.pdb'), path.join(data_dir, 'dna/ffield-dna'), path.join(control_dir, 'param.gpu.water')), \ self.__params = params
(path.join(data_dir, 'silica/silica_6000.pdb'), path.join(data_dir, 'silica/ffield-bio'), path.join(control_dir, 'param.gpu.water')), \ self.__result_header_fmt = result_header_fmt
# (path.join(data_dir, 'silica/silica_72000.geo'), path.join(data_dir, 'silica/ffield-bio'), path.join(control_dir, 'param.gpu.water')), \ self.__result_body_fmt = result_body_fmt
# (path.join(data_dir, 'silica/silica_300000.geo'), path.join(data_dir, 'silica/ffield-bio'), path.join(control_dir, 'param.gpu.water')), \ self.__result_file = result_file
# (path.join(data_dir, 'petn/petn_48256.pdb'), path.join(data_dir, 'petn/ffield.petn'), path.join(control_dir, 'param.gpu.water')), \ self.__control_res = { \
] 'name': lambda l, x: sub(
r'(?P<key>simulation_name\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
header_fmt_str = '{:20}|{:5}|{:5}|{:5}|{:10}|{:10}|{:10}|{:10}|{:10}|{:10}' 'ensemble_type': lambda l, x: sub(
body_fmt_str = '{:20} {:5} {:5} {:5} {:10.6f} {:10.6f} {:10.6f} {:10.6f} {:10} {:10.6f}' r'(?P<key>ensemble_type\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
'nsteps': lambda l, x: sub(
steps = ['20'] #['100'] r'(?P<key>nsteps\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
qeq_solver_tol = ['1e-6'] #['1e-6', '1e-8', '1e-10', '1e-14'] 'qeq_solver_type': lambda l, x: sub(
pre_comp_type = ['2'] #['0', '1', '2'] r'(?P<key>qeq_solver_type\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
threads = ['1', '2', '4', '12', '24'] 'qeq_solver_q_err': lambda l, x: sub(
patterns = [ \ 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>simulation_name\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \ 'pre_comp_type': lambda l, x: sub(
lambda l, x: sub(r'(?P<key>nsteps\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \ 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>qeq_solver_q_err\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \ 'pre_comp_refactor': lambda l, x: sub(
lambda l, x: sub(r'(?P<key>pre_comp_type\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \ r'(?P<key>pre_comp_refactor\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), \ 'pre_comp_sweeps': lambda l, x: sub(
] r'(?P<key>pre_comp_sweeps\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
d = dict(environ) 'pre_app_type': lambda l, x: sub(
r'(?P<key>pre_app_type\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
print header_fmt_str.format('Data Set', 'Steps', 'Q Tol', 'Pre T', 'Pre Comp', 'pre_app_jacobi_iters': lambda l, x: sub(
'Pre App', 'Iters', 'SpMV', 'Threads', 'Time (s)') r'(?P<key>pre_app_jacobi_iters\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
'geo_format': lambda l, x: sub(
for i in xrange(len(puremd_args)): r'(?P<key>geo_format\s+)\S+(?P<comment>.*)', r'\g<key>%s\g<comment>' % x, l), \
for s in xrange(len(steps)): }
for j in xrange(len(qeq_solver_tol)):
for t in xrange(len(pre_comp_type)): def _setup(self, param):
for k in xrange(len(threads)): for line in input(self.__control_file, inplace=1):
for line in input(puremd_args[i][2], inplace=1):
line = line.rstrip() line = line.rstrip()
line = patterns[0](line, path.basename(puremd_args[i][0]).split('.')[0] for k in self.__control_res.keys():
+ '_' + 'tol' + qeq_solver_tol[j] + '_precomp' + pre_comp_type[t] + '_thread' + threads[k]) try:
line = patterns[1](line, steps[s]) line = self.__control_res[k](line, param[k])
line = patterns[2](line, qeq_solver_tol[j]) except KeyError:
line = patterns[3](line, pre_comp_type[t]) pass
print line print line
d['OMP_NUM_THREADS'] = threads[k] def run(self):
start = time() base_dir = getcwd()
p = Popen([path.join(base_dir, 'sPuReMD/bin/spuremd')] + list(puremd_args[i]), env = dict(environ)
stdout=PIPE, stderr=PIPE, env=d)
stdout, stderr = p.communicate() write_header = True
stop = time() if path.exists(self.__result_file):
write_header = False
iters = 0. fout = open(self.__result_file, 'a', 0)
pre_comp = 0. if write_header:
pre_app = 0. fout.write(self.__result_header_fmt.format('Data Set', 'Steps', 'Q Tol', 'Pre T', 'Pre Comp',
spmv = 0. 'Pre App', 'Iters', 'SpMV', 'QEq', 'Threads', 'Time (s)'))
cnt = 0
with open(path.basename(puremd_args[i][0]).split('.')[0] for p in product(*[self.__params[k] for k in self.__param_names]):
+ '_' + 'tol' + qeq_solver_tol[j] + '_precomp' + pre_comp_type[t] + '_thread' param_dict = dict((k, v) for (k, v) in zip(self.__param_names, p))
+ threads[k] + '.log', 'r') as fp: param_dict['name'] = path.basename(self.__geo_file).split('.')[0] \
+ '_step' + param_dict['nsteps'] + '_tol' + param_dict['qeq_solver_q_err'] \
+ '_precomp' + param_dict['pre_comp_type'] + '_thread' + param_dict['threads']
self._setup(param_dict)
env['OMP_NUM_THREADS'] = param_dict['threads']
start = time()
proc_handle = Popen([path.join(base_dir, 'sPuReMD/bin/spuremd'),
self.__geo_file, self.__ffield_file, self.__control_file],
stdout=PIPE, stderr=PIPE, env=env)
#TODO: handle outputs?
stdout, stderr = proc_handle.communicate()
print 'stdout:', stdout
print 'stderr:', stderr
stop = time()
self._process_result(fout, stop - start, param_dict)
fout.close()
def _process_result(self, fout, time, param):
iters = 0.
pre_comp = 0.
pre_app = 0.
spmv = 0.
cnt = 0
with open(param['name'] + '.log', 'r') as fp:
for line in fp: for line in fp:
line = line.split() line = line.split()
try: try:
iters = iters + float(line[7]) iters = iters + float(line[7])
pre_comp = pre_comp + float(line[8]) pre_comp = pre_comp + float(line[8])
pre_app = pre_app + float(line[9]) pre_app = pre_app + float(line[9])
spmv = spmv + float(line[10]) spmv = spmv + float(line[10])
cnt = cnt + 1 cnt = cnt + 1
except Exception: except Exception:
pass pass
cnt = cnt - 1 cnt = cnt - 1
iters = iters / cnt iters = iters / cnt
pre_comp = pre_comp / cnt pre_comp = pre_comp / cnt
pre_app = pre_app / cnt pre_app = pre_app / cnt
spmv = spmv / cnt spmv = spmv / cnt
print body_fmt_str.format(path.basename(puremd_args[i][0]).split('.')[0], fout.write(self.__result_body_fmt.format(path.basename(self.__control_file).split('.')[0],
steps[s], qeq_solver_tol[j], pre_comp_type[t], pre_comp, pre_app, iters, spmv, param['nsteps'], param['qeq_solver_q_err'], param['pre_comp_type'], pre_comp, pre_app, iters, spmv,
threads[k], stop - start) param['threads'], time))
if __name__ == '__main__':
base_dir = getcwd()
control_dir = path.join(base_dir, 'environ')
data_dir = path.join(base_dir, 'data/benchmarks')
header_fmt_str = '{:20}|{:5}|{:5}|{:5}|{:10}|{:10}|{:10}|{:10}|{:10}|{:10}|{:10}\n'
body_fmt_str = '{:20} {:5} {:5} {:5} {:10.6f} {:10.6f} {:10.6f} {:10.6f} {:10.6f} {:10} {:10.6f}\n'
params = {
'ensemble_type': ['0'],
'nsteps': ['20'],
'qeq_solver_type': ['2'],
'qeq_solver_q_err': ['1e-6'],
# 'qeq_solver_q_err': ['1e-6', '1e-8', '1e-10', '1e-14'],
'pre_comp_type': ['2'],
# 'pre_comp_type': ['0', '1', '2'],
'pre_comp_refactor': ['20'],
# 'pre_comp_sweeps': ['3'],
# 'pre_app_type': ['0'],
# 'pre_app_jacobi_iters': ['50'],
'threads': ['1'],
# 'threads': ['1', '2', '4', '12', '24'],
'geo_format': ['1'],
}
test_cases = [
TestCase(path.join(data_dir, 'water/water_6540.pdb'),
path.join(data_dir, 'water/ffield.water'),
path.join(control_dir, 'param.gpu.water'),
params=params, result_header_fmt=header_fmt_str, result_body_fmt=body_fmt_str),
# TestCase(path.join(data_dir, 'water/water_78480.pdb'),
# path.join(data_dir, 'water/ffield.water'),
# path.join(control_dir, 'param.gpu.water'),
# params=params, result_header_fmt=header_fmt_str, result_body_fmt=body_fmt_str),
# TestCase(path.join(data_dir, 'water/water_327000.geo'),
# path.join(data_dir, 'water/ffield.water'),
# path.join(control_dir, 'param.gpu.water'),
# params=params, result_header_fmt=header_fmt_str, result_body_fmt=body_fmt_str),
# TestCase(path.join(data_dir, 'bilayer/bilayer_56800.pdb'),
# path.join(data_dir, 'bilayer/ffield-bio'),
# path.join(control_dir, 'param.gpu.water'),
# params=params, result_header_fmt=header_fmt_str, result_body_fmt=body_fmt_str),
# TestCase(path.join(data_dir, 'dna/dna_19733.pdb'),
# path.join(data_dir, 'dna/ffield-dna'),
# path.join(control_dir, 'param.gpu.water'),
# params=params, result_header_fmt=header_fmt_str, result_body_fmt=body_fmt_str),
# TestCase(path.join(data_dir, 'silica/silica_6000.pdb'),
# path.join(data_dir, 'silica/ffield-bio'),
# path.join(control_dir, 'param.gpu.water'),
# params=params, result_header_fmt=header_fmt_str, result_body_fmt=body_fmt_str),
# TestCase(path.join(data_dir, 'silica/silica_72000.geo'),
# path.join(data_dir, 'silica/ffield-bio'),
# path.join(control_dir, 'param.gpu.water'),
# params=params, result_header_fmt=header_fmt_str, result_body_fmt=body_fmt_str),
# TestCase(path.join(data_dir, 'silica/silica_300000.geo'),
# path.join(data_dir, 'silica/ffield-bio'),
# path.join(control_dir, 'param.gpu.water'),
# params=params, result_header_fmt=header_fmt_str, result_body_fmt=body_fmt_str),
# TestCase(path.join(data_dir, 'petn/petn_48256.pdb'),
# path.join(data_dir, 'petn/ffield.petn'),
# path.join(control_dir, 'param.gpu.water'),
# params=params, result_header_fmt=header_fmt_str, result_body_fmt=body_fmt_str),
]
for test in test_cases:
test.run()
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