Optimized PCL Known Limitation
JIT Limitation
Intel’s PCL optimization is implemented with the Intel® oneAPI DPC++ Compiler.
The Intel® oneAPI DPC++ Compiler converts a DPC++ program into an intermediate
language called SPIR-V (Standard Portable Intermediate Representation). The
SPIR-V code is stored in the binary produced by the compilation process. The
SPIR-V code has the advantage that it can be run on any hardware platform by
translating the SPIR-V code into the assembly code of the given platform at
runtime. This process of translating the intermediate code present in the binary
is called Just-In-Time (JIT) compilation. Since JIT compilation happens at the
beginning of the execution of the first offloaded kernel, the performance is
impacted. This issue can be mitigated by setting the system environment variable
to cache and reuse JIT-compiled binaries.
- Set the system environment variable to cache and reuse JIT-compiled binaries.export SYCL_CACHE_PERSISTENT=1
- Set the environment variable permanently.echo "export SYCL_CACHE_PERSISTENT=1" >> ~/.bashrc source ~/.bashrc
- Execute the program once to generate the JIT-compiled binaries. Every execution after this first execution reuses the cached JIT-compiled binaries.
To get an accurate PCL optimization performance number, this system
environment variable needs to be set, and the program needs to be executed
once to generate and cache the JIT-compiled binaries.