Skip to content

Commit e7b7592

Browse files
committed
Intel(R) SHMEM Library (ISHMEM) 1.1.0
1 parent 81de715 commit e7b7592

File tree

220 files changed

+23886
-4935
lines changed

Some content is hidden

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

220 files changed

+23886
-4935
lines changed

CMakeLists.txt

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ option(BUILD_SHARED_LIBS ON)
1717

1818
# Build flags for choosing back-ends
1919
option(ENABLE_OPENSHMEM "Enable OpenSHMEM runtime support" ON)
20-
#option(ENABLE_MPI "Enable MPI runtime support" OFF)
20+
option(ENABLE_MPI "Enable MPI runtime support" OFF)
2121
#option(ENABLE_PMI "Enable PMI runtime support" OFF)
2222
#option(ENABLE_OSHMPI "Enable OSHMPI support for MPI runtimes" OFF)
2323
#option(ENABLE_ONECCL "Enable ONECCL support for collectives" OFF)
@@ -28,10 +28,11 @@ option(BUILD_TEST "Build Test" ON)
2828
option(BUILD_PERF_TEST "Build Performance Test" ON)
2929

3030
# Build flags for choosing different configurations
31-
option(ENABLE_GPU_RDMA "Enable GPU RDMA support" ON)
31+
#option(ENABLE_GPU_RDMA "Enable GPU RDMA support" ON)
3232

3333
# Other build flags
3434
option(USE_REDUCED_LINK_ENGINE_SET "Reduced link engines for single tile device" OFF)
35+
option(USE_DLMALLOC "DLMALLOC library for allocation and free" ON)
3536

3637
option(CTEST_SCHEDULER "Job scheduler used for ctest" OFF)
3738
if(NOT CTEST_SCHEDULER)
@@ -57,13 +58,26 @@ configure_file(ishmem_config.h.in ishmem_config.h)
5758
set(CMAKE_CXX_COMPILER icpx)
5859
add_compile_options(-fsycl)
5960
add_link_options(-fsycl)
60-
add_compile_options(-Werror -Wuninitialized)
61+
62+
if (ISHMEM_USE_OFFLINE_COMPILER)
63+
message("will build using ahead of time compiler")
64+
add_compile_options(-fsycl-targets=spir64_gen)
65+
set(devtype "-device pvc")
66+
add_compile_options(--start-no-unused-arguments -Xs ${devtype} --end-no-unused-arguments)
67+
add_link_options(-fsycl-targets=spir64_gen)
68+
add_link_options(--start-no-unused-arguments -Xs ${devtype} --end-no-unused-arguments)
69+
else()
70+
message("will build using incremental compiler")
71+
endif()
72+
73+
add_compile_options(-Werror -Wuninitialized -Wunused-variable)
74+
6175
add_compile_options(-Rno-debug-disables-optimization)
6276
add_link_options(-Rno-debug-disables-optimization)
6377

6478
# Make sure at least one of the backends is enabled
6579
if (ENABLE_MPI STREQUAL "OFF" AND ENABLE_OPENSHMEM STREQUAL "OFF" AND ENABLE_PMI STREQUAL "OFF")
66-
message(FATAL ERROR "At least one of 'ENABLE_MPI', 'ENABLE_OPENSHMEM' or 'ENABLE_PMI' must be on")
80+
message(FATAL_ERROR "At least one of 'ENABLE_MPI', 'ENABLE_OPENSHMEM' or 'ENABLE_PMI' must be on")
6781
endif()
6882

