JPWO2020066375A1 - 情報処理装置、情報処理方法、プログラム - Google Patents

情報処理装置、情報処理方法、プログラム Download PDF

Info

Publication number
JPWO2020066375A1
JPWO2020066375A1 JP2020548162A JP2020548162A JPWO2020066375A1 JP WO2020066375 A1 JPWO2020066375 A1 JP WO2020066375A1 JP 2020548162 A JP2020548162 A JP 2020548162A JP 2020548162 A JP2020548162 A JP 2020548162A JP WO2020066375 A1 JPWO2020066375 A1 JP WO2020066375A1
Authority
JP
Japan
Prior art keywords
vector
instruction
information processing
masked
register
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.)
Pending
Application number
JP2020548162A
Other languages
English (en)
Inventor
健人 岩川
健人 岩川
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2020066375A1 publication Critical patent/JPWO2020066375A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers

Abstract

本発明の情報処理装置100は、複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部110と、2つのベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部120と、を備える。

Description

本発明は、複素数ベクトル演算命令を生成する情報処理装置、情報処理方法、プログラムに関する。
複素数データに対する加減乗除の四則演算をベクトル演算で実行する際に、図1に示すように、メモリ上に交互に並ぶ実部データと虚部データとを、それぞれ異なるベクトルレジスタ1,2へロードすることが一般的である。複素数の乗除算においては、図8の式に示すように、虚部の計算の際に2つの複素数の実部と虚部の乗算が必要となり、ベクトルレジスタを分ける必要があるためである。
特開2005−174295号公報
ここで、実部データと虚部データとは、上述したようにメモリ上では交互に並ぶように配置されるため、データをベクトルロードでベクトルレジスタに格納する際は、連続アクセスではなくストライドアクセスする必要がある。ストライドアクセスとは、データを連続で読込むのではなく、図2に示すように一定間隔おきにデータを読込むことである。しかしながら、ストライドアクセスは、連続アクセスに比べて低速であるという問題ある。そして、演算結果をベクトルレジスタからメモリに読み出すベクトルストアについても同様にストライドアクセスとなり、低速となるという問題が生じる。
なお、特許文献1に記載の技術では、実部データと虚部データとを異なるベクトルレジスタにロードすることなく、複素数データの乗算を行う場合が例示されている。ところが、かかる文献に記載の技術では、予め複素数データの乗算に特化した命令を備えていることを前提としており、複素数データの他のベクトル演算、特に、複素数データに対する除算をベクトル演算で実行することができない、という問題が生じる。
このため、本発明の目的は、複素数データのベクトル演算が低速となることと、ベクトル演算自体を実行できないこと、を解決することができる情報処理装置、情報処理方法、プログラムを提供することにある。
本発明の一形態である情報処理装置は、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
を備えた、
という構成をとる。
また、本発明の一形態である情報処理方法は、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成し、
2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する、
という構成をとる。
また、本発明の一形態であるプログラムは、
情報処理装置に、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
を実現させる、
という構成をとる。
また、本発明の一形態であるベクトル処理装置は、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
という処理を実行する構成をとる。
また、本発明の一形態である情報処理方法は、
ベクトル処理装置による情報処理方法であって、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
という構成をとる。
本発明は、以上のように構成されることにより、複素数データのベクトル演算においてあらゆる演算を高速に行うことができる。
本発明の背景技術を説明するための図である。 本発明の背景技術を説明するための図である。 本発明の概要を説明するための図である。 本発明の概要を説明するための図である。 本発明の概要を説明するための図である。 本発明の実施形態1におけるコンパイラの構成を示すブロック図である。 本発明の実施形態1において生成するベクトル演算命令を説明するための図である。 本発明の実施形態1においてベクトル演算命令を生成する対象となる複素数の演算式を示す図である。 図8に開示した複素数の加算のソースプログラムを示す図である。 図8に開示した複素数の減算のソースプログラムを示す図である。 図8に開示した複素数の乗算のソースプログラムを示す図である。 図8に開示した複素数の除算のソースプログラムを示す図である。 本発明の実施形態1におけるメモリの構成を示す図である。 図9に開示した複素数の加算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。 図10に開示した複素数の減算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。 図11に開示した複素数の乗算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。 図12に開示した複素数の除算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。 図16に開示した複素数の乗算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図16に開示した複素数の乗算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図17に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図17に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 本発明の実施形態2において生成するベクトル演算命令を説明するための図である。 本発明の実施形態2において、複素数の乗算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。 本発明の実施形態2において、複素数の除算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。 図23に開示した複素数の乗算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図23に開示した複素数の乗算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図24に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図24に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図24に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図24に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 本発明の実施形態3におけるプロセッサの構成を示すブロック図である。
<実施形態1>
本発明の第1の実施形態を、図3乃至図21を参照して説明する。図3乃至図5は、本発明の概要を説明するための図である。図6は、本発明の構成を説明するための図であり、図7乃至図21は、本発明の動作を説明するための図である。
[概要]
まず、本発明の概要について説明する。本発明は、ベクトル処理装置に対する複素数データのベクトル演算命令を生成する情報処理装置であり、特に、複素数データの四則演算を行う命令を生成するコンパイラとしての機能を有する。
具体的に、本発明では、複素数データをメモリからベクトルレジスタへベクトルロードする際に、ストライドアクセスではなく連続アクセスにすることで、メモリアクセスを高速化する。ベクトルレジスタからメモリへベクトルストアする際も同様に、連続アクセスにすることで高速化する。ストライドアクセスではなく連続アクセスとするため、複素数データの実部と虚部でベクトルレジスタが分けられることはなく、図3に示すように、実部と虚部が隣接した状態でベクトルレジスタに要素が格納される。
また、通常のベクトル四則演算命令では、図4に示すように、同じ要素番号に対しての演算となる。そのため、複素数の乗除算において、実部と虚部が隣接した状態のベクトルレジスタでは、実部と虚部の要素番号が異なるため実部と虚部の演算ができない。そこで、本発明では、異なる要素番号との演算において図5に示すようなマスク付きベクトルクロス演算命令を使用することで、実部と虚部の演算を可能にする。また、複素数の乗除算において実部と虚部の各乗算結果を加減算する際にも、マスク付きベクトルクロス演算を使用する。複素数データへの連続アクセスとマスク付きベクトル演算を組み合わせることで、複素数データの四則演算を可能としたままメモリアクセスを高速化できる。
[構成]
次に、本発明の一実施形態におけるコンパイラ1の構成について説明する。コンパイラ1は、演算装置と記憶装置とを備えた一般的な情報処理装置で構成されており、演算装置がコンパイラ用プログラムを実行することで構築される。そして、コンパイラ1は、図6に示すように、ループ解析部10とベクトル化実行部20とを備えている。
上記ループ解析部10は、演算対象であるプログラムを解析して、プログラム中のループがベクトル化可能であり複素数の演算を含んでいるかを解析する。具体的に、ループ解析部10は、図6に示すように、検出したループがベクトル化可能であるかを判断するベクトル化判定部11と、ベクトル化可能であるループに複素数の演算が含まれているかを認識する複素数演算認識部12と、を備えている。
上記ベクトル化実行部20は、上述したループ解析部10による解析結果に基づいてループをベクトル化する。具体的に、ベクトル化実行部20は、図6に示すように、メモリに格納されている複素数データを連続アクセスによりベクトルレジスタへ読込むための命令を生成する連続アクセスベクトルロード命令生成部21と、複素数の演算を実行するための命令を生成する複素数演算命令生成部22と、複素数の演算結果をベクトルレジスタからメモリへ連続アクセスで書込むための命令を生成する連続アクセスベクトルストア命令生成部23と、を備えている。なお、上述したコンパイラ1が備える各部の詳細な機能については、下記の動作説明時に説明する。
また、本発明では、上述したコンパイラ1で生成されたベクトル演算命令に従ってベクトル演算を行うベクトル処理装置(図示せず)を備えている。具体的に、ベクトル処理装置は、複素数の加算、減算、乗算、除算を実行するために、一般的なマスク付きベクトル命令に加えて、マスク付きベクトルクロス演算を実行する機能を備えているものとする。ここで、マスク付きベクトルクロス演算命令は、上記で説明したように、図5に示すように異なる要素番号間での演算を実行する命令となっており、指定されたベクトルマスクレジスタの要素が1となる要素番号のみ結果が格納される。一例として、図7に示すようなマスク付きベクトルクロス演算においては、ベクトルレジスタマスクが「010101」であるため、書込み先となるベクトルレジスタ3の要素番号1,3,5に対する演算のみが実行されて計算結果が格納されることとなる。なお、本発明で使用するベクトルマスクレジスタは、要素パターンが限られているため、特殊レジスタとしてベクトル処理装置に備えられているものとする。仮に、ベクトルマスクレジスタがベクトル処理装置に備えられていない場合は、マスク演算命令と共に生成する必要がある。
[動作]
次に、上述したコンパイラ1の動作を、図8乃至図21を参照して説明する。本実施形態では、図8の式に示す複素数の加算、減算、乗算、除算を実行するベクトル演算命令を生成することとする。具体的には、図9乃至図12にそれぞれ示す複素数の加算、減算、乗算、除算において実部と虚部との配列に対するループ演算を有するFortranプログラムコードに基づいてベクトル演算命令を生成する。なお、図9乃至図12に示すFortranプログラムに含まれる複素数配列は、1要素が8バイトであり、実部と虚部の1要素がそれぞれ4バイトとなる。Fortran言語において、複素数データは実部と虚部とを隣接させて交互に配置させてメモリに格納することが言語仕様で規定されているため、図13のように、複素数データを構成する実部と虚部とがメモリに格納されていることとなる。
まず、上記ベクトル化判定部11は、図9乃至図12のプログラムコードで示されるようなループ演算がベクトル化できるかを判定する。ベクトル化できる条件としては、配列や変数の定義・参照関係にベクトル化を阻害する依存関係がないことが挙げられる。そして、ベクトル化が可能であると判定されたループにおいて、複素数の演算が含まれているループを、複素数演算認識部12により検出する。
続いて、上述したようにベクトル化可能かつ複素数の演算を含むループを、ベクトル化実行部20でベクトル化する。ここでは、図14乃至図17に示すように、図9乃至図12のプログラムソースから、命令列を生成する。
具体的には、まず、連続アクセスベクトルロード命令生成部21(ロード命令生成部)が、複素数配列A,Bを、メモリからベクトルレジスタへ読込むベクトルロード命令を生成する。このとき、ベクトルロード命令は、4バイト単位でデータを読込み、ベクトルロード命令の第2オペランドで指定する読込み間隔は4バイトにすることで、メモリに対して配置通りに連続アクセスとなるようにする。これにより、図3に示すように、複素数データの実部と虚部とが隣接した状態で、ベクトルレジスタの連続する各要素に格納される。
続いて、ベクトルロードによりベクトルレジスタへデータを格納する命令を生成した後に、複素数演算命令生成部22(演算命令生成部)が、複素数演算を実行する命令を生成する。ここで、複素数の四則演算のそれぞれにおける命令の生成例を説明する。
複素数の加算と減算は、図8の式に示すように、実部間の加減算と虚部間の加減算とになるため、図4に示すように、ベクトルレジスタ間で同じ要素番号に対してのベクトル演算で計算ができる。そのため、図14,15に示すように、複素数の加算、減算では、マスク付きベクトル加算命令、マスク付きベクトル減算命令を生成する。このとき、指定されるベクトルマスクレジスタの要素は、すべて「1」となる。以降、ベクトルマスクレジスタに関して特に記載が無い場合は、要素がすべて「1」のマスクが指定されるものとする。
次に、複素数の乗算について説明する。複素数の乗算は、図8の式に示すように、実部と虚部において計算方法が異なる。複素数の実部の乗算では、実部間と虚部間とでそれぞれ乗算を実行した後に、実部間の乗算結果から虚部間の乗算結果を減算する。このため、図16に示すように、実部間と虚部間との乗算を実行するために、マスク付きベクトル乗算命令を生成している。そして、実部間の乗算結果から虚部間の乗算結果を減算するために、マスク付きベクトル符号反転命令とマスク付きベクトルクロス減算命令を生成している。このとき、マスク付きベクトルクロス減算命令には、先頭要素から「10」を繰返すベクトルマスクレジスタが指定されており、実部の要素にのみ結果が格納される。実部の乗算の手順とベクトルレジスタイメージを図18に示す。
複素数の虚部の乗算では、図8の式に示すように、実部と虚部との乗算を実行した後に、2つの実部と虚部との乗算結果を加算する。このため、図16に示すように、実部と虚部との乗算を実行するために、マスク付きベクトルクロス乗算命令を生成している。そして、隣接する実部と虚部との乗算結果を加算するために、マスク付きベクトルクロス加算命令を生成している。このとき、マスク付きベクトルクロス加算命令には、先頭要素から「01」を繰返すベクトルマスクレジスタが指定されており、虚部の要素にのみ結果が格納される。虚部の乗算手順とベクトルレジスタイメージを図19に示す。
次に、複素数の除算について説明する。複素数の除算は、図8の式に示すように、実部と虚部において計算方法が異なる。なお、分子の計算は、加減算が入れ替わる点以外は乗算と同様となる。
複素数の実部の除算では、図8の式に示すように、実部間と虚部間との乗算を実行した後に2つの乗算結果を加算し、分母の実部と分母の虚部とをそれぞれ二乗して加算した値で除算することで算出される。このため、図17に示すように、実部間と虚部間との乗算を実行するために、マスク付きベクトル乗算命令を生成している。そして、実部間と虚部間との乗算結果を加算するために、マスク付きベクトルクロス加算命令を生成している。このとき、マスク付きベクトルクロス加算命令には、先頭要素から「10」を繰返すベクトルマスクレジスタが指定されており、実部の要素にのみ結果が格納される。
そして、分母の算出と、算出した分母による除算の演算命令は、複素数の虚部の除算と同様の処理となるため、虚部の分子を算出する演算命令を生成した後に生成する。虚部の分子の演算命令の生成後に、実部と虚部とを二乗するためのマスク付きベクトル乗算命令を生成する。そして、実部の二乗と虚部の二乗とを加算するためにマスク付きベクトルクロス加算命令を生成する。最後に、除算を実行するためにマスク付きベクトル除算命令を生成する。実部の除算手順とベクトルレジスタイメージを図20に示す。
複素数の虚部の除算では、図8の式に示すように、実部と虚部との乗算を実行した後に一方の乗算結果からもう一方の乗算結果を減算し、分母の実部と分母の虚部とをそれぞれ二乗して加算した値で除算することで算出される。このため、図17に示すように、実部と虚部との乗算を実行するためにマスク付きベクトルクロス乗算命令を生成している。そして、隣接する実部と虚部との乗算結果を減算するためにマスク付きベクトルクロス減算命令を生成している。このとき、マスク付きベクトルクロス減算命令には、先頭要素から「01」を繰返すベクトルマスクレジスタが指定されており、虚部の要素にのみ結果が格納される。その後は、複素数の実部の除算の命令生成手順で記述したように、分母を算出するための演算命令と除算を実行するための演算命令が生成される。虚部の除算手順とベクトルレジスタイメージを図21に示す。
上述したように、複素数演算命令生成部22にて複素数演算を実行する命令を生成した後に、連続アクセスベクトルストア命令生成部23(ベクトルストア命令生成部)が、複素数の演算結果である複素数配列Cを、ベクトルレジスタからメモリへ書込むベクトルストア命令を生成する。このとき、ベクトルロード命令と同様にベクトルストア命令も4バイト単位でデータを読込み、ベクトルストア命令の第2オペランドで指定する読込み間隔は4バイトにすることで、ベクトルレジスタの連続する各要素に対して連続アクセスとなるようにする。
ここで、図9乃至図12に示したプログラムでは、単一の演算のみとなっているが、ループ中に複数の演算がある場合や四則演算を組み合わせた場合でも本発明を適用できる。これは、演算結果は実部と虚部が隣接するようにベクトルレジスタへ格納されるため、ベクトルロードしたときと同じ配置となるためである。また、図9乃至図12において複素数配列の1要素は8バイトであったが、異なる精度(サイズ)であっても、ベクトル処理装置が異なる精度の命令を備えていれば本発明を適用できる。
以上のように、本発明では、複素数データをメモリからベクトルレジスタにロードする際に、背景技術におけるストライドアクセスを連続アクセスとしているため、メモリアクセスを高速化できる。ベクトルレジスタからメモリへ書込みをするベクトルストアについても同様に高速化することができる。また、ベクトル演算を実行する際のベクトル長が複素数データの配列長の2倍となり、連続処理できる要素が増加する。そのため、複素数データの配列長が計算機の最大ベクトル長よりも短い場合に処理効率を上げることができる。
また、本発明では、ベクトルレジスタ間の異なる要素番号同士の演算において、マスク付きベクトルクロス演算命令を使用することで、実部と虚部の演算が可能となる。これにより、複素数データに対する四則演算が可能となる。
なお、上記では、ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトルクロス演算を行っている場合を例示したが、相互にクロス演算を行う要素番号同士は必ずしも1つ異なることに限定されず、いくつ異なってもよい。
<実施形態2>
次に、本発明の第2の実施形態を、図22乃至図30を参照して説明する。本実施形態では、ベクトル処理装置が、上述した第1の実施形態で説明したマスク付きベクトルクロス演算命令を実行する機能を備えていない場合を説明する。
本実施形態では、以下に説明するように、ベクトル移送命令とマスク付きベクトル演算を用いることで、マスク付きベクトルクロス演算命令と同様の処理を実行できる。ベクトル移送命令は、図22に示すように、スカラレジスタで指定された値を移送開始番号として、読込み先ベクトルレジスタのベクトル要素を書込み先のベクトルレジスタの先頭から順に格納する。要素番号がベクトル長以上となる場合は0番に戻ることとする。つまり、図22の例では、ベクトル移送命令は、ベクトルレジスタの各要素を、その要素番号を1つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送することとなっている。なお、ベクトル移送命令にてずらす要素数は、1つであることに限定されず、いかなる数であってもよい。
具体的に、本実施形態における複素数演算命令生成部22は、以下に説明するように、上述したベクトル移送命令を生成する。なお、複素数の乗除算を除いては、先の実施例と同様の動作となるため、以下では実施形態1と異なる部分について主に説明する。
複素数の実部の乗算では、複素数演算命令生成部22は、図23に示すような命令を生成する。図23の例では、実部間と虚部間との乗算を実行するためにマスク付きベクトル乗算命令を生成している。そして、実部間の乗算結果から虚部間の乗算結果を減算するために、ベクトル移送命令とマスク付きベクトル減算命令を生成している。ベクトル移送命令の移送開始番号は「1」となるようにしている。マスク付きベクトル減算命令のベクトルマスクレジスタは、先頭要素から「10」を繰返すベクトルマスクレジスタが指定されており、実部の要素にのみ結果が格納されるようにしている。実部の乗算の手順とベクトルレジスタイメージを図25に示す。
複素数の虚部の乗算では、図23に示すような命令を生成する。図23では、実部と虚部との乗算を実行するために、ベクトル移送命令とマスク付きベクトル乗算命令を生成している。2つのベクトル移送命令の移送開始番号はベクトル長「−1」を指定している。2つのマスク付きベクトル乗算命令には、先頭要素から「01」を繰返すベクトルマスクレジスタが指定されている。そして、2つの実部と虚部との乗算結果を加算するためにマスク付きベクトル加算命令を生成している。このとき、マスク付きベクトル加算命令には、先頭要素から「01」を繰返すベクトルマスクレジスタが指定されており、虚部の要素にのみ結果が格納される。虚部の乗算手順とベクトルレジスタイメージを図26に示す。
複素数の実部の除算では、図24に示すような命令を生成する。図24では、実部間と虚部間との乗算を実行するために、マスク付きベクトル乗算命令を生成している。そして、実部間と虚部間との乗算結果を加算するために、ベクトル移送命令とマスク付きベクトル加算命令を生成している。ベクトル移送命令の移送開始番号は「1」となるようにしている。マスク付きベクトル加算命令には、先頭要素から「10」を繰返すベクトルマスクレジスタが指定されており、実部の要素にのみ結果が格納される。
分母の算出と算出した分母による除算の演算命令は、複素数の虚部の除算と同様の処理となるため、虚部の分子を算出する演算命令を生成した後に生成する。虚部の分子の演算命令を生成した後に、実部と虚部とを二乗するためにマスク付きベクトル乗算命令を生成する。そして、実部の二乗と虚部の二乗を加算するためにベクトル移送命令とマスク付きベクトル加算命令を生成する。二つのベクトル移送命令の移送開始番号は「1」とベクトル長「−1」を指定する。二つのマスク付きベクトル加算命令には、先頭要素から「10」を繰返すベクトルマスクレジスタと、「01」を繰返すベクトルマスクレジスタが指定される。最後に、除算を実行するためにマスク付きベクトル除算命令を生成する。実部の除算手順とベクトルレジスタイメージを図27,28に示す。
複素数の虚部の除算では、図24に示すような命令を生成する。図24では、実部と虚部の乗算を実行するために、ベクトル移送命令とマスク付きベクトル乗算命令を生成している。2つのベクトル移送命令の移送開始番号は、ベクトル長「−1」を指定している。2つのマスク付きベクトル乗算命令には、先頭要素から「01」を繰返すベクトルマスクレジスタが指定されている。そして、2つの実部と虚部の乗算結果を減算するためにマスク付きベクトル減算命令を生成している。このときマスク付きベクトル減算命令には、先頭要素から「01」を繰返すベクトルマスクレジスタが指定されており、虚部の要素にのみ結果が格納される。その後は、複素数の実部の除算の命令生成手順で記述したように分母を算出するための演算命令と除算を実行するための演算命令が生成される。虚部の除算手順とベクトルレジスタイメージを図29,30に示す。
<実施形態3>
次に、本発明の第3の実施形態を、図31を参照して説明する。図31は、実施形態1,2における情報処理装置(コンパイラ)の構成を示すブロック図である。なお、本実施形態では、実施形態1,2で説明した情報処理装置の構成の概略を示している。
図31に示すように、本実施形態における情報処理装置100は、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部110と、
2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部120と、
を備える。
なお、上記ロード命令生成部110と、演算命令生成部120とは、情報処理装置がプログラムを実行することで実現されるものである。
そして、上記構成の情報処理装置100は、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成し、
2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する、
という処理を実行するよう作動する。
また、上記情報処理装置100にて生成された命令に従って、ベクトル処理装置が、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
という処理を実行するよう作動する。
以上のように、本発明によると、複素数データに対するベクトル演算において、複素数データをベクトルロード・ベクトルストアする際に連続アクセスすることで、ベクトルロード・ベクトルストアを高速化することができる。また、複素数に対する乗除算を実行する際にマスク付きベクトルクロス演算を使用することで、複素数に対するあらゆる演算を行うことができる。
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報処理装置、情報処理方法、プログラム、ベクトル処理装置の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
(付記1)
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
を備えた情報処理装置。
(付記2)
付記1に記載の情報処理装置であって、
前記演算命令生成部は、2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理装置。
(付記3)
付記2に記載の情報処理装置であって、
前記演算命令生成部は、同一または異なる2つの前記ベクトルレジスタ間で行う前記マスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理装置。
(付記4)
付記2又は3に記載の情報処理装置であって、
前記演算命令生成部は、要素番号が1つ間隔で空いたマスク付きの前記マスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理装置。
(付記5)
付記1に記載の情報処理装置であって、
前記演算命令生成部は、所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送するベクトル移送命令を生成すると共に、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を行う命令を生成する、
情報処理装置。
(付記6)
付記1乃至5のいずれかに記載の情報処理装置であって、
前記演算命令生成部は、前記複素数データを構成する実部と虚部との配列に対するループ演算を含むプログラムコードに基づいてベクトル演算命令を生成する、
情報処理装置。
(付記7)
付記1乃至6のいずれかに記載の情報処理装置であって、
生成された前記ベクトル演算命令に従った演算結果を格納したベクトルレジスタの各要素に連続アクセスして、当該演算結果をメモリに書き込む命令を生成するベクトルストア命令生成部を備えた、
情報処理装置。
(付記8)
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成し、
2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する、
情報処理方法。
(付記8.1)
付記8に記載の情報処理方法であって、
2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理方法。
(付記8.2)
付記8に記載の情報処理方法であって、
所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送するベクトル移送命令を生成すると共に、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を行う命令を生成する、
情報処理方法。
(付記8.3)
付記8乃至8.2のいずれかに記載の情報処理方法であって、
前記複素数データを構成する実部と虚部との配列に対するループ演算を含むプログラムコードに基づいてベクトル演算命令を生成する、
情報処理方法。
(付記8.4)
付記8乃至8.3のいずれかに記載の情報処理方法であって、
生成された前記ベクトル演算命令に従った演算結果を格納したベクトルレジスタの各要素に連続アクセスして、当該演算結果をメモリに書き込む命令を生成する、
情報処理方法。
(付記9)
情報処理装置に、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
を実現させるためのプログラム。
(付記10)
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
ベクトル処理装置。
(付記10.1)
付記10に記載のベクトル処理装置であって、
2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算を実行する、
ベクトル処理装置。
(付記10.2)
付記10に記載のベクトル処理装置であって、
所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送し、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を実行する、
ベクトル処理装置。
(付記11)
ベクトル処理装置による情報処理方法であって、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
情報処理方法。
(付記11.1)
付記11に記載の情報処理方法であって、
2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算を実行する、
情報処理方法。
(付記11.2)
付記11に記載の情報処理方法であって、
所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応するよう新たなベクトルレジスタに移送し、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を実行する、
情報処理方法。
なお、上記プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
なお、本発明は、日本国にて2018年9月25日に特許出願された特願2018−178791の特許出願に基づく優先権主張の利益を享受するものであり、当該特許出願に記載された内容は、全て本明細書に含まれるものとする。
1 コンパイラ
10 ループ解析部
11 ベクトル化判定部
12 複素数演算認識部
20 ベクトル化実行部
21 ベクトルロード命令生成部
22 複素数演算命令生成部
23 ベクトルストア命令生成部
100 情報処理装置
110 ロード命令生成部
120 演算命令生成部

