-1

正しい単語に赤い線で下線を引くとエラーが多く表示されますが、正しく実行できます。これらの単語には、C のキーワードと CUDA のキーワードが含まれます。申し訳ありませんが、私は写真を投稿する 10 の評判を持っていません。

4

1 に答える 1

2

私も同様の問題を抱えていました。問題は、IDEがnvccとは関係なく、ファイルを独自に解析しようとするが、一部のキーワードを理解しないことです。その結果、いくつかの間違った仮定を行い(たとえば、__global__それが変数/関数の名前であると考え、その後に別の名前があると混乱して無視します)、その後、すべてが彼から離れます。

Visual StudioのIDE_MSC_VERは宣言されていると想定しているのに対し、CUDAコンパイラはそれ__CUDACC__が宣言されていると想定しているため、IDEとCUDAが解析するものを区別できます。

したがって、私が行ったことは、すべてのファイル(およびそれらのファイルのみ)sense.hの最初にインクルードするヘルパーヘッダーファイルを作成することです。.cu内部では、sense.hすべてのCUDA固有のキーワードをマクロとして定義しています。

#ifdef _MSC_VER
/*
Include this file at the very beginning of your .cu files to make Visual Studio IntelliSense more compatible with it.
Do -NOT- include it in .cpp files or header files
*/

#if !defined(__CUDACC__)
//unfortunately there is no IntelliSense macro.
//Fortunately, __CUDACC__ is not defined when IntelliSense parses the file.

#define __CUDACC__
#include <host_defines.h>
#include <device_functions.h>

#ifndef __device__
#define __device__
#endif

#ifndef __host__
#define __host__
#endif

#ifndef __global__
#define __global__
#endif

#ifndef __forceinline__
#define __forceinline__ __forceinline
#endif

#endif
#endif
于 2012-10-05T07:47:29.920 に答える