Skip to content

Commit

Permalink
Merge pull request #125 from nikitaxgusev/release/ccl_2021.13
Browse files Browse the repository at this point in the history
Intel(R) oneAPI Collective Communications Library (oneCCL) 2021.13
  • Loading branch information
nikitaxgusev authored Jun 24, 2024
2 parents 5e7c7b7 + aefb29e commit 0eb5987
Show file tree
Hide file tree
Showing 288 changed files with 16,610 additions and 3,862 deletions.
3 changes: 2 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,7 @@ endif()

set_lp_env()
set_avx_env()
set_sycl_env()

set(CCL_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/src)

Expand Down Expand Up @@ -307,7 +308,7 @@ file(GLOB spv_kernels "${PROJECT_SOURCE_DIR}/src/kernels/kernels.spv")
endif()

set(CCL_MAJOR_VERSION "2021")
set(CCL_MINOR_VERSION "12")
set(CCL_MINOR_VERSION "13")
set(CCL_UPDATE_VERSION "0")
set(CCL_PRODUCT_STATUS "Gold")
string(TIMESTAMP CCL_PRODUCT_BUILD_DATE "%Y-%m-%dT %H:%M:%SZ")
Expand Down
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,13 @@ To generate oneCCLConfig files for oneCCL package, use the provided [`cmake/scri
cmake [-DOUTPUT_DIR=<output_dir>] -P cmake/script/config_generation.cmake
```

### OS File Descriptors

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). 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.

The number of FDs required is application-dependent, but the recommended limit is ``1048575``. This value can be modified with the ulimit command.

## Additional Resources

### Blog Posts
Expand Down
46 changes: 45 additions & 1 deletion cmake/helpers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,14 @@ function(set_lp_env)
endif()
message(STATUS "BF16 GPU truncate: ${CCL_BF16_GPU_TRUNCATE}")


set(GCC_FP16_MIN_SUPPORTED "4.9.0")
set(GCC_FP16_AVX512FP16_MIN_SUPPORTED "12.0.0")
set(GCC_FP16_AVX512FP16_BINUTILS_MIN_SUPPORTED "2.38")

set(ICX_FP16_AVX512FP16_MIN_SUPPORTED "2021.4.0")

set(CLANG_FP16_MIN_SUPPORTED "9.0.0")
set(CLANG_FP16_AVX512FP16_MIN_SUPPORTED "14.0.0")

if (${CMAKE_C_COMPILER_ID} STREQUAL "Intel"
OR (${CMAKE_C_COMPILER_ID} STREQUAL "IntelLLVM")
Expand All @@ -81,6 +86,21 @@ function(set_lp_env)
endif()
message(STATUS "FP16 compiler: ${CCL_FP16_COMPILER}")

if ((${CMAKE_C_COMPILER_ID} STREQUAL "IntelLLVM"
AND NOT ${CMAKE_C_COMPILER_VERSION} VERSION_LESS ${ICX_FP16_AVX512FP16_MIN_SUPPORTED})
OR (${CMAKE_C_COMPILER_ID} STREQUAL "Clang"
AND NOT ${CMAKE_C_COMPILER_VERSION} VERSION_LESS ${CLANG_FP16_AVX512FP16_MIN_SUPPORTED})
OR (${CMAKE_C_COMPILER_ID} STREQUAL "GNU"
AND NOT ${CMAKE_C_COMPILER_VERSION} VERSION_LESS ${GCC_FP16_AVX512FP16_MIN_SUPPORTED}
AND NOT ${BINUTILS_VERSION} VERSION_LESS ${GCC_FP16_AVX512FP16_BINUTILS_MIN_SUPPORTED})
)
add_definitions(-DCCL_FP16_AVX512FP16_COMPILER)
set(CCL_FP16_AVX512FP16_COMPILER ON)
else()
set(CCL_FP16_AVX512FP16_COMPILER OFF)
endif()
message(STATUS "FP16 AVX512FP16 compiler: ${CCL_FP16_AVX512FP16_COMPILER}")

if (CCL_FP16_COMPILER)
if ((${CMAKE_C_COMPILER_ID} STREQUAL "Clang" OR ${CMAKE_C_COMPILER_ID} STREQUAL "IntelLLVM"
OR ${CMAKE_C_COMPILER_ID} STREQUAL "GNU"))
Expand All @@ -102,6 +122,28 @@ function(set_lp_env)

endfunction(set_lp_env)

function(set_sycl_env)
set(ICX_SYCL_VEC_BF16_MIN_SUPPORTED "2024.2.0")

if (CCL_ENABLE_SYCL
AND ${CMAKE_C_COMPILER_ID} STREQUAL "IntelLLVM"
AND NOT ${CMAKE_C_COMPILER_VERSION} VERSION_LESS ${ICX_SYCL_VEC_BF16_MIN_SUPPORTED})
add_definitions(-DCCL_SYCL_VEC_SUPPORT_BF16)
set(CCL_SYCL_VEC_SUPPORT_BF16 ON)
else()
set(CCL_SYCL_VEC_SUPPORT_BF16 OFF)
endif()

if (CCL_ENABLE_SYCL
AND ${CMAKE_C_COMPILER_ID} STREQUAL "Clang")
set(CCL_SYCL_VEC_SUPPORT_FP16 OFF)
else()
add_definitions(-DCCL_SYCL_VEC_SUPPORT_FP16)
set(CCL_SYCL_VEC_SUPPORT_FP16 ON)
endif()

endfunction(set_sycl_env)

function(set_avx_env)

set(GCC_AVX_MIN_SUPPORTED "4.9.0")
Expand Down Expand Up @@ -278,6 +320,8 @@ function(set_compute_backend COMMON_CMAKE_DIR)
set(CCL_ENABLE_ZE ON PARENT_SCOPE)
message(STATUS "Enable CCL Level Zero support")

set (CMAKE_CXX_FLAGS "-Wno-c++20-extensions" PARENT_SCOPE)

execute_process(COMMAND icpx -v
OUTPUT_VARIABLE ICPX_VERSION
ERROR_VARIABLE ICPX_VERSION
Expand Down
2 changes: 1 addition & 1 deletion cmake/vars.sh.in
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ args=$*
for arg in $args
do
case "$arg" in
--ccl-bundled-mpi=*)
--ccl-bundled-mpi=*|-ccl-bundled-mpi=*)
ccl_bundled_mpi="${arg#*=}"
;;
esac
Expand Down
Binary file modified deps/itt/lib64/libittnotify.a
Binary file not shown.
Loading

0 comments on commit 0eb5987

Please sign in to comment.