Cuda笔记1

文章介绍了CUDA编程中的关键概念,包括串行CPU与并行GPU的区别,线程层次结构(SM、block和grid)、线程索引设置、以及如何进行线程分配。还提到了NVPROF工具用于性能分析和CPU-GPU数据传输的cudaMemcpy函数。
摘要由CSDN通过智能技术生成

1、培训001

在这里插入图片描述
在这里插入图片描述
1在这里插入图片描述
1+…+100,CPU是串行执行,GPU是分成几部分同时计算,如1+2+3,4+5+6…

2、培训002

在这里插入图片描述
一来一回
在这里插入图片描述
每种定义有对应的调用位置,和执行位置,不对会报错。
在这里插入图片描述
下图是用NVPROF时间分析
在这里插入图片描述
下图是资源分析
在这里插入图片描述

1) CUDA线程层次

在这里插入图片描述
一个SM执行多个block
在这里插入图片描述
所有线程执行同一个kernel,每个线程处理的数据不一样
在这里插入图片描述
线程在cuda core里面,block以块为单位分配到sm中,grid在device中
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b0ebf85958584b2aa17be70d7dcbc1a5.png
如图描述的是:9个block分给3个sm
这张ppt的流程与下面这个图其实是一回事
在这里插入图片描述
在这里插入图片描述
理由:层层分级便于管理,和企业或government管理有点相似。还有个协作,通过共享内存使thread block协作。
在这里插入图片描述
在这里插入图片描述
h_a,h_b指CPU的变量,d_a等指GPU的变量,申请各自的空间。
使用cudaMemcpy函数将cpu的变量传给gpu,然后使用kernel函数计算。
然后将结果送回去给CPU,最后释放
第一步
在这里插入图片描述
第二步,还有个步骤是,cpu通过giga thread将block分配给sm中
在这里插入图片描述
第三步
在这里插入图片描述

2)CUDA线程索引

设置多大?没有规矩,要通过实验!!!

3)CUDA线程分配

在这里插入图片描述
每个线程块的xyz维度最大申请1024,1024,64
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考链接:https://www.bilibili.com/video/BV1dq4y1k7RD?p=1《NVIDIA-CUDA-冬令营》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值