Implementation:Eventual Inc Daft ResourceRequest
| Knowledge Sources | |
|---|---|
| Domains | Data_Engineering, Resource_Management |
| Last Updated | 2026-02-08 00:00 GMT |
Overview
Concrete tool for declaring computational resource requirements for query fragment tasks provided by the Daft library.
Description
The ResourceRequest class is a Rust-backed binding that encapsulates CPU, GPU, and memory requirements for UDF scheduling. It supports arithmetic operations (addition and scalar multiplication) for combining resource requests, as well as a static max_resources method for computing field-wise maximums. Builder-style methods (with_num_cpus, with_num_gpus, with_memory_bytes) allow modifying individual fields.
Usage
Import from daft.daft and construct a ResourceRequest when you need to explicitly declare resource requirements for UDF tasks.
Code Reference
Source Location
- Repository: Daft
- File:
daft/daft/__init__.pyi(Rust binding stub) - Lines: L207-232
Signature
class ResourceRequest:
num_cpus: float | None
num_gpus: float | None
memory_bytes: int | None
def __init__(
self,
num_cpus: float | None = None,
num_gpus: float | None = None,
memory_bytes: int | None = None,
): ...
Import
from daft.daft import ResourceRequest
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| num_cpus | None | No | Number of CPUs required. None means no CPU constraint. |
| num_gpus | None | No | Number of GPUs required. None means no GPU constraint. |
| memory_bytes | None | No | Amount of memory in bytes required. None means no memory constraint. |
Outputs
| Name | Type | Description |
|---|---|---|
| return | ResourceRequest | A ResourceRequest object used by the scheduler for task placement and concurrency control. |
Usage Examples
Basic Usage
from daft.daft import ResourceRequest
# Request 2 CPUs, 1 GPU, and 4GB of memory
rr = ResourceRequest(num_cpus=2.0, num_gpus=1.0, memory_bytes=4 * 1024**3)
# Builder-style modification
rr2 = rr.with_num_gpus(2.0)
# Combine resource requests
combined = rr + rr2
# Field-wise maximum
max_rr = ResourceRequest.max_resources([rr, rr2])