CUDA编程
文章平均质量分 70
ZhangJunior
苦练搬砖
展开
-
CUDA编程——Memory Coalescing
为了利用总线带宽,GPU通常把多个线程的访存合并到较少的内存请求中去。本文主要介绍,GPU总线如何访问内存,以及bank conflicts。原创 2016-01-18 18:05:03 · 5171 阅读 · 0 评论 -
CUDA编程——Mars:MapReduce on GPU
CUDA编程——Mars:MapReduce on GPUGPU加速机器学习 GPU是一种SIMT(单指令多线程)体系结构,即多个线程执行同一个指令,而每个线程操作的数据不同。这种结构令GPU天生具有大规模计算能力。GPU出色的浮点计算性能特别提高了深度学习两大关键活动:分类和卷积的性能,同时又达到所需的精准度。深度学习需要很高的内在并行度、大量的浮点计算能力以及矩阵预算,而GPU可以提供这些能力原创 2016-01-19 11:31:21 · 4996 阅读 · 0 评论 -
CUDA编程——Warp Divergence
Warp 回顾一下CUDA的线程层次 CUDA编程中,warp是调度和运行的基本单元,目前,每个warp包含32个threads。软件逻辑上,程序员的所有thread是并行的,但是,从硬件的角度来说,实际上并不是所有的thread能够在同一时刻执行。 例如:一个block 有128个thread,那么可以分为warp0~warp3,SM同时只执行一个warp,其他warp以就绪,挂起等状态原创 2016-01-19 13:17:35 · 8972 阅读 · 3 评论 -
CUDA编程——简介
CUDA编程——简介参考了很多大神的内容,并非完全原创,只是为了查漏补缺,记录自己的学习过程。个人水平有限,错误难免,欢迎讨论。原创 2016-01-18 18:49:52 · 4663 阅读 · 1 评论 -
CUDA编程——zero copy
零复制 zero copy(零复制)是一种特殊形式的内存映射,它允许你将host内存直接映射到设备内存空间上。其实就是设备可以通过直接内存访问(direct memory access,DMA)方式来访问主机的锁页内存。 锁页主机内存 现代操作系统都支持虚拟内存,操作系统实现虚拟内存的主要方法就是通过分页机制。操作系统将内存中暂时不使用的内容换出到外存(硬盘等大容量存储)上,从而腾出空间存原创 2016-02-04 13:40:38 · 8187 阅读 · 1 评论 -
CUDA编程——GPU架构,由sp,sm,thread,block,grid,warp说起
掌握部分硬件知识,有助于程序员编写更好的CUDA程序,提升CUDA程序性能,本文目的是理清sp,sm,thread,block,grid,warp之间的关系。由于作者能力有限,难免有疏漏,肯定读者批评指正。原创 2016-01-19 10:04:36 · 55947 阅读 · 9 评论 -
CUDA编程中 extern "c"用法解析
简介 extern “c”并不是什么新鲜的东西,但是最在编译CUDA程序时候出现了“error LNK2019,未定义的符号”的问题。这不用说了,链接器说找不到,那就是找不到咯。但是why?我的源码中明明已经有了定义。 后来发现是extern “c”的问题。extern “C” C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序原创 2016-09-29 18:29:07 · 5619 阅读 · 0 评论