我在64位Windows 7中安装了cuda toolkit 4.0。我尝试构建我的cuda代码,
#include<iostream>
#include"cuda_runtime.h"
#include"cuda.h"
__global__ void kernel(){
}
int main(){
kernel<<<1,1>>>();
int c = 0;
cudaGetDeviceCount(&c);
cudaDeviceProp prop;
cudaGetDeviceProperties(&prop, 0);
std::cout<<"the name is"<<prop.name;
std::cout<<"Hello World!"<<c<<std::endl;
system("pause");
return 0;
}
但操作失败。以下是构建日志:
Build Log Rebuild started:Project:god,Configuration:Debug | Win32 命令行使用内容创建临时文件“c:\ Users \ t-sudhk \ Documents \ Visual Studio 2008 \ Projects \ god \ god \ Debug \ BAT0000482007500.bat” [ @echo off
echo“C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v4.0 \ bin \ nvcc.exe”-gencode = arch = compute_10,code = \“sm_10,compute_10 \” - gencode = arch = compute_20 ,code = \“sm_20,compute_20 \” - 机器32 -ccbin“C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ VC \ bin”-Xcompiler“/ EHsc / W3 / nologo / O2 / Zi / MT “-I”C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v4.0 \ include“-maxrregcount = 0 --compile -o”Debug / sample.cu.obj“sample.cu
“C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v4.0 \ bin \ nvcc.exe”-gencode = arch = compute_10,code = \“sm_10,compute_10 \” - gencode = arch = compute_20, code = \“sm_20,compute_20 \” - 机器32 -ccbin“C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ VC \ bin”-Xcompiler“/ EHsc / W3 / nologo / O2 / Zi / MT” -I“C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v4.0 \ include”-maxrregcount = 0 --compile -o“Debug / sample.cu.obj”“c:\ Users \ t-sudhk \ Documents \ Visual Studio 2008 \ Projects \ god \ god \ sample.cu“
如果errorlevel 1转到VCReportError
转到VCEnd
:VCReportError
echo Project:错误PRJ0019:工具从“使用CUDA构建规则进行编译...”返回错误代码
退出1
:VCEnd ] 创建命令行“”“c:\ Users \ t-sudhk \ Documents \ Visual Studio 2008 \ Projects \ god \ god \ Debug \ BAT0000482007500.bat”“” 使用内容创建临时文件“c:\ Users \ t-sudhk \ Documents \ Visual Studio 2008 \ Projects \ god \ god \ Debug \ RSP0000492007500.rsp” [ / OUT:“C:\ Users \ t-sudhk \ Documents \ Visual Studio 2008 \ Projects \ god \ Debug \ god.exe”/ LIBPATH:“C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v4.0 \ lib \ x64“/ MANIFEST /MANIFESTFILE:"Debug\god.exe.intermediate.manifest”/ MANIFESTUAC:“level ='asInvoker'uiAccess ='false'”/ DEBUG / PDB:“C:\ Users \ t-sudhk \ Documents \ Visual Studio 2008 \ Projects \ god \ Debug \ god.pdb“/ DYNAMICBASE / NXCOMPAT / MACHINE:X86 cudart.lib cuda.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
“\调试\ sample.cu.obj” ] 创建命令行“link.exe @”c:\ Users \ t-sudhk \ Documents \ Visual Studio 2008 \ Projects \ god \ god \ Debug \ RSP0000492007500.rsp“/ NOLOGO / ERRORREPORT:PROMPT” 使用CUDA构建规则编译输出窗口... “C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v4.0 \ bin \ nvcc.exe”-gencode = arch = compute_10,code = \“sm_10,compute_10 \”-gencode = arch = compute_20,code = \ “sm_20,compute_20 \” - 机器32 -ccbin“C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ VC \ bin”-Xcompiler“/ EHsc / W3 / nologo / O2 / Zi / MT”-I“ C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v4.0 \ include“-maxrregcount = 0 --compile -o”Debug / sample.cu.obj“sample.cu sample.cu sample.cu.obj:错误LNK2019:未解析的外部符号_cudaLaunch @ 4在函数“enum cudaError cdecl cudaLaunch(char *)”中引用(?? $ cudaLaunch @ D @@ YA?AW4cudaError @@ PAD @ Z) sample.cu.obj:错误LNK2019:解析的外部符号___ cudaRegisterFunction @ 40在函数引用 “空隙__cdecl _ STI _cudaRegisterAll_52_tmpxft_00001c68_00000000_8_sample_compute_10_cpp1_ii_b81a68a1(无效)”(的 STI _ _cudaRegisterAll_52_tmpxft_00001c68_00000000_8_sample_compute_10_cpp1_ii_b81a68a1 @@ YAXXZ) sample.cu.obj:错误LNK2019:未解析的外部符号 _cudaRegisterFatBinary @ 4在函数“void __cdecl _ sti _cudaRegisterAll_52_tmpxft_00001c68_00000000_8_sample_compute_10_cpp1_ii_b81a68a1(void)”中引用(? sti _ _cudaRegisterAll_52_tmpxft_00001c68_00000000_8_sample_compute_10_cpp1_ii_b81a68a1 @@ YAXXZ) sample.cu.obj:错误LNK2019:函数_main中引用的未解析的外部符号_cudaGetDeviceProperties @ 8 sample.cu.obj:错误LNK2019:函数_main中引用的未解析的外部符号_cudaGetDeviceCount @ 4 sample.cu.obj:错误LNK2019:函数_main中引用的未解析的外部符号_cudaConfigureCall @ 32 C:\ Users \ t-sudhk \ Documents \ Visual Studio 2008 \ Projects \ god \ Debug \ god.exe:致命错误LNK1120:7个未解析的外部 结果构建日志保存在“file:// c:\ Users \ t-sudhk \ Documents \ Visual Studio 2008 \ Projects \ god \ god \ Debug \ BuildLog.htm”中 上帝 - 8个错误,0个警告
如果有人可以帮助我,我将非常感激。感谢
答案 0 :(得分:3)
将cudart.lib添加到其他库中。 See here for more info
要添加库,请转到
项目属性/配置属性/链接器/输入/附加依赖性
并添加cudart.lib
更新: CUDA默认只会安装本机二进制文件。你是64位系统。如果您必须编译一个32位应用程序,那么您可能需要下载并安装32位CUDA工具包以获取32位二进制文件 - 我认为它们默认包含它们但我离开了我的Win7盒子现在 - 我稍后会检查&amp;更新
另一个选项我强烈建议,将切换到构建本机的64位二进制文件。为此,您需要编辑Configuration Management
并从Win32切换到x64。
如果您没有x64选项,则需要进入第三个Configuration Management
选项并添加x64的配置文件。
基本点是,由于您尝试链接32位应用程序,它会忽略您已安装的64位二进制文件。
答案 1 :(得分:2)
您应该转到控制面板,然后添加/删除软件。然后单击“删除Visual Studio”并单击“下一步”,然后单击“添加或删除功能”,单击它。应检查组件64x。我之前有同样的问题。通过这种方式,你可以解决它。
答案 2 :(得分:0)
我还建议不添加标题,它们给了我可怕的链接器错误。使用Microsoft DLLS(msvrt等等......)
我不确定,但不应该是CUDA代码,因为它不受支持
有人可以证实吗?