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中

如图描述的是: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-冬令营》



















