随笔分类 -  CUDA

显卡、显卡驱动、显存、GPU、CUDA、cuDNN
摘要:显卡Video card,Graphics card,又叫显示接口卡,是一个硬件概念(相似的还有网卡),执行计算机到显示设备的数模信号转换任务,安装在计算机的主板上,将计算机的数字信号转换成模拟信号让显示器显示出来。显卡是计算机的标配之一,计算机要显示图像就必须安... 阅读全文
posted @ 2018-03-07 13:09 未雨愁眸 阅读(670) 评论(0) 推荐(0)
tensorflow中使用tf.ConfigProto()配置Session运行参数&&GPU设备指定
摘要:tf.ConfigProto()函数用在创建session的时候,用来对session进行参数配置:config = tf.ConfigProto(allow_soft_placement=True, allow_soft_placement=True)config.... 阅读全文
posted @ 2018-01-18 21:09 未雨愁眸 阅读(1052) 评论(0) 推荐(0)
CUDA多个流的使用
摘要:CUDA中使用多个流并行执行数据复制和核函数运算可以进一步提高计算性能。以下程序使用2个流执行运算:#include "cuda_runtime.h" #include #include #include #define N (1024*10... 阅读全文
posted @ 2017-02-14 23:11 未雨愁眸 阅读(1223) 评论(0) 推荐(1)
CUDA流(Stream)
摘要:CUDA流表示一个GPU操作队列,该队列中的操作将以添加到流中的先后顺序而依次执行。可以将一个流看做是GPU上的一个任务,不同任务可以并行执行。使用CUDA流,首先要选择一个支持设备重叠(Device Overlap)功能的设备,支持设备重叠功能的GPU能够在执行一个... 阅读全文
posted @ 2017-02-14 22:57 未雨愁眸 阅读(835) 评论(0) 推荐(0)
CUDA页锁定内存(Pinned Memory)
摘要:对CUDA架构而言,主机端的内存被分为两种,一种是可分页内存(pageable memroy)和页锁定内存(page-lock或 pinned)。可分页内存是由操作系统API malloc()在主机上分配的,页锁定内存是由CUDA函数cudaHostAlloc()在主... 阅读全文
posted @ 2017-02-12 16:07 未雨愁眸 阅读(2375) 评论(1) 推荐(0)
CUDA atomic原子操作
摘要:CUDA的原子操作可以理解为对一个变量进行“读取-修改-写入”这三个操作的一个最小单位的执行过程,这个执行过程不能够再分解为更小的部分,在它执行过程中,不允许其他并行线程对该变量进行读取和写入的操作。基于这个机制,原子操作实现了对在多个线程间共享的变量的互斥保护,确保... 阅读全文
posted @ 2017-02-09 23:09 未雨愁眸 阅读(1337) 评论(0) 推荐(0)
CUDA二维纹理内存+OpenCV图像滤波
摘要:CUDA和OpenCV混合编程,使用CUDA的纹理内存,实现图像的二值化以及滤波功能。#include #include #include using namespace cv;int width = 512;int height = 512;// 2维纹理text... 阅读全文
posted @ 2017-02-08 21:04 未雨愁眸 阅读(608) 评论(0) 推荐(0)
CUDA+OpenGL混合编程
摘要:CUDA+OpenGL混合编程示例:#include #include #include "GL\glew.h" #include "GL\glut.h" #include #include #include #def... 阅读全文
posted @ 2017-02-07 22:49 未雨愁眸 阅读(417) 评论(0) 推荐(0)
CUDA一维纹理内存
摘要:纹理一词来源于GPU图形世界,GPU通用并行计算“盗用”了纹理一词,定义了一个纹理内存的概念。纹理内存缓存在 设备上,在某些情况下能减少对内存的请求并降低内存带宽的使用,是专门为那些在内存访问模式中存在大量空间局部性的图形应用而设计,意味着一个线程读取的位置可能与邻近... 阅读全文
posted @ 2017-02-06 23:07 未雨愁眸 阅读(946) 评论(0) 推荐(0)
CUDA中的常量内存__constant__
摘要:GPU包含数百个数学计算单元,具有强大的处理运算能力,可以强大到计算速率高于输入数据的速率,即充分利用带宽,满负荷向GPU传输数据还不够它计算的。CUDA C除全局内存和共享内存外,还支持常量内存,常量内存用于保存在核函数执行期间不会发生变化的数据,使用常量内存在一些... 阅读全文
posted @ 2017-02-06 19:22 未雨愁眸 阅读(1008) 评论(0) 推荐(0)
CUDA线程协作之共享存储器“__shared__”&&“__syncthreads()”
摘要:在GPU并行编程中,一般情况下,各个处理器都需要了解其他处理器的执行状态,在各个并行副本之间进行通信和协作,这涉及到不同线程间的通信机制和并行执行线程的同步机制。共享内存“__share__”CUDA中的线程协作主要是通过共享内存实现的。使用关键字“__share__... 阅读全文
posted @ 2017-02-05 12:30 未雨愁眸 阅读(651) 评论(0) 推荐(0)
CUDA软件架构—网格(Grid)、线程块(Block)和线程(Thread)的组织关系以及线程索引的计算公式
摘要:网格(Grid)、线程块(Block)和线程(Thread)的组织关系CUDA的软件架构由网格(Grid)、线程块(Block)和线程(Thread)组成,相当于把GPU上的计算单元分为若干(2~3)个网格,每个网格内包含若干(65535)个线程块,每个线程块包含若干... 阅读全文
posted @ 2017-02-04 23:37 未雨愁眸 阅读(1019) 评论(0) 推荐(1)
CUDA—使用GPU暴力破解密码
摘要:GPU支持大规模的并行加速运算,胜在量上,CPU处理大量的并行运算显得力不从心,它是胜在逻辑上。利用显卡加速的应用越来越多,但如果说GPU即将或最终将替代CPU还有点言过其实,二者最终将优势互补,各尽所能。使用显卡的无脑并行运算破解密码是一个不错的选择。这里选择一种简... 阅读全文
posted @ 2017-02-04 20:11 未雨愁眸 阅读(2131) 评论(0) 推荐(0)
CUDA中block和thread的合理划分配置
摘要:CUDA并行编程的基本思路是把一个很大的任务划分成N个简单重复的操作,创建N个线程分别执行执行,每个网格(Grid)可以最多创建65535个线程块,每个线程块(Block)一般最多可以创建512个并行线程,在第一个CUDA程序中对核函数的调用是:addKernel>>... 阅读全文
posted @ 2017-02-04 00:12 未雨愁眸 阅读(831) 评论(0) 推荐(0)
CUDA+OpenCV 绘制朱利亚(Julia)集合图形
摘要:Julia集中的元素都是经过简单的迭代计算得到的,很适合用CUDA进行加速。对一个600*600的图像,需要进行360000次迭代计算,所以在CUDA中创建了600*600个线程块(block),每个线程块包含1个线程,并行执行360000次运行,图像的创建和显示通过... 阅读全文
posted @ 2017-02-03 21:42 未雨愁眸 阅读(554) 评论(0) 推荐(0)
CUDA查询和选取设备信息
摘要:CUDA查询设备信息CUDA C中的cudaGetDeviceProperties函数可以很方便的获取到设备的信息,函数原型是:cudaError_t CUDARTAPI cudaGetDeviceProperties(struct cudaDeviceProp *p... 阅读全文
posted @ 2017-01-16 23:22 未雨愁眸 阅读(1620) 评论(0) 推荐(0)
详解第一个CUDA程序kernel.cu
摘要:CUDA是一个基于NVIDIA GPU的并行计算平台和编程模型,通过调用CUDA提供的API,可以开发高性能的并行程序。CUDA安装好之后,会自动配置好VS编译环境,按照UCDA模板新建一个工程“Hello CUDA”:建好之后,发现该工程下已经存在一个项目 kern... 阅读全文
posted @ 2017-01-15 06:52 未雨愁眸 阅读(2124) 评论(0) 推荐(0)
VS2015编译环境下CUDA安装配置
摘要:CUDA下载CUDA是NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题,CUDA只支持NVIDIA自家的显卡,过旧的版本型号也不被支持。下载地址:https://developer.nvidia.com/cuda-downloads 最新... 阅读全文
posted @ 2017-01-06 00:15 未雨愁眸 阅读(1253) 评论(0) 推荐(0)