は?やく来い来いすのれぱ?、な状態だったんだが(予定じゃ28日)、今頃になってこんな新機能があることに気がついた。
Grand Central Dispatch
Grand Central Dispatch新登場。
この差し迫ったニーズに対応するのが、Mac OS X Snow LeopardのGrand Central Dispatch (GCD) です。GCDは、ディベロッパが、これまでよりもずっと簡単に、マルチコアシステムのパワーを余すところなく引き出せるようにする、はじめてのテクノロジーです。GCDでは、スレッドは、個々のアプリケーションではなく、オペレーティングシステムによって処理されます。 GCD対応のプログラムは、利用できるすべてのコアに作業を自動的に分散するため、デュアルコアのMac miniから8コアのMac Proまで、どのMacでも最善のパフォーマンスを発揮できます。ディベロッパがアプリケーションにGCDを使うようになれば、パフォーマンスの飛躍的な向上を実感する機会も増えることでしょう。
磨きに磨きをかけたエンジン。
Grand Central Dispatchは、すべての処理を効率的に行います。コンピュータのプロセッサの数を考慮して、アプリケーションの作業負荷をリアルタイムで調整します。また、行っている作業に必要なスレッドのみを使うことで、アプリケーションの効率を高めます。たとえば、 GCDがないと、アプリケーションが最大時に20のスレッドを必要とする場合、20のスレッドがセットアップされ、何もしていないときでもリソースが消費される可能性があります。一方、 GCDは、アプリケーションが使っていないときはリソースを解放し、システム全体がより機敏に対応するようにします。Macのすべてのアプリケーションが GCDを使うようになったときの効率性とパフォーマンスの高さは、今とは比べられないものになるでしょう。
コアへ内蔵。
Grand Central DispatchはMac OS X Snow Leopardに完全に一体化されているので、すべてのアプリケーションがマルチコアプロセッサをよりいっそう、簡単に活用できます。さらに、Mac全体が複数のタスクを同時に、より効率的に処理できるので、全体的なパフォーマンスが高まります。
強力な開発ツールにも。
すべてのMacに用意されているXcodeツールを使って、Grand Central Dispatchに対応したプログラムを作成する場合、Xcodeデバッガ、 Instrumentsパフォーマンス解析ツールを使って、ランタイムでGCDを確認できます。GCD作業キューのチェックもあっという間に、実行中のコードの特定のブロックまで細かく行えます。GCDは利用できるすべてのコアにタスクを効率的に割り当てるため、ディベロッパはアプリケーションを隅々まで把握できます。
………な、なんだ?これ
wikipediaによれば、新たに導入された並行計算プログラミング技術。C言語、C++言語およびObjective-C言語に特殊なブロック記述を拡張し、ブロックのキューイングによる並行計算を行う。ブロックはシステムで管理されたスレッドで実行されるため、アプリケーションコードによるスレッド管理を軽減できるほか、諸々の最適化が自動的に施される。
だそうで、ぱっと見 OpenMP っぽいが…スレッドキューがあるのか?global のキューで依存解きながら廻したり動的に解決する?
どうも、マルチスレッド化したアプリ(Mail.appとか)の効率追求のための様でもあるけど、これを並列計算に使っちゃまずいのか?
cuda もとい OpenCL の他にもこんなの(ほぼ只で)入れてくるあたりが怖い。気がつくと、学術計算みんな OSX に置き換わってたりして。
一番よく纏めてくれてるのはこちら:Grand Central Dispatch at mootoh.logl
マルチスレッド利用技術としては、ほかに:OpenMP, OpenCL, Intel TBB などがある。どれをどう使おうか………。