项目想要用CUDA改造原来的C++项目,从头学GPU,C++基础也不好,细节记录下来,方便以后查看。好记性不如烂笔头!环境 CUDA6.0; VS2008;win7 32bit
1. 要实现在多个cu文件之间相互调用函数,函数声明放在.h中。使用Separate Compilation(详见说明文档 CUDA_Compiler_Driver_NVCC.pdf 6.2).
-在项目属性中设置 Generate Relocatable Device Code ----- Yes (-rdc=true);;GPU Architecture ----- sm20以上。
2.使用nvcc将cu文件编译成.obj.
-在项目属性中设置CUDA Runtime API GPU Type-Generate hybrid object file (--compile / -c)
有人做过这个,用-c编译。How to create a static lib using cuda 5.0-6.5 and VS2010
-按照我的理解,如果要生成device类型的静态库应该是用Generate .gpu file (-gpu)。但是,这样产生的 obj文件系统不认。在生成库的时候会产生如下错误。
1>Creating library...
1>.\Debug\zp.cu.obj : fatal error LNK1107: invalid or corrupt file: cannot read at 0x2E8
3.使用系统linker连接成lib文件。默认设置即可生成lib文件。
总结:编译部分暂时先按照hybrid object file,进行下一步。看看后面能不能再global和device函数中调用这个lib中的函数。