CUDA
night李
要做一条有梦想的咸鱼
展开
-
CUDA(五)用deviceQuery看GPU属性
在CUDA安装好后可以用DeviceQuery看一下GPU的相关属性,从而对GPU有一定了解,有助于今后的CUDA编程。#include "cuda_runtime.h"#include "device_launch_parameters.h"#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ int原创 2016-08-22 22:28:55 · 16810 阅读 · 1 评论 -
nvidia-smi指令解析
对于一些游戏玩家来说买到好配置的主机,首先一件事就是拿一些跑分软件来跑个分,如3DMark,国际象棋等。 像我们搞CUDA的喜欢用NVIDIA自带可视化工具Visual Profiler 来看程序对GPU的应用效率,对于一些已经搭好的框架如tensorflow和caffe等,想到监控的方法就是在训练或者测试时直接用命令:nvidia-smi在终端中打印出GPU的各种属性。 如下图是原创 2018-01-05 09:17:40 · 15364 阅读 · 0 评论 -
CUDA入门(二)cuda编程的基本知识与第一个cuda程序
首先,先来了解一下GPU与CPU的区别,如图 可以看到CPU(Central Processing Unit,中央处理单元),由Control(控制台),ALU(Arithmetic Logic Unit,逻辑计算单元),Cache(高速缓存),而GPU(Graphic Processing Unit,图形处理单元)也是由相同的部件组成,但GPU的计算单元远比CPU多,这就决定了GPU适合大量原创 2016-07-08 22:09:22 · 1257 阅读 · 0 评论 -
CUDA入门(一)
CUDA入门(一)CUDA环境的配置在很多大数据处理、图像处理等环境下时,串行运算已经满足不了对速度的需求,这时就需要运用并行运算来提高运算的效率。 CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台,也是典型的并行运算所用的工具之一(毕竟NVIDIA是显卡界的老大,听说AMD显卡也开始支持CUDA)。 首先先进行CUDA的程原创 2016-07-07 00:17:55 · 1898 阅读 · 0 评论 -
CUDA入门(三) 初探线程与块
在配置GPU时一般都看重其的架构,流处理器数,以及显存数。 以英伟达的GPU为例架构一般以科学家的名字来命名,如Fermi(费米),Kepler(开普勒),现在主流的Maxwell(麦克斯韦),Pascal(帕斯卡),不同的架构主要体现在如纹理单元,流处理器,带宽等较为底层的东西不同,为线程与块中主要关心的是其流多处理器(streaming multiprocessor,SM)以及一个流多处理器包原创 2016-07-19 16:06:45 · 4674 阅读 · 0 评论 -
CUDA入门(四)Visual Profiler
Visual Profiler 在CUDA程序开发的过程中是一个极有利的工具。可以帮助你找到程序中性能不足之处。 下面是《CUDA_Profiler_Users_Guide》对Visual Profiler描述 Visual Profiler 是是一个图形化的剖析工具,可以显示你的应用程序中CPU和GPU的活动情况,利用分析引擎帮助你寻找优化的机会。 其实除了可视化的界面,NVIDIA提供原创 2016-08-03 21:14:16 · 12826 阅读 · 0 评论 -
CUDA 视频处理相关注意点
图像处理流相关问题: 1:异步并行时,cudaMemcpyAsync的缓冲区要用Pinned分配,直接用普通内存无效果: Pinned memory (分页锁存器): cuda运行时提供了使用分页锁定主机存储器(也称为pinned)的函数(与常规的使用malloc()分配的可分页的主机存储器不同): cudaHostAlloc()和cudaFreeHost()分配和释放分页锁定主机存储器;原创 2016-08-06 20:50:37 · 1715 阅读 · 0 评论 -
图像处理(三)彩图的中值滤波与cuda形式
灰度图像为一通道图像,如8位的灰度图的每一个像素点的数据由一个uchar类型来储存,uchar的值代表图像的亮度,灰度图像的中值滤波是根据像素值的3×3的领域内,像素值排序后的中值像素代表该点的像素值值; 而彩色图像一般为RGB图片,像素点的颜色由红绿蓝三通道决定,数据由一个uchar3型存储,如同灰度图的中值滤波一样,彩色图像的中值滤波也是根据图像的亮度来选取相应的像素点的值。 RGB图像的亮原创 2016-08-09 21:25:32 · 3010 阅读 · 0 评论 -
Harris角点标注法
在图像拼接过程中,图像的匹配是重要的一步,其中最常用的算法是Harris角点标注算法。 在Harris之前常用的是Moravec 角点提取算法,Moravec角点检测是一种基于灰度值的检测算法,主要是通过滑动二值矩形窗口寻找灰度变化的局部最大值。主要先通过事先设定一个经验阈值,通过对窗口(如取3*3的窗口)进行相邻八个方向(上,下,左,右,左上,左下,右上,右下)进行滑动,计算原窗口和滑动后窗口的原创 2016-10-25 19:13:28 · 1093 阅读 · 0 评论 -
jetson tx2开箱上电
期待已久的jetson tx2终于到了,来做一个开箱 (ง •̀_•́)ง jetson tx2是英伟达的第三代GPU嵌入式开发板 前两代分别是jetson tk1和jetson tx1 jetson tk1: 绿色的版板子接口丰富 jetson tx1: pcb板的颜色转变为炫酷的黑色,tx1和tx2开发板的大小都相等 配件丰富 唯一可惜的是tx1和tx2出场都没有电原创 2017-08-02 23:29:17 · 11810 阅读 · 0 评论 -
Jetson tx2刷机过程中的坑
暑假各种事忙得差不多后,终于有时间拿出早就申请到的tx2,开始刷机教程,这两天几乎踩边了所有的坑。 第一个坑,虚拟机 一般在安装VMware虚拟机时,建议的安装空间20GB,但是我从英伟达官网上下载下来的Jetpack3.1的刷机程序只有30MB,但下载完所有组件后会发现,文件夹内文件的大小变成了43.3G,所以建议分配给虚拟机超出50GB; 第二个坑,虚拟机的网络 在等待下来大半天下载原创 2017-08-28 23:08:09 · 17748 阅读 · 9 评论 -
tx2安装caffe总结
无奈笔记本的性能太渣,双系统切换太麻烦,索性就拿tx2来当第二台电脑,需要在linux上跑的demo都放到tx2上跑; 先安装caffe(我重刷了两次机o(『﹏『)o)。 先配置依赖项 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler原创 2017-10-10 20:12:07 · 2530 阅读 · 0 评论 -
CPU多线程处理,一种隐藏传输时间方法
在使用CUDA进行编程时,遇到提速时间达不到效果时往往会用CUDA自带的visual profiler进行算法运行时间的分析; 在分析时,总会遇到数据流从向显存传输时的时间在算法中多于实际你的算法处理你要解决问题的算法的时间。 如你在传输时花70%的时间,而你处理你的问题时只花30%的时间,这时再提升你算法处理的问题时的速度主要集中在怎么减少传输时所用的时间或者怎么隐藏传输时所用的时间。 在原创 2016-10-31 06:57:02 · 750 阅读 · 0 评论 -
CUDA异步并发 (二)
感觉自己对CUDA的异步并发还是无法深入理解,在大神建议下看了CUDA C Programming Guide ,感觉对自己的帮助很大。 下面分享一下看了之后的体会,附上原文: Concurrent host execution is facilitated through asynchronous library functions thatreturn control to the host翻译 2016-10-15 07:06:35 · 5510 阅读 · 0 评论 -
CUDA入门(七)流
程序通过流来管理并发,每个流按顺序执行操作,不同流之间可能并行也可能乱序执行。流的作用是使一个流的计算与另一个流的传输同时进行,能有效提高对GPU的利用率。 流的定义方法,是创建一个cudaStream_t对象,并在启动内核和进行memcpy时将该对象作为参数传入。 在运用流时必然会用到异步执行,异步执行就是CPU主机端的API函数和内核函数启动的结束和GPU端真正完成这些操作是异步的。通过函数原创 2016-09-21 07:17:42 · 749 阅读 · 0 评论 -
CUDA入门(六) 异步并行执行解析
为了更好地压榨GPU和CPU,很多时候都使用异步并行的方法让主机端与设备端并行执行,即控制在设备没有完成任务请求前就被返回给主机端。 异步执行的意义在于:首先,处于同一数据流内的计算与数据拷贝都是依次进行的,但一个流内的计算可以和另一个流的数据传输同时进行,因此通过异步执行就能够使GPU中的执行单元与存储器单元同时工作,更好地压榨GPU的性能;其次,当GPU在进行计算或者数据传输时就返回给主机线程原创 2016-09-14 22:18:32 · 3869 阅读 · 1 评论 -
CUDA学习(三十五)
建议和最佳做法: 整体性能优化策略: 性能优化围绕三个基本策略展开: - 最大限度地平行执行 - 优化内存使用量以实现最大内存带宽 - 优化指令使用率以实现最大指令吞吐量最大化并行执行从构建算法开始,尽可能多地暴露数据并行。 一旦算法的并行性暴露出来,它就需要尽可能有效地映射到硬件。 这是通过仔细选择每个内核启动的执行配置来完成的。 应用程序还应该通过流显式公开设备上的并发执行以及最...原创 2018-03-13 11:11:52 · 402 阅读 · 0 评论