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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hpc_task
3
- Version: 0.1.2
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
- command='mpirun -np 8 vasp544_std', # 必须设置,或者提供了 ASE vasp 的相关设置
47
- hpctask=hpc, # 这个非常关键,必须提供
48
- gamma=True,
49
- encut=400,
50
- lwave=False,
51
- lcharg=False,
52
- )
53
- # 计算
54
- atoms.calc = calc
55
- e = atoms.get_potential_energy()
56
- print(f"Energy of N2 is {e} eV.")
57
- # finish job,结束节点任务
58
- hpc.postrun()
59
- # 关闭通道
60
- hpc.close()
61
- ```
62
-
63
- ## TODO
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 = str(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, str(remote_dir))
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(str(local_file), str(remote_file), confirm=False)
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.2
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,
@@ -10,7 +10,7 @@ install_requires = [
10
10
 
11
11
  setup(
12
12
  name='hpc_task',
13
- version='0.1.2',
13
+ version='0.1.3',
14
14
  url='https://gitee.com/pjren/hpc_task',
15
15
  license='MIT',
16
16
  author='Renpj',
File without changes
File without changes
File without changes
File without changes