
CUDA学习笔记
文章平均质量分 83
Bingjian-Gong
国内在校本科生
展开
-
CUDA学习笔记(2) 第一个CUDA程序
首先,我们用VisualStudio创建了CUDA的工程后,会出现一个数组对应位置元素求和的模版代码,我们可以先借此了解CUDA工程的主体结构,然后将他们全都删掉,从头开始练习。 假设我们现在要创建384个线程,并要知道他们具体属于哪个线程束(Warp)、线程块(Block),线程序号是多少。 在 main() 函数中,我主要执行以下几个步骤: 1. 读取GPU硬件信息。 2. 计算。原创 2017-12-10 12:44:36 · 1605 阅读 · 0 评论 -
CUDA学习笔记(3) NVRTC编译库
注意,NVRTC可以高速地编译代码,但是NVRTC并不支持C++,大型工程尽量避免使用。 我们在编译CUDA工程时,会发现比C++代码的编译慢上许多,这是由于NVCC(CUDA/C++编译器)造成的,它可以兼容地编译C++代码与CUDA-C代码,但是十分低效。 我们可以用CUDA学习笔记(1)中的代码实验一下,对“kernel.cu”右键→属性,可以看到编译器是“CUDA C/C+...原创 2017-12-13 12:31:38 · 6119 阅读 · 0 评论 -
CUDA学习笔记(5) 原子操作
原子操作必须**连贯地执行**,中间不能插入任何其他操作。原创 2017-12-21 13:57:49 · 11406 阅读 · 4 评论 -
CUDA学习笔记(6) 共享内存与全局内存
共享内存(Shared memory)是位于每个流处理器组(SM)中的高速内存空间,主要作用是存放一个线程块(Block)中所有线程都会频繁访问的数据。流处理器(SP)访问它的速度仅比寄存器(Register)慢,它的速度远比全局显存快。但是他也是相当宝贵的资源,一般只有几十KByte, 这里以我电脑上的“Quadro K620”为例: 硬件资源 参数 流处理器(SP) 128 *原创 2017-12-22 13:07:36 · 15131 阅读 · 4 评论 -
CUDA学习笔记(4) CUDA计时函数
用clock()精确地记录核函数运行的时间可以让我们直观地了解核函数代码的运行效率。原创 2017-12-17 19:09:11 · 4909 阅读 · 2 评论 -
CUDA学习笔记(1) 硬件简介
一、环境配置与安装Linux下安装请参考Ubuntu12.04配置NVIDIA cuda5.5经验帖 Windows下安装请参考CUDA在Windows的安装和使用 我是在Windows下安装的CUDA,使用Visual Studio 2013编程。安装过程是只用点确定的傻瓜式安装,并且会自动给你添加环境变量。安装完成后,Visual Studio在新建项目的时候会多出来一个CUDA的工程选原创 2017-12-03 19:43:47 · 1333 阅读 · 0 评论 -
CUDA学习笔记(7) GPU内存分级
在NVIDIA的GPU中,内存(GPU的内存)被分为了**全局内存(Global memory)、本地内存(Local memory)、共享内存(Shared memory)、寄存器内存(Register memory)、常量内存(Constant memory)、纹理内存(Texture memory)**六大类。原创 2017-12-25 13:38:34 · 6269 阅读 · 0 评论 -
CUDA经验:NVCC编译器过度优化(Reduce算法)
在GPU中Reduce算法是一种快速归约数据的方法,具体内容单击此处跳转。在CUDA实现的过程中,如果处理不当,会导致Debug版本与Release版本结果不一致的现象,这是由于Debug下不会对代码做优化,而Release下“过度优化”了代码,导致程序并没有按照我们的原意执行,最终结果错误。 简单的讲,如上图所示,若要对8个元素求最小值,那么只需要先做对(4,5)、(6,2)、(3...原创 2018-08-12 21:19:49 · 2437 阅读 · 0 评论