Vengineerの妄想

人生を妄想しています。

Tiramisu、その6


Halide勉強会で、Tiramisuのことをお話しようと思っているので、

Tiramisuは、次の4つのチャレンジを行うこと、と。

 1). mult-language or MPI+OpenMP+CUDA+HLS

  2). memory dependence

  3). the ability to optimize and generate efficient code

  4). representation

チャレンジ、その1、の
マルチコア、GPUFPGA、分散システムでのプログラミングは、それぞれに対応したプログラミング言語を使うと。
 ・CPU            => OpenMP
 ・GPU            => GPGPU
 ・FPGA           => HLS
 ・分散システム   => MPI

どれもプログラミング経験がありますので、その気持ち。分かります。
同じコンピューティングですが、それぞれの特性にあったプログラミング言語でプログラミング手法を使います。

あー、面倒くさい。。。ですよね。。。

チャレンジ、その2、の
メモリ依存。。。

メモリは、ハードウェアのアーキテクチャにすごーく依存するんですよね。

最近のCPUは、L1、L2、L3(LLC)、そして、メモリ(DRAM)。。そんでもっと、マルチコアなので、

GPUはホスト側のメモリ(つまり、CPUのメモリ)とは別に自分が使うメモリを持っています。
NVIDIAAMDの立派なGPUは、ローカルにDRAMをたっぷり持っています。
それ以外に、L1、L2だけでなく、ある塊のGPUコアが共有するメモリも搭載しています。
これらメモリは、プログラミング時に明示的に指定しないといけないんですよね。。。

FPGA,ああああ、こちらはもっと複雑。ホスト側のメモリ、FPGAに繋がっているDRAM、そしてFPGA内のメモリ。。。
おまけに、FPGA内のメモリは、数には制限はあるものの、構成についてはかなり自由度があります。。。

チャレンジ、その3、
最適化とコード生成。。。。これは、各ハードウェアに依存します。。。ああああああ。面倒。。。

最後のチャレンジ。。。
  The challenge of representation is addressed by 
     using a unified framework based on polyhedral sets to represent the four layers.
とありますが、この「polyhedral set」がよくわからんですのよ。
「polyhedral」は「多面体」で、「set」は「集合」

本当に。。。。