Skip to main content

runit: scheduling multiple commands with limited devices

Project description

runit

Rise form ashesa cup of bear.

A simple command line tool for scheduling multiple commands with limited resources similar to GNU parallel.

Install

pip install runit-parallel

Example

For example, I have 4 GPUs and 20 test scripts to execute. Each the script consumes arbitrary time, and need a GPU. I want to process all the jobs with only single command, and to make the GPUs work constantly without rest.

TL;DR

runit -g 0 1 2 3 \
    --category \
        a b c d e f g h i j \
        k l m n o p q r s t \
    --log logs/runit/{category}-{g}.log

---

< param groups >
category: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't']
< opt groups >
g: ['0', '1', '2', '3']

Then, type a command to run. Multi-line command is available by attaching \.

< type command >
CUDA_VISIBLE_DEVICES={g} python test_script.py \
--input {category}

---

[thread 3 [01/20]] CUDA_VISIBLE_DEVICES=3 python test_script.py --input b
[thread 1 [02/20]] CUDA_VISIBLE_DEVICES=1 python test_script.py --input c
[thread 2 [03/20]] CUDA_VISIBLE_DEVICES=2 python test_script.py --input d
[thread 0 [04/20]] CUDA_VISIBLE_DEVICES=0 python test_script.py --input h

---
As soon as the running task is finished, the following tasks continue to run.

[thread 2 [05/20]] CUDA_VISIBLE_DEVICES=2 python test_script.py --input e
[thread 1 [06/20]] CUDA_VISIBLE_DEVICES=1 python test_script.py --input f
[thread 2 [07/20]] CUDA_VISIBLE_DEVICES=2 python test_script.py --input g
[thread 3 [08/20]] CUDA_VISIBLE_DEVICES=3 python test_script.py --input i
[thread 2 [09/20]] CUDA_VISIBLE_DEVICES=2 python test_script.py --input j
[thread 0 [10/20]] CUDA_VISIBLE_DEVICES=0 python test_script.py --input k
[thread 2 [11/20]] CUDA_VISIBLE_DEVICES=2 python test_script.py --input l
[thread 2 [12/20]] CUDA_VISIBLE_DEVICES=2 python test_script.py --input m
[thread 1 [13/20]] CUDA_VISIBLE_DEVICES=1 python test_script.py --input n
[thread 3 [14/20]] CUDA_VISIBLE_DEVICES=3 python test_script.py --input o
[thread 0 [15/20]] CUDA_VISIBLE_DEVICES=0 python test_script.py --input p
[thread 0 [16/20]] CUDA_VISIBLE_DEVICES=0 python test_script.py --input q
[thread 3 [17/20]] CUDA_VISIBLE_DEVICES=3 python test_script.py --input r
[thread 1 [18/20]] CUDA_VISIBLE_DEVICES=1 python test_script.py --input s
[thread 0 [19/20]] CUDA_VISIBLE_DEVICES=0 python test_script.py --input t
[thread 2 [20/20]] CUDA_VISIBLE_DEVICES=2 python test_script.py --input t
  • opt (option) group: list of the resources (such as GPU, CPU, e.t.c.).
    The option can be set with a - (e.g. -g 1 2 3 4, -cpu 0,1 2,3 4,5 6,7).
    Multiple options is possible but every option must have same number.
  • param groups: list of the parameters.
    The parameters can be set with two -- (e.g. --docu 1.txt 2.txt 3.txt 4.txt).
    Multiple options is possible but every params must have same number.
  • --log: path to save logs. Log file path can contain opt and param
    (e.g. --log save/to/logs/logname_{g}_{cpu}_{docu}.log)

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

runit-parallel-0.0.3.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

runit_parallel-0.0.3-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

Details for the file runit-parallel-0.0.3.tar.gz.

File metadata

  • Download URL: runit-parallel-0.0.3.tar.gz
  • Upload date:
  • Size: 3.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for runit-parallel-0.0.3.tar.gz
Algorithm Hash digest
SHA256 b1f249c9a67ef4d232af0c81025491e4b8d1538fb27fadc53ac9e76cb2c2ceba
MD5 d3659869814b9c37381ef8a8b50195e6
BLAKE2b-256 b8d58b25b346eaa3465ebdcd22d73f280738ad671890edc9bc1f87b70cd4a30f

See more details on using hashes here.

File details

Details for the file runit_parallel-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for runit_parallel-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 42ed3a9fde63cb445b439e1eb3a0c8eca5118e287f1764c827930e1adf887fa7
MD5 46ab74fd6c960d33bb3fe276788f5e92
BLAKE2b-256 30751212197fd823134a8f2c5072dccf2d25d05f90a1dd12b66b92dc392d5d4b

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