![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CUDA编程
文章平均质量分 72
nineheaded_bird
这个作者很懒,什么都没留下…
展开
-
【CUDA编程】最常用的Bug Fixing方法
今天,西安下雪了,2020年的第一场雪,比往年来的早些。依稀记得,2010年刚来西安上学时,第一场雪是12月24日,由于是在平安夜,所以还能记得,一晃都十年了……在CUDA编程过程中,最易出错的部分就是内存的相关操作。时常出现的问题是:程序能够运行,但是其中的Kernel函数未能成功运行。这使得排错相对传统的C语言编程复杂。好在我们依旧可以使用最传统的方法:使用printf函数打印输出进行排查Bug。但是,printf函数在CUDA编程过程中,存在局限性。具体地说,运行在CPU上的代码和运行在GPU上的代原创 2020-11-22 20:58:07 · 666 阅读 · 2 评论 -
【CUDA编程】随机数生成
随机数在一般编程中都会涉及,特别是在仿真过程中。我之前有几篇文章介绍了如何通过CPU函数调用产生随机数,这里我介绍如何在CUDA中产生随机数。在CUDA中,主要使用cuRAND库中的函数来产生随机数,其链接文档为https://docs.nvidia.com/cuda/curand/index.html 。通过文档可知,cuRAND库提供两种方式的随机数生成:host与device。关于具体如何生成随机数,我们可参考文档中的Host API Example 和Device API Examples。其原创 2020-10-24 22:05:55 · 1745 阅读 · 0 评论 -
【CUDA编程】CPU计时与GPU计时
使用CUDA进行编程,主要目的就是时间上加速。为此,如何计时必不可少。在CUDA中,我们可以使用CPU计时函数和GPU计时函数。对于CPU计时,我们在之前的文章(精确系统计时:秒、毫秒、微秒)中已经介绍在一般的C/C++编程中的计时方法。下面我们介绍在CUDA中如何计时:CPU计时CUDA中的核函数是异步执行的,即调用核函数后(而非等待其运行结束)就继续执行后面的语句。因此,使用CPU计时的时候,我们需要加上同步函数,这样才能得到核函数的运行时间,否则就是调用时间。下面给出一个简单的实例,由于代码简单原创 2020-10-18 21:28:37 · 3301 阅读 · 1 评论 -
【CUDA编程】初始配置及一个简单实例
在去年写的一篇文章《Win10 + VS2017 + CUDA10.1 + CPLEX12.9 配置》中,我们已经介绍了如何安装CUDA和使用VS作为编程环境。一晃半年过去了,现在准备用GPU做点东西,投个会议。由于新换了电脑,我又重新安装了运行环境,结果遇到了如下语法问题:C语言常用的一些头文件都无法打开,如图1:在调用核函数时, 也会显示语法有错(但是可以编译运行),如图2:解决办法:对于问题1,主要原因是VS在安装时,有些文件没有进行勾选安装。此时,我们需要使用Visual Stu原创 2020-07-28 23:07:53 · 760 阅读 · 1 评论