C++ AMPとはくらいににMicrosoftが提案したGPU、DSPなどの演算器をプログラマが使いやすいようにC++言語を拡張したものです。
Microsoftが開発している規格です。 さらにMicrosoftはC++ AMPをオープン規格として仕様を全公開しました。これによりgccなどのコンパイラでも対応がすすめばあらゆる環境で用いれる言語となる可能性があります。 2014年後半になってLinux用コンパイラが提供されたとか。誰か検証してほしいですね。これでついにスパコンへC++ AMPを採用可能か?
つまり現在はほぼWindowsでしか動きません。まあWindowsでしか動かないからといって困る人はそう多くない気がしますが。しかしHPC分野に使用するとなると問題がありまして、Linuxで動いてくれないと話になりません。
今現在Windows上ならIntel,AMD,NVIDIA等どのGPU上でも動くようです。普及してくれるようにちょっと頑張ってみます。
CUDA 、OpenCLと比べてC++ AMPの知名度はまだ低いですが、その内容を見たところ大変きれいなコーディングができそうで、そして覚えるのが簡単そうでした。
OpenCLはAPI型なので関数をひたすら呼び出して設定をします。なかなかめんどくさいです。しかしどのGPUでも動きます。CUDAはNVIDIA製GPUでしか動きません。コーディング性は良いです。そこでCUDA、OpenCLの利点を兼ね備えたものがないかとひたすら探していたら、C++ AMPを見つけました。
C++ AMP、かなり使いやすそうではあるのですがC++の高度な知識が要求されるようです。しかし、どう見てもC言語などの関数型言語からAPIを駆使してGPUを操作するよりも理に適っている作りでした。お勧めします。
したがって私も普及に協力したいと思い、必要な機能を絞って解説しようと思いました。Micorosoftのページもあり、以外とわかりやすかったです。しかしあちらは言語の機能を述べているので実際に何に使うのかを説明しようと思いました。
そんなわけで調べたことを忘れないため、次調べる人の時間を削るため、および普及したことによる将来の自分のためにC++のフル機能がまだ使えない人でもとっつきやすく書いてみようと思いました。より実用的な内容とする予定です。
高額なGPUも買ってもらっちゃいましたし(笑)学校中に普及させなくては。
引用