本节讲述如何在命令行编译CUDA程序,使用makefile能让我们提高效率。
现在这里有若干cuda代码等待被编译:
当我们在命令行执行make edit时,代码被批量编译:
当我们想批量清空时,只需要在命令行敲上make clean即可,生成的可执行文件就被清空了。
我们来看一下这个简单又好用的makefile是如何编写的:
首先,使用变量objects定义了我们要生成的可执行文件,在这里统一定义是为了之后调用方便,想批处理直接调用$(objects)即可。当我们想添加或删除哪个cuda源码,只需要在这里修改就可以全文生效,这对于大型项目(文件多,要修改时工作量大)来说是非常好用的功能。
其次,这里的edit和clean都是标签类型,用过汇编的朋友应该不会陌生,简单来说就是当执行make+标签时,可以执行标签后面定义的内容。
.PHONY显式声明标签。
重头戏来了,真正要执行的是命令行指令。
规则是
target:依赖文件
可执行指令
默认,当执行make时,如果没有target生成或者依赖文件其中任何一个比target的修改时间要晚,target都会更新。
这里对应cuda编译的可执行指令为nvcc -o filename filename.cu。