Claims (19)

  1. 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
    2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
    を備えた情報処理装置。
  2. 請求項1に記載の情報処理装置であって、
    前記演算命令生成部は、2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
    情報処理装置。
  3. 請求項2に記載の情報処理装置であって、
    前記演算命令生成部は、同一または異なる2つの前記ベクトルレジスタ間で行う前記マスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
    情報処理装置。
  4. 請求項2又は3に記載の情報処理装置であって、
    前記演算命令生成部は、要素番号が1つ間隔で空いたマスク付きの前記マスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
    情報処理装置。
  5. 請求項1に記載の情報処理装置であって、
    前記演算命令生成部は、所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送するベクトル移送命令を生成すると共に、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を行う命令を生成する、
    情報処理装置。
  6. 請求項1乃至5のいずれかに記載の情報処理装置であって、
    前記演算命令生成部は、前記複素数データを構成する実部と虚部との配列に対するループ演算を含むプログラムコードに基づいてベクトル演算命令を生成する、
    情報処理装置。
  7. 請求項1乃至6のいずれかに記載の情報処理装置であって、
    生成された前記ベクトル演算命令に従った演算結果を格納したベクトルレジスタの各要素に連続アクセスして、当該演算結果をメモリに書き込む命令を生成するベクトルストア命令生成部を備えた、
    情報処理装置。
  8. 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成し、
    2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する、
    情報処理方法。
  9. 請求項8に記載の情報処理方法であって、
    2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
    情報処理方法。
  10. 請求項8に記載の情報処理方法であって、
    所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送するベクトル移送命令を生成すると共に、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を行う命令を生成する、
    情報処理方法。
  11. 請求項8乃至10のいずれかに記載の情報処理方法であって、
    前記複素数データを構成する実部と虚部との配列に対するループ演算を含むプログラムコードに基づいてベクトル演算命令を生成する、
    情報処理方法。
  12. 請求項8乃至11のいずれかに記載の情報処理方法であって、
    生成された前記ベクトル演算命令に従った演算結果を格納したベクトルレジスタの各要素に連続アクセスして、当該演算結果をメモリに書き込む命令を生成する、
    情報処理方法。
  13. 情報処理装置に、
    複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
    2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
    を実現させるためのプログラム。
  14. 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
    2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
    ベクトル処理装置。
  15. 請求項14に記載のベクトル処理装置であって、
    2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算を実行する、
    ベクトル処理装置。
  16. 請求項14に記載のベクトル処理装置であって、
    所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送し、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を実行する、
    ベクトル処理装置。
  17. ベクトル処理装置による情報処理方法であって、
    複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
    2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
    情報処理方法。
  18. 請求項17に記載の情報処理方法であって、
    2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算を実行する、
    情報処理方法。
  19. 請求項17に記載の情報処理方法であって、
    所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応するよう新たなベクトルレジスタに移送し、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を実行する、
    情報処理方法。
