自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 CUDA_主机内存

主机内存系统中被CPU访问的内存,分为两种类型:可分页内存(pageable memory,一般应用中默认使用)和页锁定内存(page-locked或者pinned)。可分页内存即为通过操作系统api(malloc(), new())分配的存储器空间;而页锁定内存始终不会被分配到低速的虚拟内存中,能够保证存在于物理内存中,并且能够通过DMA加速与设备端的通信。为了让硬件使用DMA,操作系统允许主机内存进行页锁定,并且因为性能原因,CUDA包含了开发者使用这些操作系统工具的API。页锁定后的且映射为cu

2020-11-09 22:59:39 821

原创 CUDA_获取指定设备

请求计算能力2.0设备(费米架构):struct cudaDeviceProp device_prop;int chosen_device;memeset(device_prop, 0, sizeof(cudaDeviceProp));device_prop.major = 2;device_prop.minor = 0;if(cudaChooseDevice(&chosen_device, device_prop) != cudaErrorInvalidValue){ CUDA

2020-11-09 22:58:45 353

原创 CUDA_共享内存

typora-copy-images-to: images共享内存简介共享内存时受用户控制的一级缓存,共享存储器为片内高速存储器,是一块可以被同一block中的所有线程访问的可读写存储器。访问共享存储器的速度几乎和访问寄存器一样快(相对而言,不是十分严谨的说法,真实情况是,共享内存的延时极低,大约1.5T/s的带宽,远高于全局内存的190G/s,此速度是寄存器的1/10),是实现线程间通信的延迟最小的方法。共享存储器可以用于实现多种功能,如果用于保存共用的计数器或者block的公用结果。计算能力1..

2020-11-09 22:57:16 498 1

原创 CUDA_常量内存

常量内存简介常量内存其实只是全局内存的一种虚拟地址形式,并没有特殊保留的常量内存块。常量内存有两个特性:高速缓存,拥有缓存加速;支持将单个值广播到线程束中的每个线程常量内存的大小限定为64K,每个SM拥有8KB的常数存储器缓存,在编译期时声明一块常量内存,需要用到__constant__关键字,例如__constant__ float my_array[1024] = { 0.0F, 1.0F, 1.3F, ...};不同于c/c++中的const常量,cuda中常量内存在声明后是可以修改

2020-11-09 22:54:37 725

原创 CUDA_全局内存及访问优化

全局内存GPU全局内存,CPU和GPU都可以进行读写操作。任何设备都可以通过PCI-E总线对其进行访问,GPU之间不通过CPU,直接将数据从一块GPU卡上的数据传输到另一块GPU上。点对点的特性实在DUDA4.x SDK中引入。只对特定平台进行支持(特斯拉硬件通过TCC驱动模型能够支持windows7和windows Vista平台,对于linux或windowsXP平台,消费机GPU卡和特斯拉卡都支持)。CPU主机端处理器可以通过以下三种方式对GPU上的内存进行访问:显式地阻塞传输;显式地非阻

2020-11-09 22:53:44 1260

原创 CUDA_寄存器和局部存储器

寄存器GPU片上高速缓存器,基本单元时寄存器文件,每个寄存器文件大小为32bit。计算能力1.0/1.1版本硬件中,每个SM中寄存器文件数量为8192;而在1.2/1.3硬件中,每个SM中寄存器文件数量为16384.一般情况下,内核线程中的简单局部变量都在寄存器存储器中。局部存储器对于每个线程,局部存储器也是私有的,如果寄存器被消耗完,数据将被存储在局部存储其中。如果每个线程使用了过多的寄存器,或声明了大型结构体或数组,或者编译器无法确定数组的大小,线程的私有数据就有可能会被分配到local me

2020-11-09 22:52:21 727

原创 CUDA_存储器模型

CUDA有自己的存储器模型,线程在执行时将会访问到处于多个不同存储器空间中的数据。cuda应用程序开发中涉及8中存储器,层次结果如图所示:每一个线程拥有自己的私有存储器寄存器和局部存储器;每一个线程块拥有一块共享存储器(shared_memory);最后,grid中所有的线程都可以访问同一块全局存储器(global memory)。除此之外,还有两种可以被所有线程访问的只读存储器:常数存储器(constant memory)和纹理存储器(Texture memory),他们分别为不同的应用进行了优化..

2020-11-09 22:50:38 273 1

原创 CUDA_常用概念及注意点

线程的索引计算只需要知并行线程的初始索引,以及如何确定递增的量值,我们希望每个并行线程从不同的索引开始,因此就需要对线程索引和线程块索引进行线性化,每个线程的其实索引按照以下公式来计算:int tid = threadIdx.x + blockIdx.x * blockDim.x;线程块数量限制:65536线程块中线程数量限制:512共享内存和同步共享内存__share__添加到变量声明,使得声明的变量驻留在共享内存中。cuda c编译器对共享内存中的变量和普通变量采用不同的处理策略,对于G

2020-11-09 22:47:25 539 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除