Makefile(2)加了一些新东西

2 篇文章 0 订阅

在简单实现编译连接功能的makefile基础上,本节加入一些新的元素,包括两部分改进(makefile符号使用和nvcc命令)。

这次编译的是《GPU高性能编程CUDA实战》第四章的样例代码。

这是要编译的文件:

执行make edit。

这是编译完生成的可执行文件:


这是我这次写的Makefile:

objects=add_loop_cpu  add_loop_long add_loop_gpu \
julia_gpu julia_cpu


compiler=nvcc
edit:$(objects)

add_loop_cpu:add_loop_cpu.cu
	$(compiler) $< -o $@ --gpu-architecture=compute_50 --gpu-code=sm_50,sm_52
add_loop_gpu:add_loop_gpu.cu
	$(compiler) $< -o $@ --gpu-architecture=compute_50 --gpu-code=sm_50,sm_52
add_loop_long:add_loop_long.cu 
	$(compiler) $< -o $@ --gpu-architecture=compute_50 --gpu-code=sm_50,sm_52
julia_gpu:julia_gpu.cu	
	nvcc $< -lGL -lglut -o $@ --gpu-architecture=compute_50 --gpu-code=sm_50,sm_52
julia_cpu:julia_cpu.cu
	nvcc $< -lGL -lglut -o $@ --gpu-architecture=compute_50 --gpu-code=sm_50,sm_52
#-lGL -lglut:来自于OpenGL
clean:$(objects)
	rm $(objects)
.PHONY:clean


对比上一版Makefile,结构基本没有改动,新添加的内容是:

1.可以定义更多的字符串变量,比如,compiler=nvcc,在调用时对应改成$(compiler)即可。之后,可以在Makefile里添加编译器选择的部分。

2.$<表示依赖文件(或文件列表),如果之前依赖文件有很多的话,在编写执行指令处可以用这个代替,make执行时自动替换。

3.$@表示目标文件(或文件列表),同上。

4.nvcc的指令加入了gpu计算架构版本和sm版本,之后还会继续简化。

5.针对第四章julia集编译不过的情况,给出解决方案是在nvcc指令中加入“ -lGL -lglut”选项,还有在 cuComplex( float a, float b ) : r(a), i(b)  {}前加上 __device__。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值