参加CUDA线上训练营-day01

Linux操作系统(Ubuntu)

作用

是现代计算机系统中最基本和最重要的系统软件,是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩展,提供命令,接口,图形化交互等方式给用户或应用软件,使其可以更快捷,简单的使用计算机硬件。

文件目录结构

Makefile

作用

相当于集成开发环境,实现“自动化编译”,极大的提高了软件开发的效率。makefifile定义了一系列的规则来指定,哪些文件需要先 编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因 为makefifile就像一个Shell脚本一样,其中也可以执行操作系统的命令。

使用规则

  1. 注释用 ‘#’

  1. ALL:makefile的最终实现

  1. 通配符:

src = $(wildcard *.c) 匹配当前工作目录下所有的.c文件。 (例:src = test.c)

obj = $(patsubst %.c, %.o, $(src)) 将参数3中,包含参数1的部分替换为参数2 (例:obj = test.o)

  1. clean:-rm -rf $(obj) : 强制删除当前目录下所有.o文件

  1. 伪目标:

.PHONY: clean all(不区分大小写)

  1. 自动变量:

$@:在规则的命名中,表示规则中的目标。

$<:在规则的命名中,表示第一个依赖条件。若将其用于模式规则中,则可将依赖条件列表套用模式

$^:在规则的命名中, 表示所有依赖条件。

Cuda程序编写:

关键词:

"__global__":修饰的函数必须采用void返回值,并且需要在调用时制定运行的参数 (也就是<<<>>>里的block数和线程数)

"<<<blockIdx,threadIdx>>>":blockIdx:线程块 threadidx:线程 (编号索引值=blockldx*(blockldx所包含线程)+threadldx

"cudaDeviceSynchronize()":在gpu完成之前交给cpu,cpu用内核去找到出口,将gpu进程的返回值进行保存

利用NVCC进行编译

/usr/local/cuda/bin/nvcc

程序01:

代码示例

运行结果:

使用nvprof查看程序性能

sudo /usr/local/cuda/bin/nvprof ./hello_cuda

Profiling result:是GPU(kernel函数)上运行的时间

- API calls:是在cpu上测量的程序调用API的时间

程序02:

代码示例:

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值