Цель заключается в вызове функции устройства доступны в другом файле, когда я скомпилировать глобальные ядра он показывает следующее сообщение об ошибке * Внешние вызовы не поддерживаются (нашли, не встраиваются вызов _Z6GoldenSectionCUDA) *.Внешние вызовы не поддерживаются - CUDA
Проблемный код (не полный код, но здесь возникает проблема), кошка norm.h
# ifndef NORM_H_
# define NORM_H_
# include<stdio.h>
__device__ double invcdf(double prob, double mean, double stddev);
#endif
кошачий norm.cu
# include <norm.h>
__device__ double invcdf(double prob, double mean, double stddev) {
return (mean + stddev*normcdfinv(prob));
}
кошка test.cu
# include <norm.h>
# include <curand.h>
# include <curand_kernel.h>
__global__ void phase2Kernel(double* out_profit, struct strategyHolder* strategy) {
curandState seedValue;
curand_init(threadIdx.x, 0, 0, &seedValue);
double randomD = invcdf(curand_uniform_double(&seedValue), 300, 80);
}
nvcc -c norm.cu -o norm.o -I "."
nvcc -c test.cu -o test.o -I "."
Пожалуйста, пост примера, чтобы воспроизвести проблему (см [здесь] (http://sscce.org) для руководства), ваш код работает для меня , – Tom
В реальном коде (в отличие от того, что вы здесь показали), вы явно вызываете конструктор или полагаетесь на конструктор по умолчанию класса? – talonmies
Не могли бы вы указать аргументы nvcc, которые вы используете? – geek