6983
# Check for valid L0 path
@@ -83,6 +97,8 @@ if (EXISTS "${L0_INSTALL_PREFIX}/lib64/libze_loader.so")
8397
list(APPEND EXTRA_LIBS "-L${L0_INSTALL_PREFIX}/lib64 -lze_loader")
8498
elseif (EXISTS "${L0_INSTALL_PREFIX}/lib/libze_loader.so")
8599
list(APPEND EXTRA_LIBS "-L${L0_INSTALL_PREFIX}/lib -lze_loader")
100+
elseif (EXISTS "${L0_INSTALL_PREFIX}/lib/x86_64-linux-gnu/libze_loader.so")
101+
list(APPEND EXTRA_LIBS "-L${L0_INSTALL_PREFIX}/lib/x86_64-linux-gnu -lze_loader")
86102
else()
87103
message(FATAL_ERROR
88104
"Cannot find level zero library!\n"
@@ -127,7 +143,7 @@ endif()
127143
add_subdirectory(pmi-simple)
128144
add_subdirectory(src)
129145
add_subdirectory(examples)
130-
if (BUILD_TEST)
146+
if (BUILD_TEST OR BUILD_PERF_TEST)
131147
add_subdirectory(test)
132148
endif()
133149

README.md

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ Intel® oneAPI DPC++/C++ Compiler with Level Zero support.
2525
To install Level Zero, refer to the instructions in [Intel® Graphics Compute Runtime for oneAPI Level Zero and OpenCL™ Driver repository](https://github.com/intel/compute-runtime/releases) or to the [installation guide](https://dgpu-docs.intel.com/installation-guides/index.html) for oneAPI users.
2626

2727
## Installation
28-
Intel® SHMEM requires a host SHMEM back-end to be used for host-sided operations support. In particular, it relies on an a collection of extension APIs (`shmemx_heap_create`, `shmemx_heap_preinit`, and `shmemx_heap_postinit`) to coordinate the Intel® SHMEM and OpenSHMEM heaps. We recommend [Sandia OpenSHMEM](https://github.com/Sandia-OpenSHMEM/SOS) for this purpose.
28+
Intel® SHMEM requires a host OpenSHMEM back-end to be used for host-sided operations support. In particular, it relies on a collection of extension APIs (`shmemx_heap_create`, `shmemx_heap_preinit`, and `shmemx_heap_postinit`) to coordinate the Intel® SHMEM and OpenSHMEM heaps. We recommend [Sandia OpenSHMEM v1.5.3rc1](https://github.com/Sandia-OpenSHMEM/SOS/releases/tag/v1.5.3rc1) or newer for this purpose.
2929

3030
### Building Sandia OpenSHMEM (SOS)
3131
Download the SOS repo to be configured as a back-end for Intel® SHMEM.
3232

3333
```
34-
git clone https://github.com/Sandia-OpenSHMEM/SOS.git SOS
34+
git clone --recurse-submodules https://github.com/Sandia-OpenSHMEM/SOS.git SOS
3535
```
3636

3737
Build SOS following instructions below. `FI_HMEM` support in the provider is required for use with Intel® SHMEM. To enable `FI_HMEM` with a supported provider, we recommend a specific set of config flags. Below are two examples for configuring and building SOS with two providers supporting `FI_HMEM`. To configure SOS with the `verbs;ofi_rxm` provider, use the following instructions:
@@ -47,10 +47,19 @@ To configure SOS with the HPE Slingshot provider `cxi`, please use the following
4747
```
4848
cd SOS
4949
./autogen.sh
50-
./configure --prefix=<sos_dir> --with-ofi=<ofi_installation> --enable-pmi-simple --enable-ofi-mr=basic --disable-ofi-inject --enable-ofi-hmem --disable-bounce-buffers --enable-ofi-manual-progress --enable-mr-endpoint
50+
./configure --prefix=<sos_dir> --with-ofi=<ofi_installation> --enable-pmi-simple --enable-ofi-mr=basic --disable-ofi-inject --enable-ofi-hmem --disable-bounce-buffers --enable-ofi-manual-progress --enable-mr-endpoint --disable-nonfetch-amo --enable-manual-progress
5151
make -j
5252
make install
53-
```
53+
```
54+
To configure SOS with the `psm3` provider, please use the following instructions:
55+
```
56+
cd SOS
57+
./autogen.sh
58+
./configure --prefix=<sos_dir> --with-ofi=<ofi_installation> --enable-pmi-simple --enable-manual-progress --enable-ofi-hmem --disable-bounce-buffers --enable-ofi-mr=basic --enable-mr-endpoint
59+
make -j
60+
make install
61+
```
62+
5463
Please choose an appropriate PMI configure flag based on the available PMI client library in the system. Please check for further instructions on [SOS Wiki pages](https://github.com/Sandia-OpenSHMEM/SOS/wiki). Optionally, users may also choose to add `--disable-fortran` since fortran interfaces will not be used.
5564

5665

RELEASE_NOTES.md

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,33 @@
11
# Release Notes <!-- omit in toc -->
2-
This document contains a list of new features and known limitations of Intel® SHMEM in the most recent release.
2+
This document contains a list of new features and known limitations of Intel® SHMEM releases.
3+
4+
## Release 1.1.0
5+
6+
### New Features and Enhancements
7+
- Support for OpenSHMEM 1.5 teams and team-based collective operations.
8+
- Device and host API support for strided RMA operations - ibput and ibget, from OpenSHMEM 1.6.
9+
- Device and host API support for non-blocking atomic operations.
10+
- Device and host API support for size-based RMA and signaling operations.
11+
- Device and host API support for all/any/some versions of point-to-point synchronization operations.
12+
- Device and host API support for signal set, add, and wait-until operations.
13+
- Fixed implementation of `ishmem_free`.
14+
- Compatible with [Sandia OpenSHMEM (SOS)](https://github.com/Sandia-OpenSHMEM/SOS) v1.5.3rc1 and newer releases.
15+
- Support for [OFI](https://github.com/ofiwg/libfabric) PSM3 provider enabled networks via SOS.
16+
- Updated [specification](https://oneapi-src.github.io/ishmem/intro.html) with the teams API, size-based RMA, non-blocking AMO, team-based collectives, all/any/some flavors of synchronization operations, utility extensions for print messages, etc.
17+
- An improved and additional set of [unit tests](test/unit/SHMEM) covering functionality of the new APIs.
18+
- New [examples](examples/SHMEM) illustrating use cases of Intel® SHMEM functionalities including the Teams APIs.
19+
- Updated [launcher script](scripts/ishmrun) to launch Intel® SHMEM applications on the available SYCL devices in the system.
20+
21+
### Known Limitations
22+
- Only [Sandia OpenSHMEM](https://github.com/Sandia-OpenSHMEM/SOS) is currently supported as the host back-end.
23+
- Not all APIs from OpenSHMEM standard are supported. Please refer to [Supported/Unsupported Features](https://oneapi-src.github.io/ishmem/supported_features.html) to get a complete view.
24+
- Intel® SHMEM requires a one-to-one mapping of PEs to SYCL devices. This implies that Intel® SHMEM executions must launch with a number of processes on each compute node that is no more than the number of available SYCL devices on each one of those nodes. By default, the Intel® SHMEM runtime considers each individual device tile to make up a single SYCL device and assigns a tile per PE.
25+
- All collective operations within a kernel must complete before invoking subsequent kernel-initiated collective operation.
26+
- To run Intel® SHMEM with SOS enabling the Slingshot provider in OFI, environment variable `FI_CXI_OPTIMIZED_MRS=0` must be used. It is also recommended to use `FI_CXI_DEFAULT_CQ_SIZE=131072`.
27+
- To run Intel® SHMEM with SOS enabling the verbs provider, environment variable `MLX5_SCATTER_TO_CQE=0` must be used.
28+
- Inter-node communication in Intel® SHMEM requires [dma-buf](https://www.kernel.org/doc/html/latest/driver-api/dma-buf.html) support in the Linux kernel. Inter-node functionality in Intel® SHMEM Release 1.1.0 is tested with SUSE Linux Enterprise Server 15 SP4.
329

430
## Release 1.0.0
5-
### Table of Contents <!-- omit in toc -->
6-
- [New Features](#new-features)
7-
- [Known Limitations](#known-limitations)
831

932
### New Features
1033
- OpenSHMEM programming on Intel® GPUs.

docs/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ To get started with Sphinx, Read the Docs, and rST syntax please refer to:
1818
```
1919
pip install sphinx
2020
pip install sphinx_rtd_theme
21+
pip install sphinx_book_theme
2122
```
2223
4. Generate documentation using the steps below.
2324

@@ -27,3 +28,8 @@ To get started with Sphinx, Read the Docs, and rST syntax please refer to:
2728
2. Optionally run `make clean` to remove any pre-existing files.
2829
3. Run `make html`.
2930
4. Open the `build/html/index.html` file with your favorite browser.
31+
32+
### Style and text editor guidlines:
33+
34+
1. Whenever possible, please maintain only a single sentence per line.
35+
2. Please set your text editor to enforce no more than 80 characters per line.

docs/source/Makefile

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ SPHINXOPTS =
77
SPHINXBUILD = sphinx-build
88
SOURCEDIR = .
99
BUILDDIR = build
10+
PDFBUILDDIR = buildpdf
1011

1112
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
1213
ERROROPTS = -W --keep-going
@@ -16,11 +17,15 @@ help:
1617
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
1718

1819
clean:
19-
rm -rf $(BUILDDIR)/*
20+
rm -rf $(BUILDDIR)/* $(PDFBUILDDIR)/*
2021
@echo "Directories cleaned."
2122
@ls | grep -P "(conf[A-Za-z0-9]{3})\.py" | xargs -d"\n" rm -rf
2223

2324
html:
2425
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
2526
@echo
2627
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
28+
29+
pdf:
30+
@$(SPHINXBUILD) -M latexpdf "$(SOURCEDIR)" "$(PDFBUILDDIR)"
31+
@echo "Build finished. The PDF are in $(PDFBUILDDIR)/pdf."

0 commit comments

Comments
 (0)