自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (4)
  • 问答 (3)
  • 收藏
  • 关注

原创 Stable Diffusion模型运算量分析

StableDiffusion运算量分析

2022-11-04 21:09:24 8069 1

原创 ONNX模型tensor shapes inference和Flops统计工具

onnx模型tensor shapes显示与运算量的逐层统计.

2022-07-01 17:15:46 6618 1

原创 基于NvidiaGPU的AI模型结构优化

前言前段时候我收到了算法组的一个AI模型的落地请求. 这个模型是为了能在服务器实时推理进行了裁剪, 运算量从7GFlops降低到了1GFlops, 但实际反映出来的速度提升只有

2021-05-29 16:35:13 871

原创 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 1911

原创 VS2019 16.8 “消失“的团队资源管理器

前言最近用stylegan训练了一个人脸卡通化模型,分享下成果:A类就是从网上下载的几个人脸检测数据集拼起来的, B类是kaggle的一个bitmoji faces:链接在这里:https://www.kaggle.com/mostafamozafari/bitmoji-facesGAN还挺奇妙的, 你在训练前你也不知道模型会给你搞出什么结果. 感兴趣的可以训练试试.这个月事情还比较多. 所以本篇简单更新VS2019的git功能操作.正文如果你看过我之前的文章..

2020-12-12 13:37:44 2974 2

原创 VS2019 内联汇编开发

前言上个月有点懒, 炒股和玩游戏把时间占满了, 而且一时间没想到特别想写的文章. 这个月争取开个好头.首先什么是内联汇编?内联汇编是在C,C++代码内部嵌入一部分汇编代码, 这部分代码会被编译器跳过直接拼接.为什么要用内联汇编?这种情况一般是由于我们对于当前的编译器的能力感到不满意, 所以需要代替编译器来优化一些代码片段. 当然我们可以完全进行汇编实现, 直接把函数写成一个.asm汇编文件(这个文件可以用yasm, nasm, masm进行编译为object文件参与代码链接). 内联..

2020-11-21 21:29:12 10232 1

原创 VS2019 C++安卓控制台程序开发

前言之前有介绍过在VS上开发安卓的.so, VS也提供了内嵌的项目模板, 非常简单. 唯一的不足之处在于, 开发的.so总得要配合某个APK来调用进行调试, 与我们开发PC应用很不同, 不能在控制台直接观测程序运行结果.能否在安卓上直接开发控制台应用呢? 答案是肯定行. 这个我也给VS的团队提过意见, 希望能够补充这一块的项目模板, 毕竟安卓的C++和Java应用都有了, C++的.so, .a库也有了, 唯独缺少了控制台应用. 但是人微言轻, 目前也没啥进展, 所以就提供下我自己的方法, 用于安卓

2020-08-13 01:11:35 4736 4

原创 RGB图像上的密文--违规数据隐藏

前段时间想发公司的内推广告,被CSDN审核不通过。于是我就想,怎么能把我想要的数据隐藏到一张图片里。数据的格式字符串是我们日常最常用的数据形式,这里先看下一个字符串的数据是怎么保存的。比如这个字符串:"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 1020

原创 VS2019 团队资源管理器--Git的使用(二)

上一篇文章其实写到一半, 因为很多操作没法在我刚创建的代码仓库上进行演示, 我得弄一堆分支或者commit. 这篇先把上一篇没有讲解的操作补全.准备本来这篇想以opencv的仓库为例子来进行演示, 但是我Clone了一下发现速度只有几十k. 所以还是想解决下这个Github的Clone速度问题.如果在取消Clone以后VS是这样一直在取消中:那么就去任务管理器中把所有的Git for windows给结束掉:结束后会有以下的提示:这个没什么问题, 感觉是VS陷入了死.

2020-07-03 22:44:37 4507 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 10185

原创 VS2019 VC++ 静态库的开发与使用

