Skip to main content

A utility to run multiple small tasks in a single HPC job submission.

Project description

ictasks

ictasks is a library to support running collections of small tasks in parallel, from a laptop through to a HPC cluster.

It is being developed to support projects and workflow standarisation at the Irish Centre for High End Computing (ICHEC).

There are many libraries like this, this one focuses on:

  • being small and simple - easy for ICHEC researchers to understand all elements of it
  • having low dependencies - can be installed with pip
  • having an easy to use configuration format with yaml
  • having verbose and structured reporting of task related metadata for analysis

Features

The library allows a few different ways to specify tasks.

  1. As a Python package

You can create a collection of Task instances and launch them with the session.run() function.

  1. Using a tasklist.dat file and the command line interface (CLI):
ictasks taskfarm --tasklist $PATH_TO_TASKLIST

See the test/data/tasklist.dat file for an example input with two small tasks.

  1. Using a yaml config file, giving task and environment info.
job_id: my_job
task_distribution:
    cores_per_node: 1

tasks:
    items:
    - id: 0
      launch_cmd: "echo 'hello from task 0'"
    - id: 1
      launch_cmd: "echo 'hello from task 1'"

we can run this with:

ictasks taskfarm --config my_config.yaml

Launching the run will launch the task in that directory and output a status file task.json. By default all processors on the machine (or compute node) will be assigned tasks.

task_distribution

There are 5 variables available in task_distribution

  • cores_per_node=0
  • threads_per_core=0
  • cores_per_task=1
  • gpus_per_node=0
  • gpus_per_task=0

If left unspecified, both cores_per_task and gpus_per_task will be automatically detected and set.

The number of active workers will be set depending on these resource limitations, with gpu limits being hit first if needed. These workers can then execute tasks in parallel.

gpus in your tasks

When taskfarming with gpus, there will be a gpu_ids.txt file in each task directory which contains a gpu_id per line, the user's program must then use this file to specify which gpu(s) to use. The function ictasks.task.get_gpu_ids can be used to retrieve the ids in this file as a Python list. See an example here.

Installing

The package can be installed from PyPI:

pip install ictasks

Contact

Our Gitlab hosting arrangement doesn't allow us to easily accept external contributions or feedback, however they are still welcome.

In future if there is interest

If you have any feedback on this library

License

This package is Coypright of the Irish Centre for High End Computing. It can be used under the terms of the GNU Public License (GPL v3+). See the included LICENSE.txt file for details.

If you are an ICHEC collaborator or user of the National Service different licensing terms can be offered - please get in touch to discuss.

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

ictasks-0.2.3.tar.gz (28.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ictasks-0.2.3-py3-none-any.whl (30.4 kB view details)

Uploaded Python 3

File details

Details for the file ictasks-0.2.3.tar.gz.

File metadata

  • Download URL: ictasks-0.2.3.tar.gz
  • Upload date:
  • Size: 28.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ictasks-0.2.3.tar.gz
Algorithm Hash digest
SHA256 83dc9b1df97eb9cf6a84f3201dc2c5cf146ce2b5b4c29931eaec4ad77d8349dc
MD5 cdfb8ed825c52a64cc25f636a0be2b9a
BLAKE2b-256 177e608babb0156f9b8e23a05ccabb24ab76f395764f7b98a115cfc856355328

See more details on using hashes here.

File details

Details for the file ictasks-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: ictasks-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 30.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ictasks-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 482038c549c18f20be3a98157a2b0b1c4e22d4badf90a4194d4d09555e42f0b2
MD5 9c96ee0dd73fcfc0b98a69b0e1658627
BLAKE2b-256 1bb38d764273df77558b8087e2d37bd6797e47baee56ea14199841d9a62e7b73

See more details on using hashes here.

Supported by

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