C++ AMPを用いたGPUプログラミングwiki
首都大学東京 田川研究室
C++ AMP 目次へ

C++AMP基礎事項

名前空間について説明します。
名前空間という概念を必ず理解してから挑んでください。C++ AMPはC++の拡張として書かれており、C++のSTL(namespace stdに入っているもの)と名前が重複しているものが多いので明確に使い分ける必要があります。
using namespace  std;
は卒業してください。使うものはそれぞれ個別に宣言します。そうすれば何と何が被るのかを完全に把握することができます。特にヘッダーに記述してあるusingはすべてやめるべきです。そのヘッダーをインクルードした場合、すべてのファイルでその設定が引き継がれてしまいますので注意してください。基本的にソースコードの方にのみ書きます。
#include <string>
#include <iostream>
#include <vector>

using std::cout;
using std::vector;
using std::string;
のように書いてください。面倒だと思いますがやってみるとそうでもないと思えます。C++ AMPのライブラリはconcurrency名前空間に入っています。
#include <amp.h>
using concurrency::array_view;
using concurrency::array;
using concurrency::index;
using concurrency::extent;
using concurrency::accelerator;
using concurrency::accelerator_view;
using concurrency::parallel_for_each;
上記のものがC++ AMPで使う主なものです。これでSTLのarray等と被らなくなります。以降の説明ではこれが書かれているものとして話をすすめます。