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。再次编译生成,正确。