CUDA无法在64位Windows 7中工作

时间:2011-07-01 07:21:04

标签: visual-studio-2008 cuda

我在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个警告

如果有人可以帮助我,我将非常感激。感谢

3 个答案:

答案 0 :(得分:3)

将cudart.lib添加到其他库中。 See here for more info

要添加库,请转到

项目属性/配置属性/链接器/输入/附加依赖性

并添加cudart.lib

更新: CUDA默认只会安装本机二进制文件。你是64位系统。如果您必须编译一个32位应用程序,那么您可能需要下载并安装32位CUDA工具包以获取32位二进制文​​件 - 我认为它们默认包含它们但我离开了我的Win7盒子现在 - 我稍后会检查&amp;更新

另一个选项我强烈建议,将切换到构建本机的64位二进制文​​件。为此,您需要编辑Configuration Management并从Win32切换到x64。

enter image description here

如果您没有x64选项,则需要进入第三个Configuration Management选项并添加x64的配置文件。

基本点是,由于您尝试链接32位应用程序,它会忽略您已安装的64位二进制文​​件。

答案 1 :(得分:2)

您应该转到控制面板,然后添加/删除软件。然后单击“删除Visual Studio”并单击“下一步”,然后单击“添加或删除功能”,单击它。应检查组件64x。我之前有同样的问题。通过这种方式,你可以解决它。

答案 2 :(得分:0)

我还建议不添加标题,它们给了我可怕的链接器错误。使用Microsoft DLLS(msvrt等等......)

我不确定,但不应该是CUDA代码,因为它不受支持

有人可以证实吗?