CUDA和optix安装、设置、编译

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/novanova2009/article/details/88917889

1 windows+visual studio安装使用

1.1 CUDA

参考:cuda_installation_guide_windows.pdf

安装cuda后,最好运行deviceQuery.exe,如果显示信息最后有pass,表明正常。然后运行bandwidthTest,如果显示pass,证明系统和gpu可通信,一切正常。上述程序的位置可能在C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1\bin\win64\Release,也可能在安装目录\Nvidia\CUDA\development\extras\demo_suite

编译:创建一个新的cuda项目,从visual studio中点击文件->新建|项目...NVIDIA->CUDA->,选择CUDA 10.1()runtime模板。

要想为已有项目添加cuda支持,参考手册3.4。

1.2 optix

安装好CUDA后,再安装optix。如果安装正确,SDK-precompiled-samples目录下的程序都可以正常运行。

编译:

参考OptiX_Programming_Guide_6.0.0.pdf,第七章,Building with Optix。

创建一个新的cuda项目,将包含optix API的cu文件和cpp文件等加入项目。然后打开项目属性:

1)CUDA C/C++下

Common:

NVCC compilation type,选择generate .ptx file。

target machine platform,选择64bit。

additional include directories,optix安装目录\include。

Device:

Generate GPU debug information:否

host:

Generate host debug information:否

2)C/C++下

附加包含目录,optix安装目录\include

如果要编译optix附带的sample,还要加上optix安装目录\sdk\cuda和optix安装目录\sdk\sutil等等。

3)链接器

常规:

附加库目录,optix安装目录\lib64

如果要编译optix附带的sample,还要加上optix安装目录\sdk\cuda和optix安装目录\sdk\sutil等等。

输入:

添加

optix.6.0.0.lib
optix_prime.6.0.0.lib
optixu.6.0.0.lib

如果要编译optix附带的sample,还要加上freeglut.lib、sutil_sdk.lib等等。

然后点击生成,就可以了。

---------------------

cu文件包含被cpu调用的函数。此时出现LNK2019错误:无法解析的外部符号。

仔细检查文件,函数名称、参数并没有写错。包含文件和库文件都在项目属性中配置了。

问题出在链接过程。nvcc需要调用vc的链接器完成编译过程。

如果编译时compilation type为ptx,只编译生成gpu上的代码,不管cpu上的代码。因此找不到对应的函数,出现错误。

所以,把compilation type改为generate hybrid object file。再次编译生成,正确。

 

展开阅读全文

cuda在emu模式下的安装编译

09-17

我cuda的安装过程是这样的:rn(a)安装cudatoolkit_3.1_win_32.exe到默认路径rn(b)安装gpucomputingsdk_3.1_win_32.exe到E:\cudaSDKrn(c)在环境变量的Path中添加E:\cudaSDK\C\bin\win32\Debug;E:\cudaSDK\C\bin\win32\EmuDebug;E:\cudaSDK\C\bin\win32\Release;E:\cudaSDK\C\bin\win32\EmuRelease.rn(d)安装vs2005rn(e)安装CUDA_VS_Wizard_W32.2.2.exern(f)在VC++ Directory->include file中加入C:\CUDA\include;E:\cudaSDK\C\common\incrn在library file中加入C:\CUDA\lib;E:\cudaSDK\C\common\librn在source file中加入E:\cudaSDK\C\common\srcrn在C/C++ file Extension中加入*.cu 在Extension to include中加入.cuhrn在rule file search path 中加入E:\cudaSDK\C\commonrn在工程名上右击选择custom build rules->find existing,选择cuda.rules.rnrn这是我的安装过程 不知有没有问题rnrn至于编译过程,我右击solution explorer,选择property,configuration 中选择EmuDebug,start debugging,出现下面错误rn1>------ Build started: Project: 007, Configuration: EmuDebug Win32 ------rn1>Compiling with CUDA Build Rule...rn1>"C:\CUDA\bin\nvcc.exe" -arch sm_10 -ccbin "C:\Program Files\Microsoft Visual Studio 8\VC\bin" -deviceemu -D_DEVICEEMU -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MTd " -I"C:\CUDA\include" -I"E:\cudaSDK\C\common\inc" -maxrregcount=32 --compile -o "EmuDebug\sample.cu.obj" "e:\myproject\007\007\sample.cu" rn1>sample.curn1>E:\cudaSDK\C\common\inc\cutil_inline_runtime.h(118): error: identifier "LPCSTR" is undefinedrn1>E:\cudaSDK\C\common\inc\cutil_inline_runtime.h(123): error: identifier "va_start" is undefinedrn1>E:\cudaSDK\C\common\inc\cutil_inline_runtime.h(124): warning: function "_vsnprintf"rn1>C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(339): here was declared "deprecated ("This function or variable may be unsafe. Consider using _vsnprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.")"rn1>E:\cudaSDK\C\common\inc\cutil_inline_runtime.h(130): error: identifier "OutputDebugStringA" is undefinedrn1>3 errors detected in the compilation of "C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/tmpxft_000006d4_00000000-6_sample.cpp1.ii".rn1>Project : error PRJ0019: A tool returned an error code from "Compiling with CUDA Build Rule..."rn1>Build log was saved at "file://e:\myproject\007\007\EmuDebug\BuildLog.htm"rn1>007 - 4 error(s), 1 warning(s)rn这是为什么? 论坛

