Metal (API)

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

Metal(メタル)はアップルオペレーティングシステム上でサポートされる、オーバーヘッドの小さいローレベル (low level) なコンピュータグラフィックスAPIである。Metalでは、OpenGLOpenCLに似た機能を一つのAPIに統合している。Metalはクロノス・グループによるクロスプラットフォームのVulkanや、マイクロソフトによるWindows向けのDirect3D 12といった、他のプラットフォームにおける類似のAPIによるパフォーマンス上の利点をmacOS/iOSにもたらすことを目的としている。

MetalはC++11をベースとした新しいシェーディング言語Metal Shading Language (MSL) を利用する。これはClangLLVMによって実装されている[1]。Metalはコンピュートシェーダーを導入することでGPGPUプログラミングのしやすさも向上している[2]

対応環境[編集]

MetalはApple A7以降を搭載したiOS機器、およびOS X El Capitan以降が動作する一部のMacコンピュータで利用可能である。OS X El Capitanに対応しているMacであっても、Metalに対応しているとは限らない。

2017年10月時点でのMetal及びMetal2対応Macコンピュータは以下の通り[3]

  • iMac (Late 2012 以降)
  • MacBook (Early 2015 以降)
  • MacBook Pro (Mid 2012 以降)
  • MacBook Air (Mid 2012 以降)
  • Mac mini (Late 2012 以降)
  • Mac Pro (Late 2013 以降)

MetalはWWDC 2014にて発表され、iOS 8で初めて導入された[4]

macOSでのMetalのサポート (Metal for Mac) はWWDC 2015において発表された。

パフォーマンス[編集]

Metalの登場以前は、macOSにはOpenGLが、そしてiOSにはOpenGL ESがそれぞれ提供されていたが、いずれも高度にハードウェアが抽象化されていることから性能上のオーバーヘッドが大きい。Metalは以下のような理由から、OpenGLよりも優れたパフォーマンスを期待できる[5]

  • シェーダーの事前コンパイルおよび最適化や、前もって実行されるステートの結合と評価 (Validation)
  • GPUCPUの明確な同期
  • GPUとCPUで共有されるメモリ空間
  • より小さくなったドライバのオーバーヘッド

これらのうちいくつかは、GPUでコマンドを実行するために必要になるCPUのタスクを低減する。そのため、他の仕事のためにCPUを使えるようになり、全般的なパフォーマンスの向上につながる。

参考文献[編集]

  1. ^ Metal Shading Language Guide”. アップル (2014年9月17日). 2015年10月28日閲覧。
  2. ^ OpenGL 4.3/OpenGL ES 3.1以降でもコンピュートシェーダーはサポートされるが、Metal登場時にmacOS/iOSはこれらのAPIをサポートしていなかった。
  3. ^ Metal に対応している Mac コンピュータの一覧”. アップル (2017年10月10日). 2017年11月14日閲覧。
  4. ^ 【西田宗千佳のRandomTracking】WWDC 2014 開発環境編:「機器の外の魅力」で戦う準備を進めるアップル - AV Watch
  5. ^ Unity - Unity Japan Official Blog – Metal, iOS 8 の新グラフィクス API”. Unity Technologies Japan G.K. (2014年7月4日). 2015年10月28日閲覧。

関連項目[編集]

外部リンク[編集]