今日、Buildにおけるプレゼンで Jim Radigan と Don McCradyの両氏は、いかに改善されたVisual Studio 2012 (VS2012) コンパイラーがC++でプログラミングする開発者に利益をもたらすかを説明した。 Radigan氏は彼の話を「これは全てパフォーマンスについての話しです。Visual C++ 2012を使えばあなたのハードウェアを最大限に活用できるのです」と言って始めた。最初の Pentium導入以来のコンピュータパワーの増加について、簡単な歴史的な概要も話した。
その最初の Pentiumが310万個のトランジスタを持っていたが、現代の Ivy Bridge CPUは、14億個のトランジスタを持っている。 McCrady氏が後で注意したように、 C++ AMPでは、開発者は単一言語で全てを使うことでできる。CPUダイ上にCPUとGPUの両方が増々同居する(個別の拡張カードに存在するGPUに加えて)。
C++ AMPをターゲットにしたコードを使えば、頻繁に汎用コードに対して最高のパフォーマンスを提供することができる。 Radigan氏は、更にVS2012が持つ自動ベクトル化と自動並列化の最適化は、多くの場合、既存コードを再コンパイルすれば、直ちに利益が得られることを意味する 、と注意した。その結果、VS2012のオプティマイザは、以前のバージョンの2倍のサイズになった。
開発者は、コンパイラがスピードアップのためのレビューを確実に行なって欲しいコード部分にマークを付けることができる。次のプラグマを使う。
#pragma loop(hint_parallel(4))
開発者はコンパイラに、このプラグマを含むループは複数コア(このコード片では、4コア)に別けられるはずだ、というヒントを与えることができる。コンパイラはそれでも完全な分析を行ない、もしマークされたコード部分が適切に並列化できない場合には、コンパイラは最適化を行わない。
Radigan 氏のレイトレーサーのデモでは、単にVS2012でソースコードを再コンパイルするだけで16倍のパフォーマンス増加になることを示した。Radigan 氏が強調したのは、 VS2012の改善したコンパイラのパフォーマンスにも拘らず、自動的により速いコードを生成するのに利用できる「魔法の弾丸」は存在しない、ことだ。また、コンパイラチームは、 Windows 8, SQL Server, そして Officeが全てC++アプリケーションとして、常に革新を求めている、と述べた。
Radigan氏は、今のところ何のないが、AMPにネイティブC#のサポートを加えたいと表明した。(現在、C#開発者は、 P/Invokeを介してAMPを使うことができる。)最後に C++ AMP仕様はオープンな標準であるが、現在Appleのプラットフォーム(iOS や Mac OS X)では実装が無いが、理論的には、作ることは可能である。