Back to Onetbb

`TBB-Task-Sycl` Sample

examples/sycl/tbb-task-sycl/README.md

2023.0.05.1 KB
Original Source

TBB-Task-Sycl Sample

This sample illustrates how two Intel® oneAPI Threading Building Blocks (oneTBB) tasks can execute similar computational kernels, with one task executing the SYCL* code and the other task executing the TBB code. This tbb-task-sycl sample code is implemented using C++ and SYCL* for CPU and GPU.

Optimized forDescription
OSLinux* Ubuntu* 18.04
Windows* 10, 11
HardwareSkylake with GEN9 or newer
SoftwareIntel® oneAPI DPC++/C++ Compiler
What you will learnHow to offload the computation to GPU using Intel® oneAPI DPC++/C++ Compiler
Time to complete15 minutes

Purpose

The purpose of this sample is to show how similar computational kernels can be executed by two TBB tasks, with one executing on SYCL-compliant code and another on TBB code.

Key Implementation Details

The implementation based on TBB tasks and SYCL explained.

Building the TBB-Task-Sycl Program

Setting Environment Variables

When working with the Command Line Interface (CLI), you should configure the Intel® oneAPI Toolkit using environment variables. Set up your CLI environment by sourcing the setvars script every time you open a new terminal window. This practice ensures your compiler, libraries, and tools are ready for development.

Note: If you have not already done so, set up your CLI environment by sourcing the setvars script located in the root of your oneAPI installation.

Linux*:

  • For system wide installations: . /opt/intel/oneapi/setvars.sh
  • For private installations: . ~/intel/oneapi/setvars.sh
  • For non-POSIX shells, like csh, use the following command: $ bash -c 'source <install-dir>/setvars.sh ; exec csh'

Windows*:

  • C:\"Program Files (x86)"\Intel\oneAPI\setvars.bat
  • For Windows PowerShell*, use the following command: cmd.exe "/K" '"C:\Program Files (x86)\Intel\oneAPI\setvars.bat" && powershell'

Microsoft Visual Studio*:

  • Open a command prompt window and execute setx SETVARS_CONFIG " ". This only needs to be set once and will automatically execute the setvars script every time Visual Studio is launched.

For more information on environment variables, see "Use the setvars Script" for Linux or macOS, or Windows.

You can use Modulefiles scripts to set up your development environment. The modulefiles scripts work with all Linux shells.

If you wish to fine tune the list of components and the version of those components, use a setvars config file to set up your development environment.

Using Visual Studio Code* (Optional)

You can use Visual Studio Code (VS Code*) extensions to set your environment, create launch configurations, and browse and download samples.

The basic steps to build and run a sample using VS Code include:

  • Download a sample using the extension Code Sample Browser for Intel® Software Development Tools.
  • Configure the oneAPI environment with the extension Environment Configurator for Intel® Software Development Tools.
  • Open a Terminal in VS Code (Terminal>New Terminal).
  • Run the sample in the VS Code terminal using the instructions below.

To learn more about the extensions and how to configure the oneAPI environment, see Using Visual Studio Code* to Develop Intel® oneAPI Applications.

On a Linux System

* Build tbb-task-sycl program
  cd tbb-task-sycl &&
  mkdir build &&
  cd build &&
  cmake .. &&
  make VERBOSE=1

* Run the program
  make run

* Clean the program
  make clean

Running the Sample

Example of Output

executing on CPU
executing on GPU
Heterogeneous triad correct.
TBB triad correct.
input array a_array: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
input array b_array: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
output array c_array on GPU: 0 1.5 3 4.5 6 7.5 9 10.5 12 13.5 15 16.5 18 19.5 21 22.5
output array c_array_tbb on CPU: 0 1.5 3 4.5 6 7.5 9 10.5 12 13.5 15 16.5 18 19.5 21 22.5
Built target run

Troubleshooting

If an error occurs, troubleshoot the problem using the Diagnostics Utility for oneAPI. Learn more.