- 博客(39)
- 资源 (6)
- 收藏
- 关注
原创 sse mmx 等优化,intel icc编译器会自动优化 cpp
windows x64 优化了半天,使用 intel编译器 对比其cpp 和 汇编的速度差异,怎么都只有一倍速度。奇怪了。我的代码使用 sse-256 bit指令优化计算。 然后想到看看编译后的汇编指令对比,为什么速度上不去。调试对比发现 intel对cpp自动产生了 sse-128bit 指令优化。难怪我的代码使用只能达到其2倍或者1.x倍的速度。 编写 ms编译器的cpp代码对比,果然,优化后的速度就明显了达到理论的 4倍或者8倍。这倒是得到一个提醒,就是很多循环计算,都可以借...
2021-08-29 21:08:28
351
原创 c++ 从头写高效仿函数(function)
在程序设计中,很多时候需要回调函数.传统c回调函数,和c++的关系并不友好,需要定义静态函数,再转接给对象.这样子虽然代码不多.但是每次都需要绕个圈子,不够直爽. c++ 新标准以后(>11?)std自带function,可以使用这个类实现任意类型函数作为回调函数.倒是非常方便了.但是几次调试后发现,封装的比较多,一次调用至少需要5-10次函数调用(未具体计...
2019-11-19 16:23:50
421
原创 安卓守护程序爬坑经历
最近开发一个android电视上运行的软件,由于需要长时间运行,所以需要保证稳定性,以及在意外情况下能自动重启运行。要直接让应用程序本身保证无bug还是有一定难度,一般情况是外加守护程序(daemon)或者叫做看门口。以往的应用在pc端的应用中就是这么使用的,能达到需要的长期运行的效果。同样的方法也就确定在android上这么使用了。确定方案开始干。 刚开始想着平移w...
2019-08-26 16:01:21
265
原创 linux/android c++ list size()大坑
list 是常用的类,对于标准 std库,感觉不会有大的坑或者大问题。结果想多了。最近把win上的程序跨平台到 android上,发现会崩溃在list 的size() 函数。这个就奇怪了,正常逻辑理解size函数还能崩溃?(虽然是多线程,但是在不影响逻辑的情况下,没有对size调用加锁,是为了效率考虑)。看看堆栈,我的天啦,居然size函数是每次从头到尾遍历!!!,所以未加锁的情况下,多线程...
2019-07-18 15:17:42
696
原创 c++ 11 实现简单 signal slot
c++ 11以前要实现 signal slot 非常麻烦,需要重写很多代码。之前使用 libsig++ 后来发现 这代码中与qt 的slots emit等名称冲突。虽然可以解决,但是比较麻烦。所以 就使用 新的 c++特性,自行实现了简单的 signal 类。 目前实现比较简单。没有太多考虑异常或者智能情况。 这里面包含了结合线程使用,编程异步信号的 部分代码.需要屏蔽掉才能正常使用....
2018-10-31 11:14:57
2007
原创 cuda 封装接口这么锉
用nv显卡做计算. 不得不用cuda,因为老黄的对opencl对待的很不友好. 没想到其亲生的 cuda比opencl接口low了一大截. 简单使用第一印象: 居然主要函数接口,没提供句柄参数, 需要使用某个显卡,只能setDevice(index), 然后操作.然后重新setDevice才可以调用其他显卡. 看到这样的操作顿时晕倒, 做显卡那么牛,就不能认真点做接口...难道又外包给...
2018-08-17 15:59:25
346
原创 openCL 低延迟,频繁调用实验方案
openCl低延迟,频繁调用实验 1 opencl 可以利用gpu对计算进行加速.gpu对比cpu的特点,并行的核多,同步操作并行计算效率高(逻辑步调完全一致).串行逻辑比如cpu. 可以加速的算法: 1) 大量的数学运算.比如矩阵的加减乘除. 其中数据类型为float的单精度/半精度吞吐量最大.int不如float. 2) 可并行的排序/搜索.这是...
2018-08-09 17:18:30
1102
2
原创 BIM Revit 模型导出 2
按照之前的方式 可以导出模型,但是其实效果不是很好。 真正工程使用需要按照一个一个场景对象导出, 同时对相同的顶点的模型进行数据复用,对相同材质进行复用数据。这样才能减少内存数据量。否则revit导出的数据巨大无比。按照对象类别导出可以减少很大的比列。比如到20%。或者更少。 下一步将写上按照对象导出的简单实现方式。...
2018-07-25 22:00:02
1518
5
原创 win7 x64 vs2015 c++ 使用 tensorflow - 2 使用 facenet 模型
简单调用 facenet模型,并对比欧式距离.使用了opencv做人脸检测.其中一些参数暂时写死了.目前的效果一般般.因为 opencv对人脸的不同姿态检测并不是太准.(暂时依赖于Qt的QString 和 QImage ) 1/ create: Scope m_root = Scope::NewRootScope(); Status status = NewSess...
2018-07-25 16:09:46
1969
1
原创 unreal component 的坑 内存使用为何很高?
当使用多个 component的情况.每添加一个,内存最终会增加1M 左右的 内存. 即使只是一个 正方体box. 这么耗内存的软件太可怕了. 岂不是1k个方盒子对象,那电脑直接就可能爆了? 不过话说回来,还得要解决下才好. 1)使用的是develop 版本的unreal 所以不知道和这个有关否. 待定. 2)直接定位代码找到消耗内存的地方. 1 经过反复对比定位.定位到此...
2018-07-13 15:30:29
1000
原创 BIM Revit 模型导出 2
前面说了revit的简单导出,这种方法为导出整个revit为一个模型文件.通常这种模型文件非常巨大.1实际3d使用过程中, 这种巨大的3d模型文件,会有很多问题:1)3d引擎无法根据可视范围对渲染对象进行裁剪(选择渲染与不渲染)2)在网络传输过程中,需要完整传输模型文件方可显示.3)对大的场景建筑对象,比如一栋楼,无法按需加载,只能将整个大楼的顶点,材质等数据完全加载. 加载会非常缓慢.而且不消耗...
2018-07-10 16:06:06
4223
2
原创 unreal c++ 动态创建 component
1/ USceneComponent *pRootComponent = CreateDefaultSubobject<USceneComponent>(name/*TEXT("RootComponent")*/); RootComponent = pRootComponent;这个方式创建 Component 只能在 actor的无参数构造函数中.之后也可以在此构造函数中创建...
2018-07-10 15:37:36
4022
原创 win7 x64 vs2015 c++ 使用 tensorflow - 1 简单神经网络训练,预测
这是一个有一个中间层 一个输出层的神经网络demo. 输入数据为 1维数据.中间层10个神经元 输出成10个神经元. 其中一些都是临时为了测试修改的, 数据也是写固定了.后面补充可以动态输入数据的情况. 完整工程网盘路径: 附带了 tensorflow lib 所以很大. 链接:https://pan.baidu.com/s/1fwP7-D1-Usz1Ec5cY-RaYg 密码:0hlb...
2018-07-09 16:40:02
1194
1
原创 win7 x64 vs2015 c++ 使用 tensorflow
(这里不想使用"深度学习",因为这个名字就是炒作,而且这两年的神经网络带来的性能,并不是因为深.) 最近的需求需要预研下人脸识别/人工智能. 虽然目前各种人脸识别/图像识别/人工智能,都只是处于人工智障阶段,但是不可否认还是有一些实际价值.所以需要选择一个方案,在项目中使用起来,带来价值,方可推动继续研究. 前面文章说了.caffe2 是个巨大的坑,现在还不适合跳入. 在短...
2018-07-09 12:30:18
2880
原创 unreal 顶点法线与 面法线
当前revit 建筑模型软件导出的模型对象 three.js的json文件,都是面法线。(暂时是这样的,是否能导出顶点法线,后续确定)。 unreal 显示总是发现不对,要么该光照的没关照,或者直角面,背光处却透光了。开始未给定法线,经过对比分析,应该是法线没对。于是打算加入指定的法线。 1、为什么开始没给定法线?在测试自定义的模型时候,不给定法线,仍然可以显示物体。而且默认情...
2018-06-23 15:45:14
5484
2
原创 caffe2 vs2015 编译经验 (网上来回copy的不好使)
1/先安装git -window 版本 cmd 命令 到你自己的目录。 git clone --recursive https://github.com/caffe2/caffe2.git git只能 命令行,没办法免费的,就将就吧。 这样下来的肯定是编译不过的。这个坑足够大,大到你的跪了。这个情况下,主要是 third_party目录是空的。从git运行命令看,运行了xxx分钟...
2018-06-18 20:28:41
882
原创 python 的打脸笑话
python 强制 table对齐,以及函数过程不使用{}进行自然标记。看到网上说其发明人曰:这样是为了设计为像自然语言一样阅读程序。 那好,像自然语言一样阅读你的程序,table就自然了?{}这符号是不够自然语言, 那你python里面 哪些() ; ""; = 这些符号就像自然语言了?这有没有啪啪的响声。 还是引入 c/c++脚本,看着至少不如python那么变态。...
2018-06-17 14:34:01
514
原创 大道至简-轻松使用 c++ 设计软件
c++ 设计软件,其实简单,和c一样简单。不过现实中c++看起来很难,特别是stl boost的源码,将c++的表面难度看起来提升了几个数量级。这是要作死的节奏。 轻松使用c++应该是这样的:抛开语言,划分模块,c是如何去划分,那就如何划分模块。再使用c++的类代替c的模块/结构体. 简单描述为 用c 去思考设计,用c++去编码实现(记忆中在某文章也看到这个观点,抱歉记不住引用的出处)...
2018-06-17 14:22:27
1301
原创 大道至简-软件的模块结构设计、拆分
软件模块结构不是什么神奇的东西,也不是神奇模式的组合。如何做才是一个好的软件模块结构?其实很简单: 1、抛开语言和平台,考虑软件的功能模块。 软件模块功能通常都对应于实际的生活现实中的逻辑,物体、事物。那么软件的第一层模块拆分就应该按照这些自然的事物为标准进行拆分。并描述相互之间的关系。 再按照这个拆分标准,对顶层模块进行拆分。2、再使用软件语言平台去实现这些事物对象和...
2018-06-17 14:01:37
1802
原创 软件C++、C研发如此稀缺
最近公司 做bim 新成立的创业公司。c++大约开到20k-25k。竟然找不到两个合适的中级研发人员。很多工作5年-10年的人,实际技术都不到3年的真实水平。最多算个初级到中级之间的。 如何对能力分级呢? 初级:给一些难度不大的简单软件模块和接口,可以基本完成,偶遇到问题,需要指导解决。软件基础知识都了解,比如语言本身,线程,网络,操作系统等 中级:可以对大模块进行模块设计分功,带...
2018-06-16 23:33:53
3764
原创 BIM Revit 模型导出 1
这两年 bims 系统渐渐增加。需要的建筑模型几乎都需要 revit模型导出。 不编程的做法是: revit->navis->fbx。 fbx可以被很多软件和游戏引擎识别。 但是这种导出会有很多问题。比如材质丢失、附加属性无法导出等,同时导出速度非常非常慢。 一个50m的文件可能需要几个小时。 如果使用 three.js,可以配合blender导出为js文件。同样存在以上问题。导出...
2018-06-16 22:06:55
6590
原创 Unreal 导出dll 嵌入到程序 (嵌入Qt 程序)
unreal 默认是 无法嵌入到程序中作为一个dll模块的。想嵌入,需要做一些修改调整。再上一篇文章说过这个主要修改步骤。这里说第一方面: unreal 导出 dll工程: 1、通过ue editor 建立一个 ue工程。(UeSdk) 2、调用vs 打开项目, 修改编译选项。 UeSdk.target.cs 文件 : public uesdkTarget(Ta...
2018-06-15 22:23:38
2919
6
原创 c# ToString 系列函数 效率 ,以及无法多线程加速
revit 软件 模型导出, 只能c#二次开发。发现效率很低。测试发现,对数据 格式化为字符串的过程相当低效率。:仅仅是 格式化一个浮点数 string.Format("{0}{1}{2}{3}{4}", -xyz.X, m_strSplit, xyz.Y, m_strSplit, xyz.Z); 执行 460308 次,耗时大约10秒, 使用c++ : float fX(0), fY(...
2018-06-14 14:07:01
750
原创 unreal 使用材质 c++
目前未找到直接手动创建完整材质的办法,感觉不太方便。 目前的办法是:在编辑器中创建需要的材质比如 顶点颜色材质、颜色材质、图片材质等。并将输入的数据添加到参数,这样可以在程序运行中修改顶点颜色,材质颜色,或者材质图片。 顶点颜色材质: 颜色材质创建: 动态修改颜色: FString strMaterial = TEXT("/Game/StarterContent/M...
2018-06-11 15:38:10
1806
1
原创 llvm clang JIT 程序 5.0.2
windows vs2015 based:网上各种 jit demo已经是无效了。至少在3.9 以后的版本都是无法直接使用的。实际使用情况是这样的: 使用llvm自带HowToUseJITdemo修改: 代码如下,并需要添加lib: ..\..\Release\lib\LLVMIRReader.lib..\..\Release\lib\LLVMAsmParser.lib..\..\Rel...
2018-06-11 10:06:52
767
原创 QT QThread 线程间消息队列
QT 提供了良好的开发包;线程间也可以实现消息队列的方式 类似 windows PostThreadMessage的工作方式。同时比普通队列简单的很多。 但是需要稍微做特殊处理: 1. CMyThread 继承 QTHread, 同时在构造函数中 使用 moveToThread(this). 这可以让发往 CMyThread 实例的信号,最终调用CMyThread的slot,并且是在CMy...
2018-06-08 22:15:14
11300
1
原创 c/c++ 做脚本 动态 跨平台 方案 llvm-clang
llvm-clang 牛的不要不要的,不了解的可以 google下。 前几年都思考c/c++如果能做脚本运、使用jit方式 编译运行,那c c++可以像java 或者其他脚本语言一样,实现轻松夸平台,;同时能通过记事本修改代码就可以动态修改 添加软件功能。或者反过来说,java、c# python等可以 通过这种jit等方式实现native代码的效率。 最近项目中需要用到动态策略,而这种...
2018-06-08 21:55:13
1969
原创 unreal 用于三维展示的改造 建筑 模型展示
unreal是目前几乎最牛的 3d游戏引擎,跨平台开源等特性。所以选择为 3d展示 引擎 是很有必要的。 不过深入研究发现,无法直接和现有 程序融合。因为 它有自己的一个框架。几乎只能 把代码加进去 而无法作为sdk 进行二次组合开发。 从这一点上看,其软件封装性有待商榷,当然3d性能不可否认。不管是否不打算给其他做二次开发,至少程序设计上开始应该是模块的,再进行模块组合,最多出现 ...
2018-05-28 22:26:32
1667
1
原创 智能手机的智障终于缓解一点的感觉
逆天了啊,智障的智能手机,居然浏览器下载可以选择文件夹了。目前买的是华为一个1199的。就不广告了。10年的智能手机了,智障终于缓解了一点。不知道其他智能手机有没有智障缓解。 记得开始的时候文件夹浏览器都无法选择浏览文件路径。目前各种音乐播放器还是无法选择文件夹的智障 不知道何时能治疗。 其他评价,外观不错。这个价格看起来不low,屏幕占比不错。不知道电池如何。不爽的地方是,耳机孔必须...
2018-05-19 11:35:32
293
原创 rgba 转 yv420p x86 极速转换,1080p 800 fps
最近项目中涉及到颜色控件转换,开始使用ffmpeg的 scale 功能,感觉方便快捷。 不过 测试发现 1080p图像在 i5 2400 上只有150-160fps。具体到实时24fps的视频中,颜色转换,就消耗了一个核的1/6的性能(i54核,windows统计是4%,)。从这个数据预估仅仅是颜色转换 这个使用率太高,应该有优化空间。从网上查询研究的结果看,有yv420转rgb的,能到6...
2018-03-02 13:06:20
624
原创 深度学习, cnn,本质不是深而是卷积pooling,验证ok。
2017-5-6 做了整体图像2x2 blocks 的卷积验证。有初步效果已经是惊喜了。 今天完成 4x4blocks卷积 并连接 2x2block卷积,这样形成了两级卷积pooling。这里的卷积不是传统的卷积乘加结果,而是适用聚类的思想,计算欧式距离。 4x4卷积pooling之后 需要重新形成一个二维图像才可进一步卷积。这里稍微花了一些心思才做到。 结果比预期还好(提取特征
2017-05-19 17:21:18
570
原创 深度学习, cnn,本质不是深而是卷积pooling,验证。
2017-3-6 写过cnn本质是卷积和pooling,而不是因为深。一直想着办法验证这个理论。到目前为止,昨天终于有了惊喜的结果。 深度学习之cnn于图像识别,从不同的分辨率进行卷积和pooling,自然形成了很深度的深度了。卷积是形成不同的图像块的聚类核心,pooling是在一定范围内,寻找其中响应最大的模式,也就是对抗了图像偏移问题。 cnn的卷积实际是聚类到不同的聚类核
2017-05-16 12:51:45
1108
原创 CNN (深度神经网络)的本质
目前CNN 效果这么好,并不是因为深度神经网络的深,而是局部卷积+pooling的结果。偶然看到GCforest,据说效果也很好。 使用其他方式代替神经网络,实现CNN结构,我预测效果一样好,或者会有更多其他优势。 一直在研究用其他方式实现CNN的过程。目前看 gcforest 做到了。看看这个方向没错。 另外,lstm 不一定是对语音序列处理效果最好的。 使用卷积方式扩展到时间
2017-03-06 12:35:46
1769
1
原创 深度神经网络权值初始化的诡异问题
最近自己些 cnn网络,遇到麻烦事了。直接使用c++从头写,按照层次化 模块化编写。为的是做之后的海量动态增量学习的 cnn。 写完代码,调试,结果基本和预期一样的差,毕竟要注意的参数很多。各个任何地方遗漏一个参数符号都会导致网络失败。于是从头开始bp网络检查错误。 1、使用1维个输入值,做3层bp网络测试。 1> 2分类,两输出节点情况。网络快速收敛。样本格式,
2016-05-18 10:58:56
3498
原创 freelife的 视觉探索
视觉听觉是智慧系统的 最重要的两个感知模块。目前的计划是首先突破最难的视觉。根据现有的图像识别技术结合,制作第一代视觉系统。根据人的视觉特性, 第一步是图像分割、第二步是基本图元识别、第三阶是对子图元组合成物体对象的识别。 对目前的图像识别方法都不满意,所以打算从头开始吧。第一个阶段的图像图元分割。根据视频特性,应该是像素类聚方式最好。 已经尝试过统计直方图分类.结论是,该方法虽
2012-02-20 16:25:32
429
原创 FreeLife 正式启动(自由生命)
Free Life本项目名称为 free life (自由生命),而不是自由生活。分为 Free Baby、 Free younger、 Free Man 等子项目 疑问和Point,所有研究内容围绕以下内容展开1 什么是“我”。大脑的什么地方能记录或者标记“我”,能够让“我”,从一个躯体分离出来,或者可以植入另一个躯体或者机器。2 模拟智能,实现智能思考机器人。根
2012-01-04 17:28:35
1478
2
原创 SetWindowOrg SetViewportOrg DC 的坐标形象解释
SetWindowOrg SetViewportOrg DC 的坐标形象解释
2011-01-06 17:31:00
1717
2
原创 疯狂的机器人-软件
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty
2009-06-02 13:59:00
514
原创 疯狂机器人-硬件
<!-- /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-
2009-06-02 13:55:00
764
TensorFLow 使用 facenet 模型
2018-07-25
s3c2410 基于linux2.6的 cs8900网卡的移植
2007-06-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人