cuda 安装

05-16

CUDA Driver、CUDA Tookit 3.2、CUDA SDK 3.2 我都安装了,现在的情况是,我死活都用不了cudarnrn我用的是VS 2010,完全按如下步骤安装,是不是因为是本本的关系按不上啊?rnrn显卡是GT520MrnrnrnCUDA 3.2 VS2010 配置指南rn一、 系统环境rnWindows 7,32位操作系统。rn二、 安装步骤rn1. 依次安装CUDA Driver、CUDA Tookit 3.2、CUDA SDK 3.2rna) 到官网上下载本机对应显卡型号的驱动,rnhttp://www.nvidia.cn/Download/index.aspx?lang=cn;rnb) 下载CUDA Toolkit3.2和CUDA SDK 3.2,rn http://developer.nvidia.com/object/cuda_3_2_downloads.html。rn2. 安装CudaVs2010rna) 下载解压CudaVs 2010,rn http://forums.nvidia.com/index.php?showtopic=161096;rn b) 用VS 2010打开目录下的CudaVs2010.sln,选择菜单中的“生成”“配置管理器”,将其中的“活动解决方案平台”设置为与自己系统相对应的平台,在此,选择x86平台,然后重新编译生成整个工程;rn c) 进入到cuda toolkit安装目录下的doc目录中,C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\doc,rn将CUDA_Toolkit_Release_Notes_Windows.txt复制粘贴一个到当前目录作为备份,然后将其文件名改为CUDA_Release_Notes_3.2.txt;rn d) 进入到rnCuda32_Vs2010\CudaVs2010\Data\CUDA\3.2\BuildCustomizations目录中,将其中的CudaRuntimeApi30.props、CudaDriverApi30. props两个文件中的rn$(CUDA_LIB_PATH)..\lib改成rn$(CUDA_LIB_PATH),如果已经被改过则不用再改。rn e) 双击运行Cuda32_Vs2010\CudaVs2010\Data目录下的CudaVs2010.exe,完成。rn f) 安装成功后的效果rn rn图1 CudaVs2010安装成功后效果rn3. 安装Visual assistX 10.6rnrn三、 配置步骤rn1. 系统环境变量配置rna) 在“CUDA_INC_PATH”中添加SDK的inc(..\common\c\inc);rnb) 在“CUDA_LIB_PATH”中添加SDK的lib(..\common\c\lib)。rn2. Visual Stdio注册表配置rn在注册表中添加子键,rn[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Languages\File Extensions]中添加子项“.cu”,并把“.cpp”的键值复制给“.cu”。rn rn图2 添加cu子键rn3. 配置Visual Assist Xrna) 添加VAsist X对.cu文件的识别rn找到VAssistX的注册表项rn[HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet10],修改ExtSource键值,添加“.cu”和“.cuh”(注:要以“;”号结尾,且在修改时要关闭VS);rn rn图3 添加对.cu文件的识别rnb) 添加对CUDA关键字的识别rn打开VS,选择“VAssistX”菜单项下的“…option”选项,依次选择“Projects->C/C++ Derictors”,“ Platform”中选择“Custom”,添加CUDA Toolkit和CUDA SDK中的include/inc目录。rn rn图4 添加对CUDA关键字的识别rn4. 最终效果rn rn图5 配置完成后的效果rnrnrnrnrn(本文档由kileven整理,如有疑问请联系826941283@qq.com)rn 论坛

CUDA程序编译很慢

02-06

小弟最近将一个C程序改为CUDA程序,发现程序无法编译出来,用top命令查看,be进程耗时几分钟之后,ptxas进程一直运行,内存使用率极高。整个程序编译了一个多小时后仍没有编译出来。不知道各位前辈有没有遇到过类似的情况,请赐教。rnrn本人猜测有以下几点原因:rnrn1.在host调用global函数后,global调用了device函数,然后device函数再调用device函数,这样调了将近有10层,并且有很多次的device函数调用。不知道是否影响了编译。但个人觉得函数的嵌套应该不至于无法编译吧。rnrn2.由于之前的C程序动态申请了大量的全局变量,所以修改后的CUDA程序并没有用cudaMalloc去申请显存,而是全局声明了诸如 __device__ *a 之类的多个指针,然后在global函数中 a = new float [n]; 其中n较大,并且有很多个这样的a数组。这样就能在所有的device函数中自由使用a数组,而不用通过cudaMalloc申请后一层一层地传递进global/device函数。本人将其他的代码注释之后,只留下显存申请和释放的代码,发现编译所需时间不长,所以个人觉得这里应该不是根本原因。rnrn3.宏使用较多,但我把所有宏去掉后并没有根本性的变化。rnrn从目前的调试情况来看,第一个原因可能是根本原因,但又不知如何修改,请各位前辈赐教rn老板催得紧,还请大家多帮忙!! 论坛

没有更多推荐了,返回首页