Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

Tiramisu、その1


今週は、Tiramisu 三昧ですよ。

食べ物のティラミスじゃないよ。



ドキュメントがほとんどないので、ソースコード解析をやって、サンプルプログラムの内容について、調べてみました。
Tiramisuの概要Slideshareにアップしておきました。

下記の図は、引用です。

イメージ 1

下記の4つの層にて、色々なことをやるようです。
 ・Layer 1 : Abstract Computation Layer
 ・Layer 2 : Computation Placement Layer
 ・Layer 3 : Concrete Computation Layer
 ・Layer 4 : Communication Managenent

Layer 4の層は、最初の論文にはありませんでしたが、新しい論文では追加されました

githubでソースコードも公開されています。

Halideと違って、スケジューリングも自動だって。
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.

CPU、GPUだけでなく、FPGA(Xilinx)をサポート。