1
//Header file A.h
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
class A
{
   __host__ __device__ void move();
}

//cu file A.cu
#include "A.h"
{
   __host__ __device__ void A::move()
   {
      ...
   }
}

ファイルで定義されたメソッドA.cuを別のファイルから呼び出すと.cu、次のエラーが発生します。

External calls are not supported (found non-inlined call to ...),

sm_10コンパイルオプションを使用しています。

4

1 に答える 1

2

別のコンパイルが必要です。個別のコンパイルには2.0、少なくとも CUDA 5.0 のコンピューティング機能を備えたカードが必要です。

CUDA 5.0 リリースのハイライトの引用:

すべての__device__関数は、NVCC を使用して個別にコンパイルおよびリンクできるようになりました。これにより、関数のクローズド ソース スタティック ライブラリを作成__device__し、これらのライブラリがユーザー定義の__device__コールバック関数を呼び出すことができます。リンカーのサポートは、このリリースではベータ機能と見なされます。

別のコンパイルについては、CUDA COMPILER DRIVER NVCC Reference Guideの第 7 章で説明されています。

興味のある方は、NVIDIA フォーラムに個別のコンパイルに関する非常に優れたスレッドがあります。

cuda 5.0 を使用してデバイス関数の静的ライブラリを作成するには?

于 2013-09-19T13:49:53.343 に答える