Skip to main content

Tools for composing interdependent tasks on a scheduler (i.e. SLURM)

Project description

scheduler_tools

Build Status Documentation Code Coverage

Tools for composing interdependent tasks on a scheduler (i.e. SLURM)


Setup requirements for launching prefect / dask-distributed on the cluster from your local desktop

On your local system

For whatever project you are working on add scheduler_tools to your dependency list.

conda activate {your_env_name}
pip install -e {your_project_name}
mkdir ~/.aics_dask

create file ~/.aics_dask/ssh.json with contents

{"gateway":{
	"url": "slurm-machine.bettertech.com",
	"user": "flanders",
	"identityfile": "/Users/flanders/ssh/flandersPrivateKey"
	},
    "dashboard_port": 8787,
    "dask_port": 34009
}

On the cluster

conda activate {your_env_name}
pip install -e {your_project_name}
mkdir ~/.aics_dask

programmatically launch remote server and create tunnel

from scheduler_tools import Connector
from pathlib import Path

prefs = {'gateway': {}}
prefs['gateway']['url'] = 'slurm-machine.bettertech.com'
prefs['gateway']['user'] = 'flanders'
prefs['gateway']['identityfile'] = '~/.ssh/id_rsa'
prefs['dask_port'] = 34009
prefs['dashboard_port'] = 8787


dask_prefs = {'cluster_obj_name': {'module': 'dask_jobqueue', 'object': 'SLURMCluster'},
                      'cluster_conf': {},
                      'worker_conf': {},
                      'remote_conf': {}
                      }
dask_prefs['cluster_obj_name'] = {'module': 'dask_jobqueue', 'object': 'SLURMCluster'}

dask_prefs['cluster_conf']['queue'] = 'aics_cpu_general'
dask_prefs['cluster_conf']['cores'] = 2
dask_prefs['cluster_conf']['memory'] = '4GB'
dask_prefs['cluster_conf']['walltime'] = "02:00:00"
dask_prefs['worker_conf']['minimum_jobs'] = 2
dask_prefs['worker_conf']['maximum_jobs'] = 40

dask_prefs['remote_conf']['env'] = 'dask-scheduler' # whatever you named your remote conda env
dask_prefs['remote_conf']['command'] = 'setup_and_spawn.bash'
dask_prefs['remote_conf']['path'] = '/home/<username>/.aics_dask' # where your preferences live for this


conn = Connector(dask_prefs=dask_prefs, pref_path=Path('~/.aics_dask/ssh.json'))
conn.run_command()
conn.stop_forward_if_running()
conn.forward_ports()

programmatically shutdown remote server and tunnel

from scheduler_tools import Connector
from pathlib import Path

conn = Connector(pref_path=Path('~/.aics_dask/ssh.json'))
conn.stop_dask()

cluster creation context example

from scheduler_tools import Connector, default_dask_prefs
from pathlib import Path

dask_prefs = default_dask_prefs()


with Connector(dask_prefs=dask_prefs, prefs=Path('~/.aics_dask/ssh.json')) as conn:
    print(f"local dashboard on: {conn.local_dashboard_port}")
    print(f"local dask port: {conn.local_dask_port}")
    # !!! your code here !!!

Command line interface

CLI start Dask Cluster command

spawn_dask_cluster -s ~/.aics_dask_gpu/ssh.json -q aics_gpu_general -r <remote_env_name>

CLI stop Dask Cluster command

shutdown_dask_cluster -s ~/.aics_dask/ssh.json

Free software: Allen Institute Software License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scheduler_tools-0.1.5.tar.gz (24.1 kB view details)

Uploaded Source

Built Distribution

scheduler_tools-0.1.5-py2.py3-none-any.whl (27.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file scheduler_tools-0.1.5.tar.gz.

File metadata

  • Download URL: scheduler_tools-0.1.5.tar.gz
  • Upload date:
  • Size: 24.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6

File hashes

Hashes for scheduler_tools-0.1.5.tar.gz
Algorithm Hash digest
SHA256 aef59d081231f50d7f03f0aea2b48d6c37f4d4bf3607c371ec12a88163d052a4
MD5 25114ded7c5837ea0fd5dfe866f6d4a8
BLAKE2b-256 f5b0278310e96d462b5c840e65139e48dc5343dca18ce1abbf0804a46b3239b2

See more details on using hashes here.

File details

Details for the file scheduler_tools-0.1.5-py2.py3-none-any.whl.

File metadata

  • Download URL: scheduler_tools-0.1.5-py2.py3-none-any.whl
  • Upload date:
  • Size: 27.9 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6

File hashes

Hashes for scheduler_tools-0.1.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 58d3c9019d00391b4daadbbea418d1ef703ac6df893dad790ca7ecbfe3dbf47e
MD5 8deefe980ff5a1781358c75a83b2bbdc
BLAKE2b-256 7b7ceaaf8e68ddefb861b0b90c09563237c1db372d163201bb3f57531e7d5e1c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page