得到正确答案:
获得正确答案显然是所有计算的主要目标。 在并行系统上,可能会遇到传统的面向串行编程通常不会遇到的困难。 其中包括线程问题,由于计算浮点值的方式而导致的意外值,以及由于CPU和GPU处理器运行方式的不同而带来的挑战。 本章检查可能影响返回数据正确性的问题并指出适当的解决方案。
验证:
参考比较:
对任何现有程序进行修改的正确性验证的关键方面是建立一些机制,从而可以将来自代表性输入的先前已知的良好参考输出与新结果进行比较。 在做出每个更改后,确保结果匹配使用适用于特定算法的任何标准。 有些人会期望逐位相同的结果,这并不总是可能的,特别是在涉及浮点算术的情况下; 有关数字精度的数值精度和精度。 对于其他算法,如果实现在某个小的epsilon中与参考匹配,则可以认为它们是正确的。
请注意,用于验证数值结果的过程也可以轻松扩展以验证性能结果。 我们希望确保我们所做的每一项改变都是正确的,并且改善了性能(以及改善了多少)。 经常检查这些东西是我们周期性APOD过程的一个组成部分,这将有助于确保我们尽快达到预期结果。
单元测试:
上述参考比较的一个有用的对应部分是以这样一种方式构造代码本身,即在单元级别上容易验证。 例如,我们可以将我们的CUDA内核编写为许多简短的__device__函数的集合,而不是一个庞大的单一__global__函数; 每个设备功能都可以独立测试,然后将它们连接在一起。
例如,除了实际的计算之外,许多内核都具有用于访问存储器的复杂寻址逻辑。 如果我们在引入大量计算之前单独验证我们的寻址逻辑,那么这将简化后面的调试工作。 (请注意,CUDA编译器认为任何设备代码都不会将全局内存写入全局内存作为需要消除的死代码,所以我们必须至少将全局内存写入某些内容,以便成功应用我们的寻址逻辑 这个策略。)
更进一步,如果大多数函数被定义为__host__ __device__而不仅仅是__device__函数,那么这些函数可以在CPU和GPU上进行测试,从而增加了我们对函数是正确的信心,并且不会有任何意外 结果的差异。 如果有差异,那么这些差异会很早就看出来,并且可以在一个简单的功能的背景下理解。
作为一种有用的副作用,如果我们希望在应用程序中包含CPU和GPU执行路径,则此策略将允许我们采用一种方法来减少代码重复:如果我们的CUDA内核的大部分工作都在__host__ __device__函数中完成,那么我们 可以轻松地从主机代码和设备代码中调用这些功能而不会重复。