前言这篇文章应该写在这个系列里面的:VS2017的C++开发心得(九)DLL动态链接——多项目开发。但当时没写,只写了动态链接的相关内容,是因为我认为静态链接相比较动态链接会简单得多,所以干脆就略过了。既然有人提问了,那我就简单的开发流程和主要遇到的问题来讲讲静态库的开发。首先总体来看,静态库和动态库的区别在于:1. 静态库只出现在项目的编译生成的链接期,而动态库则是程序运行时加载使用的;2. 静态库只有一个.lib文件,而动态库除了一个.dll文件以外一般还有个对应的.lib文件;

2020-05-09 21:40:19 10721 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 7771 5

原创 VS2019 C++的跨平台开发——Cmake项目(一)

最近正好用到,感觉很好用,所以分享出来。1.创建Cmake项目这里的解决方案和项目的概念和VC++项目的一样,解决方案就是项目的合集,项目是对应每一个静态库,动态库和可执行文件的编译目标。创建完成:我建议一定要把上图红框的两个内容看一遍。CMake相关的知识我都会带过,因为内容太多了就很难写。下面内容看不懂的一定要看这两个文档。2.文件结构讲解首先是文件夹视图,...

2020-03-29 12:16:32 22425 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 1009 1

原创 VS2019 C++的跨平台开发——Linux开发

前言由于前段时间正好买了一个服务器来跑Tensorflow的推理模型,所以借这个机会把Linux的开发也一并补上。先声明我的服务器是Ubuntu16.04,下面文章的内容也是基于Ubuntu16.04的。为什么标题要写Linux呢?原因是我也开发过Raspbian(Debian)和CentOS,这些系统除了安装软件插件命令有些变化以外,开发过程并没有什么不同,应该可以通用。这部分内容我...

2019-11-12 00:41:57 14524 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 4059 5

原创 Unity3d 安卓开发问题总结

开发了半年基于Unity的安卓应用,项目也基本快完结了。在开发过程中遇到了很多坑,然而Unity的技术支持几乎都在英文论坛里。直接百度,真的很难解决问题。本篇对这半年的开发经历做一个总结,希望能帮助其他开发者。https://forum.unity.com/这个是Unity的官方论坛,个人认为解决技术问题很好的途径,就是回复不是很稳定,看情况,然后网络访问也不是很稳定。下面就从我在上面的提问...

2019-09-17 23:22:51 4022

原创 欢迎回到现代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 488

原创 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 1606

原创 VS2019 C++的跨平台开发——Android .so开发

这篇介绍下怎么用VS开发Android使用的.so动态链接库文件。Android环境配置1.先打开VS installer​2.选中C++移动开发​3.如果VS没有下载NDK和SDK的,需要在VS里面配置​​我这里用的是Unity下载的NDK,SDK,JDK。路径大概在:Unity\xxxxxxxx\Editor\Data\PlaybackEngines\Andro...

2019-07-03 22:13:52 31010 14

原创 VS2019 C++的跨平台开发——C# WPF

本篇介绍如何使用C++开发DLL给WPF的C#脚本调用。本文虽然以C#的WPF窗体应用为例子,但不限于此,.net平台都可以使用,包括Unity的C#脚本。项目准备首先VS2019相对于VS2017最明显的变化就是创建新建工程的界面,创建C++ DLL 工程和C# WPF如下图所示:C++项目的配置就参考之前的文章https://blog.csdn.net/luoyu51018...

2019-06-26 22:57:04 10750

原创 VS2019 dumpbin查看DLL的导出函数

之前有人问过ViewDLL这些软件在哪下载。实际上使用VS就可以查看DLL的导出接口。1.先打开VS内部的Power Shell2.打开以后应该如下图所示,首先输入dumpbin查看下用法:3.使用 /Exports 参数查看DLL的导出函数符号顺便再讲下关于调用约定和函数符号的关系,即_stdcall,_cdecl.还有就是extern "c"对函数名符号的影响...

2019-06-25 23:21:02 13529 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 2208 1

原创 VS2017的C++开发心得(十四)导出类与API开发(上)

