c++ のどのバージョン/どの概念が CUDA 5.0 でサポートされているかわかりません。CUDA 5.0 RC に同梱されているプログラミング ガイドまたはリファレンス ガイドには、情報が見つかりませんでした。特に CUDA 5.0 が C++11 をサポートしているかどうかが気になります。この情報を探す場所を教えてもらえますか?
4 に答える
どうやら 5.0 RC では C++11 の機能は利用できません。nvcc は、gcc 4.6 の標準インクルードで使用される C++11 構文をまだ理解していません (「CUDA および C++11 の使用中にエラーが発生しました」を参照)。
$ nvcc --バージョン
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2012 NVIDIA Corporation
Built on Tue_Jul_31_17:46:14_PDT_2012
Cuda compilation tools, release 5.0, V0.2.1221
$ cat test.cu
int main()
{
}
$ nvcc -Xcompiler "-std=c++0x" test.cu
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h(159): error: identifier "nullptr" is undefined
/usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h(159): error: expected a ";"
/usr/include/c++/4.6/bits/exception_ptr.h(93): error: incomplete type is not allowed
...
リリース ノートには、サポートされている GCC のバージョンを含むサポート プラットフォームのリストが含まれています。5.0 リリース候補のリリース ノートでは、特定のディストリビューションでサポートされている最新の GCC は 4.6 (他のディストリビューションではそれより古い) であることが示されています。
サポートされている GCC バージョンがわかったら、GCC C++0x/C++11 機能リストと比較してください。
gcc 4.7 をサポートしていないため、c++11 の一部の機能は利用できません。
- Non-static data member initializers
- Template aliases :(
- Delegating constructors
- User-defined literals
- Extended friend declarations
- Explicit virtual overrides
Cuda/C++ または THRUST ライブラリについて質問している場合。スラスト ライブラリは、コンテナ、イテレータ、およびアルゴリズムに関して stl c++ と非常に似ていますが、c++ 11 ではありません。
nvcc は GPU コードをコンパイルします。nvcc サポート (Cuda C および Cuda C++ /thrust) gcc は cpu コードをコンパイルします。gcc (C および C++ をサポート)。