0

静的メンバーを次のタイプに追加しようとしています。

struct mostRightCornerPred
{
    __host__ __device__ 
    static int numIterations;   
    bool operator()(const long long first,const long long seconds) const
    {
        return true;
    }

};

しかし、私はエラーが発生し続けます:

1>c:\users\igal\desktop\pj1712 固定マップ res\graph\types.h(21): エラー
: 属性 "__host__" はここでは適用されません
1>c:\users\igal\desktop\pj1712 固定マップ res\graph\types.h(21): エラー
: データ メンバーのメモリ修飾子は許可されていません

私の推測では、CUDA はこのメンバーを参照できません。どうすれば修正できますか?

4

1 に答える 1

4

コードの構文エラーを見ても、デバイスコードの静的データは違法です。その理由は、すべてのスレッドが初期化される場合、または1つだけの場合、どのスレッドが初期化されるかについて、定義されたポイントがないためです。したがって、静的データはこのコンテキストでは意味がありません。

この制限については、CUDAプログラミングガイドで説明されていると思います。

ファンクターにデータメンバーが必要な場合は、ファンクターにコンストラクターを追加し、コンストラクターへの引数を使用してデータを初期化します。

于 2012-02-25T12:44:56.013 に答える