[Good First Issue] [Snippets] [ARM]: Support Transpose execution #28488
Labels
category: CPU
OpenVINO CPU plugin
good first issue
Good for newcomers
platform: arm
OpenVINO on ARM / ARM64
Context
Snippets is a highly specialized JIT (just-in-time) compiler for computational graphs. It provides a scalable approach to operations' fusions and enablement. As a typical compiler,
Snippets
have frontend (tokenizer), optimizer and backend (generator).The first of the
Snippets
pipeline, Tokenization, identifies parts of the initialov::Model
that can be lowered bySnippets
efficiently, and tokenizes them into one whole node -Subgraph
.The second step of the pipeline (Optimizer) is applying common and device-specific optimizations to
Subgraph
and getting lowered representation of tokenizedSubgraph
.Finally, the last stage is code emission. The target generator maps every operation in the IR to a binary code emitter JIT Emitter, which is then used to produce a piece of executable code. As a result, we produce an executable that performs calculations described by the initial input
ov::Model
.The purpose of this issue is support of Transpose operation execution using
Snippets
for ARM devices.Note that
Snippets
decomposesTranspose
into memory operationsLoadReorder
(this isLoad
op with transposed input strides) andStore
usingTransposeDecomposition
pass. This pass is called on the second step of theSnippets
pipeline - Optimizer.Prerequisites
Recommended to use ARM CPU based platform for development (e.g. Mac, Raspberry Pi etc). The cross-compilation with an emulator (e.g. QEMU) using is still option:
cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/arm64.toolchain.cmake ..
.What needs to be done?
smoke*Snippets*_Transpose_*
tests. Launch tests (how to launch them - please see the sectionTests
below). There should be failed tests.LoadReshape
op and the generator cannot emit the binary code. Add mappingLoadReorder
op to the corresponding binary code emitter in cpu target machine.Tests
Tests are disabled in default build, so ensure to add
-DENABLE_TESTS=ON
into cmake command.GoogleTest is used for testing. CPU functional test target is ov_cpu_func_tests. You can use
GoogleTest
filter:./bin/[platform]/[build_type]/ov_cpu_func_tests --gtest_filter="*smoke*Snippets*Transpose*"
Examples
Resources
Contact points
@a-sidorova, @dmitry-gorokhov
The text was updated successfully, but these errors were encountered: