|
Peano
|

There are two particular flags that we find useful in Peano if Intel's software stack is used.
At the moment, we add the following flags to the compile automatically when the Intel toolchain is activated (see below). Obviously, nothing stops users from adding those flags manually even if they prefer not to rely on Peano's support for the Intel toolchain.
Peano provides support for Intel's (oneAPI) toolchain through two routes: The ITAC interface and the Instrumentation and Tracing Technology (ITT). To activate either of these toolchains, you have to reconfigure with one of the two options below:
Broadly speaking, the toolchains alters the code in two ways:
You might have to set some additional environment variables or configure with a bespoke path to use these tools. More information is curated on the pages for the loggers itself.
The enumeration shows that the name Intel toolchain is misleading. We are actually not tailoring the build to the Intel toolchain, but we tailor the setup to the Intel analysis tools. Most production runs will not use the Intel toolchain, but rather set all Intel-specific flags for compiler and linker manually.
Despite having switched to the Intel loggers, you will not get meaningful trace information if you build in release mode. You have to switch to the trace mode (or assertions or debug) - compare general remarks on Peano's build modi - to get traces or annotation info. Once you try to trace your code with the Intel tool, the size of the traces quickly becomes unmanageable or the performance might go down. However, you can combine log filters to narrow down the number of classes and namespaces that actually trace.
Peano relies on advanced TBB features, and not all of them are found in normal release (as of January 2026): some of the features we need and have developed are so far only in TBB preview versions. Consequently, only loading a TBB module and adding
might not work with Peano. Details on the TBB extensions are compiled in a separate document on TBB extensions.
Intel suggests to use -fiopenmp for performance and features: https://www.intel.com/content/www/us/en/developer/articles/guide/porting-guide-for-icc-users-to-dpcpp-or-icx.html
Peano can use SYCL as both multithreading backend and as GPU offloading pathway. If SYCL is only used for the accelerator, you can combine with TBB and C++ multithreading besides with SYCL itself.
SYCL is directly supported via icpx. There are only a few things to do:
--with-multithreading=sycl and/or --with-gpu=sycl, depending on for what you want to use SYCL.CXXFLAGS="... -fsycl" to your compiler flags. This way, all the headers of SYCL are known to icpx.LDFLAGS="... -fsycl" to your linker flags. This way, the linker will automatically add all SYCL libraries. Furthermore, it will know when it builds the final applications that it should embed both the device kernels and the CPU kernels into the executable. If you use LIBS="... -lsycl", the linking will succeed, but the very first time you invoke a SYCL kernel, you'll get a message similar to CXX=icpx points to the icpx compiler.CC=icx points to the icpx compiler if you work with the autotools. This is not intuitive and actually quite a hack, but you need it to work: configure will test if you C compiler is compatible with your linker flags. However, the -fsycl command is unknown to the default C compiler (usually gcc) and your configure will fail miserably. By letting the C compiler variable point to the Intel oneAPI C compiler, you ensure that the sanity check within the configuration phase passes.Here are some example scripts:
Her we use the Intel LLVM patch as provided through Codeplay:
where XX has to be replaced by the actual compute capability of the device.
Again with Intel toolchain as patched by Codeplay:
where XXX has to be replaced by the actual compute capability of the device.
Intel's MPI wrapper is mpiicpc even though they now want you to use icpx instead of icc/icpc. To tell the MPI wrapper that you want to use icpx, you have to set some environment variables:
All the troubleshooting is covered by FAQs and Troubleshooting.