OpenVINO on IceLake (Vol.7)

なんだかスケートをしているようなタイトルの連載7回目、
Intelの第10世代CPU IceLakeでOpenVINOを試してみます

前回同様、使用するのはDell XPS 13 2in1、搭載されているのは下記のCPUとなります
Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
このCPUはGPUを内包しており、64EUのIntel Iris Plus グラフィックスが搭載されています
また実行ユニット数は、過去最大であったIntel Iris Pro Graphics 580(i7-6770HQ)の72EUにつぐ多さとなっています
メモリはDDR4-3733 16GBが搭載されています

前回は、GPU内部の構造を簡単に説明しました
IntelのGPUはSlice→Sub Slice→EUと言うような構成になっています
GPUの世代により改善されていますが、基本的な構成は変わっていません
詳しいお話はこちらにありますが、本サイトでは簡単に説明します

では、今回はEUを見てみましょう

上記画像はこちらからの引用

Execution Unit(EU)はIntel GPU内の最小単位となっており、ここでデータが処理されます

細かな処理はここでは省略しますが、このような構成は大量のデータに対して同じような処理を行う場合は有利に働きます(GPGPU)
OpenVINOでの処理は、推論処理となるので、フィルタ処理を行うのと同様の場合が多いため、EUのような物がたくさんあるとCPUに負荷をかけず高速に処理ができます

前回、Intel のGPUではSlice→Subslice→EUと言う構成になっていると説明しましたが、EUは下記の図のようにSubslice上に8つ搭載されています

上記画像はこちらからの引用

つまりSubsliceの数が増えれば増えるほど、EUの数はSubsliceの8倍ずつ増えることになります
IceLakeより前のCPUに搭載されているGPU(Gen9GT2)の場合、1つのSlice上にSubsliceは3つとなり、EUの合計は24となります
Gen9では最大、3SliceのGPU(Gen9GT4)があり、こちらの場合は、EUが72基搭載されています

IceLakeに搭載されているGPU(Gen11GT2)の場合ですが、1つのSlice上にSubsliceが8つ搭載されており、EUの合計は、64基となります
またSubsliceが増えたことにより、Slice上のL3キャッシュの容量も増えているので、高速化が望めると思います

また、Gen11の世代が進むと64基の2倍、3倍の数のEUが使用できる可能性がありますので、最適化をしなくても、処理速度の向上が見込めます

次回に続く…