# BabelSTREAM Follow this procedure to run BabelSTREAM and measure GPU memory bandwidth. - Operating system: Ubuntu* 22.04 - Hardware: Intel® Data Center Max GPUs - Software: Intel® oneAPI Base toolkit, Intel® oneAPI HPC toolkit - Time to complete: 15 minutes 1. Check whether the driver stack is installed. ```(bash) $ xpu-smi discovery ``` The command should return at least one Intel® Data Center GPU Max device. 2. Check whether the oneAPI toolkit is installed. ```(bash) $ apt list intel-basekit intel-hpckit ``` Expected output: ```(bash) Listing... Done intel-basekit/all,now 2023.2.0-49384 amd64 [installed] intel-hpckit/all,now 2023.2.0-49438 amd64 [installed] ``` 3. If you previously have not configured your environment, install the Ubuntu 22.04 graphics driver. See [dgpu-docs](https://dgpu-docs.intel.com/) for details. ```{note} Access to Ubuntu repositories, such as https://repositories.intel.com and https://apt.repos.intel.com, is required for installation. If proxy settings involve changes to environment variables such as http_proxy or https_proxy, small modifications are required in the following steps, such as adding -E (preserve environment) to sudo commands. ``` 4. If you previously have not configured your environment, enable access to the Intel repo serving the oneAPI packages and install the oneAPI Base toolkit and HPC toolkit for Ubuntu 22.04. ```bash wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \ | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list sudo apt update ``` ```bash sudo apt install -y intel-basekit intel-hpckit ``` 5. Install build dependencies. ```(bash) sudo apt install -y git build-essential cmake ``` 6. Build BabelSTREAM. ```(bash) git clone https://github.com/UoB-HPC/BabelStream cd BabelStream source /opt/intel/oneapi/setvars.sh mkdir build && cd build cmake .. -DMODEL=sycl2020-acc -DSYCL_COMPILER=ONEAPI-ICPX make ``` 7. Identify the number of GPUs presented in the system and their IDs. ```(bash) clinfo -l Platform #0: Intel(R) OpenCL Graphics +-- Device #0: Intel(R) Data Center GPU Max 1550 -- Device #1: Intel(R) Data Center GPU Max 1550 ``` A device 0 should be available on any system with an Intel GPU with a GPU stack correctly installed, such as in this example: ```(bash) ONEAPI_DEVICE_SELECTOR=level_zero:0 ./sycl2020-acc-stream -s 134217728 ``` If additional devices are available, they can be selected by device number, as in the following example for a device number 1. ```(bash) ONEAPI_DEVICE_SELECTOR=level_zero:1 ./sycl2020-acc-stream -s 134217728 ``` The following result snapshot is from Intel® Data Center GPU Max 1550: ```bash BabelStream Version: 5.0 Implementation: SYCL2020 accessors Running kernels 100 times Precision: double Array size: 1073.7 MB (=1.1 GB) Total size: 3221.2 MB (=3.2 GB) Using SYCL device Intel(R) Data Center GPU Max 1550 Driver: 1.3.26516 ... ```