CN102053948A - 在单指令多数据多核处理器架构上转置矩阵的方法和系统 - Google Patents

在单指令多数据多核处理器架构上转置矩阵的方法和系统 Download PDF

Info

Publication number
CN102053948A
CN102053948A CN2010105375212A CN201010537521A CN102053948A CN 102053948 A CN102053948 A CN 102053948A CN 2010105375212 A CN2010105375212 A CN 2010105375212A CN 201010537521 A CN201010537521 A CN 201010537521A CN 102053948 A CN102053948 A CN 102053948A
Authority
CN
China
Prior art keywords
matrix
simd
transposition
row
carried out
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.)
Granted
Application number
CN2010105375212A
Other languages
English (en)
Other versions
CN102053948B (zh
Inventor
杰弗里·S·麦克阿利斯特
马克·A·布兰斯福德
蒂莫西·J·马林斯
尼尔森·拉米莱兹
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN102053948A publication Critical patent/CN102053948A/zh
Application granted granted Critical
Publication of CN102053948B publication Critical patent/CN102053948B/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/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
    • G06F7/785Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using a RAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them

Landscapes

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

Abstract

本发明公开了用于在SIMD多核处理器架构上转置矩阵的方法和系统。SIMD格式的矩阵可以被接收。所述矩阵可以包括对传统的数据格式的矩阵M的SIMD转换。可以定义从所述矩阵的每个元素到矩阵M的转置的SIMD转换的元素的映射。可以基于矩阵M和所定义的映射生成SIMD-转置的矩阵T。行方式的算法在不修改的情况下可以被应用到T,以对矩阵M的列进行操作。

Description

在单指令多数据多核处理器架构上转置矩阵的方法和系统
技术领域
本发明的实施例一般地涉及在多核处理器架构上执行高效的快速傅立叶变换(FFT)。更具体地,本发明的实施例涉及对适于在SIMD多核处理器架构上高效FFT的格式中的阵列数据进行转置(transpose)。
背景技术
某些当前可用的处理器支持“单指令,多数据”(SIMD)扩展。SIMD表示单个指令并行地对多个数据条目操作。例如,“加”SIMD指令可以并行地加8个16比特数。即,在单个时钟周期内执行了对8个不同的数据集(多数据)的加法操作(单个操作)。典型地,所述数据值可以作为矢量的元素而被提供。因此,SIMD处理也被称为矢量处理。SIMD指令通过将多个操作作为单个指令的一部分来执行而显著地提高了执行速度。SIMD扩展的著名示例包括多媒体扩展(“MMX”)指令、SSE指令和矢量多媒体扩展(“VMX”)指令等。
在SIMD多核处理器上高效地计算快速傅立叶变换(FFT)已经被证实为具有挑战性的任务。对于较大的一维FFT(1D FFT),由于更大的独立的数据处理块的组,可以得到更大量的并行性。然而,所述1D FFT本质上是具有复杂度O(N log N)的递归算法。因此,对于较小尺寸的1D FFT,单个行的并行量非常小。而且,当前用于执行FFT的库并不适合于对相对较小的数据阵列执行的FFT(例如,对256×256像素、512×512像素或1024×1024像素的图像大小执行的FFT)。虽然从较大尺寸的1D FFT中获得了一定程度的SIMD并行性,但在较小尺寸时仅获得少量的行内算法并行性。此外,当前用于多核FFT的库是孤立的,不允许用于计算机操作到输入/输出(IO)的优化所需要的工作的功能流水线化。
发明内容
本发明的一个实施例包括用于在SIMD多核处理器架构上转置矩阵的方法,其包括配置所述SIMD多核处理器架构以执行操作。所述操作一般地可以包括:将第一格式的矩阵M转换为SIMD格式的矩阵S,其中,所述SIMD格式允许SIMD多核处理器架构上的多个核并行地分别对矩阵M中的行数据进行1D FFT操作;检索矩阵S中的每个元素到矩阵M在SIMD格式中的转置中的元素的映射,其中,所述映射为矩阵M的转置保持S的SIMD格式;以及基于所检索的映射,生成SIMD-转置的矩阵T,其中所转置的SIMD矩阵T允许在SIMD多核处理器架构上的多个核并行地分别对矩阵M中的转置后的行数据进行1D FFT操作。
本发明的另一个实施例包括计算机可读存储介质,其包含一个程序,当所述程序被处理器执行时,其被配置用于在SIMD多核处理器架构上执行转置矩阵的操作。所述操作一般地包括:将第一格式的矩阵M转换为SIMD格式的矩阵S,其中,所述SIMD格式允许SIMD多核处理器架构上的多个核并行地分别对矩阵M中的行数据进行1D FFT操作;检索矩阵S中的每个元素到矩阵M在SIMD格式中的转置中的元素的映射,其中,所述映射为矩阵M的转置保持S的SIMD格式;以及基于所检索的映射,生成SIMD-转置的矩阵T,其中所转置的SIMD矩阵T允许在SIMD多核处理器架构上的多个核并行地分别对矩阵M中的转置后的行数据进行1D FFT操作。
本发明的再一个实施例包括具有处理器和包含程序的存储器的系统,当所述程序被所述处理器执行时,其被配置用于在SIMD多核处理器架构上执行转置矩阵的操作。所述操作一般地包括:将第一格式的矩阵M转换为SIMD格式的矩阵S,其中,所述SIMD格式允许SIMD多核处理器架构上的多个核心并行地分别对矩阵M中的行数据进行1D FFT操作;检索矩阵S中的每个元素到矩阵M在SIMD格式中的转置中的元素的映射,其中,所述映射为矩阵M的转置保持S的SIMD格式;以及基于所检索的映射,生成SIMD-转置的矩阵T,其中所转置的SIMD矩阵T允许在SIMD多核处理器架构上的多个核心中并行地分别对矩阵M中的转置后的行数据进行1D FFT操作。
附图说明
可以通过参考附图中所示出的的实施例对以上简要说明的本发明进行更具体的描述,从而可以详细理解获得本发明的上述特征、优势和目标的方式。
然而,应该注意到,附图仅仅示出了本发明的典型实施例,因此不被认为是限制其范围,因为本发明可以承认其他同样有效的实施例。
图1是图解根据本发明的一个实施例的在SIMD多核处理器架构上对阵列数据进行转置的系统的框图;
图2图解了根据本发明的一个实施例的用于对4×4矩阵执行2D FFT的数据流;
图3图解了根据本发明的一个实施例的用于以四路的SIMD格式对8×8矩阵执行SIMD转置的数据流;
图4图解了根据本发明的一个实施例的用于同时转置矩阵的部分的数据流;
图5图解了根据本发明的一个实施例的用于同时转置矩阵的子部分的数据流;
图6是描绘了根据本发明的一个实施例的用于在SIMD多核处理器架构上执行高效FFT的方法的流程图;
图7是描绘了根据本发明的一个实施例的用于转置SIMD格式的数据的方法的流程图;
图8是图解了根据本发明的一个实施例的SIMD转置器的组件的框图。
具体实施方式
本发明的实施例提供了用于对适于在SIMD多核处理器架构上进行高效的多维FFT的格式的阵列数据进行转置的技术。所述阵列数据可以从以行为主的顺序存储的多维阵列被转换为SIMD格式。所转换成的SIMD格式的数据可以包括一系列的块,其中每个块与来自多行(r行)的数据交错,使得SIMD矢量处理器可以同时对r行操作。即,每个单个矢量指令一次处理r个行元素(每行一个)。因此,较小尺寸的1D FFT的执行在多核处理器中被优化。较小尺寸的1D(一维)FFT的示例包括对256×256、512×512、1024×1024以及2048×2048的矩阵执行的FFT。
为了增加对较小尺寸的1D FFT的单行并行性,本发明的实施例提供SIMD数据结构,其被配置来使用SIMD矢量指令同时处理多个浮点值。例如,Cell BE处理器可以在单个SIMD矢量指令中同时处理四个单精度浮点值。所述SIMD数据结构可以适用于在诸如Cell BE处理器的SIMD多核处理器上处理FFTs。另外,在一个实施例中,可以为与SIMD数据结构一起使用而优化所述FFT算法。
此外,可以通过使用此数据结构来构建较高维的FFT所必需的操作。例如,在图像处理领域,图像数据通常被存储为二维阵列。而且,所述二维阵列中的数据典型地被以传统的行为主的顺序(例如,由C编程语言使用的情况)或列为主的顺序(例如,由FORTRAN编程语言使用的情况)存储。诸如图像查看器的对图像数据操作的应用程序典型地期望所述图像数据被以行为主(或列为主)的顺序存储——所述二维阵列典型地以对应于像素位置的(x,y)像素格式存储图像数据。
本发明的实施例在允许在SIMD多核处理器架构上高效地处理较小尺寸的FFT(例如从MRI设备中捕获的256×256、512×512或1024×1024大小的图像的图像数据)的数据结构上操作。以传统的行为主的顺序存储的数据可以被变换为适用于多行SIMD 1D FFT算法的SIMD数据格式。为了使用SIMD数据格式,所述FFT算法可以被修改来一次对r(例如,r=4)个行和/或列执行标准的基-2(radix-2)或基-4(radix-4)算法(或其他基(n)FFT算法的组合)。利用单个指令可以处理的行或列的数量与能够装载(fit)在处理器的SIMD寄存器上的浮点数元素的数量对应。对128比特的SIMD寄存器,r=4,即,4个单精度浮点值可以被置入寄存器中。
如上述,这里所公开的技术定义了SIMD转置操作。所述SIMD转置操作可以被用于对已经处于SIMD格式的数据(诸如图像)进行转置。在一个实施例中,在矢量多行FFT代码一次处理在r个行的组中的数据(例如,在4字节浮点数据和128比特SIMD寄存器的情况下,r=4)之后,接着所述数据可以被转换回传统的以行为主的顺序,用于查看和/或由典型的、期望接收以行为主的顺序(或列为主的顺序)的数据的应用程序作进一步处理。
下面将参考本发明的实施例。然而,应该理解,本发明不局限于所描述的特定实施例。相反,以下特征和元素的任意组合,不管是否涉及不同的实施例,都被认为是在实施和实践本发明。此外,虽然本发明的实施例可以获得超过其他可能的解决方案和/或现有技术的优势,但给定的实施例是否获得特定优势并不作为本发明的限定。因此,以下方面、特征、实施例和优势仅仅是说明性的,不被认为是所附权利要求的元素或限制,除非在权利要求中显式陈述。同样地,对“本发明”的提及不应该被解释为这里所公开的任何发明主题的概括,也不应该被认为是所附权利要求的元素或限制,除非在权利要求中显式陈述。
本发明的一个实施例被实施为与计算机系统一起使用的程序产品。所述程序产品的程序定义了本实施例的功能(包括这里说明的方法),且可以被包含在各种计算机可读存储介质中。说明性的计算机可读存储介质包括但不局限于:(i)其上信息被永久地存储的不可写存储介质(例如,诸如可由CD-ROM驱动器读取的CD-ROM光盘等计算机内的只读存储设备);(ii)其上存储可变信息的可写存储介质(例如,软盘驱动器内的软盘或硬盘驱动器)。当载有指引本发明的功能的计算机可读指令时,这样的计算机可读存储介质是本发明的实施例。其他介质包括将信息传递到计算机的通信介质,例如通过计算机或电话网络,包括无线通信网络。所述后一实施例具体包括向/从因特网和其他网络传送信息。当载有指引本发明的功能的计算机可读指令时,这样的通信介质是本发明的实施例。概括地,计算机可读存储介质和通信介质在这里都被称为计算机可读介质。
一般地,实施本发明的实施例所执行的例程可以是操作系统或特定应用程序、组件、程序、模块、对象或指令序列的一部分。本发明的计算机程序典型地由大量指令组成,所述指令被本地计算机翻译成机器可读格式,进而是可执行指令。而且,程序由所述程序本地的或者在存储器中或存储设备上发现的变量和数据结构组成。另外,下文中说明的各种程序可以基于它们在本发明的特定实施例中所实施的应用来标识。然而,应该理解,后面的任何特定程序术语仅仅是为了方便而使用,因此,本发明不应该被限制于仅仅在由这些术语标识的和/或暗含的任何特定应用中使用。
下面参考Cell BETM计算机,其包括具有处理器(PPU)以及它的L1和L2缓存的功率处理器元件(power processor element,PPE)。每个Cell BE计算机还包括多个协作处理器元件(SPE),每个SPE都提供协作处理器单元(SPU)和本地存储、以及高带宽的内部元件互连总线(EIB)。虽然这里关于Cell BE计算机架构进行说明,但本发明的实施例可以被适配为与其他处理器架构一起使用。
图1是图解了根据本发明的一个实施例的在SIMD多核处理器架构上对阵列数据进行转置的系统100的框图。所述系统100包括计算机110。如图所示,所述计算机110是Cell BE计算机。此外,所述计算机110可以通过网络连接到其他计算机。一般地,所述网络可以是电信网络和/或广域网络(WAN)。在特定的实施例中,所述网络是因特网。
如图所示,所述Cell BE计算机110包括Cell PPU 120、8个Cell SPU 130、132、元件互联总线140、存储器150以及存储设备。通常,所述计算机110包括从存储器150中获取指令和数据的一个或多个处理器120、130、132、以及任意存储设备(例如,硬盘驱动器、闪存或诸如CD或DVD-ROM的计算机可读存储介质)。每个处理器120、130和132都是可编程逻辑器件,其执行指令、逻辑和算术处理。另外,所述计算机110可以包括诸如硬盘驱动器、闪存设备、光学介质等的存储器。所述存储器150包括配置来管理计算机110的操作的操作系统。操作系统的示例包括UNIX、微软
Figure BSA00000340305100061
操作系统的版本以及
Figure BSA00000340305100062
操作系统的发布版。(注意:Linux是Linux Torvald在美国和其他国家的商标)。
所述计算机110还可以包括其他外围设备——诸如显示器、键盘鼠标、网络接口设备等等。如图所示,计算机110的存储器150包括SIMD转置器170和矩阵154。所述矩阵154包括代表矩阵152的再划分部分的多个矩阵部分154、156、158、160。具体地,每个部分代表要由SIMD转置器170转置的元素集合。图2到图8以及相关的说明详细描述了在计算机110上运行的SIMD转置器170的结构和操作。根据一个实施例,一个或多个Cell SPU 130、132的本地存储包括SIMD转置器170和矩阵部分154、156、158、160。
图2图解了根据本发明的一个实施例的用于对4×4矩阵执行2D FFT的数据流200。如图所示,所述数据流200包括以行为主的格式的矩阵210。所述矩阵210包括值v1至值v16。此外,所述矩阵210(以及图2所有其他矩阵)可以被顺序地存储在物理存储器中。例如,矩阵210的每个独立的单元(包含值v1至值v16)可以对应于存储器150的顺序存储地址。可以通过步骤211、213、215和217,对矩阵210执行2D FFT,所述步骤表示对传统数据格式(诸如以行为主的格式)的矩阵的操作。矩阵218表示矩阵210的2D FFT的结果。
与矩阵210相比,矩阵220被以SIMD格式显示,其中,所述矩阵值被在存储器中排序为使得多个行可以被并行处理。例如,可以通过步骤221、223、225和227对SIMD格式的矩阵220执行2D FFT,所述步骤表示对SIMD格式的矩阵的操作。此外,可以执行从SIMD格式到以行为主的格式的逆变换(例如,通过步骤229),以生成表示矩阵210的2D FFT的结果的矩阵218。
对以行为主的格式的矩阵210的2D FFT可以包括行方式(row-wise)的1DFFT(通过步骤211),以及接着的列方式(column-wise)的FFT(通过步骤213、215和217)。在步骤211,可以对矩阵210的行执行1D FFT,以产生矩阵212。例如,对矩阵210的第一行(即,v1,v2,v3,v4)的1D FFT可以产生v1′,v2′,v3′,v4′。在步骤213,所述矩阵212可以被转置以产生矩阵214。即,所述矩阵212可以关于矩阵212的主对角线(即,v1′,v6′,v11′,v16′)反转(reflect)。例如,v2′和v5′交换位置。
在步骤215,可以对矩阵214的行执行行方式的1D FFT。实际上,由于在步骤213执行的转置操作,步骤215的行方式的1D FFT对矩阵212的列操作。例如,对矩阵214的第一行(即,v1′,v5′,v9′,v13′)的1D FFT可以产生v1″,v5″,v9″,v13″。在步骤217,对矩阵216执行第二次转置操作,以产生矩阵218(从而,矩阵218的行对应于矩阵210的行)。即,矩阵216可以关于矩阵216的主对角线(即,v1″,v6″,v11″,v16″)反转。例如,v5″和v2″交换位置。矩阵218(即,v1″至v16″)表示以行为主的格式的矩阵210的2D FFT(即,频率域表示)。
可选地,以行为主的格式的矩阵210可以被转换(通过步骤219)为SIMD格式的矩阵220,以在矩阵210的2D FFT计算期间利用行并行性。行并行性可以被利用是因为SIMD格式的数据在存储器中以精确的方式被排列。即,SIMD格式的矩阵被配置来使用SIMD矢量指令,以同时处理顺序地存储在存储器中的多个浮点值。例如,Cell BE处理器可以在单个SIMD矢量指令中同时处理四个单精度浮点值。SIMD格式的矩阵可以适用于在这种SIMD多核处理器上处理FFT。在图2所示的示例中,所述矩阵220允许两行被同时处理。即,单个SIMD矢量指令(单个指令)可以对两个单精度浮点值(多数据)操作。
在步骤229,以行为主的格式的矩阵210可以被转换为SIMD格式的矩阵220。所述SIMD格式被说明如下。可以以任意传统的顺序存储二维阵列的元素,例如行为主的顺序(即,顺序地存储行)或列为主的顺序(即,顺序地存储列)。为了说明,假定所述二维数据是具有以下值的4×4矩阵:
表1:二维数据示例
1  2  3  4
5  6  7  8
9  10 11 12
13 14 15 16
这样的4×4矩阵可以被表示为二维阵列。可以使用如下所示的源代码语法来声明所述二维阵列:
表2:阵列声明示例-C源代码
int data[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
因为C编程语言使用行为主的顺序,所以基于上述声明,所述元素以顺序的存储地址(标记为1至16)被存储在存储器150中,如下:
表3:行为主的顺序示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
可选地,所述4×4矩阵可以被表示为使用列为主的顺序的二维阵列。使用列为主的顺序的编程语言的一个示例是FORTRAN。在这种情况下,所述元素以顺序的存储地址被存储在存储器150中,如下:
表4:列为主的顺序的实例
1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16
在一个实施例中,SIMD格式程序(formatter)将数据转换为一系列的块,其中每个块表示r个行的数据。然后,可以使用SIMD操作来同时处理r个行的数据。块的数量可以由b表示。如果m表示二维数据的行的数量,则块的数量b可以通过公式b=m/r计算。例如,如果每个块表示两行数据(即,r=2),则4×4矩阵(即,m=4)包括(4/2=2)两个块。块1包括第一个两行(即,包含值12 3 4和5 6 7 8的行),而块2包括最后两行(即,包含值9 10 11 12和13 14 1516的行)。所述SIMD格式程序将块一个接一个顺序地放入存储器中。然而,在每个块内,所述SIMD格式程序使每一行的元素交错,从而每一行的第一个元素在每一行的第二个元素之前(关于顺序的存储地址而言)。
例如,矩阵220的块1包含矩阵210第一和第二行的值。然而,所述SIMD格式程序使所述元素交错,使得行的所有第一个元素(即,值1和5)位于行的任何第二个元素(即,值2和6)之前。类似地,行的所有第二个元素(即,值2和6)位于行的任何第三个元素(即值3和7)之前(关于顺序的存储地址而言),依此类推。说明性地,来自矩阵210的二维数据被显示在矩阵220中,并被转换为SIMD格式。SIMD格式的数据元素以顺序的存储地址被存储在存储器150中,如下:
表5:SIMD格式示例
1 5 2 6 3 7 4 8 9 13 10 14 11 15 12 16
SIMD格式的二维数据可以被表示为两个块的序列,每个块表示两行(r=2)数据。在每个块内,来自所述两行数据的的数据被交错,使得所述两行的所有第一个元素位于所述两行的任何第二个元素之前,对所有元素依此类推。更一般地,在SIMD格式中,块中的行的所有第i个元素都位于块中的行的任何第(i+1)个元素之前。每个元素都可以是诸如整型、双精度型或浮点型等的任意数据类型。此外,每个元素还可以是复数,例如,由在存储器中顺序存储的两个16比特的浮点数表示的复数。复数也可以被表示为两个阵列:表示复数的实部的第一阵列、以及表示复数的虚部的第二阵列。
在SIMD格式中,所述二维数据适用于一次同时处理r个行。具体地,每个SIMD指令可以处理来自所述r个行中的每一行的一个元素,即单个SIMD指令处理总共r个元素。因此,所述SIMD格式适用于多行SIMD 1D FFT算法,因为SIMD格式允许算法(已被修改来与SIMD格式一起工作)在计算期间利用行并行性。
在步骤219,SIMD格式程序将以行为主的格式的矩阵210转换为SIMD格式的矩阵220。在此特定示例中,矩阵220是双路(two-way)SIMD格式(r=2,即,每个块表示两行数据)。例如,矩阵220的第一行变为v1,v5,v2,v6(替代矩阵210中的v1,v2,v3,v4)。
SIMD格式的矩阵220上的2D FFT可以包括行方式的1D FFT(通过步骤221)、以及接着的列方式的FFT(通过步骤223、225和227)。在步骤221,可对矩阵220的元素(对应于矩阵220的行)执行1D FFT以产生矩阵222。例如,对矩阵220中的与矩阵210的第一行(即,v1,v2,v3,v4)相对应的元素的1D FFT可以产生v1′,v2′,v3′,v4′。在步骤221执行的1D FFT可以利用SIMD格式的矩阵220的行并行性。例如,可以利用单个SIMD矢量指令同时处理行(v1,v2,v3,v4)和(v5,v6,v7,v8)。所执行的1D FFT可以包括被修改来与SIMD格式的矩阵220一起使用SIMD矢量指令的任意标量1D FFT算法。
在步骤223,所述SIMD转置器170生成矩阵224。具体地,SIMD转置器170重新排列矩阵222,使得对矩阵222中的与矩阵210的行(如,v1,v2,v3,v4)相对应的位置(如,v1′,v2′,v3′,v4′)的操作对矩阵210的列(如,v1,v5,v9,v13)进行操作。例如,SIMD转置器170将v1′,v2′,v3′,v4′的位置分别与v1′,v5′,v9′和v13′的位置交换。在一个实施例中,转置说明了表示元素在已转置的SIMD格式中的矩阵224中的新位置的正确索引。即,所述映射将SIMD格式的矩阵的每个元素与SIMD-转置的矩阵的元素关联。表6显示了用于双路SIMD格式的4×4矩阵的说明性映射:
表6:元素映射示例(双路SIMD,4×4矩阵)
输入索引(矩阵222)     输出索引(矩阵224)
行1,列1(v1′)        行1,列1
行1,列2(v5′)        行1,列3
行1,列3(v2′)        行1,列2
行1,列4(v6′)        行1,列4
行2,列1(v3′)        行3,列1
行2,列2(v7′)        行3,列3
行2,列3(v4′)        行3,列2
行2,列4(v8′)        行3,列4
行3,列1(v9′)        行2,列1
行3,列2(v13′)       行2,列3
行3,列3(v10′)       行2,列2
行3,列4(v14′)       行2,列4
行4,列1(v11′)       行4,列1
行4,列2(v15′)       行4,列3
行4,列3(v12′)       行4,列2
行4,列4(v16′)       行4,列4
在此特定实例中,所述SIMD转置器170利用表5中所定义的映射,将矩阵222转换为矩阵224。即,所述映射将SIMD格式的矩阵222转换为SIMD-转置的矩阵224,从而对矩阵222中的与矩阵210的行(例如,v1,v2,v3,v4)相对应的位置(如,v1′,v2′,v3′,v4′)的操作对矩阵210的列(如,v1,v5,v9,v13)进行操作。所述SIMD-转置的矩阵可以一般地等价于对以行为主的格式的矩阵210的转置执行SIMD转换。
在表6的示例中,所述SIMD转置器170将矩阵222的中间两行相交换,并将矩阵222的每一行的中间两个元素相交换。
虽然这里参考双路SIMD格式的4×4矩阵的SIMD转置操作说明实施例,但本领域的技术人员应该意识到,本发明的实施例可被适配来支持其他矩阵尺寸(例如,256×256矩阵,并且包括具有除2的幂之外的尺寸的矩阵),其他矩阵类型(诸如更高维矩阵,利如,3D和4D矩阵),以及其他SIMD格式类型(诸如四路SIMD)。
在步骤225,可以对矩阵224的元素执行行方式的1D FFT(与步骤221的操作相同)。实际上,由于步骤223执行的转置操作,步骤225的行方式的1DFFT对矩阵224中的对应于矩阵210的列的元素进行操作。例如,对矩阵224中的与矩阵210的第一列相对应的元素(v1′,v5′,v9′,v13′)的1D FFT可以产生(v1″,v5″,v9″,v13″)。在步骤227,可以对矩阵226执行第二个SIMD-转置操作,以产生矩阵228(从而,矩阵228的行对应于矩阵220的行)。例如,所述SIMD转置器170可以逆向执行表6中的映射,以产生矩阵228。在步骤229,所述矩阵228可以从SIMD格式转换回到传统的数据格式(诸如行为主的格式)以产生矩阵228。
图3图解了根据本发明的一个实施例的对四路SIMD格式的8×8矩阵执行SIMD转置的数据流300。在数据流300中,符号“v1”到“v64”(以及v1′到v64′)被简化为“1”到“64”。即,“1”到“64”不表示实际数值,而是表示矩阵310的矩阵元素。如图所示,所述数据流300包括以行为主的格式的矩阵310。所述矩阵310(以及图3的所有其他矩阵)可以被顺序地存储在物理存储器中。例如,矩阵310的每个单独的单元(包含符号1到64)可以对应于存储器150的顺序存储地址。在步骤315(对应于图2中的步骤219和221),所述矩阵310被转换为四路SIMD格式(并且对矩阵310的行执行1D FFT),以产生矩阵320。在步骤325(对应于图2中的步骤223),SIMD转置器170对矩阵320执行SIMD转置,以生成矩阵330。可以利用生成对4×4矩阵的映射(如,表6所示)的一般技术来生成对所述8×8矩阵(或对任意尺寸的矩阵)的映射。
即,如所述,所述映射可以用于为转置的矩阵保留SIMD格式——允许矩阵的多个行被并行处理。在一个实施例中,对给定矩阵尺寸(如,4×4,8×8,256×256等)的映射可以被硬编码,并被用于标识SIMD转置器应该如何交换SIMD格式化的矩阵的元素,以创建转置的SIMD格式化的矩阵。
因此,一般地,所述SIMD转置器170重新排列矩阵320,使得对矩阵320中对应于矩阵310的行的位置(例如,1到8)的操作对矩阵310的列(例如,1,9,17,25,33,41,49和57)进行操作。例如,所述SIMD转置器170使v2′,v10′,v18′,v26′的位置分别与v9′,v10′,v11′,v12′的位置交换。所述SIMD-转置的矩阵可以等价于对以行为主的格式的矩阵310执行转置。
在步骤335(对应于图2中的步骤225),可以对矩阵330的元素(对应于矩阵310的列)执行1D FFT。步骤335所执行的1D FFT可以利用SIMD格式的矩阵320的元素(对应于矩阵310的列)的列并行性。例如,可以利用单个SIMD矢量指令同同时处理四个列(1,9,17,25,33,41,49,57),(2,10,18,26,34,42,50,58),(3,11,19,27,35,43,51,59)和(4,12,20,28,36,44,52,60)。
图4图解了根据本发明的一个实施例的用于转置矩阵的数据流400。如图所示,所述数据流400包括使用0到15的矩阵索引的以行为主的格式的矩阵410。在步骤450,所述SIMD转置器170将矩阵410分解成多个部分412、414、416和418。所述SIMD转置器170可以基于矩阵的尺寸和计算机110的处理元件的数量,将矩阵划分为多个部分。说明性地,所述SIMD转置器170将矩阵410划分为四个部分:(0,1,4,5)、(2,3,6,7)、(8,9,12,13)以及(10,11,14,15)。所述计算机110的处理元件可以同时转置所述四个部分。
在步骤452,Cell SPU 1321-4上的SIMD转置器170转置所述部分412、414、416和418。例如,Cell SPU 1321转置部分412,以产生已转置的部分422。在步骤454,在多个处理元件的每一个上执行的SIMD转置器170将已转置的部分422、424、426和428从CELL SPU 132的本地存储器移动到存储器150。例如,对部分414操作的CELL SPU 1322将已转置的部分424存储在矩阵430中。在步骤454之后,在Cell PPU 120上执行的SIMD转置器170在需要时可以进一步重新组织矩阵430,以完成所述转置操作。例如,所述SIMD转置器170可以交换来自不同部分422、424、426和428的元素,以完成所述转置操作。由此产生的矩阵可以一般地等价于对矩阵410的转置的SIMD变换。
图5图解了根据本发明的一个实施例的同时转置矩阵的子部分的数据流400。与图4中由每个处理元件的本地存储器容纳每个完整的部分不同,图5图解了每个部分超过任何处理元件的本地存储器的大小的情形。如图所示,所述数据流500包括256×256的矩阵510。在步骤551,根据一个实施例,所述SIMD转置器170将矩阵510划分为多个部分。例如,所述SIMD转置器170可以将矩阵510划分为四个部分520、530、540和550。所述SIMD转置器170还可以将每个部分520、530、540和550分配为由处理元件132转置。例如,所述SIMD转置器170可以将部分520分配给第一Cell SPU 132,将部分530分配给第二Cell SPU 132,将部分540分配给第三Cell SPU 132,以及将部分550分配给第四Cell SPU 132。
然而,处理元件132的本地存储器不可以容纳整个部分。例如,所述部分520可能超过Cell SPU 132的本地存储器的大小。在一个实施例中,所述SIMD转置器170可以基于处理元件(诸如Cell SPU)的本地存储器的大小,将一个部分划分为多个子部分。例如,所述SIMD转置器170可以将部分520划分为四个子部分522、524、526和528。每个子部分522、524、526和528可以具有不超过处理元件132的本地存储器的大小的大小。
在步骤552,每个处理元件分别转置各自已分配的部分520、530、540和550的第一子部分522、532、542和552,以产生第一转置子部分562、572、582和592。在步骤552,每个处理元件同时转置各自已分配的部分(如,元素520)的第二子部分(如,元素524),以产生第二转置子部分(如,元素564),依此类推,直到所有的子部分都被转置。
图6是描绘根据本发明的一个实施例的在SIMD多核处理器架构上执行高效的FFT的方法600的流程图。如图所示,所述方法600开始于步骤610,即,SIMD转置器170接收到传统数据格式的矩阵。例如,所述SIMD转置器170可以接收到图2所示的矩阵210。在步骤620,所述SIMD转置器170将所述矩阵转换为SIMD格式。图2显示了生成矩阵220的示例(例如,通过步骤219)。重要地,SIMD矢量处理器可以同时对SIMD格式的矩阵的多个行(在此特定示例中是两行)操作。在步骤630,所述SIMD转置器对所接收到的矩阵的每一行执行1D FFT。图2显示了生成矩阵222的示例(例如,通过步骤221)。
在步骤640,所述SIMD转置器170可以对所述矩阵进行SIMD转置。图2显示了产生矩阵224的示例(如,通过步骤223)。在步骤650,所述SIMD转置器170对所接收到的矩阵的每一列执行1D FFT。图2显示了生成矩阵226的示例(如,通过步骤225)。在步骤660,所述SIMD转置器170可以对矩阵执行另一个SIMD转置。例如,如图2所示,所述矩阵226被SIMD-转置成为矩阵228(如,通过步骤227)。在步骤670,所述SIMD转置器可以将矩阵转换回传统的数据格式。例如,所述SIMD转置器可以执行图2的步骤229,以产生矩阵218。在步骤670之后,所述方法600终止。
虽然这里参考执行SIMD转换、1D FFT和SIMD转置的SIMD转置器170来说明实施例,但这里所说明的实施例意在为说明性,而不限制本发明,可以广泛地构思出其他实施例。例如,所述转换、转置和FFT功能可以通过以各种方式组织的不同软件模块来执行。
图7是描绘根据本发明的一个实施例的用于转置SIMD格式的数据的方法700的流程图。所述方法700可以由图1的SIMD转置器170执行。所述方法700的步骤对应于图6的步骤640和660,并被连同表6和表7的元素映射示例一起进行了说明。
如图所示,所述方法700开始于步骤710,其中,SIMD转置器170接收到SIMD格式的矩阵。例如,所述SIMD转置器可以接收图2所示的矩阵222。在步骤720,所述SIMD转置器170基于所述矩阵的大小以及计算机110上的处理元件的数量,将所述矩阵划分为多个部分。图4显示了图4的矩阵410被划分为四个部分412、414、416和418的示例。
在步骤730,所述SIMD转置器170将每个部分分配给处理元件。例如,所述SIMD转置器170可以将图4的部分412分配给第一Cell SPU 132。所述SIMD转置器170还可以确定一个部分是否超过所分配的处理元件的本地存储器的大小。如果是,则所述SIMD转置器170可以将每个部分划分为多个子部分,每个子部分不超过所分配的处理元件的本地存储器的大小。例如,所述SIMD转置器170可以将图5的部分520划分为子部分522、524、526和528。
在步骤740,在每个已分配的处理元件上执行的SIMD转置器170可以分别转置矩阵的相应部分。例如,图4的第一Cell SPU 132可以转置部分412,以产生已转置的部分422。在步骤750,每个已分配的处理元件可以将已转置的部分从相应本地存储器分散到主存储器150。例如,图4的第三Cell SPU 132可以将已转置的部分426分散到主存储器150中的已转置的矩阵430的部分位置424。在步骤760,所述SIMD转置器170对已转置的矩阵430执行必要的重新组织,以完成所述转置操作。例如,所述SIMD转置器170可以在部分之间交换元素,以完成所述转置操作。在步骤760,所述方法700终止。
图8是图解根据本发明的一个实施例的、图1的SIMD转置器170的部件的框图800。如图所示,所述SIMD转置器170包括矩阵管理器810、部分生成器820、部分管理器830、转置管理器840和重组织器850。如图所示,所述矩阵管理器810可以被配置来接收SIMD格式的矩阵152。例如,所述矩阵管理器810可以接收图2的矩阵222。此外,所述部分生成器820可以基于所接收到的矩阵152产生多个部分180。例如,所述部分生成器820可以产生图4的部分412、414、416和418(其可以对应于图1的部分154、156、158和160)。所述部分生成器820也可以为每个部分生成多个子部分。例如,所述部分生成器820可以为部分520生成图5的子部分522、524、526和528。
所述部分管理器830可以将每个部分分配给处理元件。例如,所述部分管理器830可以将图4的部分412、414、416和418分配给处理元件132。此外,所述转置管理器840定义从SIMD矩阵到SIMD-转置的矩阵的映射。例如,所述转置管理器840可以定义表6的映射(对4×4矩阵)。
所述转置管理器840转置矩阵152的每个部分。例如,在每个处理元件132上执行的转置管理器840可以分别转置图4的各个已分配的部分412、414、416和418。所述转置管理器840还可以将所转置的部分从处理元件的本地存储器分散到主存储器150。例如,在图4的第三处理元件132上执行的转置管理器840可以将已转置的部分426分散到主存储器150中的已转置的矩阵430的部分位置424。此外,根据一个实施例,如果必须完成矩阵152的转置,则所述重组织器850重新排列存储器150中的元素。例如,所述重组织器850可以在部分180之间重新排列元素。
当然,这里说明的实施例意在说明性,而不是限定本发明,并且可以广泛地构思出其他实施例。本领域的技术人员应该意识到,例如,本发明的实施例可以被适配来支持其他尺寸(如,512×512矩阵)的矩阵、其他数量的处理元件(例如,32个处理元件)以及每块其他数量的行数(例如,8路SIMD、16路SIMD等等)。
有利地,本发明的实施例在SIMD多核处理器架构上对阵列数据进行转置。在一个实施例中,SIMD转置器可以接收SIMD格式的矩阵。所述矩阵可以包括对传统数据格式的矩阵M的SIMD转换。所述SIMD转置器可以定义从矩阵的每个元素到M的转置的SIMD转换的元素的映射。此外,所述SIMD转置器可以基于M和所定义的映射,生成SIMD-转置的矩阵T。行方式的算法可以在不修改的情况下应用到T,以操作M的列。
虽然上文被指引为本发明的实施例,但可以在不偏离本发明的基本范围的情况下设计出本发明的其他和进一步的实施例,权利要求书确定本发明的范围。

Claims (14)

1.一种用于在SIMD多核处理器架构上对矩阵进行转置的计算机实现的方法,其包括配置所述SIMD多核处理器架构以执行包括以下步骤的操作:
将第一格式的矩阵M转换为SIMD格式的矩阵S,其中,所述SIMD格式允许所述SIMD多核处理器架构上的多个核并行地各自对所述矩阵M中的数据行进行1D FFT操作;
检索所述矩阵S的每个元素到SIMD格式的矩阵M的转置中的元素的映射,其中,所述映射对于所述矩阵M的转置而保持S的SIMD格式;以及
基于所检索的映射,生成SIMD-转置的矩阵T,其中所转置的SIMD矩阵T允许在所述SIMD多核处理器架构上的多个核并行地各自对所述矩阵M中转置后的数据行进行1D FFT操作。
2.如权利要求1所述的计算机实现的方法,其中,所述SIMD格式的矩阵被配置用于矩阵M的r个行的同时处理,其中,转换后的数据包括一系列的块,其中每个块包括矩阵M的r个连续行,所述r个连续行被交错,使得在顺序的存储地址上,所述r个连续行的第一元素位于所述r个连续行的任意第二元素之前,以产生r个交错的行。
3.如权利要求1所述的计算机实现的方法,其中所述第一格式是行为主的格式和列为主的格式之一。
4.如权利要求1所述的计算机实现的方法,其中所述操作还包括:
基于所述矩阵S生成s个部分;
将所述s个部分分配给所述SIMD多核处理器架构的s个处理元件,并且,其中所述生成SIMD-转置的矩阵T的步骤包括:
在相应处理元件上对每个部分进行转置。
5.如权利要求4所述的计算机实现的方法,其中,在每个相应处理元件上对每个部分进行转置的步骤分别发生在每个相应处理元件本地的存储器上,并且,其中,生成所述转置的矩阵T的步骤还包括:通过每个所述处理元件,将每个已转置的部分分散到不在任何所述处理元件本地的存储器。
6.如权利要求4所述的计算机实现的方法,其中,在每个相应处理元件上对每个部分进行转置的步骤包括:
将所述相应部分分解成d个子部分,每个子部分都不超过所述相应处理元件本地的存储器的大小;
在每个相应处理元件上,对所述相应部分的每个子部分进行转置。
7.如权利要求1所述的计算机实现的方法,其中,所述矩阵M将从MRI设备捕获的图像数据的一部分存储在256×256、512×512或1024×1024大小的矩阵中。
8.一种系统,包括:
SIMD多核处理器;以及
存储器,其包含被配置用于通过执行包括以下步骤的操作而在SIMD多核处理器架构上对矩阵进行转置的应用程序:
将第一格式的矩阵M转换为SIMD格式的矩阵S,其中,所述
SIMD格式允许所述SIMD多核处理器架构上的多个核并行地各自对
所述矩阵M中的数据行进行1D FFT操作;
检索所述矩阵S的每个元素到SIMD格式的矩阵M的转置中的
元素的映射,其中,所述映射对于所述矩阵M的转置而保持S的SIMD格式;以及
基于所检索的映射,生成SIMD-转置的矩阵T,其中所转置的SIMD矩阵T允许在所述SIMD多核处理器架构上的多个核并行地各自对所述矩阵M中转置后的数据行进行1D FFT操作。
9.如权利要求8所述的系统,其中,所述SIMD格式的矩阵被配置用于矩阵M的r个行的同时处理,其中,转换后的数据包括一系列的块,其中每个块包括矩阵M的r个连续行,所述r个连续行被交错,使得在顺序的存储地址上,所述r个连续行的第一元素位于所述r个连续行的任意第二元素之前,以产生r个交错的行。
10.如权利要求8所述的系统,其中,所述第一格式是行为主的格式和列为主的格式之一。
11.如权利要求8所述的系统,其中,所述操作还包括:
基于所述矩阵S生成s个部分;
将所述s个部分分配给所述SIMD多核处理器架构的s个处理元件,并且,其中所述生成SIMD-转置的矩阵T的步骤包括:
在相应处理元件上对每个部分进行转置。
12.如权利要求11所述的系统,其中,在每个相应处理元件上对每个部分进行转置的步骤分别发生在每个相应处理元件本地的存储器上,并且,其中,生成所述转置的矩阵T的步骤还包括:通过每个所述处理元件,将每个已转置的部分分散到不在任何所述处理元件本地的存储器。
13.如权利要求11所述的系统,其中,在每个相应处理元件上对每个部分进行转置的步骤包括:
将所述相应部分分解成d个子部分,每个子部分都不超过所述相应处理元件本地的存储器的大小;
在每个相应处理元件上,对所述相应部分的每个子部分进行转置。
14.如权利要求8所述的系统,其中,所述矩阵M将从MRI设备捕获的图像数据的一部分存储在256×256、512×512或1024×1024大小的矩阵中。
CN2010105375212A 2009-11-04 2010-11-04 在单指令多数据多核处理器架构上转置矩阵的方法和系统 Expired - Fee Related CN102053948B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/612,037 2009-11-04
US12/612,037 US8539201B2 (en) 2009-11-04 2009-11-04 Transposing array data on SIMD multi-core processor architectures

Publications (2)

Publication Number Publication Date
CN102053948A true CN102053948A (zh) 2011-05-11
CN102053948B CN102053948B (zh) 2013-09-11

Family

ID=43926625

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010105375212A Expired - Fee Related CN102053948B (zh) 2009-11-04 2010-11-04 在单指令多数据多核处理器架构上转置矩阵的方法和系统

Country Status (4)

Country Link
US (1) US8539201B2 (zh)
JP (1) JP5689282B2 (zh)
KR (1) KR20110079495A (zh)
CN (1) CN102053948B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521209A (zh) * 2011-12-12 2012-06-27 浪潮电子信息产业股份有限公司 一种并行多处理器计算机的设计方法
CN102929724A (zh) * 2012-11-06 2013-02-13 无锡江南计算技术研究所 基于异构众核处理器的多级访存方法、离散访存方法
CN104011672A (zh) * 2011-12-30 2014-08-27 英特尔公司 转置指令
TWI570573B (zh) * 2014-07-08 2017-02-11 財團法人工業技術研究院 矩陣轉置電路
CN106485669A (zh) * 2015-08-27 2017-03-08 三星电子株式会社 执行傅立叶变换的装置和方法
CN108681465A (zh) * 2011-12-22 2018-10-19 英特尔公司 用于产生整数序列的处理器、处理器核及系统
CN111444134A (zh) * 2020-03-24 2020-07-24 山东大学 分子动力学模拟软件的并行pme的加速优化方法及系统
CN112433760A (zh) * 2020-11-27 2021-03-02 海光信息技术股份有限公司 数据排序方法和数据排序电路

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2138937A4 (en) * 2007-04-12 2011-01-26 Nec Corp DATA PROCESSING DEVICE OF ARRAY PROCESSORYPSY
US8484276B2 (en) * 2009-03-18 2013-07-09 International Business Machines Corporation Processing array data on SIMD multi-core processor architectures
JP5760532B2 (ja) * 2011-03-14 2015-08-12 株式会社リコー プロセッサ装置及びその演算方法
US9201899B2 (en) * 2011-10-14 2015-12-01 Panasonic Intellectual Property Management Co., Ltd. Transposition operation device, integrated circuit for the same, and transposition method
WO2013081556A1 (en) * 2011-12-01 2013-06-06 National University Of Singapore Polymorphic heterogeneous multi-core architecture
KR101893796B1 (ko) 2012-08-16 2018-10-04 삼성전자주식회사 동적 데이터 구성을 위한 방법 및 장치
US9412063B2 (en) 2013-12-27 2016-08-09 International Business Machines Corporation Transform architecture for multiple neurosynaptic core circuits
US9406015B2 (en) 2013-12-27 2016-08-02 International Business Machines Corporation Transform for a neurosynaptic core circuit
SE539721C2 (en) * 2014-07-09 2017-11-07 Device and method for performing a Fourier transform on a three dimensional data set
US10635909B2 (en) * 2015-12-30 2020-04-28 Texas Instruments Incorporated Vehicle control with efficient iterative triangulation
US10095445B2 (en) * 2016-03-29 2018-10-09 Western Digital Technologies, Inc. Systems and methods for offloading processing from a host to storage processing units using an interconnect network
US10275243B2 (en) 2016-07-02 2019-04-30 Intel Corporation Interruptible and restartable matrix multiplication instructions, processors, methods, and systems
KR102526754B1 (ko) 2016-07-13 2023-04-27 삼성전자주식회사 3차원 영상 처리 방법 및 장치
KR102654862B1 (ko) * 2016-08-31 2024-04-05 삼성전자주식회사 영상 처리 방법 및 장치
WO2018126073A1 (en) * 2016-12-30 2018-07-05 Lau Horace H Deep learning hardware
US11748625B2 (en) 2016-12-30 2023-09-05 Intel Corporation Distributed convolution for neural networks
US10169296B2 (en) 2016-12-30 2019-01-01 Intel Corporation Distributed matrix multiplication for neural networks
EP3602278B1 (en) 2017-03-20 2022-09-28 Intel Corporation Systems, methods, and apparatuses for tile matrix multiplication and accumulation
CN107168683B (zh) * 2017-05-05 2020-06-09 中国科学院软件研究所 申威26010众核cpu上gemm稠密矩阵乘高性能实现方法
US11275588B2 (en) 2017-07-01 2022-03-15 Intel Corporation Context save with variable save state size
KR102494412B1 (ko) * 2017-11-28 2023-02-03 삼성전자 주식회사 Simd 연산을 이용하여 이미지 데이터의 주파수 변환을 수행하는 전자 장치 및 전자 장치의 동작 방법
US11809869B2 (en) 2017-12-29 2023-11-07 Intel Corporation Systems and methods to store a tile register pair to memory
US11669326B2 (en) 2017-12-29 2023-06-06 Intel Corporation Systems, methods, and apparatuses for dot product operations
US11093247B2 (en) 2017-12-29 2021-08-17 Intel Corporation Systems and methods to load a tile register pair
US11816483B2 (en) 2017-12-29 2023-11-14 Intel Corporation Systems, methods, and apparatuses for matrix operations
US11023235B2 (en) 2017-12-29 2021-06-01 Intel Corporation Systems and methods to zero a tile register pair
US11789729B2 (en) 2017-12-29 2023-10-17 Intel Corporation Systems and methods for computing dot products of nibbles in two tile operands
US10664287B2 (en) 2018-03-30 2020-05-26 Intel Corporation Systems and methods for implementing chained tile operations
US11093579B2 (en) 2018-09-05 2021-08-17 Intel Corporation FP16-S7E8 mixed precision for deep learning and other algorithms
US10970076B2 (en) 2018-09-14 2021-04-06 Intel Corporation Systems and methods for performing instructions specifying ternary tile logic operations
US11579883B2 (en) 2018-09-14 2023-02-14 Intel Corporation Systems and methods for performing horizontal tile operations
US10866786B2 (en) 2018-09-27 2020-12-15 Intel Corporation Systems and methods for performing instructions to transpose rectangular tiles
US10719323B2 (en) 2018-09-27 2020-07-21 Intel Corporation Systems and methods for performing matrix compress and decompress instructions
US10990396B2 (en) 2018-09-27 2021-04-27 Intel Corporation Systems for performing instructions to quickly convert and use tiles as 1D vectors
US10896043B2 (en) 2018-09-28 2021-01-19 Intel Corporation Systems for performing instructions for fast element unpacking into 2-dimensional registers
US10929143B2 (en) 2018-09-28 2021-02-23 Intel Corporation Method and apparatus for efficient matrix alignment in a systolic array
US10963256B2 (en) 2018-09-28 2021-03-30 Intel Corporation Systems and methods for performing instructions to transform matrices into row-interleaved format
US10963246B2 (en) 2018-11-09 2021-03-30 Intel Corporation Systems and methods for performing 16-bit floating-point matrix dot product instructions
US10929503B2 (en) 2018-12-21 2021-02-23 Intel Corporation Apparatus and method for a masked multiply instruction to support neural network pruning operations
US11294671B2 (en) 2018-12-26 2022-04-05 Intel Corporation Systems and methods for performing duplicate detection instructions on 2D data
US11886875B2 (en) 2018-12-26 2024-01-30 Intel Corporation Systems and methods for performing nibble-sized operations on matrix elements
US20200210517A1 (en) 2018-12-27 2020-07-02 Intel Corporation Systems and methods to accelerate multiplication of sparse matrices
US10922077B2 (en) 2018-12-29 2021-02-16 Intel Corporation Apparatuses, methods, and systems for stencil configuration and computation instructions
US10942985B2 (en) 2018-12-29 2021-03-09 Intel Corporation Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions
US10853559B2 (en) 2019-03-27 2020-12-01 Charter Communications Operating, Llc Symmetric text replacement
US11016731B2 (en) 2019-03-29 2021-05-25 Intel Corporation Using Fuzzy-Jbit location of floating-point multiply-accumulate results
US11269630B2 (en) 2019-03-29 2022-03-08 Intel Corporation Interleaved pipeline of floating-point adders
US11175891B2 (en) 2019-03-30 2021-11-16 Intel Corporation Systems and methods to perform floating-point addition with selected rounding
US10990397B2 (en) 2019-03-30 2021-04-27 Intel Corporation Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator
US11403097B2 (en) 2019-06-26 2022-08-02 Intel Corporation Systems and methods to skip inconsequential matrix operations
US11334647B2 (en) 2019-06-29 2022-05-17 Intel Corporation Apparatuses, methods, and systems for enhanced matrix multiplier architecture
US11714875B2 (en) 2019-12-28 2023-08-01 Intel Corporation Apparatuses, methods, and systems for instructions of a matrix operations accelerator
US11593454B2 (en) * 2020-06-02 2023-02-28 Intel Corporation Matrix operation optimization mechanism
US11972230B2 (en) 2020-06-27 2024-04-30 Intel Corporation Matrix transpose and multiply
US11941395B2 (en) 2020-09-26 2024-03-26 Intel Corporation Apparatuses, methods, and systems for instructions for 16-bit floating-point matrix dot product instructions
US12001887B2 (en) 2020-12-24 2024-06-04 Intel Corporation Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator
US12001385B2 (en) 2020-12-24 2024-06-04 Intel Corporation Apparatuses, methods, and systems for instructions for loading a tile of a matrix operations accelerator
KR20220162543A (ko) 2021-06-01 2022-12-08 에스케이하이닉스 주식회사 메모리 장치, 반도체 시스템 및 데이터 처리 시스템
KR102527829B1 (ko) * 2021-08-19 2023-04-28 한국기술교육대학교 산학협력단 Cpu와 gpu를 사용하는 행렬 전치기반 2d-fft 연산 장치 및 이를 이용한 데이터 연산 방법
US20240020129A1 (en) * 2022-07-14 2024-01-18 Nxp Usa, Inc. Self-Ordering Fast Fourier Transform For Single Instruction Multiple Data Engines

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1619526A (zh) * 2003-11-18 2005-05-25 国际商业机器公司 用于处理矩阵数据的处理器和方法
US20100023728A1 (en) * 2008-07-25 2010-01-28 International Business Machines Corporation Method and system for in-place multi-dimensional transpose for multi-core processors with software-managed memory hierarchy
US20100241824A1 (en) * 2009-03-18 2010-09-23 International Business Machines Corporation Processing array data on simd multi-core processor architectures

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6243730B1 (en) * 1999-05-04 2001-06-05 Sony Electronics, Inc. Methods and systems for performing short integer chen IDCT algorithm with fused multiply/add
US6625721B1 (en) * 1999-07-26 2003-09-23 Intel Corporation Registers for 2-D matrix processing
US20030084081A1 (en) * 2001-10-27 2003-05-01 Bedros Hanounik Method and apparatus for transposing a two dimensional array
US6963341B1 (en) * 2002-06-03 2005-11-08 Tibet MIMAR Fast and flexible scan conversion and matrix transpose in a SIMD processor
US20070106718A1 (en) * 2005-11-04 2007-05-10 Shum Hoi L Fast fourier transform on a single-instruction-stream, multiple-data-stream processor
US7937567B1 (en) * 2006-11-01 2011-05-03 Nvidia Corporation Methods for scalably exploiting parallelism in a parallel processing system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1619526A (zh) * 2003-11-18 2005-05-25 国际商业机器公司 用于处理矩阵数据的处理器和方法
US20100023728A1 (en) * 2008-07-25 2010-01-28 International Business Machines Corporation Method and system for in-place multi-dimensional transpose for multi-core processors with software-managed memory hierarchy
US20100241824A1 (en) * 2009-03-18 2010-09-23 International Business Machines Corporation Processing array data on simd multi-core processor architectures

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FRANZ FRANCHETTI等: "Discrete Fourier Transform on Multicore", 《IEEE SIGNAL PROCESSING MAGAZINE》 *
李俊山等: "基于LS MPP的图像并行傅立叶分析技术(1)——算法的原理、分析与设计", 《小型微型计算机系统》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521209A (zh) * 2011-12-12 2012-06-27 浪潮电子信息产业股份有限公司 一种并行多处理器计算机的设计方法
CN108681465A (zh) * 2011-12-22 2018-10-19 英特尔公司 用于产生整数序列的处理器、处理器核及系统
CN104011672A (zh) * 2011-12-30 2014-08-27 英特尔公司 转置指令
CN102929724A (zh) * 2012-11-06 2013-02-13 无锡江南计算技术研究所 基于异构众核处理器的多级访存方法、离散访存方法
CN102929724B (zh) * 2012-11-06 2016-04-13 无锡江南计算技术研究所 基于异构众核处理器的多级访存方法、离散访存方法
TWI570573B (zh) * 2014-07-08 2017-02-11 財團法人工業技術研究院 矩陣轉置電路
US9613669B2 (en) 2014-07-08 2017-04-04 Industrial Technology Research Institute Matrix transposing circuit
CN106485669A (zh) * 2015-08-27 2017-03-08 三星电子株式会社 执行傅立叶变换的装置和方法
CN106485669B (zh) * 2015-08-27 2022-01-04 三星电子株式会社 执行傅立叶变换的装置和方法
CN111444134A (zh) * 2020-03-24 2020-07-24 山东大学 分子动力学模拟软件的并行pme的加速优化方法及系统
CN112433760A (zh) * 2020-11-27 2021-03-02 海光信息技术股份有限公司 数据排序方法和数据排序电路
CN112433760B (zh) * 2020-11-27 2022-09-23 海光信息技术股份有限公司 数据排序方法和数据排序电路

Also Published As

Publication number Publication date
JP2011100452A (ja) 2011-05-19
US8539201B2 (en) 2013-09-17
US20110107060A1 (en) 2011-05-05
JP5689282B2 (ja) 2015-03-25
CN102053948B (zh) 2013-09-11
KR20110079495A (ko) 2011-07-07

Similar Documents

Publication Publication Date Title
CN102053948B (zh) 在单指令多数据多核处理器架构上转置矩阵的方法和系统
Buatois et al. Concurrent number cruncher: a GPU implementation of a general sparse linear solver
CN109729734A (zh) 芯片装置及相关产品
US7979672B2 (en) Multi-core processors for 3D array transposition by logically retrieving in-place physically transposed sub-array data
US20050193050A1 (en) Matrix multiplication in a vector processing system
US20040243656A1 (en) Digital signal processor structure for performing length-scalable fast fourier transformation
Baillie et al. Cluster identification algorithms for spin models—Sequential and parallel
Nakano Optimal parallel algorithms for computing the sum, the prefix-sums, and the summed area table on the memory machine models
US20220382829A1 (en) Sparse matrix multiplication in hardware
CN109615061A (zh) 一种卷积运算方法及装置
US20240004702A1 (en) Thread construction method and device
Ploskas et al. A computational comparison of scaling techniques for linear optimization problems on a graphical processing unit
Chen et al. GPU-MEME: Using graphics hardware to accelerate motif finding in DNA sequences
Ivutin et al. Design efficient schemes of applied algorithms parallelization based on semantic Petri-Markov net
Afshani et al. Sorting and permuting without bank conflicts on GPUs
CN111368250B (zh) 基于傅里叶变换/逆变换的数据处理系统、方法及设备
Rastogi et al. Significance of parallel computation over serial computation
US9760372B2 (en) Parallel processing in plural processors with result register each performing associative operation on respective column data
CN112434255A (zh) 向量-矩阵运算和数据处理方法、乘法器和处理器芯片
Pai et al. A new upper bound on the queuenumber of hypercubes
Al Na'mneh et al. An efficient bit reversal permutation algorithm
Kouassi et al. Efficient probabilistic latent semantic indexing using graphics processing unit
KR20100033979A (ko) 병렬 프로세서용 어드레싱 디바이스
WO2013137459A1 (ja) データ供給装置及びデータ処理装置
Du et al. Tunnel: Parallel-inducing sort for large string analytics

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: 20130911

Termination date: 20181104

CF01 Termination of patent right due to non-payment of annual fee