JP2020548162A 2018-09-25 2019-08-21 情報処理装置、情報処理方法、プログラム Pending JPWO2020066375A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018178791 2018-09-25
JP2018178791 2018-09-25
PCT/JP2019/032671 WO2020066375A1 (ja) 2018-09-25 2019-08-21 情報処理装置、情報処理方法、プログラム

Publications (1)

Publication Number Publication Date
JPWO2020066375A1 true JPWO2020066375A1 (ja) 2021-08-30

Family

ID=69952035

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020548162A Pending JPWO2020066375A1 (ja) 2018-09-25 2019-08-21 情報処理装置、情報処理方法、プログラム

Country Status (3)

Country Link
US (1) US20210349719A1 (ja)
JP (1) JPWO2020066375A1 (ja)
WO (1) WO2020066375A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01191266A (ja) * 1988-01-26 1989-08-01 Nec Corp 複素数演算ループ最適ベクトル化方式
US20110040822A1 (en) * 2009-08-17 2011-02-17 International Business Machines Corporation Complex Matrix Multiplication Operations with Data Pre-Conditioning in a High Performance Computing Architecture
JP2014199663A (ja) * 2013-03-30 2014-10-23 インテル・コーポレーション マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム
US20170177362A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Adjoining data element pairwise swap processors, methods, systems, and instructions
WO2017168118A1 (en) * 2016-04-01 2017-10-05 Arm Limited Complex multiply instruction

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5123095A (en) * 1989-01-17 1992-06-16 Ergo Computing, Inc. Integrated scalar and vector processors with vector addressing by the scalar processor
US7818356B2 (en) * 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US8667042B2 (en) * 2010-09-24 2014-03-04 Intel Corporation Functional unit for vector integer multiply add instruction
US20120254589A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian System, apparatus, and method for aligning registers
US9639354B2 (en) * 2011-12-22 2017-05-02 Intel Corporation Packed data rearrangement control indexes precursors generation processors, methods, systems, and instructions
CN104011643B (zh) * 2011-12-22 2018-01-05 英特尔公司 打包数据重新安排控制索引产生处理器、方法、系统及指令
US9400650B2 (en) * 2012-09-28 2016-07-26 Intel Corporation Read and write masks update instruction for vectorization of recursive computations over interdependent data
US9378182B2 (en) * 2012-09-28 2016-06-28 Intel Corporation Vector move instruction controlled by read and write masks
US9424031B2 (en) * 2013-03-13 2016-08-23 Intel Corporation Techniques for enabling bit-parallel wide string matching with a SIMD register
US9747961B2 (en) * 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US9996347B2 (en) * 2014-12-24 2018-06-12 Intel Corporation Hardware apparatuses and methods relating to elemental register accesses
US10019262B2 (en) * 2015-12-22 2018-07-10 Intel Corporation Vector store/load instructions for array of structures
US20180088946A1 (en) * 2016-09-27 2018-03-29 Intel Corporation Apparatuses, methods, and systems for mixing vector operations
US11023231B2 (en) * 2016-10-01 2021-06-01 Intel Corporation Systems and methods for executing a fused multiply-add instruction for complex numbers
US10452394B2 (en) * 2017-11-28 2019-10-22 Intel Corporation Apparatus and method for complex multiplication
US11036506B1 (en) * 2019-12-11 2021-06-15 Motorola Solutions, Inc. Memory systems and methods for handling vector data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01191266A (ja) * 1988-01-26 1989-08-01 Nec Corp 複素数演算ループ最適ベクトル化方式
US20110040822A1 (en) * 2009-08-17 2011-02-17 International Business Machines Corporation Complex Matrix Multiplication Operations with Data Pre-Conditioning in a High Performance Computing Architecture
JP2014199663A (ja) * 2013-03-30 2014-10-23 インテル・コーポレーション マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム
US20170177362A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Adjoining data element pairwise swap processors, methods, systems, and instructions
WO2017168118A1 (en) * 2016-04-01 2017-10-05 Arm Limited Complex multiply instruction

