- 博客(517)
- 资源 (56)
- 收藏
- 关注
原创 OpenMP在ARM-Linux以及NDK中的编译和使用
以前对OpenCV在ARM-Linux, ARM-Android上的优化做了很多编译方面的努力,例如添加TBB支持,添加CUDA支持(Nvidia K1平台上)。这次突然听同事说增加了OpenMP选项后,在Windows+X86上有极大的优势,adaboost速度提高3倍。所以赶快在ARM-Android-NDK上测试一下。 0. OpenMP基础:OpenMP(
2016-11-20 20:36:03
7264
转载 关于OpenCV源码中的CPU指令集CV_SSE2等的相关知识
一、 CV_SSE系列指令集的预编译符号定义在opencv2/core/internal.hpp这个头文件中,如果你不包含这个头文件的话,把源码拷贝到自己的函数中,CV_SSE是不被定义的下面是harrisCorner中的一部分代码 1 2 3 4 5 6 7 8 9 10 11
2016-11-03 14:36:45
3534
转载 VS2010平台下OpenCV编译和安装
要点: 1) XP+ Visual Stuio 2010 + OpenCV-2.4.2.exe + cmake-2.8.8-win32-x86.exe 2) 如何CMake OpenCV源代码得到可编译的VS2010项目 3) 如何使用VS2010编译OpenCV源码 4) 如何配置OpenCV工程
2016-10-31 17:05:05
984
原创 CUDA系列学习(一)An Introduction to GPU and CUDA
本文从软硬件层面讲一下CUDA的结构,应用,逻辑和接口。分为以下章节:(一)、GPU与CPU(二)、CUDA硬件层面(三)、CUDA安装(四)、CUDA 结构与接口 4.1 Kernels 4.2 Thread,Block, Grid 4.3 Memo
2016-10-22 18:07:00
1144
转载 GPU通用计算调研报告
摘要:NVIDIA公司在1999年发布GeForce256时首先提出GPU(图形处理器)的概念,随后大量复杂的应用需求促使整个产业蓬勃发展至今。GPU在这十多年的演变过程中,我们看到GPU从最初帮助CPU分担几何吞吐量,到Shader(着色器)单元初具规模,然后出现Shader单元可编程性,到今天GPU通用计算领域蓬勃发展这一清晰轨迹。本报告首先根据搜集到的资料记录GPU通用计算的发展过程中硬件和
2016-10-22 17:40:09
3259
转载 GPU中与CUDA相关的几个概念
今天说说GPU的硬件结构中与CUDA相关的几个概念:thread block grid warp sp smsp: 最基本的处理单元,streaming processor 最后具体的指令和任务都是在sp上处理的。GPU进行并行计算,也就是很多个sp同时做处理sm:多个sp加上其他的一些资源组成一个sm, streaming multiprocessor. 其他资源
2016-10-22 17:28:50
1399
转载 编译 链接和加载
1. 序 最近在折腾各种.so,碰到了一些问题,一开始对于很多错误也没有头绪,茫然不知所措。索性化了一天多时间将>中部分内容略读了一遍,主要是关于编译,链接和加载这块的。于是顺便做个笔记,方便以后回顾。基本上知道了这些,对于编译,链接和加载过程中产生的各种问题,应该就能从根本上理解并解决了。其实以前上学时也看过那本经典的>,当时还写了篇>,不过此次会更细致深入地了解下整个编译链
2016-08-31 21:24:37
2190
转载 GPGPU OpenCL使用结构体数据
OpenCL编程中可以使用结构体,只需要在核函数kernel中提供同样的结构体申明就可以啦。 如果在主函数中定义了结构体:1 typedef struct studentNode{2 int age;3 float height;4 }student; 主函数中定义数据,并传输给OpenCL kernel: 1 student
2016-08-21 22:29:10
1275
转载 GPGPU OpenCL/CUDA 高性能编程的10大注意事项
1.展开循环 如果提前知道了循环的次数,可以进行循环展开,这样省去了循环条件的比较次数。但是同时也不能使得kernel代码太大。 循环展开代码例子: View Code2.避免处理非标准化数字 OpenCL中非标准化数字,是指数值小于最小能表示的正常值。由于计算机的位数有限,表示数据的范围和精度都不可能是无限的。(具体可以查看IEEE 754标准,
2016-08-21 22:23:49
1901
原创 OpenCL中设置内核参数整理
资源摘自OpenCL实战. 首先,说一下kernel中的几种地址空间限定符:(1)__global该参数的数据会保存在全局数据空间,在内核中的参数使用例子如下:__kernel void kernel_func(__global float *f){}(2)__constant该参数的数据会保存在全局,只读内存中,该参数使用前必
2016-08-21 22:14:31
4147
原创 OpenCL2.0特性之SVM
在OpenCL2.0中,增加了SVM(shared virtual memory)的特性。在开始讲解SVM之前,我们先用图片来看下OpenCL1.2中主机与设备端的地址空间: 图1 OpenCL1.2中主机与设备端地址空间 从图1可以看到,主机与设备具有不同的地
2016-08-16 10:42:53
1790
转载 clCreateBuffer参数说明
clCreateBuffer第二个参数可以有多种,详情请点击此次,对于前三个比较简单,在此就忽略。1、CL_MEM_USE_HOST_PTR 对于CL_MEM_USE_HOST_PTR,刚开始buffer object的值是来自于host_ptr,但buffer object处理之后,host_ptr中的值如何变化,这点在OpenCL中没有定义。那就看看A卡对次是如何处理,一
2016-08-16 10:26:27
1563
转载 从零开始学习OpenCL开发(四)shader
这里介绍关于OpenCL中program函数的写法,program函数通常是文本形式的,然后使用clCreateProgramWithSource这样的接口load进来。在Shader编程中也经常使用这种形式书写GPU上运行的代码,所以为了表述清楚和理解方便,这里姑且把这些program函数的源码文本称为OpenCL的shader吧 下面都是写在shader中的一些语法 1
2016-08-04 22:46:43
1087
转载 从零开始学习OpenCL开发(三)深入API
这里将更深入的说明一些OpenCL API的功能1. 创建buffer涉及到内存与显存的操作总是复杂麻烦的,这个函数也一样。。。cl_memclCreateBuffer (cl_context context, cl_mem_flags flags, size_t size, void *host_pt
2016-08-04 22:45:55
1218
转载 从零开始学习OpenCL开发(二)一个最简单的示例与简单性能分析
1 Hello OpenCL 这里编写一个最简单的示例程序,演示OpenCl的基本使用方法: 1.首先可以从Nvdia或者Amd或者Intel或者所有OpenCl成员的开发者网站上下载一份他们实现的OpenCL的SDK。虽然不同公司支持了不同版本的OpenCL和扩展ext,但是在相同版本上对于标准的OpenCL接口,每个SDK实现的结果都是一样的,如果你只是用标准的O
2016-08-04 22:45:12
1560
转载 从零开始做OpenCL开发》系列文章的第一篇。
本文将作为我《从零开始做OpenCL开发》系列文章的第一篇。 1 异构计算、GPGPU与OpenCL OpenCL是当前一个通用的由很多公司和组织共同发起的多CPU\GPU\其他芯片 异构计算(heterogeneous)的标准,它是跨平台的。旨在充分利用GPU强大的并行计算能力以及与CPU的协同工作,更高效的利用硬件高效的完成大规模的(尤其是并行度高的)计算。在过去利用
2016-08-04 22:44:38
2613
转载 Linux inotify功能及实现原理
1. inotify主要功能它是一个内核用于通知用户空间程序文件系统变化的机制。众所周知,Linux 桌面系统与 MAC 或 Windows 相比有许多不如人意的地方,为了改善这种状况,开源社区提出用户态需要内核提供一些机制,以便用户态能够及时地得知内核或底层硬件设备发生了什么,从而能够更好地管理设备,给用户提供更好的服务,如 hotplug、udev 和 inotify 就是这种需求
2015-04-20 14:27:38
1589
转载 Linux下inotify机制简介
1.inotify机制简介:inotify是Linux内核提供的一个文件系统变化通知机制,从2.6.13版本的内核开始提供,比如你在创建一个文件时它可以通知你哪个文件被创建了,删除文件时通知你哪个文件被删除了,修改文件时通知你哪个文件被修改了,关闭文件时哪个文件被关闭了,是可写关闭还是不可写关闭等等。这个机制在某些特定用途下是很必要的,比如桌面搜索引擎,一般当我们不记得某一文件放在哪个地方时,
2015-04-20 14:21:46
2414
原创 SELinux管理与配置
1.1 SElinux概述SELinux(Security-Enhanced Linux) 是美国国家安全局(NAS)对于强制访问控 制的实现,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。大部分使用 SELinux 的人使用的都是SELinux就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian 或 Gentoo
2015-03-23 17:09:31
1435
转载 C语言位域精解
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示
2015-02-05 16:10:57
1497
原创 为什么基类的析构函数是虚函数?
1.为什么基类的析构函数是虚函数? 在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。 下面转自网络:源地址 http://blog.sina.com.cn/s/blog_7c773cc50100y9hz.html a.第一段代码 复制代码复制代码#includeusing namespace std;
2015-02-05 14:33:36
1218
原创 C++析构函数为什么要为虚函数
C++析构函数为什么要为虚函数1. 从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。2. 从使用角度,虚函数主要用于在信息不全的情况下,能使重载
2015-02-05 14:27:28
1293
原创 面试中常问的关于链表的题目
链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文对链表相关的面试题做了较为全面的整理,希望能对找工作的同学有所帮助。链表结点声明如下:struct ListNode{ int m_nKey;
2015-02-01 13:47:46
1790
转载 C中调用C++与C++调用C
转自:http://blog.csdn.net/devil_2009/article/details/6734760首先,在C中调用C++:将 C++ 函数声明为``extern "C"''(在你的 C++ 代码里做这个声明),然后调用它(在你的 C 或者 C++ 代码里调用)。例如:[cpp] view plaincopy// C++ code
2015-01-22 17:38:42
1188
转载 (DT系列六)devicetree中数据和 struct device有什么关系
devicetree中数据和structdevice有什么关系总体来说,devicetree与structdevice的关系应该还是在其生成platformdevice的时候,一直传递的structdevice *parent参数。下面先把其源码中传递过程描述如下(仍以At91rm9200为例):1,DT_MACHINE_START(at91sam_dt,"Atmel
2015-01-21 10:54:08
1378
转载 DT系列四)驱动加载中, 如何取得device tree中的属性
本文以At91rm9200平台为例,从源码实现的角度来分析驱动加载时,Device tree的属性是如何取得的。一:系统级初始化DT_MACHINE_START 主要是定义"struct machine_desc"的类型,放在 section(".arch.info.init"),是初始化数据,Kernel 起来之后将被丢弃。#define DT_MACHINE_START(_name
2015-01-21 10:53:15
1368
转载 DT系列五)Linux kernel 是怎么将 devicetree中的内容生成plateform_device
Linux kernel 是怎么将 devicetree中的内容生成plateform_device1,实现场景(以Versatile Express V2M为例说明其过程)以arch/arm/mach-vexpress/v2m.c 为例,在该文件中的v2m_dt_init函数的作用就是利用 dt(device tree)结构初始化 platform device。static
2015-01-21 10:51:33
1497
转载 (DT系列四)驱动加载中, 如何取得device tree中的属性
本文以At91rm9200平台为例,从源码实现的角度来分析驱动加载时,Device tree的属性是如何取得的。一:系统级初始化DT_MACHINE_START 主要是定义"struct machine_desc"的类型,放在 section(".arch.info.init"),是初始化数据,Kernel 起来之后将被丢弃。#define DT_MACHINE_START(_name
2015-01-21 10:50:01
1350
转载 (DT系列三)系统启动时, dts 是怎么被加载的
一,主要问题:系统在启动的时候,是怎么加载 dts的;Lk,kernel中都应调查。二:参考文字dts加载流程如下图所示:启动过程中,bootloader(默认是bootable/bootloader/lk)会根据机器硬件信息选择合适的devicetree装入内存,把地址等相关信息传给kernel。kernel中,会根据传入的信息创建设备。1,先从l
2015-01-21 10:48:24
2490
转载 (DT系列二)device tree的书写规范
devicetree的书写规范下面从节点,属性,reg,ranges,中断控制器等几个方面叙述devicetree的书写规范。1,dts的基本元素:节点.dts(或者其include的.dtsi)基本元素为结点和属性。举例说明节点的概念:/ { node1 { a-string-property = "A string"; a-strin
2015-01-21 10:35:21
1349
转载 (DT系列一)DTS结构及其编译方法
一:主要问题1,需要了解dtsi与dts的关系2,dts的结构模型3,dts是如何被编译的,以及编译后会生成一个什么文件.二:参考文字1,DTS(device tree source).dts文件是一种ASCII文本格式的DeviceTree描述。基本上,在ARMLinux内,一个.dts文件对应一个ARM的machine,一般放置在内核的arch/arm/bo
2015-01-21 10:34:43
2676
转载 linux device tree源代码解析
//Basedon Linux v3.14 source codeLinux设备树机制(Device Tree)一、描述ARM Device Tree起源于OpenFirmware (OF),在过去的Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节,而这些板级细节对于内核来讲,不过是垃圾,如
2015-01-17 16:54:19
2943
转载 WLAN 驱动解析
看看scan是怎么处理的。一、先来看看如何发送scan command给WLAN firmware以Android平台为例,我们从Android framework的code开始看起。1. 在WifiStateMachine.java中有如下函数 public void startScan(boolean forceActive) { sendMessag
2014-12-15 17:40:05
5670
转载 wpa_cli调试工具的使用
1: run wpa_supplicant firstuse the following command: wpa_supplicant -Dwext -iwlan0 -C/data/system/wpa_supplicant -c/data/misc/wifi/wpa_supplicant.conf (use “ps”to make sure wpa_sup
2014-12-02 17:58:13
2141
转载 Android系统SVC命令教程
svc命令,位置在/system/bin目录下,用来管理电源控制,无线数据,WIFI[java] view plaincopy# svc svc Available commands: help Show information about the subcommands power Control the power manager dat
2014-12-02 15:35:03
4028
转载 wpa_supplicant软件架构分析
1. 启动命令wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下:wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/wifi/wpa_supplicant.conf -f/data/wifi/wpa_log.txt wpa_supplicant对于启动命令带的参数,用
2014-11-26 17:50:09
1406
转载 EAP和EAPOL资料
EAP和EAPOL资料1.EAP协议802.1x协议在实现整个认证的过程中,其三个关键部分(客户端、认证系统、认证服务器)之间是通过不同的通信协议进行交互的,其中认证系统和认证服务器之间是EAP报文。EAP帧结构如下表所示:字段字节Code1Identifier2
2014-11-26 17:46:35
8251
转载 Android WiFi--系统架构
1. 系统架构 Android WiFi系统引入了wpa_supplicant,它的整个WiFi系统以wpa_supplicant为核心来定义上层用户接口和下层驱动接口。整个WiFi系统架构如下图所示: 一切尽在上图中,下面将对每部分进行详细分析。1.1 WifiService 由SystemServer启动的时候生成的Connecttivity
2014-11-24 17:29:25
1192
转载 Android WiFi系统
wpa_supplicant本是开源项目源码,被谷歌修改后加入android移动平台,它主要是用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证的,而实际上的工作内容是通过socket(不管是wpa_supplicant与上层还是wpa_supplicant与驱动都采用socket通讯)与驱动交互上报数据给用户,而用户可以通过socket发送命令给wpa_supplicant调动驱动来对
2014-11-24 17:28:11
900
转载 Android4.2.2 SurfaceFlinger的相关事件和消息处理机制
在这篇博文将会和大家一起分享我所学到的一点SurfaceFlinger中的事件和消息处理机制。 在前面的博文中,可以发现在SurfaceFlinger中的OnFirstRef里面有如下函数:void SurfaceFlinger::onFirstRef(){ mEventQueue.init(this); run("SurfaceFlinger", PRIORITY
2014-11-04 14:49:37
1369
Android核心分析
2011-12-25
佛山网通EPON的FTTH工程方案设计
2011-12-25
ARM---Cortex-A8处理器
2022-09-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