CUDA编程
langb2014
这个作者很懒,什么都没留下…
展开
-
CUDA学习笔记一
本系列的CUDA转自:http://www.cnblogs.com/1024incn/tag/CUDA/版权归原作者所有,仅供学习。由于各种需求,所以略微了解学习一下gpu的CUDA怎么操作?CUDA简介CUDA是并行计算的平台和类C编程模型,我们能很容易的实现并行算法,就像写C代码一样。只要配备的NVIDIA GPU,就可以在许多设备上运行你的并行程序,无论是台式机、笔记本抑或平板电脑。熟悉C语...转载 2016-05-08 23:03:20 · 11734 阅读 · 3 评论 -
CUDA 6.0 统一寻址
本文版权归NVIDIA官网所有,仅供学习使用。借助CUDA 6,NVIDIA推出了CUDA平台统一存储器历史上最引人注目的编程模型改进之一。在当今典型的PC或集群节点中,CPU和GPU的存储器在物理上是独立的,并且由PCI-Express总线分开。在CUDA 6之前,程序员正是如此看待事物。在CPU和GPU之间共享的数据必须分配到两个存储器中,并由程序明确地在它们之间复制。这给CUDA程序转载 2018-02-06 11:01:11 · 529 阅读 · 0 评论 -
CUDA Samples学习二(核函数调用)
官网学习地址:here按照GPU高性能编程cuda实战进行学习。原创 2016-09-01 21:47:32 · 3896 阅读 · 4 评论 -
CUDA Samples学习一(基础准备)
我的电脑环境:1、VS20132、显卡NVIDIA GTX 750Ti3、window7系统首先安装显卡驱动去NVIDIA官网,路径是默认路径。下面有两个需要找到的文件夹,一个是cuda学习的doc文档说明,一个是cuda的samples的codes。如下图:基本的必备资料已经有了。打开VS2013创建工程:然后进去之后会有一个.cu格式的文件:原创 2016-09-01 20:36:50 · 16565 阅读 · 1 评论 -
Unsupported gpu architecture 'compute_11'解决方法
环境背景: 由于项目需要,在ubuntu service 14.04 下搭建 OpenCL +OpenCV 环境, 前期安装了 CUDA7.0 ,GPU为 NVIDIA TITAN 。问题描述: 按照网上教程安装OpenCV ,在make 时出现错误,错误提示如下:nvcc fatal : Unsupported gpu architecture 'compute_11'转载 2016-06-13 16:30:42 · 8343 阅读 · 0 评论 -
CUDA学习笔记二
前言线程的组织形式对程序的性能影响是至关重要的,本篇博文主要以下面一种情况来介绍线程组织形式:2D grid 2D block线程索引一般,一个矩阵以线性存储在global memory中的,并以行来实现线性: 在kernel里,线程的唯一索引非常有用,为了确定一个线程的索引,我们以2D为例:线程和block索引矩阵中元素坐标线性global memor转载 2016-05-08 23:13:10 · 3233 阅读 · 2 评论 -
CUDA学习笔记十三
CONSTANT MEMORYconstant Memory对于device来说只读但是对于host是可读可写。constant Memory和global Memory一样都位于DRAM,并且有一个独立的on-chip cache,比直接从constant Memory读取要快得多。每个SM上constant Memory大小限制为64KB。constant Memory的获取转载 2016-05-09 00:04:16 · 5086 阅读 · 0 评论 -
CUDA学习笔记十二
CUDA SHARED MEMORYshared memory在之前的博文有些介绍,这部分会专门讲解其内容。在global Memory部分,数据对齐和连续是很重要的话题,当使用L1的时候,对齐问题可以忽略,但是非连续的获取内存依然会降低性能。依赖于算法本质,某些情况下,非连续访问是不可避免的。使用shared memory是另一种提高性能的方式。GPU上的memory有两种:转载 2016-05-09 00:03:21 · 6326 阅读 · 0 评论 -
CUDA学习笔记十一
CUDA Libraries简介 上图是CUDA 库的位置,本文简要介绍cuSPARSE、cuBLAS、cuFFT和cuRAND,之后会介绍OpenACC。cuSPARSE线性代数库,主要针对稀疏矩阵之类的。cuBLAS是CUDA标准的线代库,不过没有专门针对稀疏矩阵的操作。cuFFT傅里叶变换cuRAND随机数CUDA库和CPU编程所用到的库没有什么区别,都是一系列接转载 2016-05-08 23:59:51 · 8897 阅读 · 0 评论 -
CUDA学习笔记十
Memory Access Patterns大部分device一开始从global Memory获取数据,而且,大部分GPU应用表现会被带宽限制。因此最大化应用对global Memory带宽的使用时获取高性能的第一步。也就是说,global Memory的使用就没调节好,其它的优化方案也获取不到什么大效果,下面的内容会涉及到不少L1的知识,这部分了解下就好,L1在Maxwell之后就转载 2016-05-08 23:56:27 · 3978 阅读 · 3 评论 -
CUDA学习笔记九
Memorykernel性能高低是不能单纯的从warp的执行上来解释的。比如之前博文涉及到的,将block的维度设置为warp大小的一半会导致load efficiency降低,这个问题无法用warp的调度或者并行性来解释。根本原因是获取global memory的方式很差劲。众所周知,memory的操作在讲求效率的语言中占有极重的地位。low-latency和high-bandw转载 2016-05-08 23:47:10 · 17076 阅读 · 6 评论 -
CUDA学习笔记八
Dynamic Parallelism到目前为止,所有kernel都是在host端调用,GPU的工作完全在CPU的控制下。CUDA Dynamic Parallelism允许GPU kernel在device端创建调用。Dynamic Parallelism使递归更容易实现和理解,由于启动的配置可以由device上的thread在运行时决定,这也减少了host和device之间传递数据转载 2016-05-08 23:43:16 · 4652 阅读 · 0 评论 -
CUDA学习笔记七
这节是关于Branch Divergence and Unrolling Loop。Avoiding Branch Divergence有时,控制流依赖于thread索引。同一个warp中,一个条件分支可能导致很差的性能。通过重新组织数据获取模式可以减少或避免warp divergence(该问题的解释请查看warp解析篇)。The Parallel Reduction Probl转载 2016-05-08 23:38:36 · 3672 阅读 · 1 评论 -
CUDA学习笔记六
Exposing Parallelism这部分主要介绍并行分析,涉及掌握nvprof的几个metric参数,具体的这些调节为什么会影响性能会在后续博文解释。代码准备下面是我们的kernel函数sumMatrixOnGPUD:__global__ void sumMatrixOnGPU2D(float *A, float *B, float *C, int NX, int N转载 2016-05-08 23:28:46 · 2082 阅读 · 1 评论 -
CUDA学习笔记五
Warp逻辑上,所有thread是并行的,但是,从硬件的角度来说,实际上并不是所有的thread能够在同一时刻执行,接下来我们将解释有关warp的一些本质。Warps and Thread Blockswarp是SM的基本执行单元。一个warp包含32个并行thread,这32个thread执行于SMIT模式。也就是说所有thread执行同一条指令,并且每个thread会使用各转载 2016-05-08 23:24:52 · 6805 阅读 · 2 评论 -
CUDA学习笔记四
GPU架构SM(Streaming Multiprocessors)是GPU架构中非常重要的部分,GPU硬件的并行性就是由SM决定的。以Fermi架构为例,其包含以下主要组成部分:CUDA coresShared Memory/L1CacheRegister FileLoad/Store UnitsSpecial Function UnitsWarp Scheduler转载 2016-05-08 23:21:51 · 5721 阅读 · 0 评论 -
CUDA学习笔记三
device管理NVIDIA提供了集中凡是来查询和管理GPU device,掌握GPU信息查询很重要,因为这可以帮助你设置kernel的执行配置。本博文将主要介绍下面两方面内容:CUDA runtime API functionNVIDIA系统管理命令行使用runtime API来查询GPU信息你可以使用下面的function来查询所有关于GPU device 的信转载 2016-05-08 23:19:58 · 7172 阅读 · 0 评论 -
window10下CUDA9安装和vs2015配置
环境是window10下cuda9和vs2015配置的,教程按照下面进行配置的,如果出现link2019错误,是因为lib库问题。lib库需要将cuda_path的lib库全部添加进去以及lib的名字。版权归原作者所有,配置过程仅供参考。1.VS2013 + CUDA7.5 安装和配置转载地址:http://blog.csdn.net/u011314529/article/deta转载 2018-02-20 10:13:22 · 12669 阅读 · 3 评论