Abstract: 本文介绍CUDA编程模型的简要结构,包括写一个简单的可执行的CUDA程序,一个正确的CUDA核函数,以及相应的调整设置内存,线程来正确的运行程序。

Keywords: CUDA编程模型,CUDA编程结构,内存管理,线程管理,CUDA核函数,CUDA错误处理

开篇废话

过年了,祝大家新年快乐,新年希望自己学习的东西能都学会



这是一只不爱学习的狗,总看电视!

编程模型就是告诉我们如何写CUDA程序,如果做过C开发的同学或者其他开发的同学都知道做个完整的项目不只是写代码,还有需求分析,调试,优化,部署等一些列步骤。CUDA平台也提供了着一些列的工具供我们使用,我们这一章主要就是讲解这些工具怎么用,如何编写调试CUDA程序。以及编写两个矩阵运算有关的CUDA应用,以供大家把玩。

CUDA编程模型概述

CUDA编程模型为应用和硬件设备之间的桥梁,所以CUDA C是编译型语言,不是解释型语言,OpenCL就有点类似于解释型语言,通过编译器和链接,给操作系统执行(操作系统包括GPU在内的系统),下面的结构图片能形象的表现他们之间的关系:

其中Communication Abstraction是编程模型和编译器,库函数之间的分界线。

可能大家还不太明白编程模型是啥,编程模型可以理解为,我们要用到的语法,内存结构,线程结构等这些我们写程序时我们自己控制的部分,这些部分控制了异构计算设备的工作模式,都是属于编程模型。

GPU中大致可以分为:

  • 核函数
  • 内存管理
  • 线程管理

等几个关键部分。

以上这些理论同时也适用于其他非CPU+GPU异构的组合。

下面我们会说两个我们GPU架构下特有几个功能:

  • 通过组织层次结构在GPU上组织线程的方法
  • 通过组织层次结构在GPU上组织内存的方法

也就是对内存和线程的控制将伴随我们写完前十几篇。

从宏观上我们可以从以下几个环节完成CUDA应用开发:

  1. 领域层
  2. 逻辑层
  3. 硬件层

第一步就是在领域层(也就是你所要解决问题的条件)分析数据和函数,以便在并行运行环境中能正确,高效地解决问题。

当分析设计完程序就进入了编程阶段,我们关注点应转向如何组织并发进程,这个阶段要从逻辑层面思考。

CUDA模型主要的一个功能就是线程层结构抽象的概念,以允许控制线程行为。这个抽象为并行变成提供了良好的可扩展性(这个扩展性后面有提到,就是一个CUDA程序可以在不同的GPU机器上运行,即使计算能力不同)。

在硬件层上,通过理解线程如何映射到机器上,能充分帮助我们提高性能。

CUDA编程结构

完整内容参考https://face2ai.com/CUDA-F-2-0-CUDA编程模型概述1/

最新文章

  1. 【重要更新】Senparc.Weixin.Open v1.5.1
  2. ASP.NET中的Image和ImageButton控件
  3. SalesForce 入门
  4. 联系旭日150安装CentOS5.X版本手记
  5. MySQL无视密码进入Server
  6. jQuery layer[页面弹出框]
  7. 【风马一族_windom】 批量修改相同文件类型的后缀
  8. java 连接数据库mysql的方法
  9. Android Studio中自己定义快捷输入块
  10. DataSet与DataAdapter的关系
  11. 利用fiddler录制脚本
  12. 航频卫士APP截图
  13. BFG
  14. HDU 1004 MAP【STL__map_的应用】
  15. sololearn的c++学习记录_4m11d
  16. 在windows上安装wamp时遇到apache无法启动,图标为橙色
  17. 【CF1141E】Superhero Battle
  18. iOS调用QQ发起临时会话
  19. 【CSS3】transition过渡和animation动画
  20. JavaScript 浏览器对象模型 (BOM)

热门文章

  1. Codeforces 1240A. Save the Nature
  2. C C语言中 *.c和*.h文件的区别!
  3. aspose导出数据
  4. python 获取当前目录下的文件目录和文件名
  5. vue项目打包文件配置(vue-clli3)
  6. 2.Struts2-Action
  7. django概念理解
  8. malloc/calloc/realloc/alloca内存分配函数
  9. TP-LINK WR941N路由器研究
  10. task_struct源码解读