Developer Guide and Reference

  • 2022.1
  • 04/11/2022
  • Public Content
Contents

Inspecting JIT Code

oneDNN uses just-in-time compilation (JIT) to generate optimal code for some functions based on input parameters and the instruction set supported by the system. The library provides a mechanism to save the generated code into a file for inspection.
This behavior can be enabled with the
ONEDNN_JIT_DUMP
environment variable or dnnl_set_jit_dump function.
Value
Behavior
0
JIT dump is disabled (default)
any other value
JIT dump is enabled
The function setting takes precedence over the environment variable.

Example (CPU)

$ ONEDNN_JIT_DUMP=1 ./cnn-inference-f32-cpp
This will produce the following output files if running on a CPU supporting Intel(R) Advanced Vector Extensions 2 (Intel AVX2):
dnnl_dump_cpu_jit_avx2_conv_fwd_kernel_f32.1.bin ... dnnl_dump_cpu_jit_avx_gemv_t_f32_kern.30.bin
Use any disassembler to view the code. For example:
  • objdump -D -b binary -mi386:x86-64 file.bin
    ;
  • xed -64 -ir file.bin
XED is a decoder tool available as part as Intel Software Development Emulator (Intel SDE).

Example (GPU)

$ ONEDNN_JIT_DUMP=1 ./simple-net-cpp gpu
This will produce the following output files if running on Intel Processor Graphics Gen9:
dnnl_dump_gpu_simple_reorder.0.bin dnnl_dump_gpu_gen9_conv_fwd.1.bin ...
Use Intel GPU ISA disassembler to disassemble a kernel:
  • iga64 -d -p=9 file.bin
    (usage:
    -p=<PLATFORM>
    )
Links:

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.