Using DS-5 Streamline to Optimize Complex OpenCL™ Applications on Mali GPUsでは、ARM DS-5 Streamlineを使って、Mali GPUのパフォーマンス改善へのポイントを示しています。
ARM DS-5 Streamlineは、ARMの開発環境DS-5に含まれているツールで、ターゲットボード上で動くLinuxのCPUとGPUの各種カウンタ情報からプログラムがどの程度CPUやGPUを使っているかをタイムラインで表示してくれます。
ただし、これらはターゲットボード上のSoC/ASSP内でStreamlineがサポートしていないとダメです。
また、LinuxカーネルがStreamlineが使えるようにビルドされ、gadorデーモンを立ち上げる必要があります。
詳細は、ARM DS-5 Streamlineの使用(バージョン 5.20)を見てください。
また、LinuxカーネルがStreamlineが使えるようにビルドされ、gadorデーモンを立ち上げる必要があります。
詳細は、ARM DS-5 Streamlineの使用(バージョン 5.20)を見てください。
この記事で注目すべき点は、最初の図のCached Local Memoryです。
Mali GPUには、OpenCLのlocal memoryが物理的に実装されていません。
local memoryはGlobal Memory、つまり、システムメモリ(DRAM)にマッピングされます。
local memoryを使うと、Global MemoryをGlobal Memoryにコピーするので、性能があがりません。
いや、悪くなるのです。
Mali GPUには、OpenCLのlocal memoryが物理的に実装されていません。
local memoryはGlobal Memory、つまり、システムメモリ(DRAM)にマッピングされます。
local memoryを使うと、Global MemoryをGlobal Memoryにコピーするので、性能があがりません。
いや、悪くなるのです。
また、カーネル内で大量のレジスタを使うと、レジスタスピル(register spill)を発生します。
NVIDIAの最近のGPUは、レジスタスピルが発生すると、L1キャッシュに退避されますが、Mali GPUはこれまたGlobal Memory、つまり、システムメモリ(DRAM)にマッピングされます。
NVIDIAの最近のGPUは、レジスタスピルが発生すると、L1キャッシュに退避されますが、Mali GPUはこれまたGlobal Memory、つまり、システムメモリ(DRAM)にマッピングされます。
これって、NVIDIAだと、逆なんですよね。困ったもんです。