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
See [System Requirements](https://www.intel.com/content/www/us/en/developer/articles/system-requirements/oneapi-collective-communication-library-system-requirements.html) to learn about hardware and software requirements before getting started with oneCCL.
34
38
35
39
## Installation
36
40
37
-
General installation scenario:
38
-
39
-
```
40
-
cd oneCCL
41
-
mkdir build
42
-
cd build
43
-
cmake ..
44
-
make -j install
45
-
```
46
-
47
-
If you need a clean build, create a new build directory and invoke `cmake` within it.
48
-
49
-
You can also do the following during installation:
See [install instructions](INSTALL.md) to familiarize yourself with the general installation scenario and the customizations you can make during the build process.
The ccl-bundled-mpi flag in vars.sh can take values "yes" or "no" to control if bundled Intel MPI should be used or not. Current default is "yes", which means that oneCCL temporarily overrides the mpi implementation in use.
55
+
In the vars.sh file, the `ccl-bundled-mpi` flag can have values "yes" or "no" to control whether bundled Intel MPI should be used or not. Current default value is "yes", which means that oneCCL temporarily overrides the mpi implementation in use.
69
56
70
-
In order to suppress the behavior and use user-supplied or system-default mpi use the following command *instead* of sourcing `setvars.sh`:
57
+
In order to suppress the behavior and use user-supplied or system-default mpi, use the following command *instead* of sourcing `setvars.sh`:
The mpi implementation will not be overridden. Please note that, in this case, user needs to assure the system finds all required mpi-related binaries.
63
+
The mpi implementation will not be overridden. In this case, you need to ensure that the system finds all required mpi-related binaries.
77
64
78
-
### Setting workers affinity
65
+
### Set Workers Affinity
79
66
80
67
There are two ways to set worker threads (workers) affinity: [automatically](#setting-affinity-automatically) and [explicitly](#setting-affinity-explicitly).
81
68
82
-
#### Automatic setup
69
+
#### Automatic Setup
83
70
84
71
1. Set the `CCL_WORKER_COUNT` environment variable with the desired number of workers per process.
85
72
2. Set the `CCL_WORKER_AFFINITY` environment variable with the value `auto`.
With the variables above, oneCCL will create four workers per process and the pinning will depend from process launcher.
93
80
94
-
If an application has been launched using `mpirun` that is provided by oneCCL distribution package then workers will be automatically pinned to the last four cores available for the launched process. The exact IDs of CPU cores can be controlled by `mpirun` parameters.
81
+
If an application is launched using `mpirun` that is provided by oneCCL distribution package, then workers will be automatically pinned to the last four cores available for the launched process. The exact IDs of CPU cores can be controlled by the`mpirun` parameters.
95
82
96
83
Otherwise, workers will be automatically pinned to the last four cores available on the node.
97
84
98
85
---
99
86
100
-
#### Explicit setup
87
+
#### Explicit Setup
101
88
102
89
1. Set the `CCL_WORKER_COUNT` environment variable with the desired number of workers per process.
103
90
2. Set the `CCL_WORKER_AFFINITY` environment variable with the IDs of cores to pin local workers.
With the variables above, oneCCL will create four workers per process and pin them to the cores with the IDs of 3, 4, 5, and 6 respectively.
111
98
112
-
### Using oneCCL package from CMake
99
+
### Use oneCCL package from CMake
113
100
114
101
`oneCCLConfig.cmake` and `oneCCLConfigVersion.cmake` are included into oneCCL distribution.
115
102
116
-
With these files, you can integrate oneCCL into a user project with the [find_package](https://cmake.org/cmake/help/latest/command/find_package.html) command. Successful invocation of `find_package(oneCCL <options>)` creates imported target `oneCCL` that can be passed to the [target_link_libraries](https://cmake.org/cmake/help/latest/command/target_link_libraries.html) command.
103
+
With these files, you can integrate oneCCL into a project with the [find_package](https://cmake.org/cmake/help/latest/command/find_package.html) command. Successful invocation of `find_package(oneCCL <options>)` creates imported target `oneCCL` that can be passed to the [target_link_libraries](https://cmake.org/cmake/help/latest/command/target_link_libraries.html) command.
117
104
118
105
For example:
119
106
@@ -127,7 +114,7 @@ find_package(oneCCL REQUIRED)
127
114
# Connect oneCCL to foo
128
115
target_link_libraries(foo oneCCL)
129
116
```
130
-
#### oneCCLConfig files generation
117
+
#### oneCCLConfig Files Generation
131
118
132
119
To generate oneCCLConfig files for oneCCL package, use the provided [`cmake/scripts/config_generation.cmake`](/cmake/scripts/config_generation.cmake) file:
oneCCL uses [Level Zero IPC handles](https://spec.oneapi.io/level-zero/latest/core/PROG.html#memory-1) so that a process can access a memory allocation done by a different process.
141
-
However, these IPC handles consume OS File Descriptors (FDs). As a result, to avoid running out of OS FDs, we recommend to increase the default limit of FDs in the system for applications running with oneCCL and GPU buffers.
127
+
oneCCL uses [Level Zero IPC handles](https://spec.oneapi.io/level-zero/latest/core/PROG.html#memory-1) so that a process can access a memory allocation done by a different process. However, these IPC handles consume OS File Descriptors (FDs). To avoid running out of OS FDs, we recommend to increase the default limit of FDs in the system for applications running with oneCCL and GPU buffers.
142
128
143
-
The number of FDs required is application-dependent, but the recommended limit is ``1048575``. This value can be modified with the ulimit command.
129
+
The number of FDs required is application-dependent, but the recommended limit is ``1048575``. This value can be modified with the `ulimit` command.
144
130
145
131
## Governance
146
132
147
-
The oneCCL project is governed by the UXL Foundation and you can get involved in this project in multiple ways. It is possible to join the [Special Interest Groups (SIG)](https://github.com/uxlfoundation/foundation) meetings where the group discuss and demonstrates work using the foundation projects. Members can also join the Open Source and Specification Working Group meetings.
133
+
The oneCCL project is governed by the UXL Foundation and you can get involved in this project in multiple ways. It is possible to join the [Special Interest Groups (SIG)](https://github.com/uxlfoundation/foundation) meetings where the group discusses and demonstrates work using the foundation projects. Members can also join the Open Source and Specification Working Group meetings.
148
134
149
135
You can also join the mailing lists for the [UXL Foundation](https://lists.uxlfoundation.org/g/main/subgroups) to be informed of when meetings are happening and receive the latest information and discussions.
0 commit comments