今週は、Tiramisu 三昧ですよ。
食べ物のティラミスじゃないよ。
Technical Report about Tiramisu: a Three-Layered Abstraction for Hiding Hardware Complexity from DSL Compilers
Technical Report about Tiramisu: a Three-Layered Abstraction for Hiding Hardware Complexity from DSL Compilers
Technical Report about Tiramisu: a Three-Layered Abstraction for Hiding Hardware Complexity from DSL Compilers
下記の図は、引用です。
下記の4つの層にて、色々なことをやるようです。
・Layer 1 : Abstract Computation Layer ・Layer 2 : Computation Placement Layer ・Layer 3 : Concrete Computation Layer ・Layer 4 : Communication Managenent
githubでソースコードも公開されています。
Halideと違って、スケジューリングも自動だって。
Halideも auto scheduling を使えば、自動化できるけどね。
Halideも auto scheduling を使えば、自動化できるけどね。
引用 Tiramisu is a code optimization and code generation framework. The user can integrate Tiramisu in his compiler to perform advanced loop nest optimization and target multiple architectures using Tiramisu. The user can express his code in the Tiramisu intermediate representation (Tiramisu IR), he can use the Tiramisu API to perform different optimizations and finaly he can generate the IR of his compiler of generate directly highly optimized code (LLVM, Vivado HLS, ...) targeting multicore, GPUs or FPGAs. Current optimizations include: Loop nest transformations: loop tiling, loop fusion/distribution, loop spliting, loop interchange, loop shifting, loop unrolling, ... Affine data mappings: storage reordering, modulo storage (storage folding), ... For shared memory systems: loop parallelization, loop vectorization, ... Current code generators: Multicore CPUs. GPU backend. Vivado HLS.