首先介绍下一个我经历过的一个大坑,工作第一年在csdn提问时被告知,如果你有两个以上的项目要共享一个类,那么就把这些类的cpp文件加入每个项目编译就行了。如果一个解决方案下有两个项目PA,PB,这两个项目都要用到同一个类CC。从之前的文章知道数据类型没问题,但是一旦涉及函数和静态变量,那么就要考虑导出的问题,否则会出现链接错误的提示。刚毕业时这些完全不懂,出现了链接错误的问题。于是我去csdn...

2019-05-11 22:07:58 1628

原创 从编译角度来理解C++中的面向对象

面向对象一直是C++相对于C语言的最大改进,但很多人也说不清具体体现在哪。我上学时也是一眼而过不再细想,直到现在写过很多C语言代码以后才会豁然明白为什么要面向对象编程。首先要回顾前面说过的VS2017的C++开发心得(十)头文件与重复定义符号“重定义符号”的问题。面向对象就和这个很有关系。先看两段代码,在不使用面向对象编程的时候如何避免重定义符号://////////////a.h///...

2019-03-06 00:57:23 521

原创 STM32 之 HAL 库USART的DMA的使用

上一篇对于UART的使用是非常初级的。一般我也只会用来进行代码测试,不会运用到实际项目当中。因为阻塞式的询问串口数据非常占用CPU的使用率,即便每次询问1ms对于CPU来讲都是很长时间的空闲状态。上一篇讲的bug也只是出现在该情况下。因为对于串口数据的到来时间不确定,所以浪费了很多时间在等待信号。非阻塞式的串口通信主要有IT和DMA。IT是利用MCU的中断的硬件特性,就像是示波器的trig...

2019-01-26 23:16:09 14399 7

原创 VS2017的C++开发心得(十三)调试——内存溢出和内存泄漏(下)

这篇是调试的最后一篇,也是VS2017的最后一篇。这一篇主要介绍远程调试。以上两篇介绍的情况都是自己开发自己调试, 而作为软件开发者不可能将系统完全开发到没有bug的程度才去发布。大多数都是一边发布,一边更新。所以,在我们发布软件到客户手上后,要能够收集用户的崩溃信息,以及能够帮助开发者解决bug的重要数据。很多软件,包括Windows系统,出现崩溃以后会有个错误汇报窗口,引导你上传错...

2019-01-21 01:20:05 3716 2

原创 STM32 之 HAL 库串口 USART 丢数据及ORE卡死的解决方案

刚装了VS2019Preview,VS2017系列应该还有最后一章就结束了,找个时间结束掉它。昨晚弄了下STM32的串口通信,发现UART在接收PC串口调试助手发送的数据的时候,会时不时卡死,不能接收新的数据。之前公司有人做这方面的项目的时候也是这个情况,当时发现UART处于ORE(overrun error)状态,归结为波特率太高,降低波特率算妥协了。结果自己弄Nucleo的开发板也出现这个...

2019-01-16 23:11:43 25764 6

原创 Irrlicht 1.8.4中加入基于D3D9的系统字体支持

Irrlicht是一个基于C++开源的3D引擎,中文名叫鬼火引擎。成立团队现在基本走光了,只剩下一个德国人Michael还在苦苦坚持。老实讲,不推荐大家去用这款引擎,特别是商用。因为实在太老了,最高支持到D3D9,特别对字体的支持很差,对3D模型的加载支持也很差。但作为C++的3D引擎的学习材料还是可以的。由于Irrlicht自己的字体只能使用图片字体,像这样的:基本不能支持中文,所以...

2018-12-16 17:35:08 392

原创 VS2017的C++开发心得(十二)调试——内存溢出和内存泄漏(中)

这篇要做一点改变,本来计划是怎么debug内存溢出,但由于内存溢出的方式各种各样,没有固定的debug方式,调试手段随机应变。所以这篇主要从内存分布来理解内存溢出问题,以及内存溢出可能造成的后果。首先看看结构体的内存分布,代码如下:#include <Windows.h>struct SA{ double dArray[2]; int t; SA() { F...

