Description
Differences in the intersection of papers Affinity - D0796r2 and Context - P0737r0.
-
std::thread
specific resource: Affinity definesexecution_resource
which is implied to be an execution resource that executesstd::thread
. Context definesthread_execution_resource_t
which is explicit about executingstd::thread
. Question: Should we lay the foundation for non-std::thread
execution resources (e.g, GPU) by embedding the name thread in the initially proposed execution resource? -
Affinity
execution_resource
is moveable and copyable, Contextthread_execution_resource_t
is neither moveable or copyable. Question: Should an execution resource be a PIMPL (pointer to implementation) value type or an immutable reference? Creating and managing vectors of execution resources requires PIMPL . -
Affinity has
std::vector<resource> execution_resource::resources() const noexcept;
and Context hasconst thread_execution_resource_t & thread_execution_resource_t::partition( size_t i ) const noexcept ;
. Related to the PIMPL question. -
Affinity has
std::vector<execution_resource> this_system::resources() noexcept;
and Context hasthread_execution_resource_t program_thread_execution_resource ;
. Question: Should there be a root execution resource that is a handle to the union of all individual execution resources? A root execution resource, by definition, has a vector of nested resources which is equivalent to the Affinity proposal's root vector of resources. -
Affinity
execution_context
hasname()
. Is this for the type of resource, denote the topological identity of the resource, or both? Context avoided the design point, for the initial proposal. -
Affinity
can_place_*
methods open the design point of placement without addressing how to query if placement has occurred or how placement can be performed. Context avoided the design point in the initial proposal. -
Affinity
execution_context
is constructed from anexecution_resource
without additional properties, implying 1-to-1 correspondence. Context execution context (concept) construction is undefined.