CN101572771B - 用于使用并行处理来求解线性方程组的设备、系统和方法 - Google Patents

用于使用并行处理来求解线性方程组的设备、系统和方法 Download PDF

Info

Publication number
CN101572771B
CN101572771B CN2009101370109A CN200910137010A CN101572771B CN 101572771 B CN101572771 B CN 101572771B CN 2009101370109 A CN2009101370109 A CN 2009101370109A CN 200910137010 A CN200910137010 A CN 200910137010A CN 101572771 B CN101572771 B CN 101572771B
Authority
CN
China
Prior art keywords
vector
matrix
item
linear equations
frame frequency
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2009101370109A
Other languages
English (en)
Other versions
CN101572771A (zh
Inventor
A·米亚斯科夫斯基
S·格伦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to CN201210162677.6A priority Critical patent/CN102855220B/zh
Publication of CN101572771A publication Critical patent/CN101572771A/zh
Application granted granted Critical
Publication of CN101572771B publication Critical patent/CN101572771B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • G06F17/12Simultaneous equations, e.g. systems of linear equations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture signal circuitry for video frequency region
    • H04N5/144Movement detection
    • H04N5/145Movement estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0127Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level by changing the field or frame frequency of the incoming video signal, e.g. frame rate converter

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Operations Research (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Television Systems (AREA)

Abstract

一种用于用向量乘矩阵的方法、装置和系统,例如,视频插入(其它应用是可预期的)。该矩阵可以表示大型稀疏线性方程组。该大型稀疏线性方程组可以用于估计视频文件的帧之间的运动以转换帧频。向量可以是该线性方程组的解的第一估计值。可以按照与所述元素在所述向量中的排列顺序不同的顺序用所述向量的元素乘所述矩阵。可以并行地乘向量中的多个元素。线性方程组的解的第二向量估计值可以是乘法的积。例如当第一和第二向量估计值的差小于预定的量时,可以设置线性方程组的解。其它的实施例被描述和主张权利。

Description

用于使用并行处理来求解线性方程组的设备、系统和方法
技术领域
本发明涉及用于求解线性方程组的迭代方法,其可以用于例如估计视频文件的帧之间的动作以转换帧频。
背景技术
视频输入文件可以具有一特定的帧频。用于输出(例如播放)该文件的设备可以具有一个不同的帧频。例如一个50Hz的视频文件可以被输入到一个以100Hz的帧频播放视频的电视。当输入文件的帧频与输出文件的帧频不同时,需要使得帧频一致。
已经开发了帧频转换算法来改变帧的显示速率。帧频转换算法可以例如,增加或减少每个时间周期内的帧数目,以相应地加快或减慢输入帧频,而不改变视频显示的总时间或所觉察到的显示速度。一些基本算法可以简单地复制或消除帧。其它的可以使用例如运动补偿算法在帧间插入动作。
视频中的运动估计可以被模型化,例如,通过(偏)微分方程(PDE)。可以对PDE应用一个离散方法(例如:有限差分)来找到其数值解。离散化可以生成一个线性方程组,例如一个大型稀疏线性方程组(LSSLE)。每个LSSLE可以描述一对帧中的每个帧之间的改变或运动。帧频转换算法可以使用LSSLE的数值解,例如,用于生成帧频转换。LSSLE在科学和工程的许多领域是已知的,例如电子工程、流体动力学、计算机视觉/图形、光流估计、超分辨率和图像降噪。
求解该LSSLE可能需要密集计算。例如,求解LSSLE以对一组帧的帧频进行转换可能花费比这些帧的播放时间更久的时间。当播放器在等待转换后的帧时,可能在播放速率上有延迟。为了补偿这个延迟,一个帧频转换算法通过生成更少的帧和/或生成具有降级的运动估计的帧,会降低视频质量。这会导致更多的“跳跃”视频。
附图说明
本申请公开的主题在说明书的结尾部分被特别地指出和清楚地声明。然而,本发明的实施例,涉及组织结构和操作方法,以及它的目标、特征和益处,可以通过参考下面的详细说明并与附图一起阅读来更好地理解,其中:
图1是根据本发明的一个实施例的系统的示意图;
图2是根据本发明的一个实施例的处理器流水线的示意图;
图3是根据本发明的一个实施例的项重排的示意图,其中,将具有初始顺序的向量x重排为具有新的顺序的向量x’;
图4A和4B显示根据本发明的一个实施例的,分别表示具有初始顺序的向量x和具有新的顺序的向量x’的矩阵;以及
图5是根据本发明的一个实施例的方法的流程图。
可以理解,为了描述地简单和清楚,图中示出的元件不必精确绘制或按比例绘制。例如,为了清楚,一些元件的尺寸可以相对于其它元件进行放大,或者将多个物理部件包括在一个功能块或元件中。此外,基于合适的考虑,参考标记可以在附图之间重复使用,以指示对应的或类似的元件。另外,在附图中描述的一些块可以被组合为单个功能。
具体实施方式
在下面的详细描述中,阐明了许多具体细节以便透彻理解本发明的实施例。然而本领域技术人员应该理解,本发明的实施例可以在没有这些具体细节的情况下被实施。在其它例子中,公知的方法、过程、部件和电路未详细说明,以免使得该描述模糊不清。
如果没有具体说明,那么明显从下面的讨论可以理解,在整个说明书中使用的术语(例如“处理”、“计算”、“决定”等)是指计算机、计算系统或类似的电子计算设备的动作和/或处理过程,其控制和/或转换表示为计算系统的寄存器和/或存储器中的物理量(例如电子,量子)的数据,将它们转换为其它类似地表示为计算系统的存储器、寄存器或其它此类信息存储、传输或显示设备中的物理量的数据。另外,在本说明书全文中可以使用术语“多个”来描述两个或更多的部件、设备、要素、参数等。
本发明的实施例可以在各种应用中使用。尽管本发明在这方面不受限制,本文公开的电路和技术可以用于许多装置,例如个人电脑(PC)、图像或视频重放设备、数字视频光盘(DVD)播放器、无线设备或无线台、视频或数字游戏设备或系统、图像采集系统、处理系统、可视化或显示系统、数字显示系统、通信系统等。
本发明的实施例可以用于例如以第一帧频输入视频并以第二帧频输出视频的系统。播放时间或察觉到的播放时间可以保持相同,但每个时间单元内显示的帧的数目可以改变。本发明的实施例可以从第一帧频转换到第二帧频。帧频转换可以包括插入中间帧,例如,通过求解LSSLE。例如,本发明的实施例可以运转在例如一个计算机系统上,以执行打包指令,如图1所示。
参考图1,其示意性地描述了根据本发明的一个实施例的计算机系统100。计算机系统100是可以结合本发明实施例使用的一种计算机系统的例子。未示出的不同配置的其它类型的计算机系统也可以结合本发明的实施例使用。计算机系统100可以包括一个或多个总线101和/或点对点互连,或其它内部通信硬件和软件,来传输信息;计算机系统100还包括耦合到总线101或点对点互连的、用于处理信息的处理器109。处理器109可以具有单核、多核或对称多处理结构。
处理器109可以是例如中央处理单元(CPU)或具有任何合适体系结构的多个处理器。在一个实施例中,该体系结构可以包括流SIMD扩展(SSE)(例如,SSE4.2或其它SSE4指令集,如在2007年4月公布的“
Figure G2009101370109D00031
SSE4Programming Reference”中所描述的),其是一个单指令多数据(SIMD)指令集扩展。该SSE体系结构可以在多个(例如4个)数据点上并行地执行打包指令。在另一实施例中,SSE体系结构的
Figure G2009101370109D00032
高级矢量扩展(AVX)(例如,在2008年3月公布的“
Figure G2009101370109D00033
Advanced Vector Extension ProgrammingReference”中所描述的),可以用于在其它数目(例如8或16个)的数据点上并行执行打包指令。处理器109可以具有复杂指令集计算机体系结构或精简指令集计算机体系结构。
处理器109可以包括执行单元130、寄存器堆150、高速缓存层次结构160、解码器165和内部总线170。该寄存器堆150可以包括包含了多个结构寄存器的单个寄存器堆或包括多个寄存器堆,该多个寄存器堆中的每个包括多个结构寄存器。其它寄存器也可以使用。
计算机系统100可以在耦合到总线101的主存储器104中包括随机存取存储器(RAM)、动态RAM(DRAM)或其它动态存储元件,用于存储处理器109执行的信息和指令。主存储器104可以用于在处理器109执行指令期间存储临时变量或其它中间信息。计算机系统100可以包括耦合到总线101的只读存储器(ROM)106或其它静态存储元件,来存储用于处理器109的静态信息和指令。
数据存储设备107,例如磁盘或光盘及对应的盘驱动器,可以耦合到总线101。计算机系统100可以通过总线101耦合到用于向计算机系统100的用户显示信息的显示设备121。显示设备121可以包括帧缓冲器、专用图形绘制设备、阴极射线管(CRT)或平板显示器,但本发明并不限于此。字母数字输入设备122,例如包括字母数字和其它键的键盘,可以被耦合到总线101用于向处理器109传送信息和命令选择。还可以包括光标控制器123,其包括鼠标、轨迹球、笔、触摸屏或光标方向键,用于向处理器109传送方向信息和命令选择,并用于控制显示设备121上的光标移动。该计算机系统100可以被耦合到录音和重放设备125。录音可以使用例如耦合到麦克风的音频数字转换器来实现,声音重放可以使用例如耦合到数模(D/A)转换器的用于重放数字声音的耳机或扬声器来实现,但本发明并不限于此。
计算机系统100可以用作计算机网络中的终端,其中计算机系统100是计算机网络的计算机子系统,但本发明并不限于此。计算机系统100可以进一步包括视频数字化设备126。视频数字化设备126能用于捕捉视频图像,其可以被传送到耦合到计算机网络的其它计算机系统。
在一个实施例中,处理器109可以支持与以下指令集兼容的指令集:x86和/或x87指令集,由例如CoreTM2 Duo处理器这样的微处理器使用的指令集,其由位于加州圣克拉拉的英特尔公司制造。因此,在一个实施例中,处理器109支持英特尔体系结构(IA.TM.)中支持的所有操作,其由位于加州圣克拉拉的英特尔公司定义。参见2005年4月出版的“Microprocessors,IA-32
Figure G2009101370109D00042
Architecture Software Developer′s Manual”(卷3:“System Programming Guide”)。因此,处理器109除支持其它操作外还可以支持现有的x86和/或x87操作。本发明的实施例可以使用或被并入其它指令集。
该执行单元130可以用于执行处理器109接收到的指令。除了识别可在通用处理器中实现的指令外,执行单元130可以识别在例如SIMD中的指令、打包指令或其它指令,例如用于在打包数据格式上执行操作的打包指令集140。在一个实施例中,该打包指令集140可以包括用于支持打包和/或标量运算的指令或浮点指令,例如,打包加运算、打包减运算、打包乘运算、打包移位操作、打包比较运算、乘加运算、乘减运算、计数操作以及一组打包逻辑操作,但本发明并不限于此。一个实施例的一组打包数据逻辑操作可以包括例如ANDPS、ORPS、XORPS和ANDNPS,但本发明并不限于此。一个实施例的一组打包算术操作可以包括例如ADDPS、SUBPS、MULPS、DIVPS、RCPPS、SQRTPS、MAXPS、MINPS和RSQRTPS,但本发明并不限于此。一个实施例的一组打包数据移动操作可以包括例如打包的MOVPS、MOVAPS、MOVUPS、MOVLPS、MOVHPS、MOVLHPS和MOVHLPS,但本发明并不限于此。尽管描述的一个实施例中的打包指令集140包括这些指令,可选的实施例可以包括这些指令的子集或超集。
这些指令提供了在使用打包数据的多媒体应用中使用的许多算法需要的运算的执行。因而,这些算法可以被编写来打包必要的数据并在打包数据上执行必要的操作,而不需要将打包数据进行拆分以便每次在一个数据元素上执行一个或多个运算。执行单元130可以使用例如内部总线170被耦合到寄存器堆150。其它类型的总线或数据传输系统,例如点对点系统,也可以使用。寄存器堆150代表处理器109上用于存储信息的存储区域,该信息包括数据。另外,执行单元130可以耦合到高速缓存层次结构160和解码器165。该高速缓存层次结构160用于缓存来自于例如主存储器104的数据和控制信号。解码器165用于将处理器109收到的指令解码为控制信号和微码入口点。响应于这些控制信号和微码入口点,执行单元130执行合适的操作。例如,如果收到了一条加法指令,解码器165就使执行单元130执行所需的加法;如果收到了一条减法指令,解码器165就使执行单元130执行需要的减法。因此,尽管解码器165和执行单元130的各种指令执行由一系列“if/then”语句表示,一个实施例中的指令执行不需要这些“if/then”语句的连续处理。
寄存器堆150可以用于存储信息,包括控制和状态信息、标量数据、整数数据、打包整数数据以及打包浮点数据。在一个实施例中,寄存器堆150可以包括耦合到内部总线170的存储器寄存器、控制和状态寄存器、标量整数寄存器、标量浮点寄存器、打包单精度浮点寄存器、打包整数寄存器以及指令指针寄存器,但是本发明并不限于此。
在一个实施例中,标量整数寄存器是32位寄存器,打包单精度浮点寄存器是128位寄存器,打包整数寄存器是64位寄存器,但是本发明并不限于此。SSE指令集可以使用例如称为xmm0到xmm7的8个128位寄存器。另外的8个称为xmm8到xmm15的128位寄存器可以用于SSE指令集。例如,xmm0可以为向量b保存4个项,xmm1至xmm4可以为向量x的4个数据点中的每一个保存4个项,xmm5至xmm8中的每一个可以保存矩阵A的4个对应系数项。SSE指令集可以通过同时乘矩阵A的系数项而并行处理向量x的多个(例如4个)数据点。例如,8个xmm寄存器(例如xmm0-xmm7)可以被使用(例如在32位平台)和/或16个xmm寄存器(例如xmm0-xmm15)可以被使用(例如在64位平台)。可以使用另外的32位控制/状态寄存器,例如MXCSR。每个寄存器可以将四个32位单精度浮点数打包在一起。整数SIMD操作可以用8个64位MMX寄存器执行。可以使用其它指令集和寄存器大小。可以使用用于并行地执行8个数据点的另一个指令集(例如SSE AVX指令集)。该指令集可以使用例如12个256位寄存器,其可以被称为例如ymm0到ymm10以及ERR_YMM。更大的(例如256位)寄存器可以使得例如ymm0能够为向量b保存8个项,使得ymm1至ymm4能够为向量x的8个数据点中的每一个保存8个项,使得ymm4至ymm7中的每一个能够保存矩阵A的8个对应系数项。例如,可以使用12个ymm寄存器(例如ymm0到ymm10以及ERR_YMM)。也可以使用其它寄存器、数目、大小和类型。
在一个实施例中,打包整数寄存器化名到与标量浮点寄存器相同的存储空间上。单独的寄存器被用于打包的浮点数据。在使用寄存器堆150的寄存器时,处理器109在任何给定的时间将这些寄存器视为堆栈访问浮点寄存器或非堆栈访问打包整数寄存器。在该实施例中,包括一种机制来允许处理器109的操作在作为堆栈访问浮点寄存器的寄存器和作为非堆栈访问打包整数寄存器的寄存器之间进行切换。在另一这样的实施例中,处理器109可以同时工作在非栈参考浮点寄存器和打包数据寄存器上。另外,在可选实施例中,这些相同的寄存器可以用于存储标量整数数据。
可选的实施例可以包含不同的寄存器组。例如,可选的实施例可以包括用于打包整数寄存器和标量数据寄存器的单独的寄存器。可选的实施例可以包括第一寄存器组,每个用于存储控制和状态信息,以及第二寄存器组,每个能够存储标量整数、打包整数以及打包浮点数据。
此外,尽管描述了特定类型的处理器和指令集体系结构,本发明的实施例可以使用其它类型的处理器、体系结构和指令集工作。
寄存器堆150的寄存器可以被实现为包括不同数目和不同大小的寄存器。例如,在一个实施例中,整数寄存器可以实现为存储32位,而其它寄存器被实现为存储128位,其中所有128位被用来存储浮点数据,而仅仅64位被用于打包数据。在可选实施例中,每个整数寄存器包含32或64位。
本发明的实施例可以包括执行单元130,其通过处理器109执行一个或多个打包指令集140中的指令(例如,用于并行执行4、8和/或16个数据点)。指令集140可以用于对一个或多个方程求解,例如LSSLE。LSSLE的解可以用于例如帧频转换,以将输入文件的帧频改变为与输出文件、存储设备、存储格式或显示设备的帧频匹配。输入文件可以经由总线101从输入设备存储和/或接收,例如主存储器104、ROM 106、数据存储器107、录音和重放设备125和/或输入设备122。输出文件可以被输出设备使用或广播,例如录音和重放设备125或显示设备121。
参考图2,其示意性地描述了根据本发明实施例的处理器流水线200。处理器流水线200可以包括双重数据流水线,其包括U流水线202和V流水线204。在其它实施例中,处理器流水线200可以包括一条单独的流水线,或多于两条流水线。使用SIMD指令,处理器流水线200可以使用每条数据流水线并行地处理多个(例如4个、8个和/或16个)数据点(例如,线性方程组的向量解的元素)。在解码任何给定指令时(例如,用于处理多个数据点),其后的两条指令可以被检查,如果可能,它们被发出以使得第一条指令可以在U流水线202中执行而第二条指令在V流水线204中执行。如果不能将两条指令配对,那么下一条指令可以被发送到U流水线202,并且没有指令被发送到V流水线204(反之亦然)。当指令在U流水线202和V流水线204中执行时,它们的行为与它们被顺序执行时是相同的。处理器109(图1)的微结构可以包括以下几级:例如指令预取210、取指令212、指令解码、配对和派遣214、地址生成216、操作数读取和执行218以及写回220。指令解码逻辑以每时钟周期两条指令的速率进行解码、调度和发出指令,在其它实施例中可以使用不同的速率。
该LSSLE可以表示为例如矩阵形式(例如,通过Ax=b表示,其中A是nxn矩阵,b和x是nx1向量)。当该LSSLE通过离散化(例如PDE的)生成时,矩阵A的维数依赖于使用的离散点数目。离散点的数目可以依赖于a)数值解法的固有精确度,b)要求的精确度,以及c)用于求解LSSLE的数字处理的收敛。
由于PDE微分算子的离散化,表示LSSLE的矩阵A通常是稀疏的(例如,具有大量的0项)。例如,应用于泊松方程uxx+uyy=f(x,y)的中心差分离散方法,可以生成每行仅仅具有4个非零项的矩阵。PDE描述运动估计可以例如是uxx+uyy+a*u+b*v=f(x,y);vxx+vyy+b*u+c*v=g(x,y)(例如,其中u和v分别是在x和y方向上的运动)。应用于运动估计PDE的相同离散方法可以为例如:
0 = Σ j ∈ N ( i ) u j - u i + a i u i + b i v i + c i , 0 = Σ j ∈ N ( i ) v j - v i + b i u i + d i v i + e i
其中N(i)是i的空间临近。表示该离散化的矩阵LSSLE每行可以仅有6个非零项。
找到LSSLE的数值解包括解线性方程,例如Ax=b,其中A是nxn矩阵,b和x是nx1向量。线性方程可以使用各种方法来解,包括因数分解和迭代方法。然而,当解LSSLE时,因数分解方法比迭代方法需要特别多的计算工作和时间。因而,迭代方法通常是优选的。应该意识到,根据本发明的实施例,因数分解方法和/或因数分解和迭代方法的组合也可以用于解LSSLE。
迭代方法可以用于解线性方程Ax=b。矩阵A的项可以用aij表示,其中1≤i,j≤n,x和b的项分别由xr和br表示,其中1≤r≤n。矩阵A可以被编码来有效率地存储于例如图1中的主存储器104、ROM 106和/或数据存储器107,但也可存储于其它地方。
为了描述用术语“稀疏”和“大”表征的非限制性的实施例,考虑帧频转换问题,其被由nxn矩阵A表示的LSSLE定义,其中n等于65536。该矩阵A可以具有65536x65536维,对应于4294967296个单精度(例如32位)项(例如,大约17000兆字节)。这种矩阵可以被认为是“大”的。当矩阵A的行(例如65536行)中的每个具有相当少的非零项时(例如6个或其它小数目的非零项用于运动估计PDE),矩阵A可以被认为是“稀疏”的。因此,有效编码的矩阵A可以具有例如327680个非零项(例如大约1.3兆字节)。也可以使用其它数目和维数。
处理器109(图1)可以使用迭代方法求解LSSLE,例如,以对解x的初始估计开始,其表示为x(0),具有用xr (0)表示的项。在每个相继的迭代(k+1)中,新的解估计值x(k+1)可以递归地从先前的解估计值x(k)推导出。当观察到估计值的收敛时,该迭代过程可以结束。例如,当度量例如(x(k+1)-x(k))的L2范数变得小于某个预定的阈值时,便可以观察到收敛。例如,L2范数可以定义为 | x | = Σ i = 1 n x i 2 , 其中n可以是向量x的长度。可以使用其它收敛的度量和/或结束处理的方式。
用于求解LSSLE的一种迭代方法是雅可比(Jacobi)方法。在雅可比方法中,解估计值xi (k+1)可以被递归地定义,例如,通过如下的方程(1):
( 1 ) , x i ( k + 1 ) = 1 a ii ( b i - Σ j ≠ i a ij x j ( k ) )
在雅可比方法中,nxn矩阵A可以乘以nx1解估计值向量x(k)来生成新的nx1解估计值向量x(k+1)。该乘法过程典型地用每个新的解估计值向量重复,直到观察到新和旧估计值的收敛。例如,当L2_NORM(x(k+1)-x(k))<ε,对于一些预定的较小的ε>0成立时,会发生收敛。该收敛解估计值向量可以是LSSLE的解向量。因此,使用雅可比方法求解LSSLE的计算开销可以是“迭代次数*n2(γ)”,其中“迭代次数”是进行迭代的次数,γ是雅可比方法的乘和加的计算开销。尽管雅可比方法可以用于求解LSSLE,但该方法一般需要相对大量的迭代次数以获得具有期望精确度的收敛(例如,对于非常小的ε>0)。
其它方法,例如高斯-塞得尔方法(GS)和它的变形,逐次超松驰(SOR),被发展来求解LSSLE,其与雅可比方法相比使用相对少的迭代,同时具有相同的精度。
该GS方法部分遵循雅可比方法的处理,其迭代地用nx1解估计值向量x(k)乘以nxn矩阵A,直到获得估计值的收敛。然而,该GS方法与雅可比方法的不同之处在于解估计值向量如何被定义。该GS方法使用最近计算的向量的项或坐标值递归地定义解估计值向量x(k)。例如:xi (k+1)可以依据xj (k+1)(j=1,2,...(i-1))和xj (k)(j=i,i+1,...,n)来定义。一般地,与雅可比方法和其它类似方法相比,这个关系改进了收敛率。该GS方法递归地定义估计值xi (k+1),例如通过如下的方程式(2):
( 2 ) , x i ( k + 1 ) = 1 a ii ( b i - &Sigma; j < i a ij x j ( k + 1 ) - &Sigma; j > i a ij x j ( k ) )
因为矩阵A是稀疏的,具有大部分的零aij值,所以总和中的每个一般仅涉及少量的项。
尽管与雅可比方法相比,该GS和SOR方法一般加快了估计解值的收敛,但该GS和SOR方法可能导致其它问题。例如,该GS和SOR方法可以使用x的最近计算的项来更新当前的求解估计值,并可以因此被称为“连续的”。例如,在方程式(2)中,xi (k+1)依赖于在同一迭代中计算的x的值(例如,在j<i时的求和项中)。因此,xi (k+1)的值依赖于在向量x中它的邻接项(例如,xi-1 (k+1)),其在同一(例如k+1)迭代期间被计算。在GS方法中的这种依赖关系使得不能并行计算向量x的元素,这极大地限制了求解LSSLE的速度。例如,为了生成向量x中的项(例如xi (k+1),应用一般会进行等待,直到结束生成向量x中的先前的或相邻的项(例如xi-1 (k+1))之后。例如,该GS方法不可以被同时应用到x的连续的项上(例如xi和xi+1)。
本发明的实施例可以包括按照与向量中坐标元素的排列顺序不同的顺序,通过相同向量的其它项(例如,在当前迭代k中计算的),迭代地或递归地定义x的每个有序的坐标元素或项xi (k)。该其它项可以是在向量顺序中的非邻接项xi (k)。因此,可以按照与向量中坐标元素的排列顺序不同的顺序来更新x中的每个项xi (k)的值。根据GS方法(例如,定义在方程式(2)中),项xi (k)独立于其它非邻接项。因此,项xi (k)和它的其它非邻接项被并行地同时更新。因此,根据本发明的实施例,更新项(例如使用GS方法)不需要等待向量中连续排列的或邻接的项的更新。
本发明的实施例提供了方法,用于重排向量x的项的顺序,以生成新的向量x’,以使得对于x的每个项,在初始顺序中的初始邻接项被移动到新排序中的不同的非邻接位置。因此,初始的连续项(例如向量x的xi和xi+1)在向量x’中被分离(例如,现在处于非邻接位置)。因为在GS方法中(例如根据方程式(2))求解向量的每个坐标项依赖于它的邻接项,那么通过移动初始邻接项到非邻接位置,在新向量x’中的项不再依赖于目前的邻接项。因此,对于新向量的两个或更多个邻接项中的每一个,例如向量x’的项(例如x’i (k+1))和新的邻接项(例如x’i-1 (k+1)),可以通过使用递归地定义它们的相应的移动后的非邻接项更新其递归定义来同时或并行地求解。
例如,常规的GS方法(例如根据方程式(2))可以应用于向量x中的项(例如x4)。该结果一般依赖于x的最近计算的项(例如x3),因此必需等待前面邻接项的处理。重排算法可以用于分离初始邻接的项(例如x3,x4,x5)。在一个实施例中,在x中初始邻接项(例如x4)的那些项(例如x3和x4)在x’中被重排为非邻接项。在新向量x’中的项(例如x4)可以具有其不依赖(例如根据方程式(2))的新的邻接值(例如重排的向量x’中的序列x1,x4,x8中的x1和x8)。因此,GS方法(例如由方程式(2)定义的)可以同时应用于x’中的新的邻接项(例如x1,x4,x8)。x’中每个重排的邻接项(例如x1,x4,x8)可以依赖于x’的最近计算的项(例如分别为x0,x3,x7)进行求解(例如根据方程式(2))。因为重新排列了项,所以x’的这些最近计算的项(例如x0,x3,x7)不再与依赖它们的项(例如分别为x1,x4,x8)相邻。因此,为了求解每一邻接项(例如x1,x4,x8),该求解方法不必等待其它邻接项的解。
在一个实施例中(例如图3所示),向量x被转换成对应的第一网格或矩阵(例如图3中的矩阵310),其可以被称为映射矩阵。该第一网格或矩阵的元素被重排为对应于新向量x’的第二网格或矩阵(例如图3中的矩阵340)。该重排可以被执行,以使得对于第一网格或矩阵的每个项,在初始顺序中的初始邻接项被移动到不同的非邻接位置。
在一个实施例中,对于向量到映射矩阵的映射方式和映射矩阵到重排后的映射矩阵的重新排列的方式,处理向量元素的顺序可以不同,其中映射矩阵的邻接元素在重排后的映射矩阵中是非邻接的。
对于具有第一顺序的元素的向量x和具有第二顺序的元素的向量x’,本领域的技术人员可以理解,在向量x’的连续元素上的操作等同于根据第二顺序在向量x的元素上的操作。该向量x可以在不使用或不引用邻接元素的情况下被重新排序。例如,重排项可以等同于定义非平凡图或对项的引用。例如,以非连续或交替顺序操作或计算向量项可以等同于重新排列。例如,项自身不必移动或重新排列。因此,在一些实施例中,向量的元素可以按照不同于向量顺序的顺序无序地操作,其按照与元素出现在向量中的顺序不同的顺序进行操作。元素的组可以在同时被操作。
参考图3,其示意性地示出了从具有初始顺序的向量x到具有新顺序的向量x’的项的重排。数据结构或矩阵310可以表示具有初始顺序的向量x。例如,向量x的项可以充满矩阵310的坐标,行接行(如图所示),列接列,或使用其它顺序。矩阵310中的项300(例如x10或向量x的第10项)可以具有8个邻接项,例如,包括4个正对的项320(例如与项300相邻且位于相同行或相同列上)和4个对角项330(例如与项300相邻但是位于不同的行和列上)。或者,除了正对和对角项320和330外,其它项可以被认为是相邻的。
数据结构或矩阵340可以表示或对应于具有重排顺序的向量x’。根据该重排顺序,矩阵340中的项300(例如对应于矩阵310中的第10项)可以与初始邻接项分离。例如,以矩阵310的初始顺序排列的项(例如第6、9、11和14项和/或第5、7、13和15项)可以在矩阵340的新顺序中与项300不再相邻。初始顺序的邻接项可以在重排顺序中从项300移开或隔开一段距离(例如,由参数S定义,本文参照重排方程式(3)进行描述)。矩阵340中的项300可以具有新的邻接项,例如,与正对项320和/或对角项330不同的正对项350和对角项360。
例如,一旦向量已经在矩阵340中被重排,就使得每个项300被从初始邻接项(例如正对项320和/或对角项330)分离,那么GS方法可以被并行地应用到重排向量x’的新邻接项(例如正对项350和/或对角项360)。例如,为了求解方程式Ax’=b的LSSLE,nxn矩阵A可以乘以重排后的nx1向量x’(例如,或者乘表示向量x’的nxm矩阵340)。因此,求解LSSLE的计算步骤可以类似于雅可比方法的步骤(例如,使用矩阵乘法同时处理向量的多个项),而解的收敛率类似于GS方法的收敛率(例如,基于最近的计算的解值)。因此,雅可比方法和GS方法各自的优势均被实现。可以使用其它向量、矩阵或数据结构类型。可以使用其它重排方案。
可以理解,每个项可以具有其它数目的邻接项或其它邻接项定义。例如,排列在矩阵310和340对角上的项可以具有2个正对项320和1个对角项330。排列在矩阵310和340边缘上(且非对角)的项可以具有3个正对项320和2个对角项330。在另一实施例中,不需要使用向量的矩阵表示。取而代之,初始的和重排后的向量x和x’本身可被使用,矩阵310和340可以被认为是一维的(例如,等同于向量x和x’本身)。在这个例子中,对于1xn向量,位于向量边缘的项(例如x0和xn-1)可以具有1个邻接项,而剩余所有其它项(例如x1和xn-2)可以具有2个邻接项。
可以理解,尽管描述了重排或移动项,但是本发明的实施例包括重排或移动项的派生物。例如,表示重排后的向量的矩阵可以被布置为简化行阶梯形矩阵、正规矩阵、简化或拆分为上三角矩阵、下三角矩阵、对角矩阵和/或其它变形。重排的或移动的项可以是源自初始项的项(例如,不是复制)。
从初始顺序到重排顺序的向量中的项的移动可以在图3中用箭头表示。注意该移动是数学抽象,其可以由映射、算法或方程式(例如,本文描述的重排方程式(3))来定义。在另一实施例中,重排项可以等同于定义交替映射或对项的引用。例如,不必移动或重排项本身。例如,决定以什么顺序操作或计算向量的项可以等同于重新排列。
操作元素的顺序可以由处理器109(图1)确定,由执行单元130(图1)执行,和/或被存储为命令或一组指令(例如在图1的高速缓存层次结构160、主存储器104、ROM 106、数据存储设备或上述组合中)。或者,向量元素的重新排列或元素被处理的顺序可以是一组被存储和取出用于执行的指令所固有的。例如,处理过程可以被预置来首先操作某些项(例如,项的组),然后其它项,依此类推,其中上述顺序与向量中元素排列的顺序并不对应。例如,第一组的多个(例如4或8个)相互不连续的项可以被打包进第一指令,然后第二组的多个(例如4或8个)相互不连续的项可以被打包进第二指令,依此类推。
算法可以被应用于向量x来重排项,以形成新的向量x’。例如,算法可以按如下方式(例如,以SSE变量示范)进行。向量x可以被存储为具有R行C列的矩阵310。用于将R*C向量x重排为新的或重排后的向量x’,(其具有项x’(j),其中0≤j≤R*C-1,)的重排方程可以例如:
Figure G2009101370109D00141
参数S可以是初始向量x的项x(j)和x(j+1)之间的距离(例如,在x’中)。参数S的选择可以影响处理器109(图1)(例如SIMD)流水线的效率和吞吐量,并可以被选择来优化这些特征。例如,S的参数值可以是8。例如,对于足够大的矩阵310,参数S的值为4可以是足够的来填充系统100(图1)的流水线以达到占满吞吐量。其它值也可以被使用。
本领域技术人员可以理解,不是必须使用向量的矩阵表示。作为替代,可以使用向量本身。
参考图4A和4B,其分别示出了表示具有初始顺序的向量x的矩阵400和表示具有新顺序的向量x’的矩阵410。可以根据本文描述的重排方程执行项的重排。在该例子中,参数S为3。
通过在新向量x’中重排项,每个项可以具有独立于它的邻接项,因此随后可以并行处理。在一个实施例中,对于项xi,在向量x中初始邻接于xi且在重排后的向量x’中不邻接于xi的项的数目是可以与项xi并行处理的项的数目(例如,使用GS方法)。
在一个实施例中,并行处理算法和/或硬件可以用于并行地处理邻接项。例如,处理器109(图1)可以并行处理重排后的向量x’的两个或更多邻接项,例如,使用SIMD操作。
并行处理算法可以用于通过将nxn矩阵A乘以重排的nx1向量x’,来求解定义为Ax=b的LSSLE。例如,一个实施例可以使用SSE指令集140(图1)来并行执行4个数据点,另一实施例可以使用AVX指令集140(图1)来并行执行8个数据点。可以使用其它合适的打包、SIMD或并行处理指令集或方法。例如,可以使用指令集140(图1)来并行地执行16个数据点。在一个实施例中的向量x’可以被重新排列,以使得对于每个项,x的至少4个初始邻接项在x’中是非邻接的,以并行地执行4个独立的数据点。在另一个实施例中的向量x’可以被重新排列,以使得对于每个项,x的至少8个初始邻接项在x’中是非邻接的,以便并行地执行8个独立的数据点。
本文使用伪代码描述实施例。可以使用其它编程代码、步骤、排序或步骤、编程语言、指令集类型和/或最小数目的非邻接项。
下列的伪代码描述了实施例,其通过使用多个(例如4个)邻接值(例如,保存在xmm1-xmm4中的4X4=16个项)来使用SSE指令并行地处理重排后的向量x’的多个(例如4个)数据点中的每一个。向量x’可以具有一顺序,其中每个项的多个(例如4个)邻接值(例如,保存在xmm1-xmm4中的数据点)是相互独立的。该“内核”,KERNEL-SSE,可以描述并行处理向量x’的多个(例如4个)独立项。该内核可以被调用n/4次,以执行“向量与矩阵”的乘法,例如,根据方程Ax’=b。可以使用对应于数据点(例如,保存在xmm5-xmm8中的4X4=16个项)的矩阵A的系数项。该内核可以用来解泊松方程(例如,其中矩阵的每行可以有四个非零项)。在其它实施例中,可以并行处理数量不是4个的项。
伪代码可以例如以如下方式处理:
KERNEL-SSE
ERR_XMM may hold the the L2 norm((x(k+1)-x(k))2)which may indicatethe convergence of x.
ERR_XMM may be initially set to 0,and the value thereof may be updated,for example,when KERNEL is invoked.
xmm0 may hold 4 entries of b vector(e.g.,where Ax=b).
xmm1-xmm4 may hold 4x4=16 entries of the current value of the estimatedsolution vector x.These values may be the neighbors of estimated value ofx,for example,calculated by PDE discretization.
xmm5-xmm8may hold 4x4=16 entries of the matrix A(e.g.,the coefficientvalues of A).
xmm9 may hold 4 entries of the newly computed approximation for x atoutput.
ERR_XMM may be updated.
Notation:For each j=0,1,2,...xmmj may hold a plurality(e.g.,4 or 16)ofentries.These 4 entries of xmmj may be distinguished by the followingnotation:xmmj[3],xmmj[2],xmmj[1],xmmj[0].
The KERNEL may compute the following:
xmm10=xmm9
xmm9=xmm1*xmm5+xmm2*xmm6+xmm3*xmm7+xmm4*xmm8+xmm0
ERR_XMM=(xmm10[3]-xmm9[3])2+(xmm10[2]-xmm9[2])2+(xmm10[1]-xmm9[1])2+(xmm 10[0]-xmm9[0])2
Pseudo-code SSE:
1.Load xmm1,xmm2,xmm3,xmm4   //load values of“neighbors”of x
2.Load xmm5,xmm6,xmm7,xmm8       //load matrix coefficients
3.Load xmm0//load b values
4.Load xmm9      //load current value of x
5.MOVPS xmm10,xmm9      //store old value of x
6.MULPS xmm 1,xmm5      //packed multiplications
7.MULPS xmm2,xmm6       //packed multiplications
8.MULPS xmm3,xmm7       //packed multiplications
9.MULPS xmm4,xmm8       //packed multiplications
10.ADDPS xmm1,xmm2      //packed addition
11.ADDPS xmm3,xmm4      //packed addition
12.ADDPS xmm1,xmm3      //packed addition
13.ADDPS xmm1,xmm0      //packed addition
14.SUBPS xmm10,xmm9     //L2 norm calculation(subtraction)
15.MULPS xmm10,xmm10    //L2 norm calculation(squaring)
16.ADDPS ERR_XMM,xmm10  //L2 norm calculation(updating xmm9)
17.Store xmm1
当然这些指令只是作为例子提供。本发明的实施例可以使用其它具体形式的指令。在KERNEL-SSE被调用n/4次后,对于当前的迭代,向量x’的所有项都已经计算了,且ERR_XMM保留与上次迭代的差的L2范数。如果L2范数值小于预先计算的值或阈值,则处理可以停止。在最近的迭代中计算的x’的值可以被用作最终结果。或者,可以使用对应于x’的最近迭代值的x的值(例如,通过“解重排”确定或通过使用反向重排方程来将x’反向映射到x来确定)作为最终结果。
向量重排可以应用于使用其他步骤、处理和/或方法来解方程的系统中。
一个实施例的每次迭代或KERNEL-SSE的计算开销可以汇总为例如:10次加载,1次存储,5次MULPS和6次ADDPS。
可以使用类似的内核来求解运动估计方程,但是一般需要并行处理向量的8个项(例如,足够快地找到解以生成“平滑质量视频”)。执行相应的运动估计内核(例如,对于向量中相同数目的项)的计算开销可以汇总为例如:11次加载,1次存储,6次MULPS和7次ADDPS。
下列的伪代码描述了一实施例,其通过使用多个(例如8个)邻接值(例如,保存在ymm1-ymm4中的8X8=64项)来使用(例如AVX)指令并行地处理重排后的向量x’的多个(例如8个)数据点中的每一个。向量x’可以具有一顺序,其中每个项的多个(例如8个)邻接值(例如,保存在ymm1-ymm4中的数据点)是相互独立的。该“内核”,KERNEL-AVX,可以描述并行处理向量x’的多个(例如8个)独立的项。该内核可以被调用n=8次以执行“矩阵与向量”的乘法,例如,根据方程Ax’=b。可以使用对应于数据点(例如,保存在ymm5-ymm8中的8X8=64项)的矩阵A的系数项。
该伪代码可以以如下方式处理:
KERNEL-AVX
ERR_XMM may hold the L2 norm((x(k+1)-x(k))2),which may indicate theconvergence of x.
ERR_XMM may be initially set to 0,and the value thereof may be updated,for example,when KERNEL is invoked.
ymm0 may hold 8 entries of the b vector(e.g.,where Ax=b).
ymm1-ymm4 may hold 8x8=64 entries of the current value of the estimatedsolution vector x.These values may be the neighbors of estimated value ofx,for example,calculated by PDE discretization.
ymm5-ymm8 may hold 8x8=64 entries of the matrix A(e.g.,the coefficientvalues).
ymm9 may hold 8 entries of the value of the solution x at the input.
ERR_YMM may be updated.
Notation:For each j=0,1,2,...,ymmj may hold a plurality(e.g.,8 or 64)ofentries.The 8 entries of ymmj may be distinguished by the following
notation:ymmj[7],ymmj[6],ymmj[5],ymmj[4],ymmj[3],ymmj[2],ymmj[1],ymmj[0].
The KERNEL may compute the following:
ymm10=ymm9
ymm9=ymm1*ymm5+ymm2*ymm6+ymm3*ymm7+ymm4*ymm8+ymm0
ERR_YMM=(ymm10[7]-ymm9[7])2+(ymm10[6]-ymm9[6])2+(ymm10[5]-ymm9[5])2+(ymm10[4]-ymm9[4])2+(ymm10[3]-ymm9[3])2+(ymm10[2]-ymm9[2])2+(ymm10[1]-ymm9[1])2+(ymm10[0]-ymm9[0])2
Pseudo-code for the instruction set for processing 8 data points in parallel:
1.Load ymm1-ymm4                //load current value of x neighbors
2.Load ymm5-ymm8                //load matrix coefficients
3.Load ymm0                         //Load b values
4.Load ymm9                  //load current value of x
5.ymm10=ymm9
6.MULPS ymm1,ymm1,ymm5                //packed multiplications
7.MULPS ymm2,ymm2,ymm6                //packed multiplications
8.MULPS ymm3,ymm3,ymm7                //packed multiplications
9.MULPS ymm4,ymm4,ymm8                //packed multiplications
10.ADDPS ymm1,ymm1,ymm2                  //packed addition
11.ADDPS ymm3,ymm3,ymm4                  //packed addition
12.ADDPS ymm1,ymm1,ymm0         //packed addition
13.ADDPS ymm1,ymm1,ymm3         //packed addition
14.SUBPS ymm10,ymm10,ymm9 //L2 norm calculation(subtraction)
15.MULPS ymm10,ymm10,ymm10     //L2 norm calculation(squaring)
16.ADDPS ERR_YMM,ERR_YMM,ymm 10        //L2 norm calculation
(update ymm10)
17.Store ymm9
在KERNEL-AVX被调用n/8次后,对于当前的迭代,向量x’的所有项都已经计算了,且xmm9可以保存与上次迭代的差的L2范数。如果L2范数值小于预先计算的值或阈值,则处理可以停止,并且在最近的迭代中计算的x’的值(例如,或对应于其的x的值)可以被用作最终结果。
一个实施例的每次迭代或KERNEL-AVX的计算开销可以汇总为例如:10次加载,1次存储,5次MULPS和6次ADDPS。
通过使用用于并行处理8个数据点的指令集140(图1)来代替SSE指令集140(图1)(例如,并行处理4个数据点),处理器109(图1)可以使用同样数目的指令(例如,以及延迟)处理大约两倍的数据。
本发明的实施例可以用于求解LSSLE以估计运动,以便转换帧频。例如,考虑一视频播放器或计算机,其在刷新率为例如每秒60帧(60fps)的监视器或显示屏上播放或输出初始频率为例如每秒24帧的视频文件。为了转换文件以在所述刷新率进行播放,以使得在相同的流逝时间内,设备以第一速率输出,显示屏以第二速率输出,帧转换应用程序(例如,运动估计器)可以生成另外的fps(例如,48fps)。例如,对于每个一秒的时间周期,24帧进入根据本发明的实施例的处理器过程并输出60帧。例如,因为新帧中的一些是旧帧的拷贝,所以可以生成少于60的额外fps。例如,如果每个帧具有n2个像素,其中n=256,那么该应用程序可以平均每秒生成48个LSSLE的解。在一个实施例中,LSSLE可以安排为矩阵形式(例如,Ax=b)。
在常规的GS方法中,可以通过一次一项或依次用向量x中的每一项乘矩阵A来生成LSSLE的每个解。本发明的实施例可以通过并行地或同时地用向量x’的两个或多个(例如独立的)项乘矩阵A来生成LSSLE的每个解。
每个LSSLE的解可以被生成,直到获得了解(例如x或x’)的收敛。例如,如果在GS方法的10次迭代内获得了收敛,则该应用程序会执行10次“矩阵与向量”的乘法,其每秒需要10*6n2=3932160次乘法和10*4n2=2621440次加法(例如,如果矩阵A具有6个非零项且每一帧具有n2=2562个像素)。帧转换应用程序会具有另外的计算开销,例如,准备矩阵A(例如,通过对角元素划分每个矩阵)。根据本发明的实施例,通过并行求解多个(例如,4或8个)数据点,可以比使用常规方法更快地生成LSSLE的解。与常规方法相比,根据本发明实施例的播放器操作可以播放更“平滑”的视频,尽管其它的或不同的益处也可以获得。
本发明的实施例在求解LSSLE上相比于其它常规方法具有优势,例如本领域所知的“红-黑”GS方法、“zig-zag扫描”方法以及“斑马线松弛”方法。例如,红-黑方法使用的迭代次数一般是标准GS方法的2-3倍。另外,该红-黑方法一般在每次迭代之前和/或之后执行打包和/或解包处理,因此,不能轻易地被集成到光流或多重网格结构中。例如,zig-zag扫描方法,类似于红-黑方法,一般在每次迭代之前和/或之后执行打包和/或解包处理,因此会涉及大量的开销并且不易实现。zig-zag扫描方法一般不适于多标度结构。例如,斑马线松弛方法,类似于红-黑方法,一般使用的迭代次数是GS方法的2-3倍。
相反,本发明的实施例可以使用与GS方法相同次数的迭代,因此是前面提到的常规方法的迭代次数的一半。本发明的实施例不必实现打包和/或解包处理,例如,在每次迭代之前和/或之后。因此,本发明的实施例可以被轻易地集成到光流或多重网格或多标度结构中。本发明的实施例可以使用显著减少的预处理和/或处理后工作或开销(例如,与zig-zag扫描方法相比)。例如,本发明的实施例可以为多标度和/或多重网格结构使用单个预处理步骤。相比标准GS方法,使用并行地处理4或8个数据点的指令集的本发明的实施例求解方程的速度分别是3.5和7倍。
也可以实现其它的或不同的益处。
尽管本文描述了雅可比和GS方法,本发明的实施例可以与任何迭代方法一同使用。迭代方法是通过从初始的猜想和/或估计开始,连续寻找解的近似值来解决问题(例如方程或方程组)的方法。例如,牛顿方法、不动点方法、定常迭代法,例如本文描述的雅可比和GS方法或它们的变形、Krylov子空间算法,例如共轭梯度方法(CG)、广义最小残量法(GMRES)以及双共轭梯度方法(BiCG)。其它方法也可以使用。
参考图5,其是根据本发明实施例的方法的流程图。该方法实施例可以被例如图1中的计算系统100或其它合适系统使用或实现。
在操作500中,系统(例如,图1的系统100)可以从输入设备(例如,图1中的输入设备122)接收具有帧频的视频输入文件,其不同于向输出设备(例如,图1中的显示设备121)输出视频文件的帧频。
在操作505,执行单元(例如,图1中的执行单元130)可以开始求解由方程式Ax=b定义的线性方程组(例如,LSSLE)。该线性方程组可以定义用于将视频文件从输入帧频转换到输出帧频的中间帧。
在操作510,处理器(例如,图1中的处理器109)可以生成表示线性方程组的系数的矩阵A,表示该线性方程组的解的第一估计值的向量x,表示该线性方程组的标量值的向量b。该向量x可以包括按顺序排列的多个元素(例如,x1,x2,x3,x4,...)
在操作515,处理器可以用向量x乘矩阵A,以使得向量x中的元素可以按照不同于这些元素在向量中的排列顺序的顺序(例如,x1,x9,x17,x25,...)进行相乘。连续的被乘的项是独立的或与邻接元素分离。例如,根据GS方法,x1独立于x9,x17和x25。因此,向量的多个独立元素可以被并行地相乘。在一个实施例中,该处理器可以使用SIMD指令并行地乘多个连续元素。
在一个实施例中,处理器可以实际重排向量中元素的排列顺序,以生成不同的顺序(例如,x1,x9,x17,x25,...)。在一个实施例中,向量的元素可以以矩阵形式被重新排列(例如,图3中从矩阵310到矩阵340)。在另一实施例中,处理器可以仅仅无序地计算向量元素。
在操作520,处理器可以生成线性方程组的解的第二向量估计值,其中该第二向量估计值是操作515中相乘的结果。
在操作525中,处理器可以确定或度量第一和第二向量估计值之间的差。当该第一和第二向量估计值的差小于预定量时,处理可以前进到操作530。否则该处理可以进入操作515,并用第二向量估计值取代第一向量估计值。
在操作530,处理器可以设置LSSLE的解。线性方程组的解可以被设置为第二向量估计值。或者,线性方程组的解可以被设置为第一向量估计值。或者,线性方程组的解可以被设置为第一和第二向量估计值的平均值。
在操作535,处理器可以使用LSSLE的解生成插入帧,从而将至少一段视频文件从输入帧频转换到输出帧频。在一个实施例中,在每对已知帧之间的每个插入帧可以由单独的LSSLE描述。在其它实施例中,多个插入帧可以由相同LSSLE描述。处理过程可以重复操作505-535,直到每个插入帧已经使用表示它的LSSLE被生成。一旦生成了用于将至少一段视频文件从输入帧频转换到输出帧频的每个插入帧,处理可以进入操作540。
在操作540,输出设备(例如,图1中的显示设备121,例如监视器)可以以合适的输出帧频输出该视频文件。
在操作545,存储器单元(例如,图1中的主存储器104、ROM 106、数据存储设备107,例如DRAM)可以以该输出帧频存储视频文件。存储器单元可以存储矩阵A乘以向量x的结果(例如,在操作515中的)。
可以使用其它操作或操作序列。
本发明的实施例可以包括制品,例如计算机或处理器可读介质,或计算机或处理器存储介质,例如存储器、磁盘驱动器或USB闪存,用于编码、包含或存储指令,该指令被处理器或控制器执行时,执行本文公开的方法。
描述的实施例使用方程求解方法以便于视频解释。然而,其它实施例可以在其它环境中使用上述求解方法,例如电子工程、流体动力学、其它计算机视觉/图形系统,例如光流估计、超分辨率和图像降噪。
尽管使用有限数目的实施例描述了本发明,然而应该知道,可以构造本发明的许多变形、修改以及其它应用。本发明的实施例可以包括用于执行本文操作的其它装置。这些装置可以集成已讨论的要素,或可以包括替代部件来执行相同的目的。本领域的技术人员应该知道,附加的权利要求旨在涵盖落入本发明实质精神范围内的所有变形或改变。

Claims (12)

1.一种用于转换帧频的方法,包括:
用一向量乘一矩阵,其中所述矩阵表示一大型稀疏线性方程组,该大型稀疏线性方程组用于估计视频文件的帧之间的运动以转换帧频,所述向量是所述线性方程组的解的第一向量估计值,其中,所述向量包括按照一顺序排列的多个元素,并且其中,所述乘法包括按照与所述元素在所述向量中的排列顺序不同的顺序用所述向量的元素乘所述矩阵,并且将所述矩阵与所述向量中的多个元素并行地相乘;
生成所述线性方程组的解的第二向量估计值,其中,所述第二向量估计值是所述乘法的乘积;以及
当所述第一和第二向量估计值的差小于预定的量时,设置所述线性方程组的解。
2.如权利要求1所述的方法,其中,通过使用单指令多数据指令集的处理器来用所述多个元素乘所述矩阵。
3.如权利要求1所述的方法,包括重排所述向量的有序的元素,以生成与所述元素在所述向量中的排列顺序不同的顺序。
4.如权利要求1所述的方法,包括:当将视频文件从输入帧频转换到输出帧频时,使用所述线性方程组的解生成内插入的图像帧。
5.如权利要求4所述的方法,包括以所述输出帧频在显示器上显示所述视频文件。
6.如权利要求1所述的方法,其中,与所述元素在所述向量中的排列顺序不同的顺序对应于所述向量到一映射矩阵的映射以及所述映射矩阵到一重排后的映射矩阵的重排,其中,所述映射矩阵的邻接元素在所述重排后的映射矩阵中是不邻接的。
7.一种用于转换帧频的装置,包括:
用于用一向量乘一矩阵的模块,其中,所述矩阵表示一大型稀疏线性方程组,该大型稀疏线性方程组用于估计视频文件的帧之间的运动以转换帧频,所述向量是所述线性方程组的解的第一向量估计值,其中,所述向量包括按照一顺序排列的多个元素,并且其中,所述乘法包括按照与所述元素在所述向量中的排列顺序不同的顺序用所述向量的元素乘所述矩阵,并且将所述矩阵与所述向量中的多个元素并行地相乘;
用于生成所述线性方程组的解的第二向量估计值的模块,其中,所述第二向量估计值是所述乘法的乘积;以及
用于当所述第一和第二向量估计值的差小于预定的量时,设置所述线性方程组的解的模块。
8.如权利要求7所述的装置,其中,通过使用单指令多数据指令集的处理器来用所述多个元素乘所述矩阵。
9.如权利要求7所述的装置,包括用于重排所述向量的有序的元素,以生成与所述元素在所述向量中的排列顺序不同的顺序的模块。
10.如权利要求7所述的装置,包括:用于当将视频文件从输入帧频转换到输出帧频时,使用所述线性方程组的解生成插入的图像帧的模块。
11.如权利要求10所述的装置,包括用于以所述输出帧频在显示器上显示所述视频文件的模块。
12.如权利要求7所述的装置,其中,与所述元素在所述向量中的排列顺序不同的顺序对应于所述向量到一映射矩阵的映射以及所述映射矩阵到一重排后的映射矩阵的重排,其中,所述映射矩阵的邻接元素在所述重排后的映射矩阵中是不邻接的。
CN2009101370109A 2008-04-25 2009-04-27 用于使用并行处理来求解线性方程组的设备、系统和方法 Expired - Fee Related CN101572771B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210162677.6A CN102855220B (zh) 2008-04-25 2009-04-27 用于使用并行处理来求解线性方程组的设备、系统和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/109,540 2008-04-25
US12/109,540 US20090268085A1 (en) 2008-04-25 2008-04-25 Device, system, and method for solving systems of linear equations using parallel processing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201210162677.6A Division CN102855220B (zh) 2008-04-25 2009-04-27 用于使用并行处理来求解线性方程组的设备、系统和方法

Publications (2)

Publication Number Publication Date
CN101572771A CN101572771A (zh) 2009-11-04
CN101572771B true CN101572771B (zh) 2012-07-18

Family

ID=40937558

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2009101370109A Expired - Fee Related CN101572771B (zh) 2008-04-25 2009-04-27 用于使用并行处理来求解线性方程组的设备、系统和方法
CN201210162677.6A Expired - Fee Related CN102855220B (zh) 2008-04-25 2009-04-27 用于使用并行处理来求解线性方程组的设备、系统和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201210162677.6A Expired - Fee Related CN102855220B (zh) 2008-04-25 2009-04-27 用于使用并行处理来求解线性方程组的设备、系统和方法

Country Status (5)

Country Link
US (1) US20090268085A1 (zh)
EP (1) EP2112602A3 (zh)
JP (1) JP5026464B2 (zh)
KR (1) KR101098736B1 (zh)
CN (2) CN101572771B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8204925B2 (en) * 2008-05-22 2012-06-19 National Instruments Corporation Controlling or analyzing a process by solving a system of linear equations in real-time
US9063882B1 (en) * 2010-09-09 2015-06-23 Sas Ip, Inc. Matrix preconditioners for simulations of physical fields
CN102231202B (zh) * 2011-07-28 2013-03-27 中国人民解放军国防科学技术大学 面向向量处理器的sad向量化实现方法
EP2798429A4 (en) * 2011-12-30 2016-07-27 Intel Corp RECONFIGURABLE DEVICE FOR REPOSITIONING DATA IN A DATA WORD
US9355068B2 (en) * 2012-06-29 2016-05-31 Intel Corporation Vector multiplication with operand base system conversion and re-conversion
US10095516B2 (en) 2012-06-29 2018-10-09 Intel Corporation Vector multiplication with accumulation in large register space
US9195436B2 (en) * 2013-10-14 2015-11-24 Microsoft Technology Licensing, Llc Parallel dynamic programming through rank convergence
CN103678252B (zh) * 2013-12-16 2016-06-01 合肥康捷信息科技有限公司 一种基于龙芯3a的线性方程求解函数的并行化处理方法
JP2015135621A (ja) 2014-01-17 2015-07-27 富士通株式会社 演算装置、演算方法および無線通信装置
US9721007B2 (en) * 2014-10-07 2017-08-01 Oracle International Corporation Parallel data sorting
JP6550465B2 (ja) * 2015-08-20 2019-07-24 株式会社日立製作所 情報処理回路
US10074151B2 (en) * 2015-09-30 2018-09-11 Intel Corporation Dense optical flow acceleration
US10762602B2 (en) * 2017-11-08 2020-09-01 Intel Corporation Methods and apparatus to enable parallel processing when solving linear equations in a computer vision processing system

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5241608A (en) * 1988-11-25 1993-08-31 Eastman Kodak Company Method for estimating velocity vector fields from a time-varying image sequence
JP2006227152A (ja) 2005-02-16 2006-08-31 Nippon Telegr & Teleph Corp <Ntt> 計算装置およびその計算装置を利用した収音装置
JP4671041B2 (ja) 2006-03-27 2011-04-13 日本電気株式会社 モジュール化物理リソース群特定方法、その装置及びプログラム

Also Published As

Publication number Publication date
CN102855220A (zh) 2013-01-02
EP2112602A2 (en) 2009-10-28
CN101572771A (zh) 2009-11-04
JP5026464B2 (ja) 2012-09-12
CN102855220B (zh) 2016-02-10
KR20090113222A (ko) 2009-10-29
EP2112602A3 (en) 2012-11-07
US20090268085A1 (en) 2009-10-29
KR101098736B1 (ko) 2011-12-23
JP2009266230A (ja) 2009-11-12

Similar Documents

Publication Publication Date Title
CN101572771B (zh) 用于使用并行处理来求解线性方程组的设备、系统和方法
CN1534458B (zh) 对分组数据进行操作的方法和装置
US7003542B2 (en) Apparatus and method for inverting a 4×4 matrix
US7085795B2 (en) Apparatus and method for efficient filtering and convolution of content data
US7689641B2 (en) SIMD integer multiply high with round and shift
CN100461093C (zh) 在分组数据上执行乘-加运算的方法、处理器、设备和系统
CN100465874C (zh) 根据指令对数据执行运算的方法、处理器和系统
WO2006044978A2 (en) Looping instructions for a single instruction, multiple data execution engine
US6211892B1 (en) System and method for performing an intra-add operation
MXPA03011899A (es) Un metodo, aparato, e instrucciones para efectuar una operacion de signo que multiplica.
CN113853601A (zh) 用于矩阵运算的装置和方法
US20050289329A1 (en) Conditional instruction for a single instruction, multiple data execution engine
EP2025175B1 (en) Instruction for producing two independent sums of absolute differences
TWI493456B (zh) 向量計算指令執行之方法、裝置及系統
Shahbahrami et al. Matrix register file and extended subwords: two techniques for embedded media processors
US6204855B1 (en) Computer system for interpolating a value for a pixel
CN102067108A (zh) 并向量分数与符号对称舍入误差的乘积的快速计算
US7434028B2 (en) Hardware stack having entries with a data portion and associated counter
JP3231811B2 (ja) 行列演算回路
US6199083B1 (en) Computer implemented method for interpolating a value corresponding to a point represented by binary coordinates

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120718

Termination date: 20150427

EXPY Termination of patent right or utility model