4

私はCUDA4.2を1週間使用していますが、少し問題があります。__syncthreads()関数を作成すると、下線が引かれ、間違っているように見えます...

次に、関数にマウスを置くと、次のようなメッセージが表示されます。

識別子__syncthreads(); 未定義です。

しかし、プロジェクトをコンパイルすると、出力フォームのビルドには次のように表示されます。

==========ビルド:1成功、0失敗、0最新、0スキップ==========

だから私はすべてがうまくいくと思いますが、VisualStudioが関数に下線を引いているという事実は私を混乱させています...コンパイルプロセスの前にこの関数が定義されていることをVisualStudioに知らせるにはどうすればよいですか?

注:同じことがカーネル呼び出しでも発生します:kernel <<< ...、... >>>ここで、3番目の「<」にも赤の下線が引かれています。

これはおそらく小さな問題だと思いますが、解決したいと思います...どうもありがとうございました!Win7でCuda4.2とNsight2.2を使用してVisualStudio2010を使用しています

4

5 に答える 5

4

cu ファイルの先頭に次の数行を追加すると、これらの関数が認識されるようになりました。何らかの理由で、Intellisense はこの #define を認識しませんでした:

#ifndef __CUDACC__  
    #define __CUDACC__
#endif

コードの一部の色分けが失われましたが、奇妙な誤検知エラーは発生しなくなりました。

于 2014-01-03T15:21:42.340 に答える
1

と を使用CUDA 9.1してVisual Studio 2017 15.6.4います。次のコードは、「__syncthreads() is undefined」エラーを解消するのに役立ちます。

//for __syncthreads()
#ifndef __CUDACC__ 
#define __CUDACC__
#endif
#include <device_functions.h>

ただし、この方法は、予期しない副作用が発生する可能性があるため、お勧めできません。このインテリセンス警告を解決する別の方法は次のとおりです。

#ifdef __INTELLISENSE___
// in here put whatever is your favorite flavor of intellisense workarounds
#endif

参照: __syncthreads(); 未定義です 助けが必要です

于 2018-03-25T05:09:37.607 に答える
0

ファイルで__global__関数の本体を定義しようとしたときに、これが発生しました。.cuh関数の本体を.cuソースファイルに移動すると解決しました。

ただし、テンプレートをヘッダー __syncthreads()で定義する必要がある場合があるため、テンプレート化された関数の一部は のような重要なものを使用できないことを意味します。.cuh

そのため、関数テンプレートを放棄し、代わりに、それぞれわずかに異なる名前を持ついくつかの関数に固執する必要がある場合があります。

于 2019-03-01T12:38:22.787 に答える