Appleが開発した「M1」は、x86エミュレーション環境下でさえ他のMacを上回るベンチマーク結果を残しており、その高性能さを強く印象付けています。そんなM1のGPUをリバースエンジニアリングし、オープンソースドライバーを開発する試みが、エンジニアのAlyssa Rosenzweig氏らによって進められています。
Rosenzweig – Dissecting the Apple M1 GPU, part I
https://rosenzweig.io/blog/asahi-gpu-part-1.html
Rosenzweig – Dissecting the Apple M1 GPU, part II
https://rosenzweig.io/blog/asahi-gpu-part-2.html
M1は仕様が非公開であるため、Linuxで利用するにはリバースエンジニアリングによるドライバー開発が必須。Corelliumがリリースした「linux-m1」は、M1上で動作する初めてのLinuxですが、記事作成時点ではGPUサポートには至っていません。
corellium/linux-m1: Linux kernel source tree
https://github.com/corellium/linux-m1
そんなM1のGPUをLinuxでも動作させるべく、linux-m1と同じくM1上でのLinux動作を目指す「Asahi Linux」プロジェクトにて、Rosenzweig氏ら開発チームによるGPU解析が着々と進んでいます。
Rosenzweig氏はこれまでArm Cortexリリーズに搭載されているMali GPUの解析や、NVIDIA製GPU用のオープンソースドライバー「nouveau」の開発などに携わってきた人物。Rosenzweig氏によると、GPUの解析は「LD_PRELOAD」というLinuxの環境変数からioctlやmmapなどのシステムコールを呼び出し、共有メモリ内のライブラリをダンプするのが基本であるとのこと。
Rosenzweig氏の解析により、M1のGPUの特徴がいくつか判明しています。そのひとつはアーキテクチャが「ひとつの命令でひとつのデータを操作する」SISDである点。通常、GPUは「ひとつの命令で複数のデータを操作する」SIMDによる並列処理を行いますが、M1のGPUはすべての処理をSISDで行っているとのこと。また、スケジューラーのハードウェア組み込みなど、コンパイラを簡素化するための工夫がなされているとRosenzweig氏は語っています。
Rosenzweig氏はこうした特徴を元に試行錯誤を経て、M1のGPUで三角形のレンダリングに成功しました。実際にM1のGPUでレンダリングした三角形の画像が以下。
Rosenzweig氏はこの成功について「画像をレンダリングするために必要なデータを正しく入力できた」ことを示すにすぎないとコメント。コードは動作しているものの、なぜコードが動いているのかといった、GPUの構造そのものに基づく理解はまだ進んでいないそうです。
なお、Rosenzweig氏らによるM1のGPU解析プロジェクトは以下のURLで進められています。
AsahiLinux/gpu: Dissecting the M1's GPU for 3D acceleration
https://github.com/AsahiLinux/gpu
この記事のタイトルとURLをコピーする
からの記事と詳細 ( AppleのMac向け独自開発チップ「M1」のGPUをリバースエンジニアリングするプロジェクトが進行中 - GIGAZINE )
https://ift.tt/3oexee7
0 Comments:
Post a Comment