A number of example programs for the UnoAPI curricular modules for high-performance computing using data-parallel C++ with Intel’s oneAPI under development at Loyola University Chicago.
All examples are intended to follow current practices, such as
- CMake
- modern C++ syntax (currently C++17 for best compatibility and stability)
- GoogleTest
- CLI11 command-line option parser
- spdlog logging library
- {fmt} output library
- scnlib input library
- magic_enum additional support for enums
Additional notes are being added to the UnoAPI Wiki.
Please report any issues with these code examples here.
These instructions should work for physical and virtual Debian-based systems on Intel hardware. We have verified this on the following types of systems:
- Dell XPS (2017) with Ubuntu 22.04
- MacBook Air (2020) with MacOS 12.4 running an Ubuntu 22.04 guest in VMware Fusion
- GitHub Actions workflow ubuntu-latest container
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
sudo apt update
sudo apt install build-essential cmake intel-oneapi-compiler-dpcpp-cpp
git clone https://github.com/LoyolaChicagoCode/unoapi-dpcpp-examples
cd unoapi-dpcpp-examples
source ./setvars.sh
cmake -DCMAKE_BUILD_TYPE=Debug -S . -B build
cmake --build build
After a successful build, you'll be able to run any of the examples in unoapi-dpcpp-examples/build/bin
, e.g.:
cd unoapi-dpcpp-examples
./build/bin/integration
The Intel DPC++ compiler is currently unavailable for MacOS. We will add instructions if and when this changes.
The examples should run on Windows, and we are planning to add instructions in the future.