hpx/functional/traits/get_task_size.hpp#

Defined in header hpx/functional/traits/get_task_size.hpp.

See Public API for a list of names and headers that are part of the public HPX API.

Defines

HPX_TASK_SIZE_BUILTIN_OPERATION(op)#
HPX_TASK_SIZE_BUILTIN_RANGES_OPERATION(op)#
namespace hpx

Top level namespace.

namespace threads

Enums

enum class task_size : std::uint8_t#

The expected run time of a task, a hint the scheduler may use. A task with an unknown size is scheduled as it would be without the hint. The sizes are ordered by run time, see task_size_duration.

Values:

enumerator unknown#
enumerator nano#

about a nanosecond, mostly for loop bodies

enumerator small_#

the underscore is to work around ‘small’ being defined to char on Windows

enumerator medium#
enumerator large#

Functions

constexpr std::chrono::nanoseconds task_size_duration(task_size const size) noexcept#

The run time a task of the given size stands for. Each size stands for a hundred times the run time of the one below it: nano about 1 ns, small about 100 ns, medium about 10 us, large about 1 ms or more. An unknown size gives a duration of zero. Callers should rely on std::chrono arithmetic only, not on the unit or the count of the returned duration, which may change once tasks can carry real run times.

constexpr task_size bulk_task_size(task_size const size, std::size_t const calls) noexcept#

The size of a task that calls a function of the given size calls times, for instance a hundred nano calls make a small task, a hundred small calls a medium one and a hundred medium calls a large one. The size of a task calling a function of unknown size is unknown.

namespace traits

Functions

HPX_TASK_SIZE_BUILTIN_OPERATION(plus)#
HPX_TASK_SIZE_BUILTIN_OPERATION(minus)#
HPX_TASK_SIZE_BUILTIN_OPERATION(multiplies)#
HPX_TASK_SIZE_BUILTIN_OPERATION(divides)#
HPX_TASK_SIZE_BUILTIN_OPERATION(modulus)#
HPX_TASK_SIZE_BUILTIN_OPERATION(negate)#
HPX_TASK_SIZE_BUILTIN_OPERATION(equal_to)#
HPX_TASK_SIZE_BUILTIN_OPERATION(not_equal_to)#
HPX_TASK_SIZE_BUILTIN_OPERATION(less)#
HPX_TASK_SIZE_BUILTIN_OPERATION(greater)#
HPX_TASK_SIZE_BUILTIN_OPERATION(less_equal)#
HPX_TASK_SIZE_BUILTIN_OPERATION(greater_equal)#
HPX_TASK_SIZE_BUILTIN_OPERATION(logical_and)#
HPX_TASK_SIZE_BUILTIN_OPERATION(logical_or)#
HPX_TASK_SIZE_BUILTIN_OPERATION(logical_not)#
HPX_TASK_SIZE_BUILTIN_OPERATION(bit_and)#
HPX_TASK_SIZE_BUILTIN_OPERATION(bit_or)#
HPX_TASK_SIZE_BUILTIN_OPERATION(bit_xor)#
HPX_TASK_SIZE_BUILTIN_OPERATION(bit_not)#
HPX_TASK_SIZE_BUILTIN_RANGES_OPERATION(equal_to)#
HPX_TASK_SIZE_BUILTIN_RANGES_OPERATION(not_equal_to)#
HPX_TASK_SIZE_BUILTIN_RANGES_OPERATION(less)#
HPX_TASK_SIZE_BUILTIN_RANGES_OPERATION(greater)#
HPX_TASK_SIZE_BUILTIN_RANGES_OPERATION(less_equal)#
HPX_TASK_SIZE_BUILTIN_RANGES_OPERATION(greater_equal)#

Variables

template<typename F, threads::task_size Size = threads::task_size::unknown>
constexpr threads::task_size get_task_size_v = get_task_size<F, Size>::value#
template<typename F, threads::task_size Size = threads::task_size::unknown, typename Enable = void>
struct get_task_size#

Public Static Functions

static inline constexpr threads::task_size call(F const&) noexcept#

Public Static Attributes

static constexpr threads::task_size value = Size#
template<typename F, threads::task_size Size>
struct get_task_size<F, Size> : public hpx::traits::get_task_size<std::remove_cvref_t<F>, Size>#

Subclassed by hpx::traits::get_task_size< hpx::detail::bound< F, Ts… >, Size >, hpx::traits::get_task_size< hpx::detail::bound_back< F, Ts… >, Size >, hpx::traits::get_task_size< hpx::detail::bound_front< F, Ts… >, Size >

Public Static Functions

static inline constexpr threads::task_size call(F const&) noexcept

Public Static Attributes

static constexpr threads::task_size value = threads::task_size::nano
template<typename F, typename ...Args>
struct get_task_size_for#

Public Static Functions

static inline constexpr threads::task_size call(F const &f) noexcept#
template<typename F, typename ...Args>
struct get_task_size_for<F, Args...> : public hpx::traits::get_task_size_for<std::remove_cvref_t<F>, Args...>

Public Static Functions

static inline constexpr threads::task_size call(F const&) noexcept
template<typename F>
struct is_transparent_builtin_operation : public std::false_type#
template<typename F>
struct typed_builtin_operation_operand#