Skip to navigation

holoscan::CPUAffinity

Beta
View as Markdown

Canonical CPU affinity request for a runtime thread.

A default-constructed CPUAffinity has no cores and is invalid when present inside a ThreadPlacement. That lets ThreadPlacement distinguish “no affinity requested” from “an affinity request was provided but contained no CPUs.”

#include <holoscan/thread_placement.hpp>

Constructors

CPUAffinity

noexcept
holoscan::CPUAffinity::CPUAffinity() noexcept = default

Construct an empty CPU affinity request.

Returns: CPUAffinity with no CPU core IDs.


Methods

empty

HOLOSCAN_CORE_EXPORT bool holoscan::CPUAffinity::empty() const noexcept

Return whether this CPUAffinity contains no CPU core IDs.

Returns: bool true when the affinity has no CPU core IDs.

normalize

HOLOSCAN_CORE_EXPORT void holoscan::CPUAffinity::normalize()

Normalize CPU core IDs in place into sorted, unique order.

validate

HOLOSCAN_CORE_EXPORT expected<void, Error> holoscan::CPUAffinity::validate() const

Validate that this CPUAffinity contains at least one CPU core ID.

Returns: expected<void, Error> containing void on success or Error when the affinity is empty.

Throws: None. Validation failures are returned in the expected result.


Static methods

from_ranges

static HOLOSCAN_CORE_EXPORT expected<CPUAffinity, Error> holoscan::CPUAffinity::from_ranges(
std::span<const CPUCoreRange> ranges
)

Build a CPU affinity request from inclusive CPU core ranges.

Returns: expected<CPUAffinity, Error> containing CPUAffinity on success or Error on invalid range ordering or excessive range expansion.

Throws: None. Validation failures are returned in the expected result.

Parameters

ranges
std::span<const CPUCoreRange>

Inclusive CPU core ranges to expand and normalize.

from_cores_and_ranges

static HOLOSCAN_CORE_EXPORT expected<CPUAffinity, Error> holoscan::CPUAffinity::from_cores_and_ranges(
std::span<const uint32_t> core_ids,
std::span<const CPUCoreRange> ranges
)

Build a CPU affinity request from explicit core IDs plus inclusive ranges.

Returns: expected<CPUAffinity, Error> containing CPUAffinity on success or Error on invalid range ordering or excessive range expansion.

Throws: None. Validation failures are returned in the expected result.

Parameters

core_ids
std::span<const uint32_t>

CPU core IDs to include in the affinity request.

ranges
std::span<const CPUCoreRange>

Inclusive CPU core ranges to expand and include in the affinity request.


Member variables

NameTypeDescription
coresstd::vector< uint32_t >