Metal (API)




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


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




目次






  • 1 対応環境


  • 2 パフォーマンス


  • 3 脚注


    • 3.1 注釈


    • 3.2 出典




  • 4 関連項目


  • 5 外部リンク





対応環境


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


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



  • iMac(Late 2012 以降)

  • MacBook(Early 2015 以降)

  • MacBook Pro(Mid 2012 以降)

  • MacBook Air(Mid 2012 以降)

  • Mac mini(Late 2012 以降)

  • Mac Pro(Late 2013 以降)

  • Mac Pro(Mid 2010 以降)でMetalをサポートするGPU(Nvidia Kepler以降、ATI Graphics Core Next以降)を搭載したもの


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


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



パフォーマンス


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




  • シェーダーの事前コンパイルおよび最適化や、前もって実行されるステートの結合と評価(Validation)


  • GPUとCPUの明確な同期

  • GPUとCPUで共有されるメモリ空間

  • より小さくなったドライバのオーバーヘッド


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



脚注



注釈





  1. ^ OpenGL 4.3/OpenGL ES 3.1以降でもコンピュートシェーダーはサポートされるが、Metal登場時にmacOS/iOSはこれらのAPIをサポートしていなかった。




出典





  1. ^ “Metal Shading Language Guide”. アップル (2014年9月17日). 2015年10月28日閲覧。


  2. ^ “Metal に対応している Mac コンピュータの一覧”. アップル (2017年10月10日). 2017年11月14日閲覧。


  3. ^ 【西田宗千佳のRandomTracking】WWDC 2014 開発環境編:「機器の外の魅力」で戦う準備を進めるアップル - AV Watch


  4. ^ “Unity - Unity Japan Official Blog – Metal, iOS 8 の新グラフィクス API”. Unity Technologies Japan G.K. (2014年7月4日). 2015年10月28日閲覧。




関連項目




  • Direct3D 12 - DirectX 12において導入されたローレベルAPI


  • Glide - 3dfxによるローレベルAPI


  • Mantle (API) - AMDによるローレベルAPI


  • Vulkan (API) - OpenGLの後継となるクロスプラットフォームなローレベルAPI, MoltenVKによりMetal上で動作するものが開発出来る



外部リンク




  • Metal for Developers - Apple Developer(英語)


  • Metal Programming Guide(英語)


  • Metal Shading Language Guide(英語)


  • Metal Framework Reference(英語)


  • MoltenGL – Molten(英語) - Metal 上の OpenGL ES 2.0 の非公式な実装(商用)






Popular posts from this blog

Can a sorcerer learn a 5th-level spell early by creating spell slots using the Font of Magic feature?

Does disintegrating a polymorphed enemy still kill it after the 2018 errata?

A Topological Invariant for $pi_3(U(n))$