dpdispatcher 0.6.5__tar.gz → 0.6.6__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.
Potentially problematic release.
This version of dpdispatcher might be problematic. Click here for more details.
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/.git_archival.txt +0 -1
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/.pre-commit-config.yaml +2 -2
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/PKG-INFO +2 -2
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/_version.py +2 -2
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/contexts/ssh_context.py +55 -42
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/machine.py +1 -2
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/machines/pbs.py +73 -12
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher.egg-info/PKG-INFO +2 -2
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher.egg-info/requires.txt +1 -1
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/pyproject.toml +1 -1
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_lsf_script_generation.py +2 -2
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/.gitattributes +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/.github/dependabot.yml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/.github/workflows/ci-docker.yml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/.github/workflows/machines.yml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/.github/workflows/mirror_gitee.yml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/.github/workflows/publish_conda.yml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/.github/workflows/pyright.yml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/.github/workflows/release.yml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/.github/workflows/test-bohrium.yml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/.github/workflows/test.yml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/.gitignore +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/.readthedocs.yaml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/CONTRIBUTING.md +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/Dockerfile +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/LICENSE +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/README.md +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/ci/LICENSE +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/ci/README.md +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/ci/pbs/docker-compose.yml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/ci/pbs/start-pbs.sh +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/ci/pbs.sh +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/ci/slurm/docker-compose.yml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/ci/slurm/register_cluster.sh +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/ci/slurm/start-slurm.sh +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/ci/slurm.sh +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/ci/ssh/docker-compose.yml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/ci/ssh/start-ssh.sh +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/ci/ssh.sh +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/ci/ssh_rsync.sh +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/codecov.yml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/conda/conda_build_config.yaml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/conda/meta.yaml +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/.gitignore +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/Makefile +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/batch.md +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/cli.rst +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/conf.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/context.md +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/credits.rst +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/dpdispatcher_on_yarn.md +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/examples/expanse.md +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/examples/g16.md +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/examples/shell.md +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/examples/template.md +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/getting-started.md +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/index.rst +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/install.md +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/machine.rst +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/make.bat +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/pep723.rst +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/requirements.txt +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/resources.rst +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/run.md +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/doc/task.rst +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/__init__.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/__main__.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/arginfo.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/base_context.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/contexts/__init__.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/contexts/dp_cloud_server_context.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/contexts/hdfs_context.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/contexts/lazy_local_context.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/contexts/local_context.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/contexts/openapi_context.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/dlog.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/dpcloudserver/__init__.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/dpcloudserver/client.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/dpdisp.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/entrypoints/__init__.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/entrypoints/gui.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/entrypoints/run.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/entrypoints/submission.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/machines/JH_UniScheduler.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/machines/__init__.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/machines/distributed_shell.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/machines/dp_cloud_server.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/machines/fugaku.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/machines/lsf.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/machines/openapi.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/machines/shell.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/machines/slurm.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/run.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/submission.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/utils/__init__.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/utils/dpcloudserver/__init__.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/utils/dpcloudserver/client.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/utils/dpcloudserver/config.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/utils/dpcloudserver/retcode.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/utils/dpcloudserver/zip_file.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/utils/hdfs_cli.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/utils/job_status.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/utils/record.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher/utils/utils.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher.egg-info/SOURCES.txt +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher.egg-info/dependency_links.txt +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher.egg-info/entry_points.txt +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/dpdispatcher.egg-info/top_level.txt +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/examples/dpdisp_run.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/examples/machine/expanse.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/examples/machine/lazy_local.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/examples/machine/mandu.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/examples/resources/expanse_cpu.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/examples/resources/mandu.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/examples/resources/template.slurm +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/examples/resources/tiger.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/examples/task/deepmd-kit.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/examples/task/g16.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/scripts/script_gen_dargs_docs.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/scripts/script_gen_dargs_json.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/setup.cfg +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/.gitignore +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/__init__.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/batch.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/context.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/debug_test_class_submission_init.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/devel_test_JH_UniScheduler.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/devel_test_ali_ehpc.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/devel_test_dp_cloud_server.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/devel_test_lazy_ali_ehpc.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/devel_test_lsf.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/devel_test_shell.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/devel_test_slurm.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/devel_test_ssh_ali_ehpc.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/graph.pb +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/hello_world.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/job.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_JH_UniScheduler.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_ali_ehpc.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_center.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_diffenert.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_dp_cloud_server.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_fugaku.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_if_cuda_multi_devices.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_lazy_local_jh_unischeduler.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_lazy_local_lsf.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_lazy_local_slurm.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_lazylocal_shell.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_local_fugaku.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_local_shell.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_lsf.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_openapi.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_slurm.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/machine_yarn.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/resources.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/submission.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/jsons/task.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/sample_class.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/script_gen_json.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/slurm_test.env +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_JH_UniScheduler_script_generation.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_argcheck.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_class_job.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_class_machine.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_class_machine_dispatch.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_class_resources.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_class_submission.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_class_submission_init.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_class_task.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_cli.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_context_dir/0_md/bct-1/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_context_dir/0_md/bct-1/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_context_dir/0_md/bct-1/some_dir/some_file +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_context_dir/0_md/bct-2/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_context_dir/0_md/bct-2/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_context_dir/0_md/bct-3/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_context_dir/0_md/bct-3/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_context_dir/0_md/bct-4/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_context_dir/0_md/bct-4/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_context_dir/0_md/dir with space/file with space +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_context_dir/0_md/graph.pb +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_context_dir/0_md/some_dir/some_file +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_examples.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_group_size.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_gui.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_hdfs_context.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_hdfs_dir/0_md/bct-1/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_hdfs_dir/0_md/bct-1/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_hdfs_dir/0_md/bct-2/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_hdfs_dir/0_md/bct-2/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_hdfs_dir/0_md/bct-3/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_hdfs_dir/0_md/bct-3/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_hdfs_dir/0_md/bct-4/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_hdfs_dir/0_md/bct-4/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_hdfs_dir/0_md/graph.pb +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_if_cuda_multi_devices/test_dir/test.txt +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_import_classes.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_jh_unischeduler/0_md/bct-1/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_jh_unischeduler/0_md/bct-1/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_jh_unischeduler/0_md/bct-2/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_jh_unischeduler/0_md/bct-2/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_jh_unischeduler/0_md/bct-3/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_jh_unischeduler/0_md/bct-3/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_jh_unischeduler/0_md/bct-4/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_jh_unischeduler/0_md/bct-4/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_jh_unischeduler/0_md/graph.pb +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_lazy_local_context.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_local_context.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_lsf_dir/0_md/bct-1/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_lsf_dir/0_md/bct-1/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_lsf_dir/0_md/bct-2/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_lsf_dir/0_md/bct-2/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_lsf_dir/0_md/bct-3/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_lsf_dir/0_md/bct-3/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_lsf_dir/0_md/bct-4/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_lsf_dir/0_md/bct-4/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_lsf_dir/0_md/graph.pb +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_lsf_dir/0_md/submission.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_pbs_dir/0_md/bct-1/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_pbs_dir/0_md/bct-1/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_pbs_dir/0_md/bct-2/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_pbs_dir/0_md/bct-2/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_pbs_dir/0_md/bct-3/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_pbs_dir/0_md/bct-3/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_pbs_dir/0_md/bct-4/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_pbs_dir/0_md/bct-4/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_pbs_dir/0_md/graph.pb +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_retry.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_run.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_run_submission.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_run_submission_bohrium.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_run_submission_ratio_unfinished.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_shell_cuda_multi_devices.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_shell_trival.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_shell_trival_dir/fail_dir/mock_fail_task.txt +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_shell_trival_dir/parent_dir/dir with space/example.txt +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_shell_trival_dir/parent_dir/dir1/example.txt +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_shell_trival_dir/parent_dir/dir2/example.txt +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_shell_trival_dir/parent_dir/dir3/example.txt +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_shell_trival_dir/parent_dir/dir4/example.txt +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_shell_trival_dir/parent_dir/graph.pb +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_shell_trival_dir/recover_dir/mock_recover_task.txt +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_slurm_dir/0_md/bct-1/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_slurm_dir/0_md/bct-1/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_slurm_dir/0_md/bct-2/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_slurm_dir/0_md/bct-2/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_slurm_dir/0_md/bct-3/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_slurm_dir/0_md/bct-3/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_slurm_dir/0_md/bct-4/conf.lmp +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_slurm_dir/0_md/bct-4/input.lammps +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_slurm_dir/0_md/d3c842c5b9476e48f7145b370cd330372b9293e1.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_slurm_dir/0_md/graph.pb +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_slurm_dir/0_md/submission.json +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_slurm_script_generation.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_ssh_context.py +0 -0
- {dpdispatcher-0.6.5 → dpdispatcher-0.6.6}/tests/test_work_path/.gitkeep +0 -0
|
@@ -18,7 +18,7 @@ repos:
|
|
|
18
18
|
# Python
|
|
19
19
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
20
20
|
# Ruff version.
|
|
21
|
-
rev: v0.
|
|
21
|
+
rev: v0.5.4
|
|
22
22
|
hooks:
|
|
23
23
|
- id: ruff
|
|
24
24
|
args: ["--fix"]
|
|
@@ -31,7 +31,7 @@ repos:
|
|
|
31
31
|
args: ["--write"]
|
|
32
32
|
# Python inside docs
|
|
33
33
|
- repo: https://github.com/asottile/blacken-docs
|
|
34
|
-
rev: 1.
|
|
34
|
+
rev: 1.18.0
|
|
35
35
|
hooks:
|
|
36
36
|
- id: blacken-docs
|
|
37
37
|
# markdown, yaml
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dpdispatcher
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.6
|
|
4
4
|
Summary: Generate HPC scheduler systems jobs input scripts, submit these scripts to HPC systems, and poke until they finish
|
|
5
5
|
Author: DeepModeling
|
|
6
6
|
License: GNU LESSER GENERAL PUBLIC LICENSE
|
|
@@ -199,7 +199,7 @@ Requires-Dist: sphinx_rtd_theme>=1.0.0rc1; extra == "docs"
|
|
|
199
199
|
Requires-Dist: numpydoc; extra == "docs"
|
|
200
200
|
Requires-Dist: deepmodeling_sphinx>=0.1.1; extra == "docs"
|
|
201
201
|
Requires-Dist: dargs>=0.3.1; extra == "docs"
|
|
202
|
-
Requires-Dist: sphinx-argparse; extra == "docs"
|
|
202
|
+
Requires-Dist: sphinx-argparse<0.5.0; extra == "docs"
|
|
203
203
|
Provides-Extra: cloudserver
|
|
204
204
|
Requires-Dist: oss2; extra == "cloudserver"
|
|
205
205
|
Requires-Dist: tqdm; extra == "cloudserver"
|
|
@@ -295,7 +295,11 @@ class SSHSession:
|
|
|
295
295
|
assert self.ssh is not None
|
|
296
296
|
try:
|
|
297
297
|
return self.ssh.exec_command(cmd)
|
|
298
|
-
except (
|
|
298
|
+
except (
|
|
299
|
+
paramiko.ssh_exception.SSHException,
|
|
300
|
+
socket.timeout,
|
|
301
|
+
EOFError,
|
|
302
|
+
) as e:
|
|
299
303
|
# SSH session not active
|
|
300
304
|
# retry for up to 3 times
|
|
301
305
|
# ensure alive
|
|
@@ -355,10 +359,18 @@ class SSHSession:
|
|
|
355
359
|
),
|
|
356
360
|
Argument("timeout", int, optional=True, default=10, doc=doc_timeout),
|
|
357
361
|
Argument(
|
|
358
|
-
"totp_secret",
|
|
362
|
+
"totp_secret",
|
|
363
|
+
str,
|
|
364
|
+
optional=True,
|
|
365
|
+
default=None,
|
|
366
|
+
doc=doc_totp_secret,
|
|
359
367
|
),
|
|
360
368
|
Argument(
|
|
361
|
-
"tar_compress",
|
|
369
|
+
"tar_compress",
|
|
370
|
+
bool,
|
|
371
|
+
optional=True,
|
|
372
|
+
default=True,
|
|
373
|
+
doc=doc_tar_compress,
|
|
362
374
|
),
|
|
363
375
|
Argument(
|
|
364
376
|
"look_for_keys",
|
|
@@ -603,7 +615,10 @@ class SSHContext(BaseContext):
|
|
|
603
615
|
directory_list,
|
|
604
616
|
)
|
|
605
617
|
self._walk_directory(
|
|
606
|
-
submission.forward_common_files,
|
|
618
|
+
submission.forward_common_files,
|
|
619
|
+
self.local_root,
|
|
620
|
+
file_list,
|
|
621
|
+
directory_list,
|
|
607
622
|
)
|
|
608
623
|
|
|
609
624
|
# convert to relative path to local_root
|
|
@@ -621,9 +636,9 @@ class SSHContext(BaseContext):
|
|
|
621
636
|
).as_posix()
|
|
622
637
|
sha256_list.append(f"{sha256} {jj_rel}")
|
|
623
638
|
# write to remote
|
|
624
|
-
sha256_file =
|
|
625
|
-
self.remote_root, ".tmp.sha256." + str(uuid.uuid4())
|
|
626
|
-
)
|
|
639
|
+
sha256_file = pathlib.PurePath(
|
|
640
|
+
os.path.join(self.remote_root, ".tmp.sha256." + str(uuid.uuid4()))
|
|
641
|
+
).as_posix()
|
|
627
642
|
self.write_file(sha256_file, "\n".join(sha256_list))
|
|
628
643
|
# check sha256
|
|
629
644
|
# `:` means pass: https://stackoverflow.com/a/2421592/9567349
|
|
@@ -736,7 +751,8 @@ class SSHContext(BaseContext):
|
|
|
736
751
|
file_list.extend(submission.backward_common_files)
|
|
737
752
|
if len(file_list) > 0:
|
|
738
753
|
self._get_files(
|
|
739
|
-
file_list,
|
|
754
|
+
file_list,
|
|
755
|
+
tar_compress=self.remote_profile.get("tar_compress", None),
|
|
740
756
|
)
|
|
741
757
|
|
|
742
758
|
def block_checkcall(self, cmd, asynchronously=False, stderr_whitelist=None):
|
|
@@ -793,18 +809,23 @@ class SSHContext(BaseContext):
|
|
|
793
809
|
fname = pathlib.PurePath(os.path.join(self.remote_root, fname)).as_posix()
|
|
794
810
|
# to prevent old file from being overwritten but cancelled, create a temporary file first
|
|
795
811
|
# when it is fully written, rename it to the original file name
|
|
796
|
-
|
|
797
|
-
|
|
812
|
+
temp_fname = fname + "_tmp"
|
|
813
|
+
try:
|
|
814
|
+
with self.sftp.open(temp_fname, "w") as fp:
|
|
815
|
+
fp.write(write_str)
|
|
816
|
+
# Rename the temporary file
|
|
817
|
+
self.block_checkcall(f"mv {shlex.quote(temp_fname)} {shlex.quote(fname)}")
|
|
798
818
|
# sftp.rename may throw OSError
|
|
799
|
-
|
|
800
|
-
"
|
|
801
|
-
|
|
819
|
+
except OSError as e:
|
|
820
|
+
dlog.exception(f"Error writing to file {fname}")
|
|
821
|
+
raise e
|
|
802
822
|
|
|
803
823
|
def read_file(self, fname):
|
|
804
824
|
assert self.remote_root is not None
|
|
805
825
|
self.ssh_session.ensure_alive()
|
|
806
826
|
with self.sftp.open(
|
|
807
|
-
pathlib.PurePath(os.path.join(self.remote_root, fname)).as_posix(),
|
|
827
|
+
pathlib.PurePath(os.path.join(self.remote_root, fname)).as_posix(),
|
|
828
|
+
"r",
|
|
808
829
|
) as fp:
|
|
809
830
|
ret = fp.read().decode("utf-8")
|
|
810
831
|
return ret
|
|
@@ -945,36 +966,28 @@ class SSHContext(BaseContext):
|
|
|
945
966
|
per_nfile = 100
|
|
946
967
|
ntar = len(files) // per_nfile + 1
|
|
947
968
|
if ntar <= 1:
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
"tar {} {} {}".format(
|
|
951
|
-
tar_command,
|
|
952
|
-
shlex.quote(of),
|
|
953
|
-
" ".join([shlex.quote(file) for file in files]),
|
|
954
|
-
)
|
|
955
|
-
)
|
|
956
|
-
except RuntimeError as e:
|
|
957
|
-
if "No such file or directory" in str(e):
|
|
958
|
-
raise FileNotFoundError(
|
|
959
|
-
"Any of the backward files does not exist in the remote directory."
|
|
960
|
-
) from e
|
|
961
|
-
raise e
|
|
969
|
+
file_list = " ".join([shlex.quote(file) for file in files])
|
|
970
|
+
tar_cmd = f"tar {tar_command} {shlex.quote(of)} {file_list}"
|
|
962
971
|
else:
|
|
963
|
-
file_list_file =
|
|
964
|
-
self.remote_root, ".
|
|
965
|
-
)
|
|
972
|
+
file_list_file = pathlib.PurePath(
|
|
973
|
+
os.path.join(self.remote_root, f".tmp_tar_{uuid.uuid4()}")
|
|
974
|
+
).as_posix()
|
|
966
975
|
self.write_file(file_list_file, "\n".join(files))
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
raise
|
|
977
|
-
|
|
976
|
+
tar_cmd = (
|
|
977
|
+
f"tar {tar_command} {shlex.quote(of)} -T {shlex.quote(file_list_file)}"
|
|
978
|
+
)
|
|
979
|
+
|
|
980
|
+
# Execute the tar command remotely
|
|
981
|
+
try:
|
|
982
|
+
self.block_checkcall(tar_cmd)
|
|
983
|
+
except RuntimeError as e:
|
|
984
|
+
if "No such file or directory" in str(e):
|
|
985
|
+
raise FileNotFoundError(
|
|
986
|
+
"Backward files do not exist in the remote directory."
|
|
987
|
+
) from e
|
|
988
|
+
raise e
|
|
989
|
+
|
|
990
|
+
# Transfer the archive from remote to local
|
|
978
991
|
from_f = pathlib.PurePath(os.path.join(self.remote_root, of)).as_posix()
|
|
979
992
|
to_f = pathlib.PurePath(os.path.join(self.local_root, of)).as_posix()
|
|
980
993
|
if os.path.isfile(to_f):
|
|
@@ -261,8 +261,7 @@ class Machine(metaclass=ABCMeta):
|
|
|
261
261
|
|
|
262
262
|
source_list = job.resources.source_list
|
|
263
263
|
for ii in source_list:
|
|
264
|
-
|
|
265
|
-
source_files_part += line
|
|
264
|
+
source_files_part += f"source {ii}\n"
|
|
266
265
|
|
|
267
266
|
export_envs_part = ""
|
|
268
267
|
envs = job.resources.envs
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import shlex
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
from dargs import Argument
|
|
2
5
|
|
|
3
6
|
from dpdispatcher.dlog import dlog
|
|
4
7
|
from dpdispatcher.machine import Machine
|
|
@@ -181,10 +184,9 @@ class Torque(PBS):
|
|
|
181
184
|
|
|
182
185
|
sge_script_header_template = """
|
|
183
186
|
#!/bin/bash
|
|
184
|
-
#$ -
|
|
185
|
-
{select_node_line}
|
|
187
|
+
#$ -S /bin/bash
|
|
186
188
|
#$ -cwd
|
|
187
|
-
|
|
189
|
+
{select_node_line}
|
|
188
190
|
"""
|
|
189
191
|
|
|
190
192
|
|
|
@@ -209,14 +211,31 @@ class SGE(PBS):
|
|
|
209
211
|
)
|
|
210
212
|
|
|
211
213
|
def gen_script_header(self, job):
|
|
214
|
+
### Ref:https://softpanorama.org/HPC/PBS_and_derivatives/Reference/pbs_command_vs_sge_commands.shtml
|
|
215
|
+
# resources.number_node is not used in SGE
|
|
212
216
|
resources = job.resources
|
|
217
|
+
job_name = resources.kwargs.get("job_name", "wDPjob")
|
|
218
|
+
pe_name = resources.kwargs.get("pe_name", "mpi")
|
|
213
219
|
sge_script_header_dict = {}
|
|
214
|
-
|
|
215
|
-
sge_script_header_dict["select_node_line"]
|
|
216
|
-
f"#$ -pe
|
|
220
|
+
sge_script_header_dict["select_node_line"] = f"#$ -N {job_name}\n"
|
|
221
|
+
sge_script_header_dict["select_node_line"] += (
|
|
222
|
+
f"#$ -pe {pe_name} {resources.cpu_per_node}\n"
|
|
217
223
|
)
|
|
218
|
-
|
|
219
|
-
|
|
224
|
+
|
|
225
|
+
if resources.queue_name != "":
|
|
226
|
+
sge_script_header_dict["select_node_line"] += (
|
|
227
|
+
f"#$ -q {resources.queue_name}"
|
|
228
|
+
)
|
|
229
|
+
if (
|
|
230
|
+
resources["strategy"].get("customized_script_header_template_file")
|
|
231
|
+
is not None
|
|
232
|
+
):
|
|
233
|
+
file_name = resources["strategy"]["customized_script_header_template_file"]
|
|
234
|
+
sge_script_header = customized_script_header_template(file_name, resources)
|
|
235
|
+
else:
|
|
236
|
+
sge_script_header = sge_script_header_template.format(
|
|
237
|
+
**sge_script_header_dict
|
|
238
|
+
)
|
|
220
239
|
return sge_script_header
|
|
221
240
|
|
|
222
241
|
def do_submit(self, job):
|
|
@@ -224,6 +243,9 @@ class SGE(PBS):
|
|
|
224
243
|
script_str = self.gen_script(job)
|
|
225
244
|
job_id_name = job.job_hash + "_job_id"
|
|
226
245
|
self.context.write_file(fname=script_file_name, write_str=script_str)
|
|
246
|
+
script_run_str = self.gen_script_command(job)
|
|
247
|
+
script_run_file_name = f"{job.script_file_name}.run"
|
|
248
|
+
self.context.write_file(fname=script_run_file_name, write_str=script_run_str)
|
|
227
249
|
script_file_dir = self.context.remote_root
|
|
228
250
|
stdin, stdout, stderr = self.context.block_checkcall(
|
|
229
251
|
"cd {} && {} {}".format(script_file_dir, "qsub", script_file_name)
|
|
@@ -245,8 +267,7 @@ class SGE(PBS):
|
|
|
245
267
|
err_str = stderr.read().decode("utf-8")
|
|
246
268
|
if ret != 0:
|
|
247
269
|
raise RuntimeError(
|
|
248
|
-
"status command qstat fails to execute. erro info:
|
|
249
|
-
% (err_str, ret)
|
|
270
|
+
f"status command qstat fails to execute. erro info: {err_str} return code {ret}"
|
|
250
271
|
)
|
|
251
272
|
status_text_list = stdout.read().decode("utf-8").split("\n")
|
|
252
273
|
for txt in status_text_list:
|
|
@@ -259,8 +280,7 @@ class SGE(PBS):
|
|
|
259
280
|
if self.check_finish_tag(job=job):
|
|
260
281
|
return JobStatus.finished
|
|
261
282
|
dlog.info(
|
|
262
|
-
"not tag_finished detected, execute sync command and wait. count "
|
|
263
|
-
+ str(count)
|
|
283
|
+
f"not tag_finished detected, execute sync command and wait. count {count}"
|
|
264
284
|
)
|
|
265
285
|
self.context.block_call("sync")
|
|
266
286
|
import time
|
|
@@ -281,3 +301,44 @@ class SGE(PBS):
|
|
|
281
301
|
def check_finish_tag(self, job):
|
|
282
302
|
job_tag_finished = job.job_hash + "_job_tag_finished"
|
|
283
303
|
return self.context.check_file_exists(job_tag_finished)
|
|
304
|
+
|
|
305
|
+
@classmethod
|
|
306
|
+
def resources_subfields(cls) -> List[Argument]:
|
|
307
|
+
"""Generate the resources subfields.
|
|
308
|
+
|
|
309
|
+
pe_name : str
|
|
310
|
+
The parallel environment name of SGE.
|
|
311
|
+
|
|
312
|
+
Returns
|
|
313
|
+
-------
|
|
314
|
+
list[Argument]
|
|
315
|
+
resources subfields
|
|
316
|
+
"""
|
|
317
|
+
doc_pe_name = "The parallel environment name of SGE system."
|
|
318
|
+
doc_job_name = "The name of SGE's job."
|
|
319
|
+
|
|
320
|
+
return [
|
|
321
|
+
Argument(
|
|
322
|
+
"kwargs",
|
|
323
|
+
dict,
|
|
324
|
+
[
|
|
325
|
+
Argument(
|
|
326
|
+
"pe_name",
|
|
327
|
+
str,
|
|
328
|
+
optional=True,
|
|
329
|
+
default="mpi",
|
|
330
|
+
doc=doc_pe_name,
|
|
331
|
+
alias=["sge_pe_name"],
|
|
332
|
+
),
|
|
333
|
+
Argument(
|
|
334
|
+
"job_name",
|
|
335
|
+
str,
|
|
336
|
+
optional=True,
|
|
337
|
+
default="wDPjob",
|
|
338
|
+
doc=doc_job_name,
|
|
339
|
+
),
|
|
340
|
+
],
|
|
341
|
+
optional=False,
|
|
342
|
+
doc="Extra arguments.",
|
|
343
|
+
)
|
|
344
|
+
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dpdispatcher
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.6
|
|
4
4
|
Summary: Generate HPC scheduler systems jobs input scripts, submit these scripts to HPC systems, and poke until they finish
|
|
5
5
|
Author: DeepModeling
|
|
6
6
|
License: GNU LESSER GENERAL PUBLIC LICENSE
|
|
@@ -199,7 +199,7 @@ Requires-Dist: sphinx_rtd_theme>=1.0.0rc1; extra == "docs"
|
|
|
199
199
|
Requires-Dist: numpydoc; extra == "docs"
|
|
200
200
|
Requires-Dist: deepmodeling_sphinx>=0.1.1; extra == "docs"
|
|
201
201
|
Requires-Dist: dargs>=0.3.1; extra == "docs"
|
|
202
|
-
Requires-Dist: sphinx-argparse; extra == "docs"
|
|
202
|
+
Requires-Dist: sphinx-argparse<0.5.0; extra == "docs"
|
|
203
203
|
Provides-Extra: cloudserver
|
|
204
204
|
Requires-Dist: oss2; extra == "cloudserver"
|
|
205
205
|
Requires-Dist: tqdm; extra == "cloudserver"
|
|
@@ -108,8 +108,8 @@ class TestLSFScriptGeneration(unittest.TestCase):
|
|
|
108
108
|
module load use.own
|
|
109
109
|
module load deepmd/1.3
|
|
110
110
|
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
source /data/home/ypliu/scripts/avail_gpu.sh
|
|
112
|
+
source /data/home/ypliu/dprun/tf_envs.sh
|
|
113
113
|
|
|
114
114
|
export DP_DISPATCHER_EXPORT=test_foo_bar_baz
|
|
115
115
|
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|