Skip to content

Commit af365f1

Browse files
author
Gordon Brown
committed
Fix some typos.
1 parent d01d906 commit af365f1

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

affinity/cpp-20/d0796r1.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,11 @@ Two important considerations when defining a unified interface for querying the
118118
119119
> For example, a NUMA system will likely have a hierarchy of nodes, each capable of placing memory and placing agents. A CPU + GPU system may have GPU local memory regions capable of placing memory, but not capable of placing agents.
120120
121-
Nowadays, there are various APIs and libraries that enable this functionality. One of the most commonly used is the Portable Hardware Locality (hwloc) [9]. Hwloc presents the hardware as a tree, where the root node represents the whole machine and subsequent levels represent different partitions depending on different hardware characteristics. The picture below shows the output of the hwloc visualization tool (lstopo) on a 2-socket Xeon E5300 server. Note that each socket is represented by a package in the graph. Each socket contains its own cache memories, but both share the same NUMA memory region. Note also that different I/O units are visible underneath: Placement of these units with respect to memory and threads can be critical to performance. The ability to place threads and/or allocate memory appropriately on the different components of this system is an important part of the process of application development, especially as hardware architectures get more complex. The documentation of lstopo [22] shows more interesting examples of topologies that appear on today's systems.
121+
Nowadays, there are various APIs and libraries that enable this functionality. One of the most commonly used is the Portable Hardware Locality (hwloc) library [9]. Hwloc presents the hardware as a tree, where the root node represents the whole machine and subsequent levels represent different partitions depending on different hardware characteristics. The picture below shows the output of the hwloc visualization tool (lstopo) on a 2-socket Xeon E5300 server. Note that each socket is represented by a package in the graph. Each socket contains its own cache memories, but both share the same NUMA memory region. Note also that different I/O units are visible underneath: Placement of these units with respect to memory and threads can be critical to performance. The ability to place threads and/or allocate memory appropriately on the different components of this system is an important part of the process of application development, especially as hardware architectures get more complex. The documentation of lstopo [22] shows more interesting examples of topologies that appear on today's systems.
122122
123123
![alt text](hwloc-topology.png "Hwloc topology")
124124
125-
Th interface of `thread_execution_resource_t` proposed in the [execution context proposal][p0737r0] proposes a hierarchical approach where there is a root resource and each resource has a number of child resources. However, systems are becoming increasingly non-hierarchical and a traditional tree-based representation of a **system’s resource topology** may not suffice any more [18]. The HSA standard solves this problem by allowing a node in the topology to have multiple parent nodes [19].
125+
The interface of `thread_execution_resource_t` proposed in the [execution context proposal][p0737r0] proposes a hierarchical approach where there is a root resource and each resource has a number of child resources. However, systems are becoming increasingly non-hierarchical and a traditional tree-based representation of a **system’s resource topology** may not suffice any more [18]. The HSA standard solves this problem by allowing a node in the topology to have multiple parent nodes [19].
126126
127127
The interface for querying the **resource topology** of a **system** must be flexible enough to allow querying all **execution resources** available under an **execution context**, querying the **execution resources** available to the entire system, and constructing an **execution context** for a particular **execution resource**. This is important, as many standards such as OpenCL [20] and HSA [19] require the ability to query the **resource topology** available in a **system** before constructing an **execution context** for executing work.
128128

0 commit comments

Comments
 (0)