Cuda 学习教程
文章平均质量分 86
Walker Zhang
机器视觉
展开
-
Cuda 学习教程六:执行模型
Cuda 学习教程六:执行模型今天看到一篇讲解CUDA模型的文章,很不错,转载记录一下:CUDA编程4-执行模型(上)转载 2020-10-30 15:27:18 · 320 阅读 · 0 评论 -
【CUDA】grid、block、thread的关系及thread索引的计算
好久没有搞CUDA-GPU编程了,今天重新看了一下,找到一瓶文章,关于线程分配和索引方面的东西讲解的很清楚,就转载过来,留足备用了 :)【CUDA】grid、block、thread的关系及thread索引的计算...原创 2019-07-02 15:39:59 · 427 阅读 · 0 评论 -
Cuda 学习教程(五):GPU架构-Sp,sm,thread,block,grid,warp
SP(streaming Process),SM(streaming multiprocessor)是硬件(GPU hardware)概念。而thread,block,grid,warp是软件上的(CUDA)概念。需要指出,每个SM包含的SP数量依据GPU架构而不同,Fermi架构GF100是32个,GF10X是48个,Kepler架构都是192个,Maxwell都是128个,Gefo原创 2017-07-28 14:58:45 · 9142 阅读 · 2 评论 -
Cuda 学习教程(四):Cuda程序的优化
本文大多数内容来源于《GPU高性能运算之CUDA》-张舒1. 线程和线程块的分配如果线程块过大,线程过少,而每个SM中包括两个block,这样会导致每个SM中的线程过少,即warp(每个warp包括32个线程)过少,这样会造成延时;另外,每个block块中的线程数最好是32的倍数,这样每个warp机会分配到一个SM中计算,从而隐藏延时。2. 优化策略为了在最佳的时原创 2017-07-27 14:41:56 · 498 阅读 · 0 评论 -
CUDA 同步函数
这里主要区别三个同步函数:cudaStreamSynchronize、CudaDeviceSynchronize 和 cudaThreadSynchronize。在文档中,这三个函数叫做barriers,只有满足一定的条件后,才能通过barriers向后执行。三者的区别如下: cudaDeviceSynchronize():该方法将停止CPU端线程的执行,直到GPU端完成之前CUDA的任务,包原创 2017-09-12 14:54:57 · 5637 阅读 · 0 评论 -
Cuda 学习教程四:GPU和Cuda逻辑关系
工欲善其事必先利其器,再次补充下GPU和Cuda之间的逻辑对应关系:每个SM中有大量的寄存器资源,可以养活成千上万的线程。SM中另外一个重要资源是Shared Memory,没错,它正是软件抽象中Shared Memory的对应物。到这里,SM在软件抽象里的对应也呼之欲出了,没错,正是Block。我们不妨先摆出这个对应:Block <-> SMThread执行 <-&g...原创 2017-07-28 15:13:28 · 1711 阅读 · 0 评论 -
Cuda 学习教程二:GeForce GTX 950M 显卡参数
CUDA Device Query (Runtime API) version (CUDART static linking)Detected 1 CUDA Capable device(s)Device 0: "GeForce GTX 950M" CUDA Driver Version / Runtime Version 8.0 / 8.0原创 2017-07-27 09:56:08 · 9675 阅读 · 0 评论 -
Cuda 学习教程三:CUDA硬件架构
本文大多数内容来源于《GPU高性能运算之CUDA》-张舒GPU内存GPU的内存结构和CPU类似,但也存在一些区别,GPU的内存中可读写的有:寄存器(registers)、Local memory、共享内存(shared memory)和全局内存(global memory),只读的有:常量内存(constant memory)和纹理内存(texture memory)。1. 共原创 2017-07-27 14:03:40 · 875 阅读 · 0 评论 -
Cuda 学习教程:Cuda 程序初始化
Cuda程序初始化目前,cuda里面没有对设备的初始化函数InitDevice(),只能每次调用的api函数的时候,加载设备的上下文,自动进行初始化,这将带来问题:First函数调用的时候,需要自动初始化设备,因此耗时过长无法分析第一个api函数的耗时处理办法在程序前加设置初始化函数: cudaFree(0),后面程序就不会再次初始化,cudamalloc()也将很快;一次初始化后,程序原创 2017-08-04 11:55:24 · 3257 阅读 · 0 评论