CUDA实践指南(六)相关推荐

  1. 世纪前线网络质量测试工具 是什么_企业网络安全最佳实践指南(六)

    本系列文章共分为8篇,主要分享作者自身在企业网络安全建设和运维保障过程中的经验总结,包括网络安全管理.网络安全架构.网络安全技术以及安全实践等,力求全方位阐述企业在网路安全中的方方面面,为企业网络安全 ...

  2. AlexeyAB DarkNet YOLOv3框架解析与应用实践(六)

    AlexeyAB DarkNet YOLOv3框架解析与应用实践(六) Tiny Darknet 听过很多人谈论SqueezeNet. SqueezeNet很酷,但它只是优化参数计数.当大多数高质量的 ...

  3. PMBOK(项目管理实践指南)绝不是PMP考试的指定教材,看完你就知道

    PMP认证考试 不是考PMBOK指南吗? PMI关于PMP考试参考清单的介绍 以上,PMBOK(项目管理实践指南)绝不是PMP考试的指定教材.PMI综合全世界管理者和从业者反馈,以满足当今行业.组织和 ...

  4. 【信息安全】信息安全风险评估-实践指南

    自从上一次的文章后,有三个月的时候没有对工作总结了:对,三个月的事件正好遇上了互联网的大裁员......一直忙于找工作,现在总算安稳下来,根据最近一段时间对于信息安全风险评估的具体实践,来写一份实践指 ...

  5. 《渗透测试实践指南 必知必会的工具与方法 (原书第2版)》读书摘录

    ----------------------------------------------------------------------------分割线--------------------- ...

  6. 《DevOps实践指南》——阅读笔记(长文告警)

    DevOps实践指南 <DevOps实践指南>简介 Part 1--DevOps介绍 简史 第1章 敏捷.持续交付和三步法 第2章 第一步:流动原则 第3章 第二步:反馈原则 第4章 第三 ...

  7. 《智能风控实践指南》读书笔记

    前两天大概读了一下<智能风控实践指南-从模型.特征到决策>这本书,说实话,书的内容超出了我原有的预期,还是有不少对我有所启发的地方.我还去看了作者蒋宏老师的视频号,其中他提到自己最早是做咨 ...

  8. 《数据安全能力成熟度模型》实践指南02:数据采集管理

    2019年8月30日,<信息安全技术数据安全能力成熟度模型>(GB/T 37988-2019)简称DSMM(Data Security Maturity Model)正式成为国标对外发布, ...

  9. 《OpenGL ES应用开发实践指南:Android卷》—— 2.3 定义空气曲棍球桌子的结构...

    本节书摘来自华章出版社<OpenGL ES应用开发实践指南:Android卷>一 书中的第2章,第2.3节,作者:(美)Kevin Brothaler ,更多章节内容可以访问云栖社区&qu ...

最新文章

  1. Spring源码分析【5】-Spring MVC处理流程
  2. 微信小程序开发(2)_data属性
  3. 十四、H.264的变换编码(一)——矩阵运算与正交变换基本概念
  4. 2021校招 | 交通银行-IT类编程题
  5. jigsaw kaggle_使用Project Jigsaw的JDK 9 Early Access上的Eclipse IDE
  6. 怎么ie取消要打开或保存来自_取消认证后,发票抵扣就这么简单!
  7. spring cloud微服务之间调用Feign
  8. 串级pid算法c语言实现,【开源】分享一个经典的串级PID算法,附源代码
  9. Oracle数据库学习思维导图
  10. JAVA 调用NetDraw((*^__^*) 嘻嘻……)
  11. linux dstat,使用Dstat来进行Linux综合性能诊断
  12. 非常6+1禁播的片段,把李咏笑趴下的经典瞬间:
  13. 从OPPO Finder看手机产品的差异化体现
  14. 人群计数:人群计数研究综述(2018.11)
  15. 南京logo设计,企业标志商标VI设计
  16. 论文代码Chrome神器:去谷歌学术搜到文章,代码链接就能自动展示-1
  17. 基于java web的学生考勤带请假管理系统-计算机毕业设计
  18. luoguP1456 Monkey King
  19. FPGA — Overview
  20. 新概念二册 Lesson 31 Success story成功者的故事 (used to do + it 做形式主语)

热门文章

  1. php查询socket数据包头,php 查询数组值php中关于socket的系列函数总结
  2. python server.py_python manage.py runserver报错
  3. localdate计算相差天数_干掉 Date,LocalDate 真香!
  4. matlab子函数调用变量,matlab中,怎么样用function自定义函数调用另一个函数名为输入?...
  5. 连接maven_Maven系列——超简单入门级教程
  6. 计算机有哪两种绘图,能被计算机接受的数字图像有哪两种?它们分别由什么构成?...
  7. php父类继承子类_php有多态吗 多态都有什么好处?理解好多态往往能事半功倍...
  8. 计算机组装维修期末考试题,2014计算机组装维修期末考试题(1)
  9. 4g能达到多少兆_“吃鸡”无敌战神以后,还有其他段位存在吗?最高能达到多少星?...
  10. dwcs6怎么添加搜索框_一文教会你微信小程序搜索怎么用、怎么优化