首页
学习
活动
专区
圈层
工具
发布

OpenBLAS 中矩阵运算函数学习

OpenBLAS 矩阵计算OpenBLAS 库实现成熟优化的矩阵与矩阵乘法的函数 cblas_sgemm 和矩阵与向量乘法函数 cblas_sgemv,二者使用方法基本相同,参数较多,所以对参数的使用做个记录...cblas_sgemm 函数定义:cblas_sgemm(layout, transA, transB, M, N, K, alpha, A, LDA, B, LDB, beta, C, LDC);layout...:存储格式,有行主序(CblasRowMajor)和列主序(CblasColMajor),C/C++ 一般是行主序。...该函数有很多参数,其中:CblasRowMajor:表示矩阵是行主序(row-major)的,即按行存储;CblasTrans:表示矩阵是转置的;3和2:表示矩阵的行数和列数;1.0和0.0:表示乘法中的加法和乘法的因子...矩阵与向量乘法矩阵与向量乘法本质也是矩阵与矩阵,只不过 gemv 比 gemm 要快一些,所以有时候也需要用 gemv。

1.3K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Im2Col+GEMM的改进方法MEC,一种更加高效的卷积计算策略

    前言 前面介绍了Im2Col+GEMM来实现卷积以在某些条件下获得更好的访存和计算效率,详见:详解Im2Col+Pack+Sgemm策略更好的优化卷积运算 。...目前,对卷积层的计算一般有以下几种方式: Im2Col+GEMM。...时域的卷积等于频域的乘积,我们可以把卷积运算转换为一个简单的乘法问题,这个并不是很多见,后面有时间我会考虑给大家分享一下如何用FFT完成卷积层计算加速的。...+= 1; } } } } 结合一下文章开头部分的Im2Col的图可以更好的理解,这个地方就是将输入特征图通过Im2Col的方式放到一个数组里面,为什么是个数组而不是二维矩阵呢...这里只是将这个二维矩阵存成了一个数组,来方便后面调用cblas_sgemm接口,关于OpenBlas的介绍以及计算方式,函数接口可以查看参考中的资料2,这里就不过多介绍了。

    2.9K42

    详解Im2Col+Pack+Sgemm策略更好的优化卷积运算

    对于卷积运算一种最常见的实现方法就是Im2Col加上Sgemm,这样可以把复杂的卷积运算转换成两个矩阵直接相乘,在OpenBlas中就提供了矩阵相乘的多种算法如Sgemm。...Im2Col+Sgemm计算卷积原理 相信大家对于卷积的概念都非常熟悉了,这里就不再重复提起了,我大概说一下我了解的卷积的计算方式有哪些吧。...算法,但这里因为Pack的原因不能使用OpenBlas标准库。...588.75ms 112x112 64 128 3x3 2 3x3s2手工优化 97.43ms 112x112 64 128 3x3 2 Im2col+Pack+Sgemm 138.90ms 什么鬼...竟然降速了,这是为什么呢? 有一个直观的「猜测」就是当「输入通道数和卷积核尺寸的乘积」也就是卷积核Im2Col获得的矩阵的宽度比较大时,本文介绍的Im2Col+Pack+Sgemm能带来加速效果。

    3.5K20

    走进向量计算:制作 OpenBLAS Docker 预构建产物镜像

    我会试着在接下来的内容中,持续分享如何让一个拥有着一万多颗“星星”的大型数据库项目的容器构建过程不断提速。...写在前面 有阅读过以往内容的同学,应该会记得,我在之前的介绍“Milvus 源码编译安装[1]”的文章中,有提到过“要聊聊如何构建一个可靠、可信赖的 Milvus 容器镜像”。...当然,因为 OpenBLAS 不同版本,在ARM 芯片、AMD ZEN 架构 CPU 下存在一些兼容问题,即使我们能够得到构建产物,产物其实也并不能够通过软件的单元测试。...或许有小伙伴好奇,为什么一定要使用多阶段构建呢。如果我们没有进行多阶段构建,剥离环境和构建产物,那么我们得到的预构建镜像,大概会是下面这样的“壮观”体积。...命令执行完毕,将会得到类似下面的结果: ... make[1]: Leaving directory '/src/OpenBLAS-0.3.20/exports' OpenBLAS build complete

    1K10

    走进向量计算:制作 OpenBLAS Docker 预构建产物镜像

    我会试着在接下来的内容中,持续分享如何让一个拥有着一万多颗“星星”的大型数据库项目的容器构建过程不断提速。...写在前面 有阅读过以往内容的同学,应该会记得,我在之前的介绍“Milvus 源码编译安装”的文章中,有提到过“要聊聊如何构建一个可靠、可信赖的 Milvus 容器镜像”。...当然,因为 OpenBLAS 不同版本,在ARM 芯片、AMD ZEN 架构 CPU 下存在一些兼容问题,即使我们能够得到构建产物,产物其实也并不能够通过软件的单元测试。...或许有小伙伴好奇,为什么一定要使用多阶段构建呢。如果我们没有进行多阶段构建,剥离环境和构建产物,那么我们得到的预构建镜像,大概会是下面这样的“壮观”体积。...命令执行完毕,将会得到类似下面的结果: ... make[1]: Leaving directory '/src/OpenBLAS-0.3.20/exports' OpenBLAS build complete

    1.1K20

    OpenBLAS项目与矩阵乘法优化 | 公开课+文字转录

    针对开源的而言,有如下几种,之前比较知名的是GoToBLAS,和OpenBLAS有很深的渊源,但是在2010年终止开发了,有时间在给大家分析其背后的原因,主力的开发人员后藤,离开了UT Austin的研究组...OpenBLAS算是目前全球最好的开源矩阵计算库,在去年的时候得到了中国计算机学会科技进步二等奖,同时也进入了很多主流的Linux安装包,比如说Ubuntu里面就有我们的OpenBLAS Package...另外一方面,它本身在做循环的利用来说,相当于比这部分做了一定循环的展开,所以在效率上得到了一定的提升。 这块的复用,只从内存读取一次,所以对超过cache的情况有了一定改善。 ?...但是我们也做过很多稀疏矩阵的优化,比如稀疏矩阵乘向量的优化,这个对访存来说更困难一些,因为没有办法预测到下一次访存在什么位置,这造成了优化的困难。 问题2:OpenBLAS和其他矩阵库有什么关系?...张先轶:OpenBLAS和其他BLAS实现其实都是完成了接口,BLAS只是接口的定义,具体来说可以有多种实现。我们认为我们OpenBLAS在开源的实现是非常好的。

    5.1K71

    开发 | 低配硬件就不能运行深度神经网络了?手把手教你克服“杀牛用鸡刀”难题

    本文将尝试回答一个简单的问题:什么库/工具包/框架可以帮助我们优化训练模型的推理时间?...修改神经网络模型有两种方法,一是通过降低权重精度实现,即降低特征量化的精度,二是通过权重剪枝来实现,权重剪枝的背后的思想是降低系统参数的冗余。...Caffe2 对 NNPACK 有原生支持,但我不会考虑 Caffe2,因为它处于实验性阶段并且几乎对 Caffe 进行了尚未文档化的重构。...: MAX POOL 3x3conv3: 96@5x5 relu3fc1: 128 unitsfc2: 848 units softmax 该卷积神经网络有 1039744 个参数。...如果你需要连续地处理图片,可以选择使用优化过的 OpenBLAS 的 Caffe,可得到最好的处理性能。

    1.7K50

    OpenAI的结构化浅析

    那么,结构化输出究竟是什么?为什么OpenAI要专门发布一篇博客来详细介绍它呢?接下来,让我们一起深入了解这个话题。   结构化输出可以简单地描述为让大模型生成特定格式JSON的能力。...如前所述,模型有时会以Markdown代码块的形式返回结果,有时又会直接给出纯JSON。若要使用这些输出,你还需要兼容这两种情况。...;"" 我会给一些组织架构中的节点信息,其中parentOrgCode是当前节点的父节点,如果是null表示没有父节点。...在LeetCode第20题中,我们可以将上图的递归展开,得到下面这个更复杂的图(其中"|"表示"或")。...显然,有了结构化输出,这部分工作就会简单得多。 不过,我还要提醒大家一点:不要把结构化输出当成万能工具。俗话说,"拿着锤子看什么都像钉子",可别落入这个陷阱。

    69510

    从零开始构建向量数据库:Milvus 的源码编译安装(一)

    Data LandSpace 中,该项目的“位置” 除了 LF 加持之外,在 DB-Engines[3] 上,它也经常被拿来和 Weaviate 和 Elasticsearch 进行比较(后续的文章中,我会展开聊聊相关的部分...编译基础依赖:OpenBLAS OpenBLAS 在 GitHub 上的项目概况 在许多项目中,都会选择通过 OpenBLAS 或者 MKL 来加速向量计算,比如 Facebook 的 faiss,或者和业务做结合...在上一篇文章《走进向量计算:从源码编译 OpenBLAS》[13]中,我详细的介绍了如何进行编译安装,在此就不展开了,相信你跟着文章,一定能够顺利的得到编译产物。...所以,如果你想要得到基本和官方维护的版本近似的、相对有保障的构建产物,建议暂时还是使用 x86_64 环境的 Linux 和各种相同版本的工具依赖。...至于目前官方基于 Ubuntu 18.04 构建工具镜像中提到的一些工具镜像,可以根据你的需求进行选择性安装(此处可以忽略安装,未来我会单独写一篇内容,聊聊这块工具安装的问题和优化): RUN ...

    7.3K21

    我不想过一眼可以看到头的人生

    细思极恐,十年以后我会跟他一样仍然每天加班到深夜吗?这十年以来他快乐吗?我会头上染霜却依然不能主导自己的工作和生活吗?...有时候,经常觉得什么都还没有做,今年已经过完。很多时候,你甚至无法清晰的回忆起来去年做了什么事情和见过什么人?...这样的人生,是被命运的大手推着向前走,你好像没有反抗的能力,甚至有可能会迷失在乏味的工作和生活中。眼看着自己生命在流失,却无能为力,这种感觉让我觉得非常可怕!...大多数人,撞到南墙甚至还没有到南墙就已回头。可创业者是撞的头破血流,还死性不改,非得把南墙撞破才收手。你是这样的人,时间拿他有什么办法?家人和朋友又应该怎么说他好?只好支持。...有时想想,能够来到这个世界已是生命的奇迹。我们PK掉了无数的兄弟姐妹,最终得以成活-长大-变强,生命的每一天都是自然的馈赠。

    89330

    从零开始构建向量数据库:Milvus 的源码编译安装(一)

    图片除了 LF 加持之外,在 DB-Engines 上,它也经常被拿来和 Weaviate 和 Elasticsearch 进行比较(后续的文章中,我会展开聊聊相关的部分)。...Milvus 项目的核心依赖 knowhere 中,目前也有使用到 OpenBLAS,所以为了能够顺利的编译构建项目,我们就需要先搞定 OpenBLAS。...在上一篇文章《走进向量计算:从源码编译 OpenBLAS》中,我详细的介绍了如何进行编译安装,在此就不展开了,相信你跟着文章,一定能够顺利的得到编译产物。...所以,如果你想要得到基本和官方维护的版本近似的、相对有保障的构建产物,建议暂时还是使用 x86_64 环境的 Linux 和各种相同版本的工具依赖。...至于目前官方基于 Ubuntu 18.04 构建工具镜像中提到的一些工具镜像,可以根据你的需求进行选择性安装(此处可以忽略安装,未来我会单独写一篇内容,聊聊这块工具安装的问题和优化):RUN ...

    4.1K31

    猴年马月,来了猴年,马月呢?

    先扯淡 即将过去的羊年,小巫很忧伤,为什么忧伤?因为猴年马月就要来了,不,应该是猴年要来了,马月是什么时候?我所期待的升职加薪,当上ceo,迎娶白富美要等到猴年马月才能实现?...大家可以去各大应用市场搜索“南周知道“、"南方周末"这两个产品都跟小巫有关,可以下载体验并反馈意见给我,我会把你们的意见记录并在后面的迭代去完善。...当然除了这两个产品还做了其他的一些事情,比如在CSDN成为Android的讲师,录制了一套入门课程,也荣幸得到博客之星的入围奖,没有得到博客之星,我也感到很遗憾,说明评委觉得我还未够格,不够格就不够格吧...总结和反思 即将过去的这一年,遇到过一些问题和吸取了一些教训,有问题是好事,最怕的就是没有问题,有问题就说明自己有很大的进步空间,说明自己还不够优秀,你需要反思自己的一些问题,去解决它。...小巫有很多缺点,比如性格急躁,做事有时粗心大意,这些缺点让我尝到了苦头,过去一年跟团队成员的打交道有时候也会变得暴躁,但慢慢自己也知道有些事情越是心急越做不好,最终还是得静下心来发现问题,并且找到解决方案去解决问题

    46720

    图解德鲁克强调的管好自己的六个重要维度

    南哥喜欢写,特别喜欢随笔,有时好的想法灵感来得太不及时,需要我随时做好写的准备,在机场、路上、还是洗手间...当然不同的环境也能影响学习的效率。...四、我的价值观是什么? ? 一个人的工作方式和他的长处很少发生冲突,相反,两者能产生互补。但是,一个人的价值观有时会与他的长处发生冲突。...但是,一个人的价值观有时会与他的长处发生冲突。而价值观的冲突不管是在工作还是在婚姻关系里几乎都是不可调和的: 因此在自我管理中需要明白: 我遵循的信条是什么? 我的底线是什么?...我最大的贡献:在多数职场人士的思维逻辑中,我能得到什么的思维远远大于我能贡献什么,这是典型的索取者的思维,而遗憾的是当你的焦点放在“我能得到什么”的时候将大大限制你的格局,只有当你的焦点放在我能贡献的时候...因此,有一个能够让人们做出贡献、发挥影响力或成为“大人物”的领域,这不仅对个人十分重要,对个人的家庭也同样重要。也就是为什么我们需要管理职业的后半生涯。 来源:公众号-培训经理指南,作者:南哥

    1K60

    使用conda安装复杂软件不妨给它独立的环境(以rmats为例)

    libcblas anaconda/cloud/conda-forge/linux-64::libcblas-3.9.0-8_openblas libffi...libgomp-9.3.0-h2828fa1_18 liblapack anaconda/cloud/conda-forge/linux-64::liblapack-3.9.0-8_openblas...得到的结果不是一般的多: 382K 3月 13 21:44 A3SS.MATS.JCEC.txt 368K 3月 13 21:44 A3SS.MATS.JC.txt 257K 3月 13 21:44...如果你确实觉得我的教程对你的科研课题有帮助,让你茅塞顿开,或者说你的课题大量使用我的技能,烦请日后在发表自己的成果的时候,加上一个简短的致谢,如下所示: We thank Dr.Jianming Zeng...十年后我环游世界各地的高校以及科研院所(当然包括中国大陆)的时候,如果有这样的情谊,我会优先见你。

    5.3K41
    领券