8 夕阳叹

尚未进行身份认证

The best way to predict the future is to create it.

等级
TA的排名 1w+

SIMD优化之ARM纯汇编开发

ARM纯汇编开发注:这篇文章是两年前写的,当时认知也不足,其中可能有不少错误,敬请行家指正。为什么要用纯汇编开发效率高这里可能让很多人大跌眼镜了,纯汇编开发效率高?首先,这个是有限定条件的,需要反复调优的重度运算场景(比如卷积),纯汇编开发效率最高。其次,这里的纯汇编并不是整个代码用汇编写,是指的将足够重的函数提取出来,用纯汇编实现。参数试验为什么呢,在用C开发时,受到toolch...

2020-01-17 00:01:50

浅淡深度学习的发机机——张量计算

张量计算的优化张量计算是个看似陌生,实际上很常用的概念,它包括滤镜、核函数计算、矩阵乘法、卷积等一大类算法,是图像算法、机器学习以及深度学习的基础。如何进行高效的张量计算,是OpenCV之类的图像库、OpenBlas之类的高性能计算库以及MNN之类的深度学习推理引擎要解决的核心问题。本文主要以深度学习的推理引擎为具体应用场景,谈一下张量计算的主要优化策略。相关链接:https://gith...

2019-12-28 11:09:30

快速矩阵乘法的研究——下

快速矩阵乘法的研究本文我们只看一个算法,就是 Coppersmith 和 Winograd 提出的O(2.39)O(2.39)O(2.39)的矩阵乘法。请确保前两篇内容已经掌握理解。https://blog.csdn.net/jxt1234and2010/article/details/88588208https://blog.csdn.net/jxt1234and2010/article/...

2019-10-21 13:02:30

快速矩阵乘法的研究——中

快速矩阵乘法的研究渐近和不等式(Asymptotic sum inequality)有了APA之后,我们突破了Strassen 算法的阈值,但希望进一步往下降时,总是构造不出来,遇到了瓶颈。这个时候,人们发现了一条新的道路。同时计算多个矩阵乘法对于 C=ABC=ABC=AB 这个矩阵乘法,我们已经找不到更好的构造算法,但如果同时计算 C1=A1B1,C2=A2B2C_1=A_1B_1, C...

2019-04-05 14:04:58

快速矩阵乘法的研究——上

快速矩阵乘法的研究最近的工作主要在于深度学习框架的性能优化。深度学习框架在工程的优化(内存池、SIMD、汇编、GPU、DSP等等)做到接近极限之后,突破点便集中于算法。深度学习的性能瓶颈主要在于卷积,卷积的运算方法主要是通过 Im2Col / Winograd / FFT 转化为矩阵乘,完成矩阵乘法之后,再转化为目标结果。深度学习框架的输入是算法工程产出的网络模型,而目前网络模型都渐渐地转变...

2019-03-16 04:39:53

移动端深度学习框架——绝影简介

绝影(Prestissimo)绝影是一个高性能移动端深度学习框架,其项目地址见https://github.com/in66-dev/In-Prestissimo

2017-11-30 13:52:37

从软件工程的角度写机器学习7——-LSTM网络实现

LSTM网络实现问题描述影片评价问题: 输入一个英文句子,输出好/坏的二元评价,比如 The movie is very bad -> 0 Wonderful -> 1算法思路本图中的数字仅为示例,并非真实数据 Embedding层在上一篇卷积神经网络的实现中,我们将类别直接映射为{0,0…1,…0}这样的向量,但对于单词而言,这个向量维度太大了(500个单词就是500维…),结合后面的

2017-08-29 20:37:33

基于OpenGL ES 的深度学习框架编写

基于OpenGL ES的深度学习框架编写背景与工程定位背景项目组基于深度学习实现了视频风格化和人像抠图的功能,但这是在PC/服务端上跑的,现在需要移植到移动端,因此需要一个移动端的深度学习的计算框架。同类型的库caffe-android-lib 目前应该是最便于集成使用的深度学习框架库。 tensorflow和mxnet据说也有对应的android库,因时间原因暂未测试。 CNNdroid,网址

2017-05-06 21:08:22

3D文件压缩库——Draco简析

3D文件压缩库——Draco简析今年1月份时,google发布了名为“Draco”的3D图形开源压缩库,下载了其代码来看了下,感觉虽然暂时用不到,但还是有前途的,故简单做下分析。注:Draco 代码地址: https://github.com/google/draco基本使用编译cmake . + make 编译源码,生成 draco_encoder 和 draco_decoder 两个可执行文件

2017-02-24 14:21:26

OpenGL的替代者——Vulkan

OpenGL的替代者——VulkanVulkan是一个跨平台的2D和3D绘图应用程序接口(API),最早由科纳斯(Khronos)组织在2015年游戏开发者大会(GDC)上发表。旨在替代OpenGL,提高图形性能。基于OpenGL的图形引擎性能瓶颈基于OpenGL的图形引擎,其渲染过程粗略可分为主机端资源准备,设备端数据交互与管线准备及每帧循环的渲染三个部分。资源加载这一过程跟GPU没有

2016-12-20 15:45:30

