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
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,14 +34,12 @@ Contributed code must be:
34
34
35
35
### Coding style
36
36
37
-
The code style and consistency is maintained using `clang-format`. When submitting a contribution, please make sure that it adheres to the existing coding style by using the following command:
37
+
The code style and consistency is maintained using `clang-format`. When submitting a contribution, please ensure it adheres to the existing coding style by using the following command from the top-level directory of the repository:
38
38
39
39
```
40
40
clang-format -style=file -i <FILE>
41
41
```
42
42
43
-
This will format the code using the `.clang-format` file found in the top-level directory of this repository.
44
-
45
43
### Unit tests
46
44
47
45
Be sure to extend the existing tests when fixing an issue.
@@ -90,7 +88,9 @@ By making a contribution to this project, I certify that:
Intel® SHMEM requires a host OpenSHMEM or MPI back-end to be used for host-sided operations support. In particular, the OpenSHMEM back-end 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. A [work-in-progress branch](https://github.com/davidozog/oshmpi/tree/wip/ishmem) of [OSHMPI](https://github.com/pmodels/oshmpi.git) is also supported but is currently considered experimental. See the [Building OSHMPI](#building-oshmpi-optional-and-experimental) section before for more details.
47
+
### The Host Backend Library
48
+
Intel® SHMEM requires a host OpenSHMEM or MPI backend to be used for scale-out communication. In particular, the OpenSHMEM backend 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.3](https://github.com/Sandia-OpenSHMEM/SOS/releases/tag/v1.5.3) or newer for this purpose. A [work-in-progress branch](https://github.com/davidozog/oshmpi/tree/wip/ishmem) of [OSHMPI](https://github.com/pmodels/oshmpi.git) is also supported but is currently considered experimental. See the [Building OSHMPI](#building-oshmpi-optional-and-experimental) section before for more details.
49
49
50
-
We recommend the Intel® MPI Library as the MPI back-end option for the current version of Intel® SHMEM. See the [Building Intel® SHMEM](#building-intel-shmem) section below for more details.
50
+
We recommend the Intel® MPI Library as the MPI backend option for the current version of Intel® SHMEM. See the [Building Intel® SHMEM](#building-intel-shmem) section below for more details.
51
51
52
52
### Building Sandia OpenSHMEM (SOS)
53
-
Download the SOS repo to be configured as a back-end for Intel® SHMEM.
53
+
Download the SOS repo to be configured as a backend for Intel® SHMEM.
54
54
55
55
```
56
-
git clone --recurse-submodules https://github.com/Sandia-OpenSHMEM/SOS.git SOS
56
+
git clone -b v1.5.3 --recurse-submodules https://github.com/Sandia-OpenSHMEM/SOS.git SOS
57
57
```
58
58
59
59
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:
@@ -93,8 +93,7 @@ To download the OSHMPI repository:
After ensuring Intel® MPI Library is enabled (for example, by sourcing the `/opt/intel/oneapi/setvars.sh` script),
97
-
please build OSHMPI following the instructions below.
96
+
After ensuring the Intel® MPI Library is present in the environment, please build OSHMPI following the instructions below.
98
97
99
98
```
100
99
cd oshmpi
@@ -107,57 +106,48 @@ make install
107
106
### Building Intel® SHMEM
108
107
Check that the SOS build process has successfully created a `<shmem_dir>` directory with `include` and `lib` as subdirectories. Please find `shmem.h` and `shmemx.h` in `include`.
109
108
110
-
Build Intel® SHMEM with an OpenSHMEM back-end using the following instructions:
109
+
Build Intel® SHMEM with an OpenSHMEM backend using the following instructions:
Alternatively, Intel® SHMEM can be built by enabling an Intel® MPI Library back-end.
118
+
Alternatively, Intel® SHMEM can be built by enabling an Intel® MPI Library backend.
120
119
Here is information on how to [Get Started with Intel® MPI Library on Linux](https://www.intel.com/content/www/us/en/docs/mpi-library/get-started-guide-linux/2021-11/overview.html).
where `<impi_dir>` is the path to the Intel® MPI Library installation.
126
125
127
-
Enabling both the OpenSHMEM and MPI back-ends is also supported. In this case,
128
-
the desired backend can be selected via the environment variable,
129
-
`ISHMEM_RUNTIME`, which can be set to either "OpenSHMEM" or "MPI".
130
-
The default value for `ISHMEM_RUNTIME` is "OpenSHMEM".
126
+
Enabling both the OpenSHMEM and MPI backends is also supported. You may specify the default runtime at configure time with `-DISHMEM_DEFAULT_RUNTIME=<backend>` where `<backend>` is `MPI` or `OPENSHMEM` (case-insensitive). Furthermore, the desired backend can be selected at runtime via the environment variable `ISHMEM_RUNTIME=<backend>` where is `MPI` or `OPENSHMEM` (case-insensitive). If a default runtime is not specified, it will be automatically selected from the enabled backends in the following order: `OPENSHMEM` then `MPI`.
131
127
132
128
## Usage
133
129
134
130
### Launching Example Application
135
131
136
132
Validate that Intel® SHMEM was built correctly by running an example program.
137
133
138
-
1. Add the path for the back-end library to the environment, for example:
134
+
1. Add the path for the backend library to the environment, for example:
where `<back-end>` is the selected host back-end library.
156
146
157
147
-*Note:* Current supported launchers include: MPI process launchers (i.e. `mpiexec`, `mpiexec.hydra`, `mpirun`, etc.), Slurm (i.e. `srun`, `salloc`, etc.), and PBS (i.e. `qsub`).
158
148
159
-
-*Note:* Intel® SHMEM execution model requires applications to use a 1:1 mapping between PEs and GPU devices. Attempting to run an application without the ishmrun launch script may result in undefined behavior if this mapping is not maintained.
160
-
- For further details on the device selection, please see [the ONEAPI_DEVICE_SELECTOR](https://github.com/intel/llvm/blob/sycl/sycl/doc/EnvironmentVariables.md#oneapi_device_selector).
149
+
-*Note:* Intel® SHMEM execution model requires applications to use a 1:1 mapping between PEs and GPU devices. Attempting to run an application without the `ishmrun` launch script may result in failure if this mapping is not maintained.
150
+
- For further details on device selection, please see [the ONEAPI_DEVICE_SELECTOR](https://github.com/intel/llvm/blob/sycl/sycl/doc/EnvironmentVariables.md#oneapi_device_selector).
161
151
162
152
3. Validate the application ran successfully; example output:
163
153
@@ -211,6 +201,18 @@ The following values may be assigned to `CTEST_LAUNCHER` at configure-time (ex.
211
201
```
212
202
export JOB_QUEUE=<queue>
213
203
```
204
+
### Hardware-specific Environment Settings
205
+
The following environment settings are either **required** or *recommended* when running Intel® SHMEM on the specified hardware. For GPU-specific environment settings, the launch script `ishmrun` will automatically detect and set the appropriate environment. For interconnect-specific environment settings, it is up to the user to ensure the appropriate environment is set:
206
+
207
+
- HPE Slingshot Interconnect
208
+
-`FI_CXI_OPTIMIZED_MRS=0` is **required** when running with an OpenSHMEM backend.
209
+
-`FI_CXI_DEFAULT_CQ_SIZE=131072` is *recommended* for all backends.
210
+
- Mellanox ConnectX® Interconnects
211
+
-`MLX5_SCATTER_TO_CQE=0` is **required** when running with an OpenSHMEM backend.
212
+
- Intel® Data Center GPU Max Series
213
+
-`EnableImplicitScaling=0` is **required**. *Note:* you will also need to ensure `NEOReadDebugKeys=1` in case it is not already set.
214
+
- Intel® Arc™ B-Series GPUs
215
+
-`RenderCompressedBuffersEnabled=0` is **required**. *Note:* you will also need to ensure `NEOReadDebugKeys=1` in case it is not already set.
Copy file name to clipboardExpand all lines: RELEASE_NOTES.md
+20Lines changed: 20 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,26 @@
1
1
# Release Notes <!-- omit in toc -->
2
2
This document contains a list of new features and known limitations of Intel® SHMEM releases.
3
3
4
+
## Release 1.5.0
5
+
6
+
### New Features and Enhancements
7
+
- Support for new collectives: inclusive and exclusive scan.
8
+
- Improved affinity assignment through launcher script `ishmrun`.
9
+
- Preliminary support for Intel® Arc™ B-Series GPUs.
10
+
- Bug fixes improving functionality.
11
+
12
+
### Known Limitations
13
+
- Only [Sandia OpenSHMEM](https://github.com/Sandia-OpenSHMEM/SOS) and [Intel® MPI Library](https://www.intel.com/content/www/us/en/developer/tools/oneapi/mpi-library.html) are currently supported as the host back-end.
14
+
- 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.
15
+
- 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.
16
+
- All collective operations within a kernel must complete before invoking subsequent kernel-initiated collective operation.
17
+
- 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`.
18
+
- To run Intel® SHMEM with SOS enabling the verbs provider, environment variable `MLX5_SCATTER_TO_CQE=0` must be used.
19
+
- To run Intel® SHMEM with Intel® MPI Library, environment variable `I_MPI_OFFLOAD=1` must be used. Additionally, `I_MPI_OFFLOAD_RDMA=1` may be necessary for GPU RDMA depending on the OFI provider. Please refer to the [reference guide](https://www.intel.com/content/www/us/en/docs/mpi-library/developer-reference-linux/2021-16/gpu-buffers-support.html) for further details.
20
+
- 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.5.0 is tested with SUSE Linux Enterprise Server 15 SP4.
21
+
- Support for Intel® Arc™ B-Series GPUs is preliminary. As such, not all APIs are currently supported.
22
+
- When using Intel® Arc™ B-Series GPUs, environment variable `RenderCompressedBuffersEnabled=0` is required. This is automatically set when running with the launcher script `ishmrun`.
Intel is committed to rapidly addressing security vulnerabilities affecting our customers and providing clear guidance on the solution, impact, severity and mitigation.
2
+
Intel is committed to rapidly addressing security vulnerabilities affecting our customers and providing clear guidance on the solution, impact, severity and mitigation.
3
3
4
4
## Reporting a Vulnerability
5
5
Please report any security vulnerabilities in this project [utilizing the guidelines here](https://www.intel.com/content/www/us/en/security-center/vulnerability-handling-guidelines.html).
0 commit comments