Also Published As

Publication number Publication date
US20210349719A1 (en) 2021-11-11
WO2020066375A1 (ja) 2020-04-02

Similar Documents

Publication Publication Date Title
JP4339907B2 (ja) マルチプロセッサ向け最適コード生成方法及びコンパイル装置
KR20110097716A (ko) 기록 마스크를 사용하는 simd 아키텍처에 의한 레지스터 할당
EP2273381A1 (en) Simd parallel computer system, simd parallel computing method, and control program
KR102062208B1 (ko) 멀티스레드 프로그램 코드의 변환 장치 및 방법
Liang et al. Romou: Rapidly generate high-performance tensor kernels for mobile gpus
Oh et al. Parallelization of a finite element Fortran code using OpenMP library
US20180088948A1 (en) Efficient vectorization techniques for operands in non-sequential memory locations
JPWO2020066375A1 (ja) 情報処理装置、情報処理方法、プログラム
US8806466B2 (en) Program generation device, program production method, and program
US9158511B2 (en) Scalable partial vectorization
JP5120778B2 (ja) 分散メモリ型マルチプロセッサシステム、マスク付き逆シフト通信方法及びプログラム
WO1998018084A1 (fr) Dispositif et procede servant a accelerer la vitesse d'acces a une memoire
CN110073332A (zh) 向量生成指令
JP7115563B2 (ja) コンパイル装置、コンパイル方法、及び制御プログラム
US20240053969A1 (en) Compiling device, compiling method, and compiling program recording medium
CN110955380B (zh) 访存数据生成方法、存储介质、计算机设备和装置
JP2009265708A (ja) コンパイラ及びそのコード生成方法
JP2019185486A (ja) コード変換装置、コード変換方法、及びコード変換プログラム
WO2021166840A1 (ja) 記録媒体、コンパイル装置、処理システム及びコンパイル方法
JP3817073B2 (ja) メモリアクセス処理装置、メモリアクセス処理システム、および記録媒体
JP3771682B2 (ja) ベクトル処理装置
JP5821697B2 (ja) コンパイル方法、コンパイルプログラム及びコンパイル装置
JP2018206175A (ja) コンパイラ、情報処理装置及びコンパイル方法
US20220405204A1 (en) Computer-readable recording medium storing data placement program, processor, and data placement method
US10572233B2 (en) Vectorization device, vectorization method, and recording medium on which vectorization program is stored

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210204

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220120

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220419