2024年8月24日土曜日

Apple M3 のGPUのコアとNVIDIAのコアって何が違うの?

 こんばんわ

今日も一日ゲームしていたら、肩が痛くなってきて、なんだか足元がふらふらしてきてしまいました。もう何時間もコンピュータの前に座って何かする体力がないのかもしれません。

今思い起こすと、大学生のころが一番コンピュータに熱中していたかもしれません。毎晩夜遅くまで、というか朝まで、パソコン通信(死語?)したり、ゲームしたり、大した事はできませんでしたがプログラムを書いてみたりしていたものでした。朝までパソコンで遊んで、そのまま学校行ったり、寝坊して学校行かなかったり。。。親不孝者です。

そんなわけで、本日は、「Apple M3 のGPUのコアとNVIDIAのコアって何が違うの?」についてコアの数や、コアの種類について少し考えてみたいと思います。

注意:素人のわたくしが、AppleやNVIDIAの記事や、いろいろな方の解説を読んだまとめみたいな感じですので、正確な話ではなくわたくしの覚書という意味合いで書いていますので、あまり正確ではない内容だと思ってください。「じゃあ書くな」とおしかりを受けそうですが、わたくしの覚書という意味ですので許してください。

代表選手でApple M3 / NVIDIA RTX 2070 で比較してみます。私の周りにあったというだけで深い意味はありません。

コアの種類の話

まずは、コアの種類の話です。よく見かけるCPUの仕様のようなものを示しますと、

Apple M3
GPU:8コア
Neural Engine:16コア

のように書かれています。それに対して、NVIDIA RTX 2070では、

NVIDIA RTX2070
CUDAコア:2304コア
Tensorコア:288コア
RTXコア:36コア

いきなり呼び名が全然違います。何か、比較されることを恐れているかのようです。わたくしのつたない頭での理解なのですが、それぞれ対応を以下に示してみます。

AppleのGPU=NVIDIAのCUDAコアとRTXコア
AppleのNeural Engine=NVIDIAのTensorコア

という対応になるようです。

AppleのGPUのところが少しあいまいじゃないかという話ですが、そこを少し掘り下げると次のようになると思います。

AppleのGPUのShaderCore=NVIDIAのCUDAコア
AppleのGPUのRTXUnit=NVIDIAのRTXコア
AppleのNeural Engine=NVIDIAのTensorコア

という感じでしょうか。そしてそれぞれの得意なことを以下に示すと、

AppleのGPUのShaderCore=NVIDIAのCUDAコア=複数の計算を同時にするのが得意
AppleのGPUのRTXUnit=NVIDIAのRTXコア=衝突判定に関する計算が得意
AppleのNeural Engine=NVIDIAのTensorコア=行列演算が得意

ということのようです。

複数の計算を同時にするのが得意=グラフィックス描画全般が得意
衝突判定に関する計算が得意=光の描画が得意
行列計算が得意=大量のデータから学習したり探したりする事が得意

ということのようです。

Windowsの世界で話題になっているCopilot+PCに搭載されているCPUのNPUなどと呼ばれているものはつまり、AppleのNeural Engine=NVIDIAのTensorということなのではないかと思います。それだけではないと思いますが、そこが強いということだと思います。

学習したデータを少し工夫すれば、学習したデータから答えを見つけるには、小さな桁数の行列演算が高速にできればよいとか(よくわからん)。。。質問にテキストで答えるだけならば、安価な端末とか出てきそうですね。

そもそもコンピュータって、汎用性を持たせたくて、汎用的なCPUとメモリとディスクをつなげて、用途に応じて、プログラムをディスクからメモリにロードして実行しようという考え方で始まったような気がするのですが、計算の時はこれ、描画の時はこれ、探すときはこれ、みたいな構成になっていたんですね。。。汎用的なCPUってそんなに頑張らなくてよい?分散と集約は繰り返しているような気がしますがいかがでしょうか?

コア数の話

今度はコア数の話です。もう一度CPUの性能の一覧を以下に示します。

Apple M3
GPU:8コア(ShaderCore/TextureUnit/RTunit)
Neural Engine:16コア

NVIDIA RTX2070
CUDAコア:2304コア
Tensorコア:288コア
RTXコア:36コア

この数字だけ見てしまうと、AppleM3はNVIDIA2070と比較して、1/20とか、1/100程度の性能しかないように見えてしまいますが、NVIDIAとAppleではコアと呼んだ時の考え方が違うらしく、単純にコア数で比較してはだめということのようです。

言葉を合わせると、Apple の GPU の場合は、

ShaderCore、TextureUnit、RTunitなどで構成される計算ユニット8個をまとめた実行ユニット16個をまとめたものを1コアと示しています。

それに対してNVIDIAは計算ユニット64個をまとめた実行ユニット36があるので、合計で2304コアと示しています。

ますますよくわからない感じですが、AppleはCPUみたいにいくつかの計算機能をまとめたものをコアと読んでいて、NVIDIAは計算機能そのものをコアと読んでいる感じです。

同じ考え方でApplleM3のコア数を計算してみると、8計算ユニットx16実行ユニットx8コア=1024計算ユニット(NVIDIAのコア?)となります。

Apple M3 の8コアというと、CUDAコア比較ですと、NVIDIA GTX1650 くらいの性能ということになるのではないかと思われます。ただ、一つ一つの演算ユニットの速度やメモリへのアクセス速度も違うことですし、GTX1650はTensorコアやRTXコアは持っていなかったと思いますので、GTX1650よりはもう少しいろいろなことが強いかもしれませんね。

なんか改めて自分で書いた文章を読み返してみたのですが、あちこち間違いがあるような気がしてきた。。。


0 件のコメント:

ChromeOS が128.0.6613.133から128.0.6613.161になりました。

 こんばんわ またアップデートされているようです。 最近はわたくした利用しているOSは、よほどのことがないと月1回のアップデートと再起動というペースで実施しているものばかりで、こう毎週毎週アップデートというのもなかなかすごいなと思い、改めて他の方のブログやChromeOSの説明な...