Skip to content

Commit 00a74ed

Browse files
author
Han Wang
committed
Merge remote-tracking branch 'upstream/devel' into devel
2 parents 9e3f176 + be18580 commit 00a74ed

File tree

6 files changed

+74
-81
lines changed

6 files changed

+74
-81
lines changed

doc/conf.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
# ]
3939

4040
extensions = [
41+
'deepmodeling_sphinx',
4142
"sphinx_rtd_theme",
4243
'myst_parser',
4344
'sphinx.ext.autosummary',

doc/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ recommonmark==0.7.1
33
sphinx_rtd_theme==0.5.2
44
sphinx_markdown_tables==0.0.15
55
myst-parser==0.13.7
6+
deepmodeling_sphinx

dpgen/auto_test/common_equi.py

Lines changed: 40 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -114,46 +114,6 @@ def make_equi(confs,
114114
inter.make_input_file(ii, 'relaxation', relax_param)
115115

116116

117-
def worker(work_path,
118-
run_task,
119-
forward_common_files,
120-
forward_files,
121-
backward_files,
122-
mdata,
123-
inter_type):
124-
machine, resources, command, group_size = util.get_machine_info(mdata, inter_type)
125-
disp = make_dispatcher(machine, resources, work_path, [run_task], group_size)
126-
print("%s --> Runing... " % (work_path))
127-
128-
api_version = mdata.get('api_version', '0.9')
129-
if LooseVersion(api_version) < LooseVersion('1.0'):
130-
warnings.warn(f"the dpdispatcher will be updated to new version."
131-
f"And the interface may be changed. Please check the documents for more details")
132-
disp.run_jobs(resources,
133-
command,
134-
work_path,
135-
[run_task],
136-
group_size,
137-
forward_common_files,
138-
forward_files,
139-
backward_files,
140-
outlog='outlog',
141-
errlog='errlog')
142-
elif LooseVersion(api_version) >= LooseVersion('1.0'):
143-
submission = make_submission(
144-
mdata_machine=machine,
145-
mdata_resources=resources,
146-
commands=[command],
147-
work_path=work_path,
148-
run_tasks=run_task,
149-
group_size=group_size,
150-
forward_common_files=forward_common_files,
151-
forward_files=forward_files,
152-
backward_files=backward_files,
153-
outlog='outlog',
154-
errlog='errlog'
155-
)
156-
submission.run_submission()
157117

158118
def run_equi(confs,
159119
inter_param,
@@ -166,18 +126,16 @@ def run_equi(confs,
166126
conf_dirs.sort()
167127

168128
processes = len(conf_dirs)
169-
pool = Pool(processes=processes)
170-
print("Submit job via %d processes" % processes)
171129

172130
# generate a list of task names like mp-xxx/relaxation/relax_task
173131
# ...
174132
work_path_list = []
175133
for ii in conf_dirs:
176-
work_path_list.append(os.path.abspath(os.path.join(ii, 'relaxation')))
134+
work_path_list.append(os.path.join(ii, 'relaxation'))
177135
all_task = []
178136
for ii in work_path_list:
179137
all_task.append(os.path.join(ii, 'relax_task'))
180-
138+
run_tasks = all_task
181139
inter_type = inter_param['type']
182140
# vasp
183141
if inter_type == "vasp":
@@ -186,41 +144,51 @@ def run_equi(confs,
186144
mdata = convert_mdata(mdata, ["model_devi"])
187145
else:
188146
raise RuntimeError("unknown task %s, something wrong" % inter_type)
189-
147+
190148
# dispatch the tasks
191149
# POSCAR here is useless
192150
virtual_calculator = make_calculator(inter_param, "POSCAR")
193151
forward_files = virtual_calculator.forward_files()
194152
forward_common_files = virtual_calculator.forward_common_files()
195153
backward_files = virtual_calculator.backward_files()
196154
# backward_files += logs
197-
# ...
198-
run_tasks = util.collect_task(all_task, inter_type)
199-
if len(run_tasks) == 0:
200-
return
201-
else:
202-
run_tasks = [os.path.basename(ii) for ii in all_task]
203-
machine, resources, command, group_size = util.get_machine_info(mdata, inter_type)
204-
print('%d tasks will be submited '%len(run_tasks))
205-
multiple_ret = []
206-
for ii in range(len(work_path_list)):
207-
work_path = work_path_list[ii]
208-
209-
ret = pool.apply_async(worker, (work_path,
210-
run_tasks[ii],
211-
forward_common_files,
212-
forward_files,
213-
backward_files,
214-
mdata,
215-
inter_type,
216-
))
217-
multiple_ret.append(ret)
218-
pool.close()
219-
pool.join()
220-
for ii in range(len(multiple_ret)):
221-
if not multiple_ret[ii].successful():
222-
raise RuntimeError("Task %d is not successful! work_path: %s " % (ii, work_path_list[ii]))
223-
print('finished')
155+
machine, resources, command, group_size = util.get_machine_info(mdata, inter_type)
156+
work_path = os.getcwd()
157+
print("%s --> Runing... " % (work_path))
158+
159+
api_version = mdata.get('api_version', '0.9')
160+
if LooseVersion(api_version) < LooseVersion('1.0'):
161+
warnings.warn(f"the dpdispatcher will be updated to new version."
162+
f"And the interface may be changed. Please check the documents for more details")
163+
disp = make_dispatcher(machine, resources, work_path, run_tasks, group_size)
164+
disp.run_jobs(resources,
165+
command,
166+
work_path,
167+
run_tasks,
168+
group_size,
169+
forward_common_files,
170+
forward_files,
171+
backward_files,
172+
outlog='outlog',
173+
errlog='errlog')
174+
elif LooseVersion(api_version) >= LooseVersion('1.0'):
175+
176+
submission = make_submission(
177+
mdata_machine=machine,
178+
mdata_resources=resources,
179+
commands=[command],
180+
work_path=work_path,
181+
run_tasks=run_tasks,
182+
group_size=group_size,
183+
forward_common_files=forward_common_files,
184+
forward_files=forward_files,
185+
backward_files=backward_files,
186+
outlog='outlog',
187+
errlog='errlog'
188+
)
189+
submission.run_submission()
190+
191+
224192

225193
def post_equi(confs, inter_param):
226194
# find all POSCARs and their name like mp-xxx

dpgen/auto_test/common_prop.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ def run_property(confs,
173173
pool.join()
174174
for ii in range(len(multiple_ret)):
175175
if not multiple_ret[ii].successful():
176+
print("ERROR:", multiple_ret[ii].get())
176177
raise RuntimeError("Job %d is not successful!" % ii)
177178
print('%d jobs are finished' % len(multiple_ret))
178179

@@ -186,11 +187,11 @@ def worker(work_path,
186187
inter_type):
187188
run_tasks = [os.path.basename(ii) for ii in all_task]
188189
machine, resources, command, group_size = util.get_machine_info(mdata, inter_type)
189-
disp = make_dispatcher(machine, resources, work_path, run_tasks, group_size)
190190
api_version = mdata.get('api_version', '0.9')
191191
if LooseVersion(api_version) < LooseVersion('1.0'):
192192
warnings.warn(f"the dpdispatcher will be updated to new version."
193193
f"And the interface may be changed. Please check the documents for more details")
194+
disp = make_dispatcher(machine, resources, work_path, run_tasks, group_size)
194195
disp.run_jobs(resources,
195196
command,
196197
work_path,

dpgen/generator/run.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,8 @@ def make_train (iter_index,
394394
else:
395395
jinput['model']['descriptor']['seed'] = random.randrange(sys.maxsize) % (2**32)
396396
jinput['model']['fitting_net']['seed'] = random.randrange(sys.maxsize) % (2**32)
397+
if 'type_embedding' in jinput['model']:
398+
jinput['model']['type_embedding']['seed'] = random.randrange(sys.maxsize) % (2**32)
397399
jinput['training']['seed'] = random.randrange(sys.maxsize) % (2**32)
398400
else:
399401
raise RuntimeError("DP-GEN currently only supports for DeePMD-kit 1.x or 2.x version!" )

dpgen/simplify/simplify.py

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
from dpgen import dlog
2323
from dpgen import SHORT_CMD
2424
from dpgen.util import sepline
25-
from dpgen.dispatcher.Dispatcher import Dispatcher, make_dispatcher
25+
from distutils.version import LooseVersion
26+
from dpgen.dispatcher.Dispatcher import Dispatcher, _split_tasks, make_dispatcher, make_submission
2627
from dpgen.generator.run import make_train, run_train, post_train, run_fp, post_fp, fp_name, model_devi_name, train_name, train_task_fmt, sys_link_fp_vasp_pp, make_fp_vasp_incar, make_fp_vasp_kp, make_fp_vasp_cp_cvasp, data_system_fmt, model_devi_task_fmt, fp_task_fmt
2728
# TODO: maybe the following functions can be moved to dpgen.util
2829
from dpgen.generator.lib.utils import log_iter, make_iter_name, create_path, record_iter
@@ -245,7 +246,7 @@ def run_model_devi(iter_index, jdata, mdata):
245246
commands = []
246247
detail_file_names = []
247248
for ii, mm in enumerate(task_model_list):
248-
detail_file_name = "{prefix}.{ii}".format(
249+
detail_file_name = "{prefix}-{ii}".format(
249250
prefix=detail_file_name_prefix,
250251
ii=ii,
251252
)
@@ -268,17 +269,36 @@ def run_model_devi(iter_index, jdata, mdata):
268269
forward_files = [rest_data_name]
269270
backward_files = sum([[pf+".e.out", pf+".f.out", pf+".v.out"] for pf in detail_file_names], [])
270271

271-
dispatcher = make_dispatcher(mdata['model_devi_machine'], mdata['model_devi_resources'], work_path, run_tasks, model_devi_group_size)
272-
dispatcher.run_jobs(mdata['model_devi_resources'],
272+
api_version = mdata.get('api_version', '0.9')
273+
if LooseVersion(api_version) < LooseVersion('1.0'):
274+
warnings.warn(f"the dpdispatcher will be updated to new version."
275+
f"And the interface may be changed. Please check the documents for more details")
276+
dispatcher = make_dispatcher(mdata['model_devi_machine'], mdata['model_devi_resources'], work_path, run_tasks, model_devi_group_size)
277+
dispatcher.run_jobs(mdata['model_devi_resources'],
273278
commands,
274279
work_path,
275280
run_tasks,
276281
model_devi_group_size,
277282
model_names,
278283
forward_files,
279284
backward_files,
280-
outlog='model_devi.log',
281-
errlog='model_devi.log')
285+
outlog = 'model_devi.log',
286+
errlog = 'model_devi.log')
287+
288+
elif LooseVersion(api_version) >= LooseVersion('1.0'):
289+
submission = make_submission(
290+
mdata['model_devi_machine'],
291+
mdata['model_devi_resources'],
292+
commands=commands,
293+
work_path=work_path,
294+
run_tasks=run_tasks,
295+
group_size=model_devi_group_size,
296+
forward_common_files=model_names,
297+
forward_files=forward_files,
298+
backward_files=backward_files,
299+
outlog = 'model_devi.log',
300+
errlog = 'model_devi.log')
301+
submission.run_submission()
282302

283303

284304
def post_model_devi(iter_index, jdata, mdata):
@@ -309,13 +329,13 @@ def post_model_devi(iter_index, jdata, mdata):
309329
sys_name = os.path.basename(task).split('.')[1]
310330
all_names.add(sys_name)
311331
# e.out
312-
details_e = glob.glob(os.path.join(task, "{}.*.e.out".format(detail_file_name_prefix)))
332+
details_e = glob.glob(os.path.join(task, "{}-*.e.out".format(detail_file_name_prefix)))
313333
e_all = np.array([np.loadtxt(detail_e, ndmin=2)[:, 1] for detail_e in details_e])
314334
e_std = np.std(e_all, axis=0)
315335
n_frame = e_std.size
316336

317337
# f.out
318-
details_f = glob.glob(os.path.join(task, "{}.*.f.out".format(detail_file_name_prefix)))
338+
details_f = glob.glob(os.path.join(task, "{}-*.f.out".format(detail_file_name_prefix)))
319339
f_all = np.array([np.loadtxt(detail_f, ndmin=2)[:, 3:6].reshape((n_frame, -1, 3)) for detail_f in details_f])
320340
# (n_model, n_frame, n_atom, 3)
321341
f_std = np.std(f_all, axis=0)

0 commit comments

Comments
 (0)