中文名 | 稀疏矩阵算法 | 外文名 | Sparse matrix algorithm |
---|---|---|---|
类 别 | 控制科学与工程 | 特 点 | 只存储和处理非零元素 |
核 心 | 稀疏矩阵 | 算 法 | 图遍历算法等 |
图遍历算法
图遍历算法是最基本的图算法之一,由指定节点开始,按照一定规则遍历图结构中所有的连通节点,包括宽度优先搜索(Breadth First Search,BFS)和深度优先搜索(Depth First Search, DFS)等核心算法。
作为最基本的图遍历算法,宽度优先搜索算法代表了图遍历算法的计算特性,具有非常重要的研究意义。一方面,BFS算法是最短路径、邻接查询、可达性查询等算法的实现基础,广泛应用于图分割、信念传播统计以及网络社区结构发现等领域;另一方面,BFS算法作为典型的数据密集型算法,体现了数据密集型应用对高性能计算系统的需求,广泛应用于大规模并行计算系统的数据处理能力评测,已经成为Parboil, Rodinia和Graph500等基准测试程序的核心算法。
在实际应用中,图的规模在不断增大,相应的,对图的存储和处理开销不断增加,有效地实现大规模并行BFS算法具有十分重要的意义。
稀疏线性方程组求解法
稀疏线性方程组的求解是对自然科学和社会科学中许多实际问题进行数值模拟时的关键技术之一。在高层建筑、桥梁、水坝、防洪堤的结构设计中,需对变形与应力情况进行模拟;在油气资源探测与分析、数值天气预报、飞行器的动力学分析中,需利用流体力学方程组进行模拟;在进行恒星大气分析与核爆实验时,常需利用辐射流体力学与粒子统计平衡等规律进行模拟。在对这些问题进行分析模拟时,通常利用偏微分方程建立数学模型。在对偏微分方程的离散求解过程中,稀疏线性方程组求解算法扮演着十分重要的角色。在许多不以偏微分方程建模的问题中,稀疏线性方程组求解同样发挥了重要的作用。在空中交通控制、电力线路中的最优电流问题中,需利用数学规划求解;在对采纳某项政策时在某给定条件下对国内、国际多个区域的相应经济指标进行预测时,需利用CGE模型进行分析;在可靠性分析、排队网络分析与计算机系统性能评估中,常利用具有大量状态的离散Markov链进行模拟。在这些问题的求解中,稀疏线性方程组的求解都占有重要位置,并且往往是整个计算过程中的性能瓶颈,稀疏线性方程组的高效求解是计算数学和工程应用中十分重要的课题之一。
解稀疏线性方程组的方法包括直接法(direct method)与迭代(iterative method)两类。直接法指在不考虑计算舍入误差的情况下,通过包括矩阵分解和三角方程组求解等有限步的操作求得方程组的精确解,因此又称精确法;迭代法指给定一个初始解向量,通过一定的计算构造一个向量列(一般通过逐次迭代得到一系列逼近精确值的近似解),向量列的极限为方程组理论上的精确解。迭代法对存储空间的需求低,在求解高阶非病态稀疏线性方程组方面具有一定优势。然而,迭代法不适合求解病态问题,性能因问题而异,并且面临精度控制、收敛速度慢或不收敛等问题。与迭代法相比,直接法的通用性好,求解结果精度高,性能稳定。当矩阵分解结果能够被多次后续计算重用以及多右端项时,直接法的优势尤其明显。在有限元分析、模拟电路瞬态仿真等应用领域的商用软件均采用直接法求解器作为标准的稀疏线性方程组求解器。但直接法的缺点在于对存储资源要求较高,无法处理高阶稀疏矩阵。
一般来说,迭代法的求解速度高于直接法。但是,如果使用直接法时矩阵分解过程能够被很多后续计算重复使用,则后续的三角阵求解可以非常快速实现,此时直接法在性能上具有优势。典型例子是模拟电路瞬态仿真,这时需要多次以Newton-Raphson方法求解非线性方程,每一次求解均会在工作点附近展开为线性方程,而且所有线性方程的矩阵分解方式都是固定的,因此求解该类问题最好的方法是直接法。稀疏矩阵的矩阵分解在GPU上的实现是很困难的,主要难点在于现有算法的数据依赖性导致可利用的并行性不足。此外,矩阵元素的排列顺序对计算过程中间结果矩阵的非零元素个数有很大影响,同时矩阵分解后的非零元素的分布与原来矩阵可能很不相同。
迭代法的理论基础相对复杂,并且具有多种不同的具体算法,但其基本形式均为从一个猜测解出发,通过多次迭代逐渐收敛,当误差满足一定条件时迭代中止。共扼梯度法(CG)是迭代法的主流方法之一,特别适合于特征值为良态分布的对称正定方程组;其它迭代法包括Jacobi、逐次超松弛(SOR)、广义极小剩余(GMRES)、预条件共扼梯度(PCG)等。迭代法的核心算法是稀疏矩阵向量乘(SpMV),因此实现SpMV的高效并行结构也是实现迭代法的基础。
直接法由高斯消元法发展向来,求解过程包括矩阵排序(matrix ordering)符号分解(symbolic factorization)、数值分解(numerical factorization)、三角方程组求解((triangular solves)四个步骤。其中,矩阵排序和符号分解属于预处理部分。矩阵排序通过启发算法置换稀疏矩阵的行列,试图在后续计算中维持矩阵的稀疏性或数值稳定性。符号分解则是预先对矩阵分解后的稀疏结构进行预测,预先分配存储空间并记录数据相关性。直接法的计算瓶颈在于数值分解部分和三角方程组求解部分,高效的直接法求解依赖于二者的高效实现。
对于一个稀疏线性方程组是选择直接法还是迭代法求解,一般有如下原则:对于低阶矩阵或大型带状矩阵所对应的线性方程组,用直接法求解;而对于大型(非带形)矩阵所对应的线性方程组,用迭代方法求解。实际上,选用何种方法还要看具体的应用背景,比如,对于线性规划和一些结构工程应用,只有直接法是切实可行的。对于精度要求很高的问题,还可以采用由直接法得到初始解再用迭代法进行迭代的方法求解,这种方法称为迭代精化法。
面向算法加速器的稀疏矩阵算法并行化方法
由于算法加速器采用了与通用处理器完全不同的体系结构和编程模型,因此需要专门设计针对算法加速器的并行程序。与通用处理器相比,算法加速器能够运行更多的线程,因此一方面需要将计算任务划分为更多的子任务,实现细粒度并行;另一方面需要考虑线程间的负载均衡和数据局部性,特别是线程间的通信和同步开销。与通用处理器相比,算法加速器更容易受到不规则访存和计算的影响,因此必须通过矩阵预处理等手段提高计算的规则性和数据的局部性。
通用处理器与算法加速器协同计算策略
异构体系结构的计算单元包括通用处理器和算法加速器两部分。在学术研究中通常分别针对这两种计算单元设计并行算法,但在实际应用中,需要同时利用计算系统的所有计算资源以获取最高性能。然而,现有的针对通用处理器和算法加速器的并行算法分别采用了不同的编程模型和优化策略,无法直接互相迁移,并且在协同计算过程中,不但需要在两个平台上都能高效运行的并行程序,而且需要实现通信与计算的重叠以隐藏数据传输的开销,这些都要求对现有的算法针对异构平台进行重新设计。
面向稀疏结构特征的数据结构和算法映射
不同应用领域的稀疏矩阵往往具有不同的稀疏结构特征,这些特征因问题而异;具有不同稀疏结构特征的稀疏矩阵往往对应不同的最优存储方案以及不同的并行算法实现。在计算过程中,对于稀疏矩阵算法的不同计算阶段,会因稀疏结构导致的计算特征的不同而适合在通用处理器或算法加速器上运行或是由二者协同计算。因此,研究矩阵的稀疏结构并设计相应的数据结构和算法映射策略,能够有效提高算法对于不同矩阵和不同计算平台的适应性。 2100433B
在科学与工程领域中进行数值计算时经常需要处理大型的稀疏矩阵,这些矩阵的特征一是阶数很大,二是含有大量的零元,使得无法使用传统的稠密矩阵存储方案和算法。由于矩阵阶数太大,若存储整个矩阵,将会占用大量的存储空间,甚至会超出计算系统的存储容量,因此需要设计专门的稀疏存储方案,尽可能的减少零元素的存储。
稀疏矩阵算法是以稀疏矩阵作为核心数据结构的算法。与稠密矩阵算法相比,稀疏矩阵算法的最大特点是通过只存储和处理非零元素从而大幅度降低存储空间需求以及计算复杂度,代价则是必须使用专门的稀疏矩阵压缩存储数据结构,因而在计算过程中引入了大量的离散间接寻址操作。稀疏矩阵算法是典型的不规则算法,计算访存比很低,并且计算过程中的访存轨迹与稀疏矩阵的稀疏结构相关,很难发掘计算过程中的时空局部性,因此在传统的基于Cache的处理器上稀疏矩阵算法的计算效率很低。为了提高稀疏矩阵算法的计算效率,需要从稀疏存储数据结构和稀疏矩阵算法两方面对现有算法进行改进。
按照应用领域的不同,稀疏矩阵算法分为两类,一类是非数值计算算法,典型代表是图搜索算法,包括宽度优先搜索等核心算法;另一类则是数值计算算法,典型代表是稀疏线性方程组求解,包括稀疏矩阵向量乘、稀疏三角方程组求解以及稀疏矩阵分解等核心算法。
现在市场的价格战太离谱了,导致很多的商家都必须用低价来吸引客户,所以产品质量往往都得不到保障。力弘(LHLEEHAM)提供全系列会议视听系统矩阵切换控制器,包含产品有同轴矩阵系列AHD/TVI...
楼上恐怕还是不大了解,数字矩阵首先信号是数字信号,数字信号包括:SDI(标清)、HD-SDI(高清)这两种以前都是广播级信号,都是在广播电视应用的,但是现在随着电视会议的发展,已经出现高清电视会议系统...
vga视频矩阵,启耀科技有4,8,16,24,32,48,64路,您需要哪一路,每一路的价格不一样,输入输出路数越多价格越高,这种会议室用的很多的,切换很方便。
矩阵函数求导 首先要区分两个概念:矩阵函数和函数矩阵 (1) 函数矩阵 ,简单地说就是多个一般函数的阵列, 包括单变量和多变量函数。 函数矩阵的求导和积分是作用在各个矩阵元素上,没有更多的规则。 单变量函数矩阵的微分与积分 考虑实变量 t 的实函数矩阵 ( )( ) ( )ij m nX t x t ×= ,所有分量函数 ( )ijx t 定义域相同。 定义函数矩阵的微分与积分 0 0 ( ) ( ) , ( ) ( ) . t t ij ijt t d d X t x t X d x d dx dx τ τ τ τ ? ? ? ??? ???= =? ??? ?? ?? ? ?? ?∫ ∫ 函数矩阵的微分有以下性质: (1) ( )( ) ( ) ( ) ( )d d dX t Y t X t Y t dt dt dt + = + ; (2) ( ) ( ) ( )( ) ( ) ( )
主成分分析PCA(Principle Component Analysis)是一种重要的分析方法,广泛应用于图像检索、机器学习、模式识别等领域。随着近年来数据维数越来越大,算法的稳定性、时间复杂度和内存使用成了PCA进一步应用所必须要解决的问题。为此提出一种快速算法,该算法利用随机矩阵构造卷数据降维矩阵,在保持点与点之间"核距离"不变的情况下,将待分解矩阵变换成一个低维矩阵。在没有偏差的情况下,将对原始大矩阵的分解变成对这个低维矩阵的分解,大幅降低了时间复杂度,减少了对内存的使用,同时增加了算法的稳定性,从而在根本上解决了上述3个问题。
假设我们只有一个没有带类别标签的训练样本集合
自编码神经网络尝试学习一个
我们刚才的论述是基于隐藏神经元数量较小的假设。但是即使隐藏神经元的数量较大(可能比输入像素的个数还要多),我们仍然通过给自编码神经网络施加一些其他的限制条件来发现输入数据中的结构。具体来说,如果我们给隐藏神经元加入稀疏性限制,那么自编码神经网络即使在隐藏神经元数量较多的情况下仍然可以发现输入数据中一些有趣的结构。
稀疏性可以被简单地解释如下。如果当神经元的输出接近于1的时候我们认为它被激活,而输出接近于0的时候认为它被抑制,那么使得神经元大部分的时间都是被抑制的限制则被称作稀疏性限制。这里我们假设的神经元的激活函数是sigmoid函数。如果你使用tanh作为激活函数的话,当神经元输出为-1的时候,我们认为神经元是被抑制的。
注意到
进一步,让
表示隐藏神经元
其中,
为了实现这一限制,我们将会在我们的优化目标函数中加入一个额外的惩罚因子,而这一惩罚因子将惩罚那些
这里,
其中
这一惩罚因子有如下性质,当
我们可以看出,相对熵在
我们的总体代价函数可以表示为
其中
为了对相对熵进行导数计算,我们可以使用一个易于实现的技巧,这只需要在你的程序中稍作改动即可。具体来说,前面在后向传播算法中计算第二层(
我们将其换成
就可以了。
有一个需要注意的地方就是我们需要知道
证明上面算法能达到梯度下降效果的完整推导过程不再本教程的范围之内。不过如果你想要使用经过以上修改的后向传播来实现自编码神经网络,那么你就会对目标函数
批准号 |
10601050 |
项目名称 |
若干大型稀疏非线性矩阵方程的数值解法 |
项目类别 |
青年科学基金项目 |
申请代码 |
A0504 |
项目负责人 |
郭晓霞 |
负责人职称 |
教授 |
依托单位 |
中国海洋大学 |
研究期限 |
2007-01-01 至 2009-12-31 |
支持经费 |
17(万元) |
随着现代科学技术的迅速发展,非线性矩阵方程越来越多地出现在许多科学与工程计算领域,如海洋物理,控制论以及噪音污染,交通运输等很多问题的解决最终往往归结为一个非线性矩阵方程。因此,研究非线性矩阵方程的解的存在性,敏感性以及如何求解是非常有意义的。特别地,对于如何有效、快速、准确的求出它们的解更是人们所关注的。非线性矩阵方程的数值求解已成为科学研究的热点之一。为使所设计的算法更具有效性和可执行性,我们希望算法适合在并行环境下运行,这就需要算法中的公式运算要基本,同时,要尽量使算法收敛速度快,计算量少,数值稳定。寻求满足上述条件的求解大型稀疏非线性矩阵方程的算法是我们将要研究的主要问题。对该问题的研究,将有利于其它相关学科的发展,也将促进计算机实用软件的开发。 2100433B