- 博客(42)
- 资源 (4)
- 问答 (3)
- 收藏
- 关注
原创 ONNX模型tensor shapes inference和Flops统计工具
onnx模型tensor shapes显示与运算量的逐层统计.
2022-07-01 17:15:46
8782
1
原创 基于NvidiaGPU的AI模型结构优化
前言前段时候我收到了算法组的一个AI模型的落地请求. 这个模型是为了能在服务器实时推理进行了裁剪, 运算量从7GFlops降低到了1GFlops, 但实际反映出来的速度提升只有
2021-05-29 16:35:13
1059
原创 VS2019 CMake开发Win&Linux双平台CUDA+cuDNN
前言最近的项目是在帮助服务器落地一些AI算法, 用到的Nvidia的GPU来推理, 主要会用到CUDA, cuDNN和TensorRT. 另外我也在开发独立的CUDA引擎来替换cuDNN, 由于cuDNN目前不支持Direct这种直接卷积算法, 只能使用GEMM,FFT和WINOGRAD这三种算法. 我的目前测试感觉这三种并不会一定会比直接卷积快, 另外cuDNN的TRUE_HALF_CONFIG , 并不会比float计算快, 这个和我用直接卷积的结论是相反的.先讲解下结构关系:CUDA是Nv
2021-01-31 16:33:15
2118
原创 VS2019 16.8 “消失“的团队资源管理器
前言最近用stylegan训练了一个人脸卡通化模型,分享下成果:A类就是从网上下载的几个人脸检测数据集拼起来的, B类是kaggle的一个bitmoji faces:链接在这里:https://www.kaggle.com/mostafamozafari/bitmoji-facesGAN还挺奇妙的, 你在训练前你也不知道模型会给你搞出什么结果. 感兴趣的可以训练试试.这个月事情还比较多. 所以本篇简单更新VS2019的git功能操作.正文如果你看过我之前的文章..
2020-12-12 13:37:44
3219
2
原创 VS2019 内联汇编开发
前言上个月有点懒, 炒股和玩游戏把时间占满了, 而且一时间没想到特别想写的文章. 这个月争取开个好头.首先什么是内联汇编?内联汇编是在C,C++代码内部嵌入一部分汇编代码, 这部分代码会被编译器跳过直接拼接.为什么要用内联汇编?这种情况一般是由于我们对于当前的编译器的能力感到不满意, 所以需要代替编译器来优化一些代码片段. 当然我们可以完全进行汇编实现, 直接把函数写成一个.asm汇编文件(这个文件可以用yasm, nasm, masm进行编译为object文件参与代码链接). 内联..
2020-11-21 21:29:12
11712
1
原创 VS2019 C++安卓控制台程序开发
前言之前有介绍过在VS上开发安卓的.so, VS也提供了内嵌的项目模板, 非常简单. 唯一的不足之处在于, 开发的.so总得要配合某个APK来调用进行调试, 与我们开发PC应用很不同, 不能在控制台直接观测程序运行结果.能否在安卓上直接开发控制台应用呢? 答案是肯定行. 这个我也给VS的团队提过意见, 希望能够补充这一块的项目模板, 毕竟安卓的C++和Java应用都有了, C++的.so, .a库也有了, 唯独缺少了控制台应用. 但是人微言轻, 目前也没啥进展, 所以就提供下我自己的方法, 用于安卓
2020-08-13 01:11:35
5084
4
原创 RGB图像上的密文--违规数据隐藏
前段时间想发公司的内推广告,被优快云审核不通过。于是我就想,怎么能把我想要的数据隐藏到一张图片里。数据的格式字符串是我们日常最常用的数据形式,这里先看下一个字符串的数据是怎么保存的。比如这个字符串:"I'm something,but nothing."Char Print of String:I'm something,but nothing.I ' m s o m e t h i n g , b u t n o t h i n g .Byte Print of Stri
2020-07-16 00:45:07
1114
原创 VS2019 团队资源管理器--Git的使用(二)
上一篇文章其实写到一半, 因为很多操作没法在我刚创建的代码仓库上进行演示, 我得弄一堆分支或者commit. 这篇先把上一篇没有讲解的操作补全.准备本来这篇想以opencv的仓库为例子来进行演示, 但是我Clone了一下发现速度只有几十k. 所以还是想解决下这个Github的Clone速度问题.如果在取消Clone以后VS是这样一直在取消中:那么就去任务管理器中把所有的Git for windows给结束掉:结束后会有以下的提示:这个没什么问题, 感觉是VS陷入了死.
2020-07-03 22:44:37
4713
1
原创 VS2019 团队资源管理器--Git的使用(一)
前言这篇要讲的是团队资源管理器, 简单的来说就是Git for VisualStudio.我们在Windows平台上使用的Git软件是Git for Windows, 官方的有两个打开方式: bash和GUI, 如下所示:其中bash就是网上最常见的命令行式的打开方式, git clone git checkout..这些命令都是在bash中使用的. GUI也还能用, 就是界面简陋了点.除了官方的这套工具以外, GitHub自己写了一套GithubDesktop的工具, 用来作为Wind
2020-06-27 18:42:03
10755
原创 VS2019 VC++ 静态库的开发与使用
前言这篇文章应该写在这个系列里面的:VS2017的C++开发心得(九)DLL动态链接——多项目开发。但当时没写,只写了动态链接的相关内容,是因为我认为静态链接相比较动态链接会简单得多,所以干脆就略过了。既然有人提问了,那我就简单的开发流程和主要遇到的问题来讲讲静态库的开发。首先总体来看,静态库和动态库的区别在于:1. 静态库只出现在项目的编译生成的链接期,而动态库则是程序运行时加载使用的;2. 静态库只有一个.lib文件,而动态库除了一个.dll文件以外一般还有个对应的.lib文件;
2020-05-09 21:40:19
11036
8
原创 VS2019 C++的跨平台开发——Cmake项目(二)
这一篇主要补充Windows下WSL(Linux 子系统)和远程Linux服务器的CMake项目编译运行。Widnows下创建WSL1. 右键左下角的Windows图标=》应用和功能=》启用或关闭Windows功能2. 选中“适用于Linux的Windows子系统,确定3. 安装结束后,应该需要重启一次。4. 打开Windows应用商城,没有固定在这里可以在开始菜单搜索...
2020-05-08 20:37:50
8162
5
原创 VS2019 C++的跨平台开发——Cmake项目(一)
最近正好用到,感觉很好用,所以分享出来。1.创建Cmake项目这里的解决方案和项目的概念和VC++项目的一样,解决方案就是项目的合集,项目是对应每一个静态库,动态库和可执行文件的编译目标。创建完成:我建议一定要把上图红框的两个内容看一遍。CMake相关的知识我都会带过,因为内容太多了就很难写。下面内容看不懂的一定要看这两个文档。2.文件结构讲解首先是文件夹视图,...
2020-03-29 12:16:32
24517
11
原创 从小米10发布来看编译优化
这篇文章的起因是有人跨界要来锤桌面CPU :看到新闻的第一感觉就是你在侮辱我的智商,第二感觉就是来自Windows程序员的愤怒。准备通过Google搜索了FFT+AGM+PI,最终确认小米用的是这个代码:http://www.kurims.kyoto-u.ac.jp/~ooura/pi_fft.html。下载后大概是这样的:这是win32bin下面的预编译好的exe。 ...
2020-02-15 15:26:30
1137
1
原创 VS2019 C++的跨平台开发——Linux开发
前言由于前段时间正好买了一个服务器来跑Tensorflow的推理模型,所以借这个机会把Linux的开发也一并补上。先声明我的服务器是Ubuntu16.04,下面文章的内容也是基于Ubuntu16.04的。为什么标题要写Linux呢?原因是我也开发过Raspbian(Debian)和CentOS,这些系统除了安装软件插件命令有些变化以外,开发过程并没有什么不同,应该可以通用。这部分内容我...
2019-11-12 00:41:57
15227
3
原创 VS2019 OpenCV的Windows工程到安卓的移植
前言本篇是应一个读者的请求,而且这种需求应该还是蛮多的:刚入职或者刚进实验室的新人,接手一套C++算法工程,现在老板让你移植到Android上。全部用Java重写,当然是不现实的。本文将介绍一种尽可能简单的移植方法。本文使用的软件版本如下:VisualStudio 2019 16.3.5 AndroidStudio 3.5 NDK-r16B Android SDK 21 Ope...
2019-10-23 22:27:33
4404
5
原创 Unity3d 安卓开发问题总结
开发了半年基于Unity的安卓应用,项目也基本快完结了。在开发过程中遇到了很多坑,然而Unity的技术支持几乎都在英文论坛里。直接百度,真的很难解决问题。本篇对这半年的开发经历做一个总结,希望能帮助其他开发者。https://forum.unity.com/这个是Unity的官方论坛,个人认为解决技术问题很好的途径,就是回复不是很稳定,看情况,然后网络访问也不是很稳定。下面就从我在上面的提问...
2019-09-17 23:22:51
4140
原创 欢迎回到现代C++
现在C++的岗位几乎都要求会使用C++11以后的标准,正好微软官方有一章就是讲的“Welcome Back to C++ (Modern C++)”,我这里主要在内存方面介绍下。具体请看看官方文档:https://docs.microsoft.com/en-us/cpp/cpp/welcome-back-to-cpp-modern-cpp?view=vs-2019先来个总纲:Modern ...
2019-09-08 17:43:42
542
原创 C++ OpenMP和CUDA进行并行计算时的浮点“误差”
前话前些时间考虑了下VS要不要顺便也讲下Linux的开发。最后还是决定算了:1.现在主流开发Linux的团队,比较排斥使用Windows来对Linux进行开发,虽然他们自己也承认VS开发很方便;2.Linux在VS和C++工程上和Android的基本没啥区别,唯一需要注意的要在VS的配置里面加上远程调试目标也就是Linux的IP和用户名之类的,具体参考微软官方文档:https://docs.m...
2019-08-21 00:16:27
1852
原创 VS2019 C++的跨平台开发——Android .so开发
这篇介绍下怎么用VS开发Android使用的.so动态链接库文件。Android环境配置1.先打开VS installer2.选中C++移动开发3.如果VS没有下载NDK和SDK的,需要在VS里面配置我这里用的是Unity下载的NDK,SDK,JDK。路径大概在:Unity\xxxxxxxx\Editor\Data\PlaybackEngines\Andro...
2019-07-03 22:13:52
32415
14
原创 VS2019 C++的跨平台开发——C# WPF
本篇介绍如何使用C++开发DLL给WPF的C#脚本调用。本文虽然以C#的WPF窗体应用为例子,但不限于此,.net平台都可以使用,包括Unity的C#脚本。项目准备首先VS2019相对于VS2017最明显的变化就是创建新建工程的界面,创建C++ DLL 工程和C# WPF如下图所示:C++项目的配置就参考之前的文章https://blog.youkuaiyun.com/luoyu51018...
2019-06-26 22:57:04
11125
原创 VS2019 dumpbin查看DLL的导出函数
之前有人问过ViewDLL这些软件在哪下载。实际上使用VS就可以查看DLL的导出接口。1.先打开VS内部的Power Shell2.打开以后应该如下图所示,首先输入dumpbin查看下用法:3.使用 /Exports 参数查看DLL的导出函数符号顺便再讲下关于调用约定和函数符号的关系,即_stdcall,_cdecl.还有就是extern "c"对函数名符号的影响...
2019-06-25 23:21:02
15822
4
原创 VS2017的C++开发心得(十五)导出类与API开发(下)
这一篇才正式进入正题,怎么导出类和开发API?其实导出类很简单,如下://CTest.h#pragma once#include "DLL.h"class API CTest{public: CTest(int* _buf,int _size); ~CTest(); int* Reverse(); static int InstanceCount;private: ...
2019-05-11 23:59:26
2363
1
原创 VS2017的C++开发心得(十四)导出类与API开发(上)
首先介绍下一个我经历过的一个大坑,工作第一年在csdn提问时被告知,如果你有两个以上的项目要共享一个类,那么就把这些类的cpp文件加入每个项目编译就行了。如果一个解决方案下有两个项目PA,PB,这两个项目都要用到同一个类CC。从之前的文章知道数据类型没问题,但是一旦涉及函数和静态变量,那么就要考虑导出的问题,否则会出现链接错误的提示。刚毕业时这些完全不懂,出现了链接错误的问题。于是我去csdn...
2019-05-11 22:07:58
1708
原创 从编译角度来理解C++中的面向对象
面向对象一直是C++相对于C语言的最大改进,但很多人也说不清具体体现在哪。我上学时也是一眼而过不再细想,直到现在写过很多C语言代码以后才会豁然明白为什么要面向对象编程。首先要回顾前面说过的VS2017的C++开发心得(十)头文件与重复定义符号“重定义符号”的问题。面向对象就和这个很有关系。先看两段代码,在不使用面向对象编程的时候如何避免重定义符号://////////////a.h///...
2019-03-06 00:57:23
592
原创 STM32 之 HAL 库USART的DMA的使用
上一篇对于UART的使用是非常初级的。一般我也只会用来进行代码测试,不会运用到实际项目当中。因为阻塞式的询问串口数据非常占用CPU的使用率,即便每次询问1ms对于CPU来讲都是很长时间的空闲状态。上一篇讲的bug也只是出现在该情况下。因为对于串口数据的到来时间不确定,所以浪费了很多时间在等待信号。非阻塞式的串口通信主要有IT和DMA。IT是利用MCU的中断的硬件特性,就像是示波器的trig...
2019-01-26 23:16:09
14701
7
原创 VS2017的C++开发心得(十三)调试——内存溢出和内存泄漏(下)
这篇是调试的最后一篇,也是VS2017的最后一篇。这一篇主要介绍远程调试。以上两篇介绍的情况都是自己开发自己调试, 而作为软件开发者不可能将系统完全开发到没有bug的程度才去发布。大多数都是一边发布,一边更新。所以,在我们发布软件到客户手上后,要能够收集用户的崩溃信息,以及能够帮助开发者解决bug的重要数据。很多软件,包括Windows系统,出现崩溃以后会有个错误汇报窗口,引导你上传错...
2019-01-21 01:20:05
3884
2
原创 STM32 之 HAL 库串口 USART 丢数据及ORE卡死的解决方案
刚装了VS2019Preview,VS2017系列应该还有最后一章就结束了,找个时间结束掉它。昨晚弄了下STM32的串口通信,发现UART在接收PC串口调试助手发送的数据的时候,会时不时卡死,不能接收新的数据。之前公司有人做这方面的项目的时候也是这个情况,当时发现UART处于ORE(overrun error)状态,归结为波特率太高,降低波特率算妥协了。结果自己弄Nucleo的开发板也出现这个...
2019-01-16 23:11:43
28757
7
原创 Irrlicht 1.8.4中加入基于D3D9的系统字体支持
Irrlicht是一个基于C++开源的3D引擎,中文名叫鬼火引擎。成立团队现在基本走光了,只剩下一个德国人Michael还在苦苦坚持。老实讲,不推荐大家去用这款引擎,特别是商用。因为实在太老了,最高支持到D3D9,特别对字体的支持很差,对3D模型的加载支持也很差。但作为C++的3D引擎的学习材料还是可以的。由于Irrlicht自己的字体只能使用图片字体,像这样的:基本不能支持中文,所以...
2018-12-16 17:35:08
450
原创 VS2017的C++开发心得(十二)调试——内存溢出和内存泄漏(中)
这篇要做一点改变,本来计划是怎么debug内存溢出,但由于内存溢出的方式各种各样,没有固定的debug方式,调试手段随机应变。所以这篇主要从内存分布来理解内存溢出问题,以及内存溢出可能造成的后果。首先看看结构体的内存分布,代码如下:#include <Windows.h>struct SA{ double dArray[2]; int t; SA() { F...
2018-12-16 13:03:21
5329
原创 VS2017的C++开发心得(十一)调试——内存溢出和内存泄漏(上)
VS的调试功能非常强大,一方面是覆盖面很广可以调试本地程序,也可以调试远程的Linux服务器程序。另一方面是内容很丰富,基于汇编调试之上,可以查看内存信息,线程堆栈,甚至GPU、CPU的占用情况,还有DX12的图形调试以及NVIDIA的Nsight的CUDA调试。基本满足你从开发到优化到debug到发布的所有需求。本章介绍VS下的本地程序的调试方法。本地程序的调试主要分为两种,一种是主动调...
2018-12-02 23:36:49
16211
2
原创 VS2017的C++开发心得(十)头文件与重复定义符号
之前在这篇文章VS2017的C++开发心得(四)VS的文件夹路径以及项目生成步骤中谈到过关于在cpp中定义相同类型变量名导致的重复定义。先看下什么是符号,我在main.cpp中定义了一个int test,同时又在a.cpp中定义了一个int test,编译会出现链接错误如下:从上图可知,符号是由变量名和类型共同组成的,所以如果我a.cpp中定义的是int test(){ ...
2018-11-16 00:27:29
3984
3
原创 VS2017的C++开发心得(九)DLL动态链接——多项目开发
这一篇主要介绍在一个解决方案下如何进行多项目开发。其实开发代码都放在一个项目下也可以实现它的功能,为什么要使用多项目开发?从编程架构上来讲,树状结构是最优秀的架构。树状结构越发散,它的维护任务就越轻松。这句话的意思是:我们在进行C++工程开发的时候对每一个cpp的功能进行清楚的分割,减少不同功能的cpp文件之间的耦合性,即便当系统非常庞大的时候,维护起来也很方便。说得简单点就是分类工作一开始就...
2018-11-13 00:08:45
6900
3
原创 VS2017的C++开发心得(八)DLL动态链接——Opencv的使用
上一篇对dll的链接使用进行了粗略介绍,这一篇就以Opencv为例子介绍下怎么使用第三方库来进行程序开发。Opencv是世界机器视觉领域非常著名的开源库,里面包含了大量的图形处理算法,变换算法,匹配算法,也包括现在流行的DNN深度学习网络应用。Opencv的强大更在于它的整个库对用Opencl和CUDA的支持非常好,同样的算法,你自己写的运行速度基本没法跟Opencv的运行速度比较。首先去官网...
2018-11-11 23:15:43
6437
5
原创 VS2017的C++开发心得(七)DLL动态链接——查看依赖的外部模块
DLL的链接使用,对于每个C++工程来说应该是必须的,有些是你主动使用的,还有很多是VS后台已经链接好了的。首先介绍下怎么看你的程序使用了多少的动态链接库文件:通过任务管理器的资源监视器,我们在CPU中找到运行程序的进程,选定VSDebugConsole以后,在下面的“关联的模块中”会出现这个程序所依赖的dll文件。目前我们的项目并没有配置额外的第三方库,所以出现的关联dll都是位于sys...
2018-11-11 23:07:04
6135
2
原创 VS2017的C++开发心得(六)头文件的路径问题与属性管理器
这篇主要介绍下头文件的路径问题。首先,看看下面两个头文件引用,哪个是正确的:#include <iostream>#include "iostream"有人会推荐你用前一个即<>,其实两个都是正确的,都能正确引用到这个头文件,那么区别在哪?VS的推荐路径不同,现在VS都有一个功能叫intellisense,如下:这个主要帮我们快速完成代码,上图中...
2018-11-07 00:13:29
19783
1
原创 VS2017的C++开发心得(五)项目开发的文件夹管理
上一篇介绍了VS默认的项目文件夹路径,但这种路径实际上是不适合大型项目的代码管理的,特别是需要用到云开发的时候。这一篇文章就介绍下,在开发大型项目的时候项目文件夹该怎么管理。介绍下云开发模式,典型的就是GitHub和微软的Azure。简单来讲就是开发者上传他们的代码到这些服务器上,这种做法有下面几个好处:1.源码在云服务器更安全;2.进行代码的版本管理和分支管理;3.团队协作开发。其中2和3是...
2018-11-05 23:27:08
10121
8
原创 VS2017的C++开发心得(四)VS的文件夹路径以及项目生成步骤
这篇先来理一理VS的文件夹路径,以及几个关键的路径宏。先看看解决方案根目录:这个结构很简单,解决方案下一个项目对应一个文件夹,一配置对应一个生成文件夹。项目文件夹:存放项目的代码、项目配置文件以及项目的中间编译结果,如下:打开Debug文件夹,看看项目生成的时候产生了哪些东西:这里要先简单介绍下VS的项目生成步骤。VS的项目生成大致分成四步:分析、编译、链接、生成。...
2018-11-04 17:07:26
31653
11
原创 VS2017的C++开发心得(三)VS的常用项目属性介绍
这一篇简单介绍下常用的项目属性的使用。首先是配置管理器,在属性页的“配置管理器”按键打开:所有项目创建好了以后都有两个默认的配置“Debug”和“Release”。首先这个配置是什么意思?属性页里面有很多属性,比如第一个常规分类下:先看看图里标注的几项,这些算是比较常接触的。然后再回到配置,可以看到图中每一项都有个字段名和值,比如:“平台工具集”“Visual Studio...
2018-11-04 12:51:08
9807
8
原创 VS2017的C++开发心得(二)VS的项目的基本介绍
VS真的很复杂,所以刚开始只介绍最基本的功能,以后的接触到再说。首先介绍“解决方案资源管理器”:这时候就需要添加第一个cpp文件和h文件了:接下来就要接触到一个概念:子系统。子系统就是相对于Windows这个母系统来讲的你的程序。它对于你的程序来讲最大的影响是入口函数的规范。入口函数:当你的项目以EXE的格式编译好了以后,双击后Windows所调用的唯一函数。这也是它为...
2018-11-04 01:35:34
7820
1
Microsoft.ML.ModelBuilder.zip
2019-09-27
WpfApp1 - 副本.7z
2019-06-26
3DMAX 2017-2018 X Exporter 输出.x模型插件 x64位
2017-11-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人