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、の
マルチコア、GPU、FPGA、分散システムでのプログラミングは、それぞれに対応したプログラミング言語を使うと。
マルチコア、GPU、FPGA、分散システムでのプログラミングは、それぞれに対応したプログラミング言語を使うと。
・CPU => OpenMP ・GPU => GPGPU ・FPGA => HLS ・分散システム => MPI
あー、面倒くさい。。。ですよね。。。
チャレンジ、その2、の
メモリ依存。。。
メモリ依存。。。
メモリは、ハードウェアのアーキテクチャにすごーく依存するんですよね。
最近のCPUは、L1、L2、L3(LLC)、そして、メモリ(DRAM)。。そんでもっと、マルチコアなので、
GPUはホスト側のメモリ(つまり、CPUのメモリ)とは別に自分が使うメモリを持っています。
NVIDIAやAMDの立派なGPUは、ローカルにDRAMをたっぷり持っています。
それ以外に、L1、L2だけでなく、ある塊のGPUコアが共有するメモリも搭載しています。
これらメモリは、プログラミング時に明示的に指定しないといけないんですよね。。。
NVIDIAやAMDの立派なGPUは、ローカルにDRAMをたっぷり持っています。
それ以外に、L1、L2だけでなく、ある塊のGPUコアが共有するメモリも搭載しています。
これらメモリは、プログラミング時に明示的に指定しないといけないんですよね。。。
FPGA,ああああ、こちらはもっと複雑。ホスト側のメモリ、FPGAに繋がっているDRAM、そしてFPGA内のメモリ。。。
おまけに、FPGA内のメモリは、数には制限はあるものの、構成についてはかなり自由度があります。。。
おまけに、FPGA内のメモリは、数には制限はあるものの、構成についてはかなり自由度があります。。。
チャレンジ、その3、
最適化とコード生成。。。。これは、各ハードウェアに依存します。。。ああああああ。面倒。。。
最適化とコード生成。。。。これは、各ハードウェアに依存します。。。ああああああ。面倒。。。
最後のチャレンジ。。。
「polyhedral」は「多面体」で、「set」は「集合」
The challenge of representation is addressed by using a unified framework based on polyhedral sets to represent the four layers.とありますが、この「polyhedral set」がよくわからんですのよ。
「polyhedral」は「多面体」で、「set」は「集合」
本当に。。。。