- 博客(95)
- 收藏
- 关注
转载 VIM编辑命令
转载:进入编辑模式、vim命令模式、vim实践 - 吉米乐享驿站 - 博客园 (cnblogs.com)5.5 进入编辑模式所谓编辑模式就是进入到一个可以编辑文本文档的模式,常规的方式就是按小i进入编辑模式,左下角显示“insert插入”状态,此时就类似Word或记事本一样,可以任意写入内容。小i 在光标所在行位置停止不动开始写入内容大I 在光标所在行行首开始写入内容小a 在光标所在行当前字符后开始写入内容大A 在光标所在行行尾开始写入内容小o 在...
2022-03-01 15:43:56
3429
转载 无线上外网,有线上内网的方式(转)
原文地址:无线上外网,有线上内网的方式(转)_atongmu2017的博客-优快云博客在外面调试程序,内网是调试程序必须的,而要上外网,又只有通过无线连接。不过发现这样有个问题,就是在笔记本的无线连上外网的时候,只要插上内网的网线,就发现qq一类的一律掉线,外网连接就不行了,网页也打不开。这样搞的比较麻烦,每次测试完程序,要手动拔掉网线,外网才能上。感觉这样的做法太麻烦了,能否内网和外网同时接入到笔记本,不用每次拔网线呢?于是在网上找了找资料,果然还找到了。其实是因为Windows默认路由设置的问题。
2022-02-25 10:22:42
7046
原创 RTMP、RTSP、HTTP协议
一、RTMP、RTSP、HTTP协议这三个协议都属于互联网 TCP/IP 五层体系结构中应用层的协议。理论上这三种都可以用来做视频直播或点播。但通常来说,直播一般用 RTMP、RTSP。而点播用 HTTP。下面分别介绍下三者的特点。1,RTMP协议(1)是流媒体协议。(2)RTMP协议是 Adobe 的私有协议,未完全公开。(3)RTMP协议一般传输的是 flv,f4v ...
2019-11-23 11:18:44
704
原创 查看opencv版本
查看linux下的opencv安装库:pkg-config opencv --libs查看linux下的opencv安装版本:pkg-config opencv --modversion查看linux下的opencv安装路径:sudo finf / -iname "*opencv"
2019-11-22 15:55:39
3315
原创 关于arm-linux下SD卡挂载问题 查看系统存储空间命令
在Hi3518模块上挂载了个8G的SD卡,能识别的时候如下打印mmc1: new high speed SDHC card at address 0001 mmcb...
2019-11-22 15:51:18
1985
原创 HI3518-arm设置开机自启动
想要将Hi3518开机初始化完毕后自启动sample_venc_rtsp视频编解码。tftp sample_venc_rtsp 到ko文件夹然后打开这个路径/etc/init.d/下的这个文件rcS里,在这个文件下的最后一行再加上这样一句命令:cd /ko (自启动程序所在文件夹)./sample_venc_rtsp (sample_venc_rtsp为自启动程序)...
2019-11-22 14:02:26
613
原创 ubuntu 16.04 中搭建NFS服务
nfs服务是实现Linux和Linux之间的文件共享,这里主要是为了在Hi3518 arm操作系统中挂载sample_venc执行文件并保存h264编码文件。参考链接:https://www.cnblogs.com/lvdongjie/p/9901348.html 在参考安装过程中只安装了服务器端,然后共享的文件夹必须给777权限。一、服务器端:1.1安装NFS服务:#执行以下...
2019-11-20 16:50:21
309
原创 LINUX1604下TFTP搭建及使用
TFTP是简单文件传输协议,是一个基于UDP协议实现的用在客户及和服务器之间进行简单文件传输的协议,适用于开销不大,不复杂的应用场景。TFTP协议专门为小文件传输而设计,只能从服务器获取文件,或者客户端往服务器写入文件,但是不能进行认证也不能列出目录。安装目的:将pc端编译好的文件系统和kernel文件写到arm侧。1. 安装 $ apt-get install tftp-hpa t...
2019-11-20 16:41:53
300
转载 TX2查看OpenCV版本并卸载重装
官网手册中的安装说明:https://docs.opencv.org/3.4.0/d7/d9f/tutorial_linux_install.html版本:- Jetson TX2- JetPack3.2- OpenCV3.4.0- cmake 3.5.1PS:软件安装选择的版本很重要,因为JetPack3.2安装的是cuda9.0,我试过安装OpenCV3.3,结果出现...
2019-11-02 16:22:54
1202
转载 TX2+darknet
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.youkuaiyun.com/dhaduce/article/details/80379792本人准备使用YOLO进行人脸检测,硬件设备为Jetson TX2。查阅YOLO官网,要部署YOLO,首先要安装CUDA、CUDNN、OPENCV,然后部署Darknet,...
2019-11-02 14:04:12
764
转载 ubuntu 常见问题系列:E:Could not get lock /var/lib/dpkg/lock-frontend - open
出错命令:一个普通的下载命令sudo apt-get install htop 1错误提示:E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavialable)E: Unable to acquire the dpkg fronted lock (/v...
2019-11-02 11:28:26
1793
原创 深度学习tensorflow安装ubuntu16.04amd64
教程已经比较多了,待会给出参考网页;pip安装大概就几步吧。1、安装python2.7,ubuntu自带,直接键入python查看;2、pip install --upgrade pip3、sudo apt-get install python-pip python-dev4、git clone --recurse-submodules https://github
2017-04-13 08:35:32
789
原创 标题大写引用小写
如题 例如大标题是第一章 引用一.1变成1.1;这里采用双标题,需要自定义一个大标题来代替标题1,此时的大标题是大写的;然后牺牲一个标题9,在定义多级列表时链接到标题1;如图所示,此时的标题1是小写的;写文章的时候,每章的标题文字后面(不换行)插入一个样式分隔符(方法:输入完标题后,按一个回车换行,再把光标移动到章标题的末尾,就是按一下键盘上的左箭头了,同时按下
2016-11-30 22:22:38
2494
转载 GPU地址空间的相关概念
转载于:http://blog.youkuaiyun.com/xiewen_bupt/article/details/47208903知识点回顾:虚拟地址一个进程要对内存的某存储单元进行读写操作时,需要该内存单元的内存位置,这个时候,通过物理寻址计算出该内存位置。然而不同的进程可能修改相同位置的内存导致程序间的相互影响,因此,计算机系统引入了虚拟地址。每个进程都有自己的虚拟地址
2016-09-16 17:20:10
4441
转载 cuda中pinned memory(page-locked memory)
转载于:http://blog.youkuaiyun.com/zhangpinghao/article/details/21046435当为了提高CUDA程序的主机内存和设备内存传输消耗时,可以尝试一下两种方案一:使用分页锁定内存,分页锁定内存和显存之间的拷贝速度大约是6GB/s,普通的分页内存和GPU间的速度大约是3GB/s,(另外:GPU内存间速度是30G,CPU间内存速度是1
2016-08-04 10:36:33
1972
转载 Turbo Cache技术
Turbo Cache,即Turbo Cache技术,是NVIDIA推出的一项技术。通俗的说,Turbo Cache技术就是用内存当显存来使用。既然是利用系统内存,这和以前的集成显卡又有什么区别呢?在nVIDIA 的官方技术说明中,内存管理技术可以“允许GPU在分配和不分配系统内存时无缝切换,并且高效的读写内存”。这个工作由驱动程序中名叫TC的管理部分执行,以分配和平衡系统及本
2016-07-28 21:40:23
1294
原创 多线程程序在多核和单核上运行的不同
1、锁在单核上,多个线程执行锁或者临界区时,实际上只有一个线程在执行临界区代码,而核心也只支持一个线程执行,因此不存在冲突。如果某个线程持有锁,那只有其他线程不会被调度到CPU上执行,影响的只是持有和释放锁的时间,处理器时刻在运行着。但是在多核上运行时,锁或临界区会导致其余处理器空闲而只允许一个处理器执行持有锁的那个线程,这是一个串行的过程,会影响性能。2、负载均衡单核上不用考虑负载均
2016-07-26 16:38:43
7208
原创 cuda debug 查看显存中变量
用工程自带的简单数组加法测试。一、打开start CUDA debug二、打开CUDA warp watch 及CUDA info三、就可以查看kernel中(显存)的变量了
2016-07-12 20:17:02
5222
转载 cuda内存处理及stream内存处理
CUDA内存拷贝1、cudaMemcpy() cudaMalloc() //线性内存拷贝1 //线性内存拷贝2 cudaMalloc((void**)&dev_A, data_size);3 cudaMemcpy(dev_A, host_A, data_size, cudaMemcpyHostToDevice);2、cudaMemcpy2D()cudaMallocPi
2016-07-09 13:31:16
1560
原创 cuda中warp分支及执行
根据编程指南,任何流控制指令(if\switch\do\for\while)都会导致线程分歧,线程分歧时会顺序执行每个分子路径,而禁用不在此路径上的线程,直到所有路径完成,线程再重新汇合到同一执行路径。主要有以下三种情况:如果一个warp的32个线程都只满足同一个分支,这是所谓的“分支按warp对齐”的形式,此时分支基本不影响执行效率。如果一个warp的32个线程分别满足多个分支,那么
2016-06-28 12:03:23
4213
原创 每个线程块中最大线程问题
1:每个block 最大1024个线程(视不同的卡来定),这个是线程总数的限制。2:每个线程块最大维度的限制为x方向1024,y方向1024,z方向64(视不同的卡来定)。3:一个线程块的线程情况同时收到上述两条的约束,即,如果在x方向排布了1024个线程,那么y和z方向的维度只能是1,否则将超出第一条的约束。另外,每个SM的线程数也有最大规定,这个
2016-06-27 16:57:00
4255
3
原创 静态局部变量特点
void fun(){ static int val;}val的内存地址已经初始化。静态局部变量有以下特点:该变量在全局数据区分配内存;静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0;它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作
2016-06-26 22:07:15
3309
转载 Nagle算法规则
Nagle算法的规则:(1)如果包长度达到MSS,则允许发送;(2)如果该包含有FIN,则允许发送;(3)设置了TCP_NODELAY选项,则允许发送;(4)未设置TCP_CORK选项时,若所有发出去的小数据包(包长度小于MSS)均被确认,则允许发送;(5)上述条件都未满足,但发生了超时(一般为200ms),则立即发送。Nagle算法只允许一个未
2016-06-26 21:47:00
816
原创 STL容器
1.vector 底层数据结构为数组 ,支持快速随机访问2.list 底层数据结构为双向链表,支持快速增删3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时5.queu
2016-06-24 22:50:04
436
原创 独显和集显设置,双显卡工作及cuda计算
有时候我们会碰到插上独显后,想用集显却不显示了,不是电脑出问题了,需要在BIOS中进行设置。1、确保在BIOS中设置集显和独显都予以使用(部分板卡可能不支持);2、此时显示器可以接在集显上,独显单独做计算(确保都有合适的驱动);3、多显卡计算时,需要通过cudaSetDevice()来选定用来计算的GPU显卡。
2016-06-24 18:41:01
5346
1
转载 cuda stream处理
需要通过某种方式一次性地执行完读取、修改写入这三个操作,并且执行过程中不被其他线程中断,这种操作称为原子操作。#include "cuda_runtime.h"#include "device_launch_parameters.h"#include #include #include #define SIZE (100*1024*1024)__global__ voi
2016-06-24 17:46:47
1202
原创 不同显卡(GPU)浮点数计算能力
1、SP总数=TPC&GPC数量*每个TPC中SM数量*每个SM中的SP数量;TPC和GPC是介于整个GPU和流处理器簇之间的硬件单元,用于执行CUDA计算。特斯拉架构硬件将SM组合成TPC(纹理处理集群),其中,TPC包含有纹理硬件支持(特别包含一个纹理缓存)和2个或3个SM,后面会有详细描述。费米架构硬件组则将SM组合为GPC(图形处理器集群),其中,每个GPU包含有一个光栅单元和4个SM
2016-06-24 16:59:15
26447
原创 GPU上基于SIMD的实现模式与多核CPU上基于MIMD的实现模式各有什么优缺点
如题: 由于每个执行单元的指令流都是相同的,SIMD模式将指令的获取时间均摊到每一个执行单元。但是,当指令流出现分支,指令就会被序列化。而MIMD模式的设计主要是为了处理不同指令流,当指令流出现分支,它不需要对线程进行阻塞。然而它需要更多指令存储以及译码单元,这就意味着硬件需要更多的硅,同时,为了维持多个单独的指令序列,它对指令带宽的需求也非常的高。 一般使用S
2016-06-23 16:31:58
3448
原创 cuda及常用计时方式
CUDA中的计时方式:cudaEventCreate(&start1); cudaEventCreate(&stop1); cudaEventRecord(start1, NULL); Kernel>>( a, b, c ); cudaEventRecord(stop1, NULL); cudaEventSynchronize(stop1); cudaEvent
2016-06-22 15:23:53
1498
原创 CBF中for循环变矩阵乘法的思想(arrayfire)--复数矩阵
接着上一篇博客CBF中for循环变矩阵乘法的思想(arrayfire)的续。上一篇主要讲了算法思想的改变,但是只是测试了实数,没有测试复数的效果,实际项目中都是复数的运用,所以这次添上复数的代码及测试结果。这次在添加arrayfire的代码之前,先看看不用这个库的一个C++代码形式:for(i=0;i<360;i++) //角度搜索 (-90:0.5:89) { theta=th
2016-06-22 13:33:44
1279
原创 安装CUDA调试器要关掉TDR
windows平台下配置parallel Nsight的第一步是禁用TDR功能。超时检测和恢复(TDR)是windows系统的一种机制,用来检测底层驱动代码的异常崩溃情形。如果驱动程序停止响应,windows则会重置此驱动程序。鉴于在程序断点处,驱动程序将暂停响应,所以为了防止出现重置操作或者GPU运行时间过长驱动自动恢复(修改TDR中已经提到了),TDR功能需要关掉。怎么关掉如下图所示:
2016-06-21 10:57:38
3628
原创 CPU和GPU的几点区别
GPU和CPU设备的架构是不同的,主要有以下几点:1、CPU的设计是用来运行少量比较复杂的任务,主要针对执行大量离散而不相关任务的系统;而GPU的设计主要用来执行大量比较简单的任务,主要针对解决那些可以分解成成千上万个小块并可独立运行的问题,因此,CPU适合运行操作系统和应用程序软件,即便有大量的各种各样的任务,也可妥善处理。2、两者支持的线程方式不同。CPU的每个核只有少量的寄存器,为了
2016-06-21 10:49:10
1097
转载 产生死锁的原因
产生死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进
2016-06-19 22:29:16
424
原创 不同工具下的矩阵乘法速度测试
今天花了一些时间将基于以上几种工具(cuda&arrayfire&matlab)的矩阵乘法的速度进行了测试比较,验证了一些想法吧。首先是c(CPU)的乘法测试:写的有点繁琐,后面在cuda程序中进行了综合C.matrix.cppvoid Matrix_print(double **a,long nl, long nh)/*矩阵的输出*/{ int i,j; for(i=1;
2016-06-19 16:53:06
2275
原创 Arrayfire常用的那几招(引用于葵花宝典)
/**************************arrayfire在矩阵运算中常用的那几招*2016.6 ziv*************************/seq:线性序列,主要用来替换for循环eg:seq b(10, 20, 2); // [10, 20, 2] => 10, 12, 14....20其中10-begin,20-end,2-ste
2016-06-19 16:08:47
3961
1
转载 C++模板问题template
template T det(const array &in);用法为det(DATA1);参考文章如下:转载于http://www.cnblogs.com/gw811/archive/2012/10/25/2738929.html模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。
2016-06-19 16:05:26
585
原创 CBF中for循环变矩阵乘法的思想(arrayfire)
/******************************************************* * Copyright (c) 2016.6.19 * 算法的改进:主要解决了两个for循环的问题 *第一个for是角度的问题,循环360个角度或者更小来得到每个角度的 *输出功率。 *第二个for循环是通道的问题,目前是8通道,对于arrarfire来讲这个很好做 *直接
2016-06-19 11:33:14
1305
原创 arrayfire中array转数组的问题
在arrayfire的葵花宝典中我暂时还没有发现直接转化的语句,只能先这样间接转化呢,仅供参考。 array in = randu(5, 5); af_print(in);for(int i=0;ifor(int j=0;j{vecl.push_back(sum(in(i,j)));}相当于对每个元素求和,还是自己。
2016-06-18 09:57:17
1289
1
转载 int (*a)[10] 和 int *a[10]
int *a[10] :数组指针。数组a里存放的是10个int型指针 int (*a)[10] :a是指针,指向一个数组。此数组有10个int型元素 int *a[10] 先找到声明符a,然后向右看,有[]说明a是个数组,再向左看,是int *,说明数组中的每个元素是int *。所以这是一个存放int指针的数组。int(*a)[10] 先找到声明符a,被括号括着,先看括号内的(优先级高),
2016-06-11 09:00:28
910
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人