hpc-task 0.1.2__tar.gz → 0.1.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hpc_task-0.1.2 → hpc_task-0.1.3}/PKG-INFO +3 -2
- {hpc_task-0.1.2 → hpc_task-0.1.3}/README.md +64 -63
- {hpc_task-0.1.2 → hpc_task-0.1.3}/hpc_task/hpc.py +8 -8
- {hpc_task-0.1.2 → hpc_task-0.1.3}/hpc_task.egg-info/PKG-INFO +3 -2
- {hpc_task-0.1.2 → hpc_task-0.1.3}/setup.py +1 -1
- {hpc_task-0.1.2 → hpc_task-0.1.3}/LICENSE +0 -0
- {hpc_task-0.1.2 → hpc_task-0.1.3}/hpc_task/__init__.py +0 -0
- {hpc_task-0.1.2 → hpc_task-0.1.3}/hpc_task/hpc_calculator/__init__.py +0 -0
- {hpc_task-0.1.2 → hpc_task-0.1.3}/hpc_task/hpc_calculator/lasp.py +0 -0
- {hpc_task-0.1.2 → hpc_task-0.1.3}/hpc_task/hpc_calculator/vasp.py +0 -0
- {hpc_task-0.1.2 → hpc_task-0.1.3}/hpc_task/templates/__init__.py +0 -0
- {hpc_task-0.1.2 → hpc_task-0.1.3}/hpc_task.egg-info/SOURCES.txt +0 -0
- {hpc_task-0.1.2 → hpc_task-0.1.3}/hpc_task.egg-info/dependency_links.txt +0 -0
- {hpc_task-0.1.2 → hpc_task-0.1.3}/hpc_task.egg-info/requires.txt +0 -0
- {hpc_task-0.1.2 → hpc_task-0.1.3}/hpc_task.egg-info/top_level.txt +0 -0
- {hpc_task-0.1.2 → hpc_task-0.1.3}/setup.cfg +0 -0
- {hpc_task-0.1.2 → hpc_task-0.1.3}/tests/test_task.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hpc_task
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.3
|
|
4
4
|
Summary: HPC Task python library.
|
|
5
5
|
Home-page: https://gitee.com/pjren/hpc_task
|
|
6
6
|
Author: Renpj
|
|
@@ -61,13 +61,14 @@ hpc.close() # 此时可以关闭 ssh 通道
|
|
|
61
61
|
# 在运行时候再重新构造和连接 hpc
|
|
62
62
|
hpc = HPCTask(jobid=jobid) # workdir 会根据 jobid 提取得到
|
|
63
63
|
hpc.connect(target_host)
|
|
64
|
-
|
|
64
|
+
hpc.get_workdir()
|
|
65
65
|
# 结构、计算参数设置
|
|
66
66
|
atoms = ase.Atoms('N2', positions=[(0., 0., 0.), (1.4, 0., 0.)],
|
|
67
67
|
cell=[10, 10, 10], pbc=True)
|
|
68
68
|
# calc 设置
|
|
69
69
|
calc = hpc_Vasp(
|
|
70
70
|
xc='pbe',
|
|
71
|
+
directory=hpc.workdir, # 必须设置, 会新建文件夹,并进入文件夹执行命令
|
|
71
72
|
command='mpirun -np 8 vasp544_std', # 必须设置,或者提供了 ASE vasp 的相关设置
|
|
72
73
|
hpctask=hpc, # 这个非常关键,必须提供
|
|
73
74
|
gamma=True,
|
|
@@ -1,63 +1,64 @@
|
|
|
1
|
-
# HPC Task
|
|
2
|
-
|
|
3
|
-
Python package for easy HPC task management based on paramiko.
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
pip install -U hpc_task
|
|
8
|
-
|
|
9
|
-
**Requirements**
|
|
10
|
-
* paramiko
|
|
11
|
-
* ase
|
|
12
|
-
|
|
13
|
-
## Usage
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
import ase
|
|
17
|
-
from hpc_task.hpc import HPCTask
|
|
18
|
-
from hpc_task.hpc_calculator.vasp import Vasp as hpc_Vasp # 必须导入hpc_Vasp 而非原生的 ase 的 Vasp
|
|
19
|
-
|
|
20
|
-
target_host = {
|
|
21
|
-
'hostname': "TARGET HOST IP",
|
|
22
|
-
'port': 22,
|
|
23
|
-
'username': "YOUR_USERNAME",
|
|
24
|
-
'password': "YOUR_PASSWD",
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
workdir = 'test_vasp_calc'
|
|
28
|
-
hpc = HPCTask(workdir=workdir)
|
|
29
|
-
hpc.scriptdir = '/data/bin/remote.job' # 提交作业的脚本
|
|
30
|
-
hpc.connect(target_host)
|
|
31
|
-
# 启动队列,得到 jobid
|
|
32
|
-
hpc.prerun()
|
|
33
|
-
jobid = hpc.jobid
|
|
34
|
-
hpc.close() # 此时可以关闭 ssh 通道
|
|
35
|
-
|
|
36
|
-
# 在运行时候再重新构造和连接 hpc
|
|
37
|
-
hpc = HPCTask(jobid=jobid) # workdir 会根据 jobid 提取得到
|
|
38
|
-
hpc.connect(target_host)
|
|
39
|
-
|
|
40
|
-
# 结构、计算参数设置
|
|
41
|
-
atoms = ase.Atoms('N2', positions=[(0., 0., 0.), (1.4, 0., 0.)],
|
|
42
|
-
cell=[10, 10, 10], pbc=True)
|
|
43
|
-
# calc 设置
|
|
44
|
-
calc = hpc_Vasp(
|
|
45
|
-
xc='pbe',
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
1
|
+
# HPC Task
|
|
2
|
+
|
|
3
|
+
Python package for easy HPC task management based on paramiko.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
pip install -U hpc_task
|
|
8
|
+
|
|
9
|
+
**Requirements**
|
|
10
|
+
* paramiko
|
|
11
|
+
* ase
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
import ase
|
|
17
|
+
from hpc_task.hpc import HPCTask
|
|
18
|
+
from hpc_task.hpc_calculator.vasp import Vasp as hpc_Vasp # 必须导入hpc_Vasp 而非原生的 ase 的 Vasp
|
|
19
|
+
|
|
20
|
+
target_host = {
|
|
21
|
+
'hostname': "TARGET HOST IP",
|
|
22
|
+
'port': 22,
|
|
23
|
+
'username': "YOUR_USERNAME",
|
|
24
|
+
'password': "YOUR_PASSWD",
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
workdir = 'test_vasp_calc'
|
|
28
|
+
hpc = HPCTask(workdir=workdir)
|
|
29
|
+
hpc.scriptdir = '/data/bin/remote.job' # 提交作业的脚本
|
|
30
|
+
hpc.connect(target_host)
|
|
31
|
+
# 启动队列,得到 jobid
|
|
32
|
+
hpc.prerun()
|
|
33
|
+
jobid = hpc.jobid
|
|
34
|
+
hpc.close() # 此时可以关闭 ssh 通道
|
|
35
|
+
|
|
36
|
+
# 在运行时候再重新构造和连接 hpc
|
|
37
|
+
hpc = HPCTask(jobid=jobid) # workdir 会根据 jobid 提取得到
|
|
38
|
+
hpc.connect(target_host)
|
|
39
|
+
hpc.get_workdir()
|
|
40
|
+
# 结构、计算参数设置
|
|
41
|
+
atoms = ase.Atoms('N2', positions=[(0., 0., 0.), (1.4, 0., 0.)],
|
|
42
|
+
cell=[10, 10, 10], pbc=True)
|
|
43
|
+
# calc 设置
|
|
44
|
+
calc = hpc_Vasp(
|
|
45
|
+
xc='pbe',
|
|
46
|
+
directory=hpc.workdir, # 必须设置, 会新建文件夹,并进入文件夹执行命令
|
|
47
|
+
command='mpirun -np 8 vasp544_std', # 必须设置,或者提供了 ASE vasp 的相关设置
|
|
48
|
+
hpctask=hpc, # 这个非常关键,必须提供
|
|
49
|
+
gamma=True,
|
|
50
|
+
encut=400,
|
|
51
|
+
lwave=False,
|
|
52
|
+
lcharg=False,
|
|
53
|
+
)
|
|
54
|
+
# 计算
|
|
55
|
+
atoms.calc = calc
|
|
56
|
+
e = atoms.get_potential_energy()
|
|
57
|
+
print(f"Energy of N2 is {e} eV.")
|
|
58
|
+
# finish job,结束节点任务
|
|
59
|
+
hpc.postrun()
|
|
60
|
+
# 关闭通道
|
|
61
|
+
hpc.close()
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## TODO
|
|
@@ -79,7 +79,7 @@ class HPCTask:
|
|
|
79
79
|
abs_workdir = stdout.read().decode('utf-8').strip().split()[-1]
|
|
80
80
|
workdir = Path(abs_workdir).relative_to(Path(self._remote_parent_workdir))
|
|
81
81
|
if self.workdir is None:
|
|
82
|
-
self.workdir =
|
|
82
|
+
self.workdir = workdir.as_posix()
|
|
83
83
|
return self.workdir
|
|
84
84
|
|
|
85
85
|
@property
|
|
@@ -292,7 +292,6 @@ class HPCTask:
|
|
|
292
292
|
print(f"Waiting for the queue 10 seconds...")
|
|
293
293
|
sleep(10)
|
|
294
294
|
status = self.status
|
|
295
|
-
need_sync = False
|
|
296
295
|
elif status in ('SUSPENDED', 'DONE'):
|
|
297
296
|
output = ''
|
|
298
297
|
err = f"Job {self.jobid} status: {status}"
|
|
@@ -327,12 +326,12 @@ class HPCTask:
|
|
|
327
326
|
rel_path = Path(root).relative_to(local_path)
|
|
328
327
|
remote_dir = remote_path / rel_path
|
|
329
328
|
if str(rel_path) != ".":
|
|
330
|
-
_ensure_remote_dir_exists(sftp_client,
|
|
329
|
+
_ensure_remote_dir_exists(sftp_client, remote_dir.as_posix())
|
|
331
330
|
# 上传文件
|
|
332
331
|
for file in files:
|
|
333
332
|
local_file = Path(root) / file
|
|
334
333
|
remote_file = remote_dir / file
|
|
335
|
-
sftp_client.put(
|
|
334
|
+
sftp_client.put(local_file.as_posix(), remote_file.as_posix(), confirm=False)
|
|
336
335
|
|
|
337
336
|
return None
|
|
338
337
|
|
|
@@ -365,13 +364,14 @@ def _ensure_remote_dir_exists(sftp, remote_dir):
|
|
|
365
364
|
except FileNotFoundError:
|
|
366
365
|
# 递归创建目录
|
|
367
366
|
parts = Path(remote_dir).parts
|
|
368
|
-
current_path = parts[0]
|
|
367
|
+
current_path = Path(parts[0])
|
|
369
368
|
for part in parts[1:]: # 跳过根目录
|
|
370
|
-
current_path = os.path.join(current_path, part)
|
|
369
|
+
# current_path = os.path.join(current_path, part)
|
|
370
|
+
current_path = current_path / part
|
|
371
371
|
try:
|
|
372
|
-
sftp.stat(current_path)
|
|
372
|
+
sftp.stat(current_path.as_posix())
|
|
373
373
|
except FileNotFoundError:
|
|
374
|
-
sftp.mkdir(current_path)
|
|
374
|
+
sftp.mkdir(current_path.as_posix())
|
|
375
375
|
|
|
376
376
|
def _download_dir(sftp, remote, local):
|
|
377
377
|
os.makedirs(local, exist_ok=True)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hpc_task
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.3
|
|
4
4
|
Summary: HPC Task python library.
|
|
5
5
|
Home-page: https://gitee.com/pjren/hpc_task
|
|
6
6
|
Author: Renpj
|
|
@@ -61,13 +61,14 @@ hpc.close() # 此时可以关闭 ssh 通道
|
|
|
61
61
|
# 在运行时候再重新构造和连接 hpc
|
|
62
62
|
hpc = HPCTask(jobid=jobid) # workdir 会根据 jobid 提取得到
|
|
63
63
|
hpc.connect(target_host)
|
|
64
|
-
|
|
64
|
+
hpc.get_workdir()
|
|
65
65
|
# 结构、计算参数设置
|
|
66
66
|
atoms = ase.Atoms('N2', positions=[(0., 0., 0.), (1.4, 0., 0.)],
|
|
67
67
|
cell=[10, 10, 10], pbc=True)
|
|
68
68
|
# calc 设置
|
|
69
69
|
calc = hpc_Vasp(
|
|
70
70
|
xc='pbe',
|
|
71
|
+
directory=hpc.workdir, # 必须设置, 会新建文件夹,并进入文件夹执行命令
|
|
71
72
|
command='mpirun -np 8 vasp544_std', # 必须设置,或者提供了 ASE vasp 的相关设置
|
|
72
73
|
hpctask=hpc, # 这个非常关键,必须提供
|
|
73
74
|
gamma=True,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|