Metal APIを活用するアプリやゲームは、Apple Silicon GPUの特定の機能をターゲットにしています。M3とA17 Proでは、並列処理が大幅に改善され、さらに優れたパフォーマンスを発揮します。その仕組みをご紹介します。
Appleは、これらの新しいApple Silicon GPU機能に関する開発者向け講演を公開し、改善された結果を実現するために何が行われているのかを詳しく説明しました。このビデオでは技術的な詳細が詳しく説明されていますが、基本的な用語で説明するには十分です。
Metal APIを使用してアプリを開発している開発者は、M3とA17 Proによるパフォーマンスの向上を実感するためにアプリに変更を加える必要はありません。これらのチップセットは、ダイナミックキャッシング、ハードウェアアクセラレーションによるレイトレーシング、ハードウェアアクセラレーションによるメッシュマッピングを活用し、GPUのパフォーマンスをこれまで以上に向上させます。
ダイナミックシェーダコアメモリ
ダイナミックキャッシングは、次世代シェーダーコアによって実現しました。A17 ProとM3の最新GPUコアを活用することで、これらのシェーダーは従来よりもはるかに効率的に並列実行され、出力パフォーマンスが大幅に向上します。
点線は無駄なレジスタメモリを表す
通常、GPUは、実行されたアクションの中で、そのアクションの実行中、最も帯域幅の大きいプロセスに基づいてレジスタメモリを割り当てることができます。したがって、あるアクションの一部が他の部分よりも大幅に多くのレジスタメモリを必要とする場合、そのアクションは特定のプロセスに対してより多くのレジスタメモリを使用することになります。
ダイナミックキャッシングにより、GPUはあらゆるアクションに対して最適な量のレジスタメモリを正確に割り当てることができます。以前は利用できなかったレジスタメモリが解放され、より多くのシェーダータスクを並列処理できるようになります。
柔軟なオンチップメモリ
以前は、オンチップメモリはバッファキャッシュを使用して、レジスタ、スレッドグループ、タイルメモリのメモリ割り当てを固定していました。そのため、あるアクションが他のアクションよりも多くのメモリを使用する場合、メモリの大部分が未使用のままになっていました。
オンチップメモリ全体をキャッシュとして使用可能
柔軟なオンチップメモリにより、オンチップメモリ全体がキャッシュとして機能し、あらゆるメモリタイプに利用できます。そのため、スレッドグループメモリに大きく依存するアクションは、オンチップメモリ全体を活用し、さらにはアクションをメインメモリにオーバーフローさせることも可能です。
シェーダコアはオンチップメモリの占有率を動的に調整し、パフォーマンスを最大化します。つまり、開発者は占有率の最適化に費やす時間を短縮できます。
シェーダコアの高性能ALUパイプライン
Appleは開発者に対し、プログラム内でFP16演算を実行することを推奨していますが、高性能ALUは整数、FP32、FP16の異なる組み合わせを並列に実行します。命令は並列に実行される異なるアクション間で実行されるため、占有率が高いほどALUの使用率が向上します。
高性能ALUパイプラインによる並列処理の向上
基本的に、異なるアクションに、異なる時点で実行される同じ FP32 または FP16 命令が含まれている場合、実行をオーバーラップして並列性を高めることができます。
ハードウェアアクセラレーショングラフィックパイプライン
ハードウェアアクセラレーションによるレイトレーシングは、重要な交差計算をGPU関数から取り除くことで、処理を大幅に高速化します。計算の一部をハードウェアが処理するため、より多くの処理を並列処理でき、ハードウェアコンポーネントによるレイトレーシングの高速化につながります。
ハードウェアアクセラレーションがオンチッププロセスを引き継ぐ
ハードウェアアクセラレーションによるメッシュシェーディングも同様の手法を採用しています。ジオメトリ計算パイプラインの中間部分を専用ユニットに渡すことで、より多くの並列処理が可能になります。
これらは複雑なシステムであり、数段落で説明することはできません。詳細については、ビデオをご覧ください。ただし、A17 ProとM3はタスクを高速化するために並列コンピューティングに重点を置いていることを念頭に置いてください。
M3はMacBook Proと24インチiMacで利用可能。A17 ProはiPhone 15 Proで利用可能。