Skip to content

Conversation

isaevil
Copy link
Contributor

@isaevil isaevil commented Oct 2, 2025

Add a page that describes helper APIs to simplify constrained arena creations. Currently it is a single function oneapi::tbb::create_numa_task_arenas from corresponding RFC.

@isaevil isaevil force-pushed the add-numa-arena-helper branch from 93dbd8a to f819fc1 Compare October 2, 2025 09:32
Signed-off-by: Isaev, Ilya <[email protected]>
@isaevil
Copy link
Contributor Author

isaevil commented Oct 2, 2025

@aleksei-fedotov @akukanov Please take a look.

@akukanov akukanov added the TBB label Oct 2, 2025
.. cpp:function:: std::vector<oneapi::tbb::task_arena> create_numa_task_arenas(oneapi::tbb::task_arena::constraints other_constraints = {}, unsigned reserved_slots = 0)

Returns a ``std::vector`` of ``task_arena`` objects, each bound to a separate NUMA node.
The number of created ``task_arena`` is equal to the number of NUMA nodes available on the system.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shall it be less strict and, thus, more accurate?

Suggested change
The number of created ``task_arena`` is equal to the number of NUMA nodes available on the system.
The number of created ``task_arena`` is equal to the number of NUMA nodes detected on the system.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we require that this is the same set of nodes that is returned by tbb::info::numa_nodes()?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it is fair to require that as well, since the intent of this API is to provide shortcut to a common usage pattern of NUMA-constrained arenas.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated the description

.. SPDX-License-Identifier: CC-BY-4.0
=========================
Constrained Arena Helpers
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps, task_arena Helpers might be more suitable as a name in case we would want to extend this page with other helpers, thus, avoiding creating a new one?

.. toctree::
:maxdepth: 2

constrained_arena_helpers.rst
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of a separate page in auxiliary APIs, why not describe this as a non-member function for class task_arena? There are already similar cases, e.g. tbb::finalize and tbb::is_current_task_group_canceling.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Described it inside task_arena_cls as a non-member function

Comment on lines 27 to 28
.. cpp:function:: std::vector<oneapi::tbb::task_arena> create_numa_task_arenas(oneapi::tbb::task_arena::constraints other_constraints = {}, unsigned reserved_slots = 0)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As far as I can tell, the specification does not use oneapi::tbb in the signatures of functions that are already in that namespace.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed oneapi::tbb

Comment on lines 35 to 38
.. note::

If error occurs during system topology parsing, returns ``std::vector`` containing single
``task_arena`` object equivalent to ``task_arena(other_constraints, reserved_slots)``.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since it speaks about a returned value, this does not seem to be a proper note. Notes are explanatory, while this sentence seems to be prescriptive.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed . note::.

Signed-off-by: Isaev, Ilya <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants