You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -61,7 +61,7 @@ The affinity interface we propose should help computers achieve a much higher fr
61
61
62
62
# Background Research: State of the Art
63
63
64
-
The problem of effectively partitioning a system’s topology is one which has been so for some time, and there are a range of thirdparty libraries / standards which provides APIs to solve the problem. In order to standardise this process for C++ we must carefully look at all of these approaches and identify which we wish to adopt. Below is a list of the libraries and standards which this proposal will draw from:
64
+
The problem of effectively partitioning a system’s topology has existed for some time, and there are a range of third-party libraries and standards which provide APIs to solve the problem. In order to standardize this process for C++, we must carefully look at all of these approaches and identify which we wish to adopt. Below is a list of the libraries and standards from which this proposal will draw:
65
65
66
66
* [Portable Hardware Locality][hwloc]
67
67
* [SYCL 1.2][sycl-1-2-1]
@@ -81,22 +81,22 @@ The problem of effectively partitioning a system’s topology is one which has b
81
81
* [HPX][hpx]
82
82
* [MADNESS][madness]
83
83
84
-
Libraries such as the Portable Hardware Locality (hwloc) [9] provide a low level of hardware abstraction and offer a solution for the portability problem by supporting many platforms and operating systems. This and similar approaches may provide detailed hardware information in a tree-like structure. However, even some current systems cannot be represented correctly by a tree, where the number of hops between two sockets vary between socket pairs [14].
84
+
Libraries such as the Portable Hardware Locality (hwloc) library [9] provide a low level of hardware abstraction, and offer a solution for the portability problem by supporting many platforms and operating systems. This and similar approaches use a tree structure to represent details of CPUs and the memory system. However, even some current systems cannot be represented correctly by a tree, if the number of hops between two sockets varies between socket pairs [14].
85
85
86
-
Some systems will provide additional user control through explicit binding of threads to processors through environment variables consumed by various compilers, system commands (e.g. Linux: taskset, numactl; Windows: start /affinity), or system calls for example Solaris has `pbind()`, Linux has `sched_setaffinity()` and Windows has `SetThreadAffinityMask()`.
86
+
Some systems give additional user control through explicit binding of threads to processors through environment variables consumed by various compilers, system commands, or system calls. Examples of system commands include Linux's `taskset` and `numactl`, and Windows' `start /affinity`. System call examples include Solaris' `pbind()`, Linux's `sched_setaffinity()`, and Windows' `SetThreadAffinityMask()`.
87
87
88
88
## Problem Space
89
89
90
-
In this paper we describe the problem space of affinity for C++, the various challenges which need to be addressed in defining a partitioning and affinity interface for C++ and some suggested solutions:
90
+
In this paper we describe the problem space of affinity for C++, the various challenges which need to be addressed in defining a partitioning and affinity interface for C++, and some suggested solutions. These include:
91
91
92
-
* How to represent, identify and navigate the topology of execution resources available within a heterogeneous or distributed system.
93
-
* How to query and measure the relative affininty between different execution resources within a system.
94
-
* How to bind execution and allocation particular execution resource(s).
95
-
* What kind of and level of interface(s) should be provided by C++ for affinity.
92
+
* How to represent, identify and navigate the topology of execution resources available within a heterogeneous or distributed system
93
+
* How to query and measure the relative affinity between different execution resources within a system
94
+
* How to bind execution and allocation to particular execution resource(s)
95
+
* What kind of and level of interface(s) should be provided by C++ for affinity
96
96
97
-
Wherever possible, we also evaluate how an affinitybased solution could be scaled to support both distributed and heterogeneous systems.
97
+
Wherever possible, we also evaluate how an affinity-based solution could be scaled to support both distributed and heterogeneous systems.
98
98
99
-
There are some additional challenges which we have been investigating but are not yet ready to be included in this paper and will be presented in a future paper:
99
+
Here are additional challenges which we have been investigating but are not yet ready to be included in this paper, and which will be presented in a future paper:
100
100
101
101
* Migrating data from memory allocated in one partition to another
102
102
* Defining memory placement algorithms or policies
0 commit comments