零基础学习CUDA编程-day1

为什么使用cuda

常规传统单核处理器遇到物理约束,时钟频率(perf/clock)无法保存线性。     现在的CPU系统已经遇到各种瓶颈,只能向多核及并行系统发展,顺势而生GPU-Graphics Process Unit .

并行计算

并行计算是同时应用多个计算资源解决一个计算问题,包括以下三点:涉及多个计算资源或处理器,问题被分解为多个离散的部分,可以同时处理(并行),每个部分可以由一系列指令完成。  并且最好是计算密集的任务,通信和计算开销比例合适,不要受制于访存带宽。
目前这些都能在基于ARM平台的JetsonNANO上完成。

加速比

Amdahl’sLaw程序可能的加速比取决于可以并并行的部分。

speedup = 1/ (1-p)
  1. 如果没有可以并行化的,P=0 and the speedup=1. 如果全部可以并行化,P=1 and the speedup is infinite(in theory);
    2.如果50%可以并行化,maximum speedup=2;
  2. 如果有N个并行处理器
speedup =1/(p/n+s)

cuda程序编写

  • 把输入数据从cpu内存复制到gpu显存
  • 执行cpu上缓存数据,加载GPU程序并行执行
  • 将计算结果从gpu显存中复制到cpu内存中
    在这里插入图片描述

cuda编程模式:Extended C在这里插入图片描述

cuda declpecs

在这里插入图片描述

执行位置调用位置
__device____float DeiceFunc()devicedevice
global void KernelFunc()devicehost&device(arch>3.0)
host float HostFunc()hosthost

网格、线程块、线程

调用核函数时,指定并发的线程数量,是由网格(含有多少线程块),线程(含有多少线程)共同决定。
在这里插入图片描述

CUDA程序的编译

在这里插入图片描述
在这里插入图片描述

NVPROF

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值