2018-12-16 13:03:21 5133

原创 VS2017的C++开发心得(十一)调试——内存溢出和内存泄漏(上)

VS的调试功能非常强大,一方面是覆盖面很广可以调试本地程序,也可以调试远程的Linux服务器程序。另一方面是内容很丰富,基于汇编调试之上,可以查看内存信息,线程堆栈,甚至GPU、CPU的占用情况,还有DX12的图形调试以及NVIDIA的Nsight的CUDA调试。基本满足你从开发到优化到debug到发布的所有需求。本章介绍VS下的本地程序的调试方法。本地程序的调试主要分为两种,一种是主动调...

2018-12-02 23:36:49 15155 1

原创 VS2017的C++开发心得(十)头文件与重复定义符号

之前在这篇文章VS2017的C++开发心得(四)VS的文件夹路径以及项目生成步骤中谈到过关于在cpp中定义相同类型变量名导致的重复定义。先看下什么是符号,我在main.cpp中定义了一个int test,同时又在a.cpp中定义了一个int test,编译会出现链接错误如下:从上图可知,符号是由变量名和类型共同组成的,所以如果我a.cpp中定义的是int test(){ ...

2018-11-16 00:27:29 3811 3

原创 VS2017的C++开发心得(九)DLL动态链接——多项目开发

这一篇主要介绍在一个解决方案下如何进行多项目开发。其实开发代码都放在一个项目下也可以实现它的功能,为什么要使用多项目开发?从编程架构上来讲,树状结构是最优秀的架构。树状结构越发散,它的维护任务就越轻松。这句话的意思是:我们在进行C++工程开发的时候对每一个cpp的功能进行清楚的分割,减少不同功能的cpp文件之间的耦合性,即便当系统非常庞大的时候,维护起来也很方便。说得简单点就是分类工作一开始就...

2018-11-13 00:08:45 6704 3

原创 VS2017的C++开发心得(八)DLL动态链接——Opencv的使用

上一篇对dll的链接使用进行了粗略介绍,这一篇就以Opencv为例子介绍下怎么使用第三方库来进行程序开发。Opencv是世界机器视觉领域非常著名的开源库,里面包含了大量的图形处理算法,变换算法,匹配算法,也包括现在流行的DNN深度学习网络应用。Opencv的强大更在于它的整个库对用Opencl和CUDA的支持非常好,同样的算法,你自己写的运行速度基本没法跟Opencv的运行速度比较。首先去官网...

2018-11-11 23:15:43 6258 5

原创 VS2017的C++开发心得(七)DLL动态链接——查看依赖的外部模块

DLL的链接使用,对于每个C++工程来说应该是必须的,有些是你主动使用的,还有很多是VS后台已经链接好了的。首先介绍下怎么看你的程序使用了多少的动态链接库文件:通过任务管理器的资源监视器,我们在CPU中找到运行程序的进程,选定VSDebugConsole以后,在下面的“关联的模块中”会出现这个程序所依赖的dll文件。目前我们的项目并没有配置额外的第三方库,所以出现的关联dll都是位于sys...

2018-11-11 23:07:04 5988 2

原创 VS2017的C++开发心得(六)头文件的路径问题与属性管理器

这篇主要介绍下头文件的路径问题。首先,看看下面两个头文件引用,哪个是正确的:#include <iostream>#include "iostream"有人会推荐你用前一个即<>,其实两个都是正确的,都能正确引用到这个头文件,那么区别在哪?VS的推荐路径不同,现在VS都有一个功能叫intellisense,如下:这个主要帮我们快速完成代码,上图中...

2018-11-07 00:13:29 19407 1

原创 VS2017的C++开发心得(五)项目开发的文件夹管理

上一篇介绍了VS默认的项目文件夹路径,但这种路径实际上是不适合大型项目的代码管理的,特别是需要用到云开发的时候。这一篇文章就介绍下,在开发大型项目的时候项目文件夹该怎么管理。介绍下云开发模式,典型的就是GitHub和微软的Azure。简单来讲就是开发者上传他们的代码到这些服务器上,这种做法有下面几个好处:1.源码在云服务器更安全;2.进行代码的版本管理和分支管理;3.团队协作开发。其中2和3是...

2018-11-05 23:27:08 9161 8

原创 VS2017的C++开发心得(四)VS的文件夹路径以及项目生成步骤

这篇先来理一理VS的文件夹路径,以及几个关键的路径宏。先看看解决方案根目录:这个结构很简单,解决方案下一个项目对应一个文件夹,一配置对应一个生成文件夹。项目文件夹:存放项目的代码、项目配置文件以及项目的中间编译结果,如下:打开Debug文件夹,看看项目生成的时候产生了哪些东西:这里要先简单介绍下VS的项目生成步骤。VS的项目生成大致分成四步:分析、编译、链接、生成。...

2018-11-04 17:07:26 30433 11

原创 VS2017的C++开发心得(三)VS的常用项目属性介绍

这一篇简单介绍下常用的项目属性的使用。首先是配置管理器,在属性页的“配置管理器”按键打开:所有项目创建好了以后都有两个默认的配置“Debug”和“Release”。首先这个配置是什么意思?属性页里面有很多属性,比如第一个常规分类下:先看看图里标注的几项,这些算是比较常接触的。然后再回到配置,可以看到图中每一项都有个字段名和值,比如:“平台工具集”“Visual Studio...

2018-11-04 12:51:08 9517 8

原创 VS2017的C++开发心得(二)VS的项目的基本介绍

VS真的很复杂,所以刚开始只介绍最基本的功能,以后的接触到再说。首先介绍“解决方案资源管理器”:这时候就需要添加第一个cpp文件和h文件了:接下来就要接触到一个概念:子系统。子系统就是相对于Windows这个母系统来讲的你的程序。它对于你的程序来讲最大的影响是入口函数的规范。入口函数:当你的项目以EXE的格式编译好了以后,双击后Windows所调用的唯一函数。这也是它为...

2018-11-04 01:35:34 7662 1

RGB图像上的密文--违规数据隐藏Demo

RGB图像上的密文--违规数据隐藏的demo程序.RGB图像上的密文--违规数据隐藏的demo程序.

2020-07-16

Microsoft.ML.ModelBuilder.zip

这是VS内部用来建立和训练神经网络模型的一个UI插件。使用VisualStudio的扩展安装是可以自动安装的,但是下载进度条几乎不动。所以用离线下载后手动安装的方式。把安装包上传到这里,安装需要先关闭VisualStudio。

2019-09-27

WpfApp1 - 副本.7z

解决方案下包括一个C++项目和一个C#WPF项目。C++项目生成接口DLL,C#项目加载DLL调用C++接口,并且C#传递自己函数给C++回调使用。使用前,请依次编译C++项目和C#项目。

2019-06-26

3DMAX 2017-2018 X Exporter 输出.x模型插件 x64位

Installation: Extract the dle file into the plugins directory of 3ds Max. e.g.: C:\Program Files\Autodesk\3ds Max 2017\plugins If you are encountering a runtime error when start 3ds Max you need to install Visual C++ 2015 Redistributable Packages Usage: 1.Setup your scene and then choose Export or Export Selected from the File menu. 2.Click the 'Save as type' dropdown list where you will find Alin DirectX Exporter. Choose a file path, and then press OK. The configuration dialog will appear, which control how the scene data will be converted from 3ds Max to .x file. 3.New options: X-Rot and Z-Rot can be used for custom coordinate system, for example, switch between Y-up and Z-up is very easy: simply set the X-Rot to 90. 4.3d engine like Irrlicht needs key sequence to take full control of animation speed. You must select Custom in Timeline tab and set to 1, otherwise the animation will be very slow. 5.If there are textures with names in Asian(Chinese, Korean, Japanese) characters, you must set the output format to binary or compressed. 6.Click OK when you finish the configuration.

2017-11-11

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除