Skip to content

Commit 1318c3a

Browse files
Merge pull request #206 from blazej-smorawski/release-2022.0.0
oneCCL 2022.0.0
2 parents 97e193e + 6d8dd1f commit 1318c3a

76 files changed

Lines changed: 5207 additions & 443 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CMakeLists.txt

Lines changed: 298 additions & 106 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,69 @@ git submodule update
3434
mkdir build
3535
cd build
3636

37-
cmake .. -DCMAKE_CXX_COMPILER=icpx -DCMAKE_C_COMPILER=icx -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX=$(pwd)/_install
37+
cmake .. -DCMAKE_CXX_COMPILER=icpx -DCMAKE_C_COMPILER=icx -DCMAKE_BUILD_TYPE=release -DCMAKE_INSTALL_PREFIX=$(pwd)/_install
3838
make -j install
3939
```
4040

41+
`DONECCL_USE_SYSTEM_LIBCCL` option can be used to use `libccl` implementation from the system rather than compiling it from sources ar deps/libccl
42+
To compile legacy libccl code and use it with the flag use following steps:
43+
44+
```sh
45+
git clone https://github.com/intel-innersource/libraries.performance.communication.oneccl ccl
46+
47+
git clone https://github.com/intel-innersource/libraries.performance.communication.oneccl-v2 ccl-v2
48+
49+
# Build legacy libccl with SYCL support
50+
cd ccl
51+
mkdir build
52+
cd build
53+
cmake .. -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DCMAKE_EXPORT_COMPILE_COMMANDS=1 && make -j install
54+
55+
# Build legacy libccl for CPU only
56+
cd ..
57+
mkdir build_cpu
58+
cd build_cpu
59+
cmake .. && make -j install
60+
cd ..
61+
62+
# Copy CPU only binaries of legacy libccl
63+
mkdir -p build/_install/lib/ccl/cpu/
64+
cp -r build_cpu/_install/lib build/_install/lib/ccl/cpu/
65+
66+
# Go back to the new repo, assuming both repos were cloned at `~`
67+
cd ~/ccl-v2
68+
mkdir build
69+
cd build
70+
# Source previously build libccl, so CMAKE_PREFIX_PATH is set to `~/ccl/build/_install/lib/cmake`
71+
source ~/ccl/build/_install/env/vars.sh
72+
# Run cmake, please note DONECCL_USE_SYSTEM_LIBCCL=ON to use oneCCL through cmake's `find_package`
73+
cmake .. -DCMAKE_CXX_COMPILER=icpx -DCMAKE_C_COMPILER=icx -DONECCL_USE_SYSTEM_LIBCCL=ON -DCMAKE_INSTALL_PREFIX=$(pwd)/_install
74+
make install -j
75+
```
76+
### Additional flag for ARC and BMG GPU
77+
if you build this package for ARC or BMG GPU with embedded libccl(DONECCL_USE_SYSTEM_LIBCCL=OFF), you need to add an additional flag during the cmake process. Commands below show the build process.
78+
#### ARC GPU
79+
```sh
80+
git submodule init # The two steps are not required if -DONECCL_USE_SYSTEM_LIBCCL=ON
81+
git submodule update
82+
83+
mkdir build
84+
cd build
85+
86+
cmake .. -DCMAKE_CXX_COMPILER=icpx -DCMAKE_C_COMPILER=icx -DCMAKE_BUILD_TYPE=release -DCMAKE_INSTALL_PREFIX=$(pwd)/_install -DCCL_ENABLE_ARCA=ON
87+
make -j install
88+
```
89+
#### BMG GPU
90+
```sh
91+
git submodule init # The two steps are not required if -DONECCL_USE_SYSTEM_LIBCCL=ON
92+
git submodule update
93+
94+
mkdir build
95+
cd build
96+
97+
cmake .. -DCMAKE_CXX_COMPILER=icpx -DCMAKE_C_COMPILER=icx -DCMAKE_BUILD_TYPE=release -DCMAKE_INSTALL_PREFIX=$(pwd)/_install -DCCL_ENABLE_ARCB=ON
98+
make -j install
99+
```
41100
## Usage
42101

43102
### Launching Example Application

cmake/compat.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2016-2025 Intel Corporation
1+
# Copyright 2016-2026 Intel Corporation
22
#
33
# Licensed under the Apache License, Version 2.0 (the "License");
44
# you may not use this file except in compliance with the License.

cmake/oneCCL2Config.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2016-2025 Intel Corporation
1+
# Copyright 2016-2026 Intel Corporation
22
#
33
# Licensed under the Apache License, Version 2.0 (the "License");
44
# you may not use this file except in compliance with the License.

cmake/oneCCL2ConfigVersion.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2016-2025 Intel Corporation
1+
# Copyright 2016-2026 Intel Corporation
22
#
33
# Licensed under the Apache License, Version 2.0 (the "License");
44
# you may not use this file except in compliance with the License.
@@ -12,7 +12,7 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
set(PACKAGE_VERSION 0.0.1)
15+
set(PACKAGE_VERSION 2022.0.0)
1616

1717
if ("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
1818
set(PACKAGE_VERSION_COMPATIBLE FALSE)

deps/CMakeLists.txt

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2016-2025 Intel Corporation
1+
# Copyright 2016-2026 Intel Corporation
22
#
33
# Licensed under the Apache License, Version 2.0 (the "License");
44
# you may not use this file except in compliance with the License.
@@ -13,12 +13,46 @@
1313
# limitations under the License.
1414

1515

16-
# --- ITT API ---
17-
add_subdirectory(ittapi EXCLUDE_FROM_ALL)
16+
# --- Helper to debug missing submodules ---
17+
function(require_submodule subdir expected_file)
18+
set(_path "${CMAKE_CURRENT_SOURCE_DIR}/${subdir}/${expected_file}")
19+
if(NOT EXISTS "${_path}")
20+
message(FATAL_ERROR
21+
"Missing files for git submodule '${subdir}'.\n"
22+
"Expected to find: ${_path}\n"
23+
"Submodules are likely not initialized. Please run:\n"
24+
" git submodule update --init --recursive\n"
25+
"If you downloaded a source archive without submodules, fetch dependencies accordingly."
26+
)
27+
endif()
28+
endfunction()
29+
30+
if(ONECCL_ENABLE_ITT)
31+
require_submodule(ittapi CMakeLists.txt)
32+
add_subdirectory(ittapi EXCLUDE_FROM_ALL)
33+
endif()
1834

1935
# --- GoogleTest ---
2036
set(INSTALL_GMOCK OFF CACHE BOOL "Don't install GoogleMock")
2137
set(INSTALL_GTEST OFF CACHE BOOL "Don't install GoogleTest")
2238
set(gtest_force_shared_crt OFF CACHE BOOL "Use static runtime for gtest on MSVC")
2339

40+
require_submodule(googletest CMakeLists.txt)
2441
add_subdirectory(googletest EXCLUDE_FROM_ALL)
42+
43+
# --- Google Benchmark ---
44+
set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Disable Google Benchmark tests")
45+
set(BENCHMARK_ENABLE_EXAMPLES OFF CACHE BOOL "Disable Google Benchmark examples")
46+
set(BENCHMARK_ENABLE_INSTALL OFF CACHE BOOL "Disable Google Benchmark install")
47+
set(BENCHMARK_INSTALL_DOCS OFF CACHE BOOL "Disable Google Benchmark docs")
48+
set(BENCHMARK_ENABLE_WERROR OFF CACHE BOOL "Disable Google Benchmark docs")
49+
50+
set(THREADS_PREFER_PTHREAD_FLAG ON)
51+
# TODO: Check when https://github.com/google/benchmark/issues/2057 is fixed
52+
# require_submodule(benchmark CMakeLists.txt)
53+
# add_subdirectory(benchmark EXCLUDE_FROM_ALL)
54+
55+
require_submodule(libccl CMakeLists.txt)
56+
57+
find_package(Threads REQUIRED)
58+

deps/libccl

Submodule libccl updated 241 files

deps/libccl_docs.patch

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ index 979563443..452013ef7 100644
77
======================
88

99
+.. note::
10-
+ This document describes the legacy C++ API. Documentation for the new C API that closely follows the NVIDIA Collective Communications Library (NCCL)* API standard can be found `here <./v2/index.html>`_.
10+
+ In |product_short| version 2021.17 included with the 2025.3 oneAPI release, oneCCL has added support for a new **C API** that closely follows the NVIDIA Collective Communications Libary (NCCL)* API standard. Details about the new API, instructions on how to build, and run an example can be found `here <./v2/index.html>`_.
1111
+
1212
+ The existing **C++ API** will remain the default API for the 2021.17 release.
1313
+
@@ -23,7 +23,7 @@ index 16c2080ec..cefa8429f 100644
2323
===========
2424

2525
+.. note::
26-
+ This document describes the legacy C++ API. Documentation for the new C API that closely follows the NVIDIA Collective Communications Library (NCCL)* API standard can be found `here <./v2/index.html>`_.
26+
+ In |product_short| version 2021.17 included with the 2025.3 oneAPI release, oneCCL has added support for a new **C API** that closely follows the NVIDIA Collective Communications Libary (NCCL)* API standard. Details about the new API, instructions on how to build, and run an example can be found `here <./v2/index.html>`_.
2727
+
2828
+ The existing **C++ API** will remain the default API for the 2021.17 release.
2929
+
@@ -39,7 +39,7 @@ index c83521030..b6cf404e1 100644
3939
=====================
4040

4141
+.. note::
42-
+ This document describes the legacy C++ API. Documentation for the new C API that closely follows the NVIDIA Collective Communications Library (NCCL)* API standard can be found `here <./v2/index.html>`_.
42+
+ In |product_short| version 2021.17 included with the 2025.3 oneAPI release, oneCCL has added support for a new **C API** that closely follows the NVIDIA Collective Communications Libary (NCCL)* API standard. Details about the new API, instructions on how to build, and run an example can be found `here <./v2/index.html>`_.
4343
+
4444
+ The existing **C++ API** will remain the default API for the 2021.17 release.
4545
+
@@ -55,7 +55,7 @@ index f2c608c35..1a2cd44ea 100644
5555
***********************
5656

5757
+.. note::
58-
+ This document describes the legacy C++ API. Documentation for the new C API that closely follows the NVIDIA Collective Communications Library (NCCL)* API standard can be found `here <./v2/index.html>`_.
58+
+ In |product_short| version 2021.17 included with the 2025.3 oneAPI release, oneCCL has added support for a new **C API** that closely follows the NVIDIA Collective Communications Libary (NCCL)* API standard. Details about the new API, instructions on how to build, and run an example can be found `here <./v2/index.html>`_.
5959
+
6060
+ The existing **C++ API** will remain the default API for the 2021.17 release.
6161
+
@@ -71,7 +71,7 @@ index a34ff9df4..a61088cf8 100644
7171
**************************
7272

7373
+.. note::
74-
+ This document describes the legacy C++ API. Documentation for the new C API that closely follows the NVIDIA Collective Communications Library (NCCL)* API standard can be found `here <./v2/index.html>`_.
74+
+ In |product_short| version 2021.17 included with the 2025.3 oneAPI release, oneCCL has added support for a new **C API** that closely follows the NVIDIA Collective Communications Libary (NCCL)* API standard. Details about the new API, instructions on how to build, and run an example can be found `here <./v2/index.html>`_.
7575
+
7676
+ The existing **C++ API** will remain the default API for the 2021.17 release.
7777
+
@@ -87,7 +87,7 @@ index 41470783e..1b215bb6e 100755
8787
}
8888

8989
-html_theme_options["logo"] = {"text": "oneCCL Documentation 2021.16.2"}
90-
+html_theme_options["logo"] = {"text": "oneCCL Documentation 2021.17.2"}
90+
+html_theme_options["logo"] = {"text": "oneCCL Documentation 2022.0.0"}
9191

9292
diff --git a/doc/rst/source/env-variables.rst b/doc/rst/source/env-variables.rst
9393
index 6219e0bd6..65c471bcd 100644
@@ -98,7 +98,7 @@ index 6219e0bd6..65c471bcd 100644
9898
=====================
9999

100100
+.. note::
101-
+ This document describes the legacy C++ API. Documentation for the new C API that closely follows the NVIDIA Collective Communications Library (NCCL)* API standard can be found `here <./v2/index.html>`_.
101+
+ In |product_short| version 2021.17 included with the 2025.3 oneAPI release, oneCCL has added support for a new **C API** that closely follows the NVIDIA Collective Communications Libary (NCCL)* API standard. Details about the new API, instructions on how to build, and run an example can be found `here <./v2/index.html>`_.
102102
+
103103
+ The existing **C++ API** will remain the default API for the 2021.17 release.
104104
+
@@ -114,7 +114,7 @@ index bf2f37c8c..734151f8e 100644
114114
=====================
115115

116116
+.. note::
117-
+ This document describes the legacy C++ API. Documentation for the new C API that closely follows the NVIDIA Collective Communications Library (NCCL)* API standard can be found `here <./v2/index.html>`_.
117+
+ In |product_short| version 2021.17 included with the 2025.3 oneAPI release, oneCCL has added support for a new **C API** that closely follows the NVIDIA Collective Communications Libary (NCCL)* API standard. Details about the new API, instructions on how to build, and run an example can be found `here <./v2/index.html>`_.
118118
+
119119
+ The existing **C++ API** will remain the default API for the 2021.17 release.
120120
+
@@ -145,7 +145,7 @@ index 1d5ee2379..c2d1046fd 100644
145145
============
146146

147147
+.. note::
148-
+ This document describes the legacy C++ API. Documentation for the new C API that closely follows the NVIDIA Collective Communications Library (NCCL)* API standard can be found `here <./v2/index.html>`_.
148+
+ In |product_short| version 2021.17 included with the 2025.3 oneAPI release, oneCCL has added support for a new **C API** that closely follows the NVIDIA Collective Communications Libary (NCCL)* API standard. Details about the new API, instructions on how to build, and run an example can be found `here <./v2/index.html>`_.
149149
+
150150
+ The existing **C++ API** will remain the default API for the 2021.17 release.
151151
+
@@ -209,7 +209,7 @@ index e92d42970..7a0110aec 100644
209209
=======================
210210

211211
+.. note::
212-
+ This document describes the legacy C++ API. Documentation for the new C API that closely follows the NVIDIA Collective Communications Library (NCCL)* API standard can be found `here <./v2/index.html>`_.
212+
+ In |product_short| version 2021.17 included with the 2025.3 oneAPI release, oneCCL has added support for a new **C API** that closely follows the NVIDIA Collective Communications Libary (NCCL)* API standard. Details about the new API, instructions on how to build, and run an example can be found `here <./v2/index.html>`_.
213213
+
214214
+ The existing **C++ API** will remain the default API for the 2021.17 release.
215215
+
@@ -225,7 +225,7 @@ index f8f7221fa..150915bb1 100644
225225
=================
226226

227227
+.. note::
228-
+ This document describes the legacy C++ API. Documentation for the new C API that closely follows the NVIDIA Collective Communications Library (NCCL)* API standard can be found `here <./v2/index.html>`_.
228+
+ In |product_short| version 2021.17 included with the 2025.3 oneAPI release, oneCCL has added support for a new **C API** that closely follows the NVIDIA Collective Communications Libary (NCCL)* API standard. Details about the new API, instructions on how to build, and run an example can be found `here <./v2/index.html>`_.
229229
+
230230
+ The existing **C++ API** will remain the default API for the 2021.17 release.
231231
+
@@ -241,7 +241,7 @@ index cdb2b709f..cc7f800d2 100644
241241
=============
242242

243243
+.. note::
244-
+ This document describes the legacy C++ API. Documentation for the new C API that closely follows the NVIDIA Collective Communications Library (NCCL)* API standard can be found `here <./v2/index.html>`_.
244+
+ In |product_short| version 2021.17 included with the 2025.3 oneAPI release, oneCCL has added support for a new **C API** that closely follows the NVIDIA Collective Communications Libary (NCCL)* API standard. Details about the new API, instructions on how to build, and run an example can be found `here <./v2/index.html>`_.
245245
+
246246
+ The existing **C++ API** will remain the default API for the 2021.17 release.
247247
+

docs/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ To display the proper version of oneCCL in the documentation title, set the `CCL
55

66
```bash
77
cd build
8-
$ CCL_VERSION=<your version, e.g. "2021.17.2"> python ../docs/generate_docs.py
8+
$ CCL_VERSION=<your version, e.g. "2022.0.0"> python ../docs/generate_docs.py
99
```
1010

1111
Documentation can also be built using the build target 'docs' (see details below).

docs/config/Doxyfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ DOXYFILE_ENCODING = UTF-8
4242
# title of most generated pages and in a few other places.
4343
# The default value is: My Project.
4444

45-
PROJECT_NAME = "oneAPI Collective Communications Library (C API)"
45+
PROJECT_NAME = "oneAPI Collective Communications Library"
4646

4747
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
4848
# could be handy for archiving the generated documentation or if some version
@@ -54,7 +54,7 @@ PROJECT_NUMBER =
5454
# for a project that appears at the top of each page and should give viewers a
5555
# quick idea about the purpose of the project. Keep the description short.
5656

57-
PROJECT_BRIEF = "A library providing an efficient implementation of communication patterns used in deep learning."
57+
PROJECT_BRIEF =
5858

5959
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
6060
# in the documentation. The maximum height of the logo should not exceed 55

0 commit comments

Comments
 (0)