Код ниже выдает предупреждение, упомянутое в заголовке, но код работает.Каковы последствия предупреждения?Спасибо.
class A
{
protected:
__host__ __device__ virtual void foo() const = 0;
};
class B : public A
{
public:
__host__ __device__ B() { foo(); }
protected:
__host__ __device__ virtual void foo() const override {
printf("aaa\n");
}
};
__global__ void useB()
{
B *b = new B();
//B b;
}
int main()
{
useB << <1, 1 >> >();
checkCudaErrors(cudaDeviceSynchronize());
checkCudaErrors(cudaGetLastError());
return 0;
}
Отредактировано: Использование с использованием 8.0, V8.0.60.на VS 2013 V12.0.31101 Обновление 4.
Не уверен, поможет ли что-нибудь из этого:
C / C ++
/GS /GL /analyze- /W3 /Gy /Zc:wchar_t /I"C:\Users\xxx\Documents\GitHub\xxxxxxxxxx\xxxxxxxxxx\xxxxxxxxxx" /I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" /Zi /Gm- /O2 /Fd"Release\vc120.pdb" /fp:precise /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /Gd /Oy- /Oi /MD /Fa"Release\" /EHsc /nologo /Fo"Release\" /Fp"Release\xxxxxxxxxx.pch"
CUDA C / C ++
# Driver API (NVCC Compilation Type is .cubin, .gpu, or .ptx)
set CUDAFE_FLAGS=--sdk_dir "C:\Program Files (x86)\Windows Kits\8.1\"
"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" --use-local-env --cl-version 2013 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin" -rdc=true --keep-dir Release -maxrregcount=0 --machine 32 --compile -cudart static -o Release\%(Filename)%(Extension).obj "%(FullPath)"
# Runtime API (NVCC Compilation Type is hybrid object or .c file)
set CUDAFE_FLAGS=--sdk_dir "C:\Program Files (x86)\Windows Kits\8.1\"
"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" --use-local-env --cl-version 2013 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin" -rdc=true --keep-dir Release -maxrregcount=0 --machine 32 --compile -cudart static -Xcompiler "/EHsc /nologo /FS /Zi " -o Release\%(Filename)%(Extension).obj "%(FullPath)"
Linker
/OUT:"C:\Users\xxx\Documents\GitHub\xxxxxxxxxx\xxxxxxxxxx\Release\xxxxxxxxxx.exe" /MANIFEST /LTCG /NXCOMPAT /PDB:"C:\Users\xxx\Documents\GitHub\xxxxxxxxxx\xxxxxxxxxx\Release\xxxxxxxxxx.pdb" /DYNAMICBASE "cudadevrt.lib" "cudart_static.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X86 /OPT:REF /SAFESEH /INCREMENTAL:NO /PGD:"C:\Users\xxx\Documents\GitHub\xxxxxxxxxx\xxxxxxxxxx\Release\xxxxxxxxxx.pgd" /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Release\xxxxxxxxxx.exe.intermediate.manifest" /OPT:ICF /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\Win32" /TLBID:1
CUDA Linker
"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -dlink -o Release\xxxxxxxxxx.device-link.obj -Xcompiler "/EHsc /nologo /Zi " -G
Предупреждение получено на этапе CUDA Linker.