CUDA Внешние вызовы не поддерживаются

Я разрабатываю приложение CUDA 4.0, работающее на карте Fermi. Согласно спецификациям, Fermi имеет вычислительные возможности 2. 0 и, следовательно, должен поддерживать не встроенные вызовы функций.

Я компилирую каждый имеющийся у меня класс с nvcc 4.0 в отдельный файл obj. Затем я связываю их все с g ++ - 4.4.

Рассмотрим следующий код:

[Файл A.cuh]

#include <cuda_runtime.h>

struct A
{
    __device__ __host__ void functionA();
};

[Файл B.cuh]

#include <cuda_runtime.h>

struct B
{
    __device__ __host__ void functionB();
};

[Файл A.cu]

#include "A.cuh"
#include "B.cuh"

void A::functionA()
{
    B b;
    b.functionB();
}

Попытка скомпилировать A.cu с nvcc -o Ao -c A.cu -arch = sm_20 output Ошибка: внешние вызовы не поддерживаются ( обнаружил невстроенный вызов _ZN1B9functionBEv) .

Я должен делать что-то не так, но что?

9
задан talonmies 8 December 2015 в 16:40
поделиться