从软件工程的角度写机器学习6——深度学习之卷积神经网络(CNN)实现

卷积神经网络(CNN)实现背景卷积神经网络广泛用于图像检测,它的实现原理与传统神经网络基本上是一样的,因此将普遍意义的神经网络和卷积神经网络的实现合成一篇。神经网络实现思路“扔掉神经元”尽管所有教程在介绍神经网络时都会把一大堆神经元画出来,并且以输入节点——神经元——输出结点连线,但是,在编程实现时,基于神经元去编程是低效的。典型如这篇经典文章里面的代码: http://blog.csdn.net

2016-10-28 02:00:09

从软件工程的角度写机器学习5——SVM(支持向量机)实现

SVM实现SVM在浅层学习时代是主流监督学习算法,在深度学习时代也往往作为最后一个预测层使用。本系列文章旨在讲解机器学习算法的工程实现方法,不在于推导数学原理。

2016-08-30 14:45:41

从软件工程的角度写机器学习4——-C4.5决策树的工程实现

C4.5决策树的工程实现这篇文章开始,将讲述一系列机器学习算法的工程实现方案。出于常用且简单的考虑,选择了C4.5决策树作为第一个算法。工程框架鉴于本篇是第一个算法实现,应此需要把整个工程框架介绍一下。 出于最优性能考虑,本框架是为C/C++语言设计的。不过即使用其他语言,也可以按这个框架实现,模块还可以再精简。本工程定位: 1、无脑版机器学习算法库,使用者基本不需要了解任何算法细节,也不需要了

2016-07-17 00:52:40

GPU与GPGPU泛淡

GPU与GPGPU泛淡GPU(Graphics Processing Unit),也即显卡,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上作图像运算工作的微处理器。它已经是个人PC和移动设备上不可或缺的芯片,有界面有显示的地方,一般就离不开它。高清电视、智能手机、个人电脑。GPU的产生是为了解决图形渲染效率的问题,但随着技术进步,GPU越来越强大,尤其是shader出

2016-05-21 01:48:32

从软件工程的角度写机器学习3——主要监督学习算法的工程性分析

主要机器学习算法的工程适用性分析前段时间AlphaGo跟李世石的大战及相关的深度学习的新闻刷了一遍又一遍的朋友圈。不过这件事情,也只是在机器学习的深度上进一步拓展,而机器学习的广度(也即工程化实践)上,仍然没有什么突破性的理论或实践,用的领域继续用,不用的领域依然不用。重要性机器学习的使命是使计算机强大的运算能力和存储能力转化为推演能力,能转化是一方面,转化的效率则是另一方面。科研性

2016-04-16 13:06:12

图像算法的工程优化技术

图像算法的工程优化技术当一个很酷的图像算法实现之后,我们希望集成到软件中去,这时将会遇到最大的拦路虎:性能。 可以想像一下,如果美图秀秀做一个美颜效果要转圈圈转个30秒,还会有多少人用呢。 学术界喜欢推出复杂度更低的算法,去解决性能问题,而在实际工程应用中,对代码的优化和硬件的良好运用效果来得更快更显著,这里就对不改动算法,纯工程方面做性能优化的技术作一个简介。 流程优化——节能减排对初始

2016-02-29 21:35:52

从软件工程的角度写机器学习2——流行的机器学习应用模式与算法

流行的机器学习应用模式与算法本文将围绕机器学习的概念,尽可能归纳总结当前流行的机器学习应用模式及相关算法。 “对于某类任务T和性能度量P,如果一个计算机程序在T上以P衡量的性能随着经验E而自我完善,那么我们称这个计算机程序在从经验E学习。”机器学习的各类算法之间,重叠交叉又各自不同,既然是从软件工程的角度来写,我们会先介绍机器学习算法所依存的框架,再在这个框架下介绍有哪些算法,算法详情不做

2016-02-28 14:40:26

Renascence使用方法

Renascence使用方法下层库的适配类型下层库所有向Renascence架构提供的函数,其输入输出都必须给一个对应的继承于IStatusType的类,用于读取、保存、映射、释放该类型。/*Basic API*/class IStatusType{public: IStatusType(const std::string name):mName(name){} virtual

2016-02-14 10:53:40

Renascence架构原理——最优化算法

最优化算法背景通过公式生成ADF之后,根据下层函数库的配置,在结构不变的情形下,ADF是可以通过一系列值在0-1之间的参数进行调节的。也即ADF可表示为固定维数n的实数集,因此需要解决的问题就是在给定的目标下,求一组使目标值最大的参数。 max(f(x0,x1,x2,x3,...,xn)),xi∈[0,1]max(f(x_0, x_1, x_2, x_3, ..., x_n)), x_i\in [

2016-02-14 00:29:33

Renascence架构原理——遗传规划算法

遗传规划算法遗传规划算法请先看一下遗传算法: http://blog.csdn.net/v_JULY_v/article/details/6132775遗传规划/遗传编程(Genetic Programming)是遗传算法的一个分支,与遗传算法中每个个体是一段染色体编码不同,它的个体是一个计算机程序。 维基上说它在70年代就已经有人实践,不过正式提出应该还是在John R. Koza教授于199

2016-02-13 18:13:07

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。