- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CUDA编程举例vector add 在GPU下运行的kernel函数的文件名后缀为.cu 核函数(__global__) 线程索引号的计算 线程私有变量的申请 shared memory的申请等等 设备端函数(__device__),只可以在device端调用,host端不可调用 在CPU运行的程序文件名可以为.c .cpp .cu 文件的读写 内存的申请 显存(global memory)的申请 CPU和GPU之间数据的交互 GPU端线程的申请 CPU端函数以及kernel函数的调用 内存的释放 显存的释放 CUDA编程举例vector add Step1: Step2: CUDA编程举例vector add Step3: Step4: Step5: Step6: CUDA编程举例vector add Step7: 函数执行 位置: 可以调用的 设备: __device__ float DeviceFunc ( ) GPU GPU __global__ void KernelFunc ( ) GPU CPU __host__ float HostFunc ( ) CPU CPU 对比: 减少Warps分支 什么是Warps 一个block中的每32个线程组成一个warps 这是一种实现的方式,并不是CUDA编程模型中的一部分(在分配线程是可以对线程分配方式进行调整,起到程序优化的作用) Warps的执行单元是SM 在一个Warps中的threads的执行方式是SIMD 什么是Warps分支 在同一个Warps中的线程执行了不同的操作(比如if判断导致的分支) 产生分支之后再一个Warps中的分支会串行进行 过多的Warps分支会导致性能的下降 Warps分支举例 If(threadIdx.x 2) { } 在一个Warps中产生了两个不同的操作,thread0, 1, 2执行相同的操作,而剩下的threads执行另外的操作。 shared memory的运用 合理的运用shared memory在进行程序优化时有着非常重要的作用,shared memory相比于global memory有着非常明显的优势 访存延时非常小,基本可以忽略 可以随机的进行访问 一个block中的threads可以共享,其他的threads不能进行访问,保证了数据的安全性。 一个block中的threads可以进行同步,在很多需要线程同步的程序中非常有用。 shared memory也有这自己的其他的特点 存储的空间不大 只能一个block内的threads共享,在保证数据安全性的同时,在其他的thread需要用到数据时,需要更多的操作。 shared memory的运用 图像在进行卷积操作是可以运用shared memory进行优化 假如卷积核较大,在进行整个图像卷积时,相同的像素会访问多次。 图像可能较大,可以进行分快处理。 可减少线程访问global memory的次数 shared memory的运用 shared memory的运用 注意上图中if括号内表示的是把数据从global memory中读入少shared memory中,在读的过程中不同的block会读取不同的数据,分三个通道分别读取,在图像的边缘部分,进行卷积的时候回超出图像,所以需要在其他的部分置为0,也就是上图中的else部分,每个shared memory中存有计算小块图像卷积的所有信息。 shared memory的运用 CUDA流水线技术 CUDA stream 声明:cudaStream_t stream0; 创建:cudaStreamCreate(stream0); 销毁:cudaStreamDestroy(stream0); 优化策略 Kernel函数和内存拷贝通过并行流水线的方式进行 cudaMemcpyAsync(deviceInput, hostInput, sizef, cudaMemcpyHostToDevice, stream0); Kernel函数之间通过并行流水线的方式进行 KernelDimGrid, DimBlock, 0, stream0(deviceInput, deviceOutput, Size); 利用Nvidia的函数库 利用Nvidia函数库对程序进行加速 Nvidia公司提供了很多有关线性代数,快速傅里叶变换和矩阵求解等函数库,并且进行了深层次的优化,可以在CUDA编程时直接调用。 矩阵运算的函数库:cublas 快速傅里叶变换的函数库:cufft 有关深度学习的函数库:cudnn 稀疏矩阵库:cuSPARSE 举例(cublas) cublas中数据的存储方式为列存储,所以在编程时
您可能关注的文档
- 数据库课件:chap06事实发现.ppt
- 数控机床故障诊断与维修:第1章_常用低压电器.ppt
- 数学建模讲义:第二章 初等数学模型.ppt
- 数学建模讲义:第三讲 微分方程模型.ppt
- 数学建模讲义:第四讲 微分方程模型.ppt
- 数学建模讲义:第五讲 最优化模型.ppt
- 数学建模讲义:第一章 数学模型概论.ppt
- 数学建模讲义:最优化模型---非线性规划.ppt
- 数学建模讲义:最优化模型---无约束最优化.ppt
- 整形机在车身上的应用.ppt
- 中科曙光存储培训教程汇总:常见存储盘阵介绍及安装配置2017郭保志.ppt
- 中科曙光存储培训教程汇总:曙光DS600-G20磁盘阵列售中售后培训V1.1.ppt
- 电梯安装检查课件:电梯安装质量检验_Entry Quiz_CN.pptx
- 电梯安装检查课件:电梯安装质量检验_Exit Quiz_CN.pptx
- 电梯安装检查课件:电梯安装质量检验_Exit Quiz_CN Answer.pptx
- 电梯安装检查课件:电梯安装质量检验Entry_CN - Answer.pptx
- 电梯维保检查课件:Entry Quiz_CN - Answer.pptx
- 电梯维保检查课件:Exit Quiz_CN.pptx
- 电梯维保检查课件:Exit Quiz_CN - Answer.pptx
- 电梯维保检查课件:picture for Quality Workshop1.pptx
最近下载
- 开学第一课-初中开学第一课班会.ppt VIP
- 《民航市场营销》教案 项目4 民航市场营销的产品策略.docx
- 2.2基本不等式(第1课时)课件(共19张PPT)—高一上学期数学人教A版(2025)必修第一册(含音频+视频).pptx VIP
- 2023年北师大高一英语必修一知识点与练习.pdf VIP
- 2019年06216中外建筑史真题精选.pdf VIP
- 用待定系数法求二次函数的解析式公开课.ppt
- 酒店培训课件:酒店业发展历程.ppt
- 名人名言ppt完整版.ppt VIP
- 2025年新人教版八年级上册生物全册知识点(背诵版).pdf
- 人教版六年级上册数学2 位置与方向(二)课件.pptx VIP
文档评论(0)