CUDA实现
文章平均质量分 63
hackairM
0001 1000 0001 0000 0001 0011 0101 1000 0100 0101 0101
展开
-
CUDA学习--矩阵乘法的并行运算
1. CUDA学习步骤CPU实现 a*b = c 的矩阵乘法(矩阵尺寸是n*m的,n和m大于1000)下载 https://developer.nvidia.com/cuda-downloads,安装好cuda将cpu代码移植到cuda。将CPU值传入GPU,使用cuda计算,与cpu结果对比。优化思路1:将矩阵分块进行计算优化思路2:使用share memory进行优化优化思路3:将数原创 2016-08-24 22:28:26 · 18631 阅读 · 6 评论 -
CUDA学习--页锁定主机内存
1. 页锁定主机内存除了通过cudaMalloc()在GPU上分配内存,以及通过标准的C函数malloc()在主机上分配内存,CUDA运行时还提供了自己独有的机制来分配主机内存:cudaHostAlloc()。C函数malloc()将分配标准的,可分页的主机内存。而cudaHostAlloc()将分配页锁定的主机内存。页锁定的主机内存也称为固定内存或不可分页内存,它的重要属性就是:操作系统原创 2016-09-06 19:04:26 · 3263 阅读 · 0 评论 -
CUDA学习--内存处理之概述(1)
1. 高速缓存高速缓存的最大速度与缓存的大小成反比关系。一级缓存是最快的,但他的大小一般限制在16k、32k或者64k。通常每个CPU核会分配一个单独的一级缓存。二级缓存相对而言慢一些,但他更大,通常有256k~512k。二级缓存或者三级缓存一般在处理器的核之间是共享的,或者作为连接于特定处理器核的独立缓存来维护。与CPU不同,GPU主要依赖基于程序员托管的缓存或者共享内存区。在费米架构的GPU实现原创 2016-09-23 21:18:46 · 1252 阅读 · 0 评论 -
CUDA学习--内存处理之寄存器(2)
1. 寄存器GPU上一个SM可以看成一个多线程的CPU核。一般CPU拥有二、四、八个核。但一个GPU却有N个SM核。但这里需要注意的是,所有的工作都是有SM上的SP(流处理器)处理的。每个核上SP数目不同,因此每个核支持的线程数目也会有很大的不同。事实上,一个GPU设备上的所有SM中活跃的线程数目通常数以万计。与CPU不同,GPU的每个SM(流多处理器)有上千个寄存器。CPU与GPU架构的一个主要区原创 2016-09-24 11:16:04 · 4080 阅读 · 0 评论 -
CUDA学习--图形互操作(CUDA与OpenGL的交互)
1. 为了说明OpenGL与CUDA C之间的互操作机制,我们将编写一个包含两个步骤的应用程序。第一个步骤是使用CUDA C核函数来生成图像数据。在第二步骤中,应用程序将这个数据传递给OpenGL驱动程序进行渲染。2.首先,我们要包含OpenGL和CUDA的头文件从而确保定义了正确的函数和枚举类型。我们还定义了渲染窗口的大小。#include "cuda_runtime.h"#inc原创 2016-08-31 20:22:47 · 4924 阅读 · 1 评论 -
CUDA学习--内存处理之常量内存(4)
1.常量内存常量内存,顾名思义,它是只读内存。这种类型的内存要么是在编译时声明为只读内存,要么是在运行时通过主机端定义为只读内存。常量只是从GPU内存的角度而言。在编译时声明一块常量内存,需要用到const关键字。 常量内存其实只是全局内存的一种虚拟地址形式,并没有特殊保留的常量内存块。常量内存有两个特性,一个是高速缓存,另一个是它支持将单个值广播到线程束中的每个线程。但要注意的是,对于那些数据不原创 2016-10-03 18:58:08 · 5146 阅读 · 0 评论 -
CUDA学习--CUDA流
1. CUDA流介绍CUDA流在加速应用程序方面起着重要的作用。CUDA流表示一个GPU操作队列,并且该队列中的操作将以指定的顺序执行。我们可以在流中添加一些操作,如核函数启动,内存复制等。将这些操作添加到流的顺序也就是他们的执行顺序。你可以将每个流视为GPU上的一个任务,并且这些任务可以并行执行。2. CUDA流的使用我们先通过在应用程序中使用单个流来说明流的用法。1) 首先,选原创 2016-09-06 20:59:21 · 18691 阅读 · 13 评论 -
CUDA学习--内存处理之全局内存(5)
1. 全局内存GPU的全局内存之所以是全局的,主要是因为GPU与CPU都可以对它进行写操作。CPU主机端处理器可以通过以下三种方式对GPU上的内存进行访问:显示地阻塞传输;显示地非阻塞传输;隐式地使用零内存复制。通常的执行模型是CPU将一个数据块传输到GPU,GPU内核对其进行处理,然后再由CPU将数据块传输回主机端内存中。比较高级的模型是使用流(参考CUDA学习–CUDA流)将数据传输和内原创 2016-10-03 22:27:13 · 7519 阅读 · 0 评论