(57)【要約】  本発明の情報処理装置１００は、複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部１１０と、２つのベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部１２０と、を備える。
2020066375.tif 000002
【特許請求の範囲】
【請求項１】
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
を備えた情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記演算命令生成部は、２つの前記ベクトルレジスタ間で、相互に１つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
前記演算命令生成部は、同一または異なる２つの前記ベクトルレジスタ間で行う前記マスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理装置。
【請求項４】
請求項２又は３に記載の情報処理装置であって、
前記演算命令生成部は、要素番号が１つ間隔で空いたマスク付きの前記マスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理装置。
【請求項５】
請求項１に記載の情報処理装置であって、
前記演算命令生成部は、所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも１つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送するベクトル移送命令を生成すると共に、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を行う命令を生成する、
情報処理装置。
【請求項６】
請求項１乃至５のいずれかに記載の情報処理装置であって、
前記演算命令生成部は、前記複素数データを構成する実部と虚部との配列に対するループ演算を含むプログラムコードに基づいてベクトル演算命令を生成する、
情報処理装置。
【請求項７】
請求項１乃至６のいずれかに記載の情報処理装置であって、
生成された前記ベクトル演算命令に従った演算結果を格納したベクトルレジスタの各要素に連続アクセスして、当該演算結果をメモリに書き込む命令を生成するベクトルストア命令生成部を備えた、
情報処理装置。
【請求項８】
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成し、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する、
情報処理方法。
【請求項９】
請求項８に記載の情報処理方法であって、
２つの前記ベクトルレジスタ間で、相互に１つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理方法。
【請求項１０】
請求項８に記載の情報処理方法であって、
所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも１つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送するベクトル移送命令を生成すると共に、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を行う命令を生成する、
情報処理方法。
【請求項１１】
請求項８乃至１０のいずれかに記載の情報処理方法であって、
前記複素数データを構成する実部と虚部との配列に対するループ演算を含むプログラムコードに基づいてベクトル演算命令を生成する、
情報処理方法。
【請求項１２】
請求項８乃至１１のいずれかに記載の情報処理方法であって、
生成された前記ベクトル演算命令に従った演算結果を格納したベクトルレジスタの各要素に連続アクセスして、当該演算結果をメモリに書き込む命令を生成する、
情報処理方法。
【請求項１３】
情報処理装置に、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
を実現させるためのプログラム。
【請求項１４】
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
ベクトル処理装置。
【請求項１５】
請求項１４に記載のベクトル処理装置であって、
２つの前記ベクトルレジスタ間で、相互に１つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算を実行する、
ベクトル処理装置。
【請求項１６】
請求項１４に記載のベクトル処理装置であって、
所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも１つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送し、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を実行する、
ベクトル処理装置。
【請求項１７】
ベクトル処理装置による情報処理方法であって、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
情報処理方法。
【請求項１８】
請求項１７に記載の情報処理方法であって、
２つの前記ベクトルレジスタ間で、相互に１つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算を実行する、
情報処理方法。
【請求項１９】
請求項１７に記載の情報処理方法であって、
所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも１つずつずらした新たな要素番号に対応するよう新たなベクトルレジスタに移送し、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を実行する、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複素数ベクトル演算命令を生成する情報処理装置、情報処理方法、プログラムに関する。
【背景技術】
【０００２】
複素数データに対する加減乗除の四則演算をベクトル演算で実行する際に、図１に示すように、メモリ上に交互に並ぶ実部データと虚部データとを、それぞれ異なるベクトルレジスタ１，２へロードすることが一般的である。複素数の乗除算においては、図８の式に示すように、虚部の計算の際に２つの複素数の実部と虚部の乗算が必要となり、ベクトルレジスタを分ける必要があるためである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１７４２９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、実部データと虚部データとは、上述したようにメモリ上では交互に並ぶように配置されるため、データをベクトルロードでベクトルレジスタに格納する際は、連続アクセスではなくストライドアクセスする必要がある。ストライドアクセスとは、データを連続で読込むのではなく、図２に示すように一定間隔おきにデータを読込むことである。しかしながら、ストライドアクセスは、連続アクセスに比べて低速であるという問題ある。そして、演算結果をベクトルレジスタからメモリに読み出すベクトルストアについても同様にストライドアクセスとなり、低速となるという問題が生じる。【０００５】
なお、特許文献１に記載の技術では、実部データと虚部データとを異なるベクトルレジスタにロードすることなく、複素数データの乗算を行う場合が例示されている。ところが、かかる文献に記載の技術では、予め複素数データの乗算に特化した命令を備えていることを前提としており、複素数データの他のベクトル演算、特に、複素数データに対する除算をベクトル演算で実行することができない、という問題が生じる。【０００６】
このため、本発明の目的は、複素数データのベクトル演算が低速となることと、ベクトル演算自体を実行できないこと、を解決することができる情報処理装置、情報処理方法、プログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明の一形態である情報処理装置は、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
を備えた、
という構成をとる。【０００８】
また、本発明の一形態である情報処理方法は、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成し、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する、
という構成をとる。【０００９】
また、本発明の一形態であるプログラムは、
情報処理装置に、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
を実現させる、
という構成をとる。【００１０】
また、本発明の一形態であるベクトル処理装置は、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
という処理を実行する構成をとる。【００１１】
また、本発明の一形態である情報処理方法は、
ベクトル処理装置による情報処理方法であって、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
という構成をとる。
【発明の効果】
【００１２】
本発明は、以上のように構成されることにより、複素数データのベクトル演算においてあらゆる演算を高速に行うことができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の背景技術を説明するための図である。
【図２】本発明の背景技術を説明するための図である。
【図３】本発明の概要を説明するための図である。
【図４】本発明の概要を説明するための図である。
【図５】本発明の概要を説明するための図である。
【図６】本発明の実施形態１におけるコンパイラの構成を示すブロック図である。
【図７】本発明の実施形態１において生成するベクトル演算命令を説明するための図である。
【図８】本発明の実施形態１においてベクトル演算命令を生成する対象となる複素数の演算式を示す図である。
【図９】図８に開示した複素数の加算のソースプログラムを示す図である。
【図１０】図８に開示した複素数の減算のソースプログラムを示す図である。
【図１１】図８に開示した複素数の乗算のソースプログラムを示す図である。
【図１２】図８に開示した複素数の除算のソースプログラムを示す図である。
【図１３】本発明の実施形態１におけるメモリの構成を示す図である。
【図１４】図９に開示した複素数の加算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。
【図１５】図１０に開示した複素数の減算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。
【図１６】図１１に開示した複素数の乗算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。
【図１７】図１２に開示した複素数の除算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。
【図１８】図１６に開示した複素数の乗算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。
【図１９】図１６に開示した複素数の乗算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。
【図２０】図１７に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。
【図２１】図１７に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。
【図２２】本発明の実施形態２において生成するベクトル演算命令を説明するための図である。
【図２３】本発明の実施形態２において、複素数の乗算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。
【図２４】本発明の実施形態２において、複素数の除算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。
【図２５】図２３に開示した複素数の乗算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。
【図２６】図２３に開示した複素数の乗算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。
【図２７】図２４に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。
【図２８】図２４に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。
【図２９】図２４に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。
【図３０】図２４に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。
【図３１】本発明の実施形態３におけるプロセッサの構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
＜実施形態１＞
本発明の第１の実施形態を、図３乃至図２１を参照して説明する。図３乃至図５は、本発明の概要を説明するための図である。図６は、本発明の構成を説明するための図であり、図７乃至図２１は、本発明の動作を説明するための図である。
【００１５】
［概要］
まず、本発明の概要について説明する。本発明は、ベクトル処理装置に対する複素数データのベクトル演算命令を生成する情報処理装置であり、特に、複素数データの四則演算を行う命令を生成するコンパイラとしての機能を有する。
【００１６】
具体的に、本発明では、複素数データをメモリからベクトルレジスタへベクトルロードする際に、ストライドアクセスではなく連続アクセスにすることで、メモリアクセスを高速化する。ベクトルレジスタからメモリへベクトルストアする際も同様に、連続アクセスにすることで高速化する。ストライドアクセスではなく連続アクセスとするため、複素数データの実部と虚部でベクトルレジスタが分けられることはなく、図３に示すように、実部と虚部が隣接した状態でベクトルレジスタに要素が格納される。
【００１７】
また、通常のベクトル四則演算命令では、図４に示すように、同じ要素番号に対しての演算となる。そのため、複素数の乗除算において、実部と虚部が隣接した状態のベクトルレジスタでは、実部と虚部の要素番号が異なるため実部と虚部の演算ができない。そこで、本発明では、異なる要素番号との演算において図５に示すようなマスク付きベクトルクロス演算命令を使用することで、実部と虚部の演算を可能にする。また、複素数の乗除算において実部と虚部の各乗算結果を加減算する際にも、マスク付きベクトルクロス演算を使用する。複素数データへの連続アクセスとマスク付きベクトル演算を組み合わせることで、複素数データの四則演算を可能としたままメモリアクセスを高速化できる。
【００１８】
［構成］
次に、本発明の一実施形態におけるコンパイラ１の構成について説明する。コンパイラ１は、演算装置と記憶装置とを備えた一般的な情報処理装置で構成されており、演算装置がコンパイラ用プログラムを実行することで構築される。そして、コンパイラ１は、図６に示すように、ループ解析部１０とベクトル化実行部２０とを備えている。
【００１９】
上記ループ解析部１０は、演算対象であるプログラムを解析して、プログラム中のループがベクトル化可能であり複素数の演算を含んでいるかを解析する。具体的に、ループ解析部１０は、図６に示すように、検出したループがベクトル化可能であるかを判断するベクトル化判定部１１と、ベクトル化可能であるループに複素数の演算が含まれているかを認識する複素数演算認識部１２と、を備えている。
【００２０】
上記ベクトル化実行部２０は、上述したループ解析部１０による解析結果に基づいてループをベクトル化する。具体的に、ベクトル化実行部２０は、図６に示すように、メモリに格納されている複素数データを連続アクセスによりベクトルレジスタへ読込むための命令を生成する連続アクセスベクトルロード命令生成部２１と、複素数の演算を実行するための命令を生成する複素数演算命令生成部２２と、複素数の演算結果をベクトルレジスタからメモリへ連続アクセスで書込むための命令を生成する連続アクセスベクトルストア命令生成部２３と、を備えている。なお、上述したコンパイラ１が備える各部の詳細な機能については、下記の動作説明時に説明する。
【００２１】
また、本発明では、上述したコンパイラ１で生成されたベクトル演算命令に従ってベクトル演算を行うベクトル処理装置（図示せず）を備えている。具体的に、ベクトル処理装置は、複素数の加算、減算、乗算、除算を実行するために、一般的なマスク付きベクトル命令に加えて、マスク付きベクトルクロス演算を実行する機能を備えているものとする。ここで、マスク付きベクトルクロス演算命令は、上記で説明したように、図５に示すように異なる要素番号間での演算を実行する命令となっており、指定されたベクトルマスクレジスタの要素が１となる要素番号のみ結果が格納される。一例として、図７に示すようなマスク付きベクトルクロス演算においては、ベクトルレジスタマスクが「０１０１０１」であるため、書込み先となるベクトルレジスタ３の要素番号１，３，５に対する演算のみが実行されて計算結果が格納されることとなる。なお、本発明で使用するベクトルマスクレジスタは、要素パターンが限られているため、特殊レジスタとしてベクトル処理装置に備えられているものとする。仮に、ベクトルマスクレジスタがベクトル処理装置に備えられていない場合は、マスク演算命令と共に生成する必要がある。
【００２２】
［動作］
次に、上述したコンパイラ１の動作を、図８乃至図２１を参照して説明する。本実施形態では、図８の式に示す複素数の加算、減算、乗算、除算を実行するベクトル演算命令を生成することとする。具体的には、図９乃至図１２にそれぞれ示す複素数の加算、減算、乗算、除算において実部と虚部との配列に対するループ演算を有するFortranプログラムコードに基づいてベクトル演算命令を生成する。なお、図９乃至図１２に示すFortranプログラムに含まれる複素数配列は、１要素が８バイトであり、実部と虚部の１要素がそれぞれ４バイトとなる。Fortran言語において、複素数データは実部と虚部とを隣接させて交互に配置させてメモリに格納することが言語仕様で規定されているため、図１３のように、複素数データを構成する実部と虚部とがメモリに格納されていることとなる。
【００２３】
まず、上記ベクトル化判定部１１は、図９乃至図１２のプログラムコードで示されるようなループ演算がベクトル化できるかを判定する。ベクトル化できる条件としては、配列や変数の定義・参照関係にベクトル化を阻害する依存関係がないことが挙げられる。そして、ベクトル化が可能であると判定されたループにおいて、複素数の演算が含まれているループを、複素数演算認識部１２により検出する。
【００２４】
続いて、上述したようにベクトル化可能かつ複素数の演算を含むループを、ベクトル化実行部２０でベクトル化する。ここでは、図１４乃至図１７に示すように、図９乃至図１２のプログラムソースから、命令列を生成する。
【００２５】
具体的には、まず、連続アクセスベクトルロード命令生成部２１（ロード命令生成部）が、複素数配列Ａ，Ｂを、メモリからベクトルレジスタへ読込むベクトルロード命令を生成する。このとき、ベクトルロード命令は、４バイト単位でデータを読込み、ベクトルロード命令の第２オペランドで指定する読込み間隔は４バイトにすることで、メモリに対して配置通りに連続アクセスとなるようにする。これにより、図３に示すように、複素数データの実部と虚部とが隣接した状態で、ベクトルレジスタの連続する各要素に格納される。
【００２６】
続いて、ベクトルロードによりベクトルレジスタへデータを格納する命令を生成した後に、複素数演算命令生成部２２（演算命令生成部）が、複素数演算を実行する命令を生成する。ここで、複素数の四則演算のそれぞれにおける命令の生成例を説明する。
【００２７】
複素数の加算と減算は、図８の式に示すように、実部間の加減算と虚部間の加減算とになるため、図４に示すように、ベクトルレジスタ間で同じ要素番号に対してのベクトル演算で計算ができる。そのため、図１４，１５に示すように、複素数の加算、減算では、マスク付きベクトル加算命令、マスク付きベクトル減算命令を生成する。このとき、指定されるベクトルマスクレジスタの要素は、すべて「１」となる。以降、ベクトルマスクレジスタに関して特に記載が無い場合は、要素がすべて「１」のマスクが指定されるものとする。
【００２８】
次に、複素数の乗算について説明する。複素数の乗算は、図８の式に示すように、実部と虚部において計算方法が異なる。複素数の実部の乗算では、実部間と虚部間とでそれぞれ乗算を実行した後に、実部間の乗算結果から虚部間の乗算結果を減算する。このため、図１６に示すように、実部間と虚部間との乗算を実行するために、マスク付きベクトル乗算命令を生成している。そして、実部間の乗算結果から虚部間の乗算結果を減算するために、マスク付きベクトル符号反転命令とマスク付きベクトルクロス減算命令を生成している。このとき、マスク付きベクトルクロス減算命令には、先頭要素から「１０」を繰返すベクトルマスクレジスタが指定されており、実部の要素にのみ結果が格納される。実部の乗算の手順とベクトルレジスタイメージを図１８に示す。
【００２９】
複素数の虚部の乗算では、図８の式に示すように、実部と虚部との乗算を実行した後に、２つの実部と虚部との乗算結果を加算する。このため、図１６に示すように、実部と虚部との乗算を実行するために、マスク付きベクトルクロス乗算命令を生成している。そして、隣接する実部と虚部との乗算結果を加算するために、マスク付きベクトルクロス加算命令を生成している。このとき、マスク付きベクトルクロス加算命令には、先頭要素から「０１」を繰返すベクトルマスクレジスタが指定されており、虚部の要素にのみ結果が格納される。虚部の乗算手順とベクトルレジスタイメージを図１９に示す。
【００３０】
次に、複素数の除算について説明する。複素数の除算は、図８の式に示すように、実部と虚部において計算方法が異なる。なお、分子の計算は、加減算が入れ替わる点以外は乗算と同様となる。
【００３１】
複素数の実部の除算では、図８の式に示すように、実部間と虚部間との乗算を実行した後に２つの乗算結果を加算し、分母の実部と分母の虚部とをそれぞれ二乗して加算した値で除算することで算出される。このため、図１７に示すように、実部間と虚部間との乗算を実行するために、マスク付きベクトル乗算命令を生成している。そして、実部間と虚部間との乗算結果を加算するために、マスク付きベクトルクロス加算命令を生成している。このとき、マスク付きベクトルクロス加算命令には、先頭要素から「１０」を繰返すベクトルマスクレジスタが指定されており、実部の要素にのみ結果が格納される。
【００３２】
そして、分母の算出と、算出した分母による除算の演算命令は、複素数の虚部の除算と同様の処理となるため、虚部の分子を算出する演算命令を生成した後に生成する。虚部の分子の演算命令の生成後に、実部と虚部とを二乗するためのマスク付きベクトル乗算命令を生成する。そして、実部の二乗と虚部の二乗とを加算するためにマスク付きベクトルクロス加算命令を生成する。最後に、除算を実行するためにマスク付きベクトル除算命令を生成する。実部の除算手順とベクトルレジスタイメージを図２０に示す。
【００３３】
複素数の虚部の除算では、図８の式に示すように、実部と虚部との乗算を実行した後に一方の乗算結果からもう一方の乗算結果を減算し、分母の実部と分母の虚部とをそれぞれ二乗して加算した値で除算することで算出される。このため、図１７に示すように、実部と虚部との乗算を実行するためにマスク付きベクトルクロス乗算命令を生成している。そして、隣接する実部と虚部との乗算結果を減算するためにマスク付きベクトルクロス減算命令を生成している。このとき、マスク付きベクトルクロス減算命令には、先頭要素から「０１」を繰返すベクトルマスクレジスタが指定されており、虚部の要素にのみ結果が格納される。その後は、複素数の実部の除算の命令生成手順で記述したように、分母を算出するための演算命令と除算を実行するための演算命令が生成される。虚部の除算手順とベクトルレジスタイメージを図２１に示す。
【００３４】
上述したように、複素数演算命令生成部２２にて複素数演算を実行する命令を生成した後に、連続アクセスベクトルストア命令生成部２３（ベクトルストア命令生成部）が、複素数の演算結果である複素数配列Ｃを、ベクトルレジスタからメモリへ書込むベクトルストア命令を生成する。このとき、ベクトルロード命令と同様にベクトルストア命令も４バイト単位でデータを読込み、ベクトルストア命令の第２オペランドで指定する読込み間隔は４バイトにすることで、ベクトルレジスタの連続する各要素に対して連続アクセスとなるようにする。
【００３５】
ここで、図９乃至図１２に示したプログラムでは、単一の演算のみとなっているが、ループ中に複数の演算がある場合や四則演算を組み合わせた場合でも本発明を適用できる。これは、演算結果は実部と虚部が隣接するようにベクトルレジスタへ格納されるため、ベクトルロードしたときと同じ配置となるためである。また、図９乃至図１２において複素数配列の１要素は８バイトであったが、異なる精度（サイズ）であっても、ベクトル処理装置が異なる精度の命令を備えていれば本発明を適用できる。
【００３６】
以上のように、本発明では、複素数データをメモリからベクトルレジスタにロードする際に、背景技術におけるストライドアクセスを連続アクセスとしているため、メモリアクセスを高速化できる。ベクトルレジスタからメモリへ書込みをするベクトルストアについても同様に高速化することができる。また、ベクトル演算を実行する際のベクトル長が複素数データの配列長の２倍となり、連続処理できる要素が増加する。そのため、複素数データの配列長が計算機の最大ベクトル長よりも短い場合に処理効率を上げることができる。
【００３７】
また、本発明では、ベクトルレジスタ間の異なる要素番号同士の演算において、マスク付きベクトルクロス演算命令を使用することで、実部と虚部の演算が可能となる。これにより、複素数データに対する四則演算が可能となる。
【００３８】
なお、上記では、ベクトルレジスタ間で、相互に１つ異なる要素番号に対応する要素同士のベクトルクロス演算を行っている場合を例示したが、相互にクロス演算を行う要素番号同士は必ずしも１つ異なることに限定されず、いくつ異なってもよい。
【００３９】
＜実施形態２＞
次に、本発明の第２の実施形態を、図２２乃至図３０を参照して説明する。本実施形態では、ベクトル処理装置が、上述した第１の実施形態で説明したマスク付きベクトルクロス演算命令を実行する機能を備えていない場合を説明する。
【００４０】
本実施形態では、以下に説明するように、ベクトル移送命令とマスク付きベクトル演算を用いることで、マスク付きベクトルクロス演算命令と同様の処理を実行できる。ベクトル移送命令は、図２２に示すように、スカラレジスタで指定された値を移送開始番号として、読込み先ベクトルレジスタのベクトル要素を書込み先のベクトルレジスタの先頭から順に格納する。要素番号がベクトル長以上となる場合は０番に戻ることとする。つまり、図２２の例では、ベクトル移送命令は、ベクトルレジスタの各要素を、その要素番号を１つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送することとなっている。なお、ベクトル移送命令にてずらす要素数は、１つであることに限定されず、いかなる数であってもよい。
【００４１】
具体的に、本実施形態における複素数演算命令生成部２２は、以下に説明するように、上述したベクトル移送命令を生成する。なお、複素数の乗除算を除いては、先の実施例と同様の動作となるため、以下では実施形態１と異なる部分について主に説明する。
【００４２】
複素数の実部の乗算では、複素数演算命令生成部２２は、図２３に示すような命令を生成する。図２３の例では、実部間と虚部間との乗算を実行するためにマスク付きベクトル乗算命令を生成している。そして、実部間の乗算結果から虚部間の乗算結果を減算するために、ベクトル移送命令とマスク付きベクトル減算命令を生成している。ベクトル移送命令の移送開始番号は「１」となるようにしている。マスク付きベクトル減算命令のベクトルマスクレジスタは、先頭要素から「１０」を繰返すベクトルマスクレジスタが指定されており、実部の要素にのみ結果が格納されるようにしている。実部の乗算の手順とベクトルレジスタイメージを図２５に示す。
【００４３】
複素数の虚部の乗算では、図２３に示すような命令を生成する。図２３では、実部と虚部との乗算を実行するために、ベクトル移送命令とマスク付きベクトル乗算命令を生成している。２つのベクトル移送命令の移送開始番号はベクトル長「−１」を指定している。２つのマスク付きベクトル乗算命令には、先頭要素から「０１」を繰返すベクトルマスクレジスタが指定されている。そして、２つの実部と虚部との乗算結果を加算するためにマスク付きベクトル加算命令を生成している。このとき、マスク付きベクトル加算命令には、先頭要素から「０１」を繰返すベクトルマスクレジスタが指定されており、虚部の要素にのみ結果が格納される。虚部の乗算手順とベクトルレジスタイメージを図２６に示す。
【００４４】
複素数の実部の除算では、図２４に示すような命令を生成する。図２４では、実部間と虚部間との乗算を実行するために、マスク付きベクトル乗算命令を生成している。そして、実部間と虚部間との乗算結果を加算するために、ベクトル移送命令とマスク付きベクトル加算命令を生成している。ベクトル移送命令の移送開始番号は「１」となるようにしている。マスク付きベクトル加算命令には、先頭要素から「１０」を繰返すベクトルマスクレジスタが指定されており、実部の要素にのみ結果が格納される。
【００４５】
分母の算出と算出した分母による除算の演算命令は、複素数の虚部の除算と同様の処理となるため、虚部の分子を算出する演算命令を生成した後に生成する。虚部の分子の演算命令を生成した後に、実部と虚部とを二乗するためにマスク付きベクトル乗算命令を生成する。そして、実部の二乗と虚部の二乗を加算するためにベクトル移送命令とマスク付きベクトル加算命令を生成する。二つのベクトル移送命令の移送開始番号は「1」とベクトル長「−１」を指定する。二つのマスク付きベクトル加算命令には、先頭要素から「１０」を繰返すベクトルマスクレジスタと、「０１」を繰返すベクトルマスクレジスタが指定される。最後に、除算を実行するためにマスク付きベクトル除算命令を生成する。実部の除算手順とベクトルレジスタイメージを図２７，２８に示す。
【００４６】
複素数の虚部の除算では、図２４に示すような命令を生成する。図２４では、実部と虚部の乗算を実行するために、ベクトル移送命令とマスク付きベクトル乗算命令を生成している。２つのベクトル移送命令の移送開始番号は、ベクトル長「−１」を指定している。２つのマスク付きベクトル乗算命令には、先頭要素から「０１」を繰返すベクトルマスクレジスタが指定されている。そして、２つの実部と虚部の乗算結果を減算するためにマスク付きベクトル減算命令を生成している。このときマスク付きベクトル減算命令には、先頭要素から「０１」を繰返すベクトルマスクレジスタが指定されており、虚部の要素にのみ結果が格納される。その後は、複素数の実部の除算の命令生成手順で記述したように分母を算出するための演算命令と除算を実行するための演算命令が生成される。虚部の除算手順とベクトルレジスタイメージを図２９，３０に示す。
【００４７】
＜実施形態３＞
次に、本発明の第３の実施形態を、図３１を参照して説明する。図３１は、実施形態１，２における情報処理装置（コンパイラ）の構成を示すブロック図である。なお、本実施形態では、実施形態１，２で説明した情報処理装置の構成の概略を示している。
【００４８】
図３１に示すように、本実施形態における情報処理装置１００は、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部１１０と、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部１２０と、
を備える。
【００４９】
なお、上記ロード命令生成部１１０と、演算命令生成部１２０とは、情報処理装置がプログラムを実行することで実現されるものである。
【００５０】
そして、上記構成の情報処理装置１００は、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成し、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する、
という処理を実行するよう作動する。
【００５１】
また、上記情報処理装置１００にて生成された命令に従って、ベクトル処理装置が、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
という処理を実行するよう作動する。
【００５２】
以上のように、本発明によると、複素数データに対するベクトル演算において、複素数データをベクトルロード・ベクトルストアする際に連続アクセスすることで、ベクトルロード・ベクトルストアを高速化することができる。また、複素数に対する乗除算を実行する際にマスク付きベクトルクロス演算を使用することで、複素数に対するあらゆる演算を行うことができる。
【００５３】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報処理装置、情報処理方法、プログラム、ベクトル処理装置の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【００５４】
（付記１）
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
を備えた情報処理装置。
【００５５】
（付記２）
付記１に記載の情報処理装置であって、
前記演算命令生成部は、２つの前記ベクトルレジスタ間で、相互に１つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理装置。
【００５６】
（付記３）
付記２に記載の情報処理装置であって、
前記演算命令生成部は、同一または異なる２つの前記ベクトルレジスタ間で行う前記マスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理装置。
【００５７】
（付記４）
付記２又は３に記載の情報処理装置であって、
前記演算命令生成部は、要素番号が１つ間隔で空いたマスク付きの前記マスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理装置。
【００５８】
（付記５）
付記１に記載の情報処理装置であって、
前記演算命令生成部は、所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも１つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送するベクトル移送命令を生成すると共に、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を行う命令を生成する、
情報処理装置。
【００５９】
（付記６）
付記１乃至５のいずれかに記載の情報処理装置であって、
前記演算命令生成部は、前記複素数データを構成する実部と虚部との配列に対するループ演算を含むプログラムコードに基づいてベクトル演算命令を生成する、
情報処理装置。
【００６０】
（付記７）
付記１乃至６のいずれかに記載の情報処理装置であって、
生成された前記ベクトル演算命令に従った演算結果を格納したベクトルレジスタの各要素に連続アクセスして、当該演算結果をメモリに書き込む命令を生成するベクトルストア命令生成部を備えた、
情報処理装置。
【００６１】
（付記８）
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成し、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する、
情報処理方法。
【００６２】
（付記８．１）
付記８に記載の情報処理方法であって、
２つの前記ベクトルレジスタ間で、相互に１つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理方法。
【００６３】
（付記８．２）
付記８に記載の情報処理方法であって、
所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも１つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送するベクトル移送命令を生成すると共に、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を行う命令を生成する、
情報処理方法。
【００６４】
（付記８．３）
付記８乃至８．２のいずれかに記載の情報処理方法であって、
前記複素数データを構成する実部と虚部との配列に対するループ演算を含むプログラムコードに基づいてベクトル演算命令を生成する、
情報処理方法。
【００６５】
（付記８．４）
付記８乃至８．３のいずれかに記載の情報処理方法であって、
生成された前記ベクトル演算命令に従った演算結果を格納したベクトルレジスタの各要素に連続アクセスして、当該演算結果をメモリに書き込む命令を生成する、
情報処理方法。
【００６６】
（付記９）
情報処理装置に、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
を実現させるためのプログラム。
【００６７】
（付記１０）
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
ベクトル処理装置。
【００６８】
（付記１０．１）
付記１０に記載のベクトル処理装置であって、
２つの前記ベクトルレジスタ間で、相互に１つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算を実行する、
ベクトル処理装置。
【００６９】
（付記１０．２）
付記１０に記載のベクトル処理装置であって、
所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも１つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送し、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を実行する、
ベクトル処理装置。
【００７０】
（付記１１）
ベクトル処理装置による情報処理方法であって、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
情報処理方法。
【００７１】
（付記１１．１）
付記１１に記載の情報処理方法であって、
２つの前記ベクトルレジスタ間で、相互に１つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算を実行する、
情報処理方法。
【００７２】
（付記１１．２）
付記１１に記載の情報処理方法であって、
所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも１つずつずらした新たな要素番号に対応するよう新たなベクトルレジスタに移送し、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を実行する、
情報処理方法。
【００７３】
なお、上記プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００７４】
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【００７５】
なお、本発明は、日本国にて２０１８年９月２５日に特許出願された特願２０１８−１７８７９１の特許出願に基づく優先権主張の利益を享受するものであり、当該特許出願に記載された内容は、全て本明細書に含まれるものとする。
【符号の説明】
【００７６】
１  コンパイラ
１０  ループ解析部
１１  ベクトル化判定部
１２  複素数演算認識部
２０  ベクトル化実行部
２１  ベクトルロード命令生成部
２２  複素数演算命令生成部
２３  ベクトルストア命令生成部
１００  情報処理装置
１１０  ロード命令生成部
１２０  演算命令生成部
【図１】
2020066375.tif 000003
【図２】
2020066375.tif 000004
【図３】
2020066375.tif 000005
【図４】
2020066375.tif 000006
【図５】
2020066375.tif 000007
【図６】
2020066375.tif 000008
【図７】
2020066375.tif 000009
【図８】
2020066375.tif 000010
【図９】
2020066375.tif 000011
【図１０】
2020066375.tif 000012
【図１１】
2020066375.tif 000013
【図１２】
2020066375.tif 000014
【図１３】
2020066375.tif 000015
【図１４】
2020066375.tif 000016
【図１５】
2020066375.tif 000017
【図１６】
2020066375.tif 000018
【図１７】
2020066375.tif 000019
【図１８】
2020066375.tif 000020
【図１９】
2020066375.tif 000021
【図２０】
2020066375.tif 000022
【図２１】
2020066375.tif 000023
【図２２】
2020066375.tif 000024
【図２３】
2020066375.tif 000025
【図２４】
2020066375.tif 000026
【図２５】
2020066375.tif 000027
【図２６】
2020066375.tif 000028
【図２７】
2020066375.tif 000029
【図２８】
2020066375.tif 000030
【図２９】
2020066375.tif 000031
【図３０】
2020066375.tif 000032
【図３１】
2020066375.tif 000033
【手続補正書】
【提出日】令和3年2月4日(2021.2.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
を備えた情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記演算命令生成部は、２つの前記ベクトルレジスタ間で、相互に１つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
前記演算命令生成部は、同一または異なる２つの前記ベクトルレジスタ間で行う前記マスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理装置。
【請求項４】
請求項２又は３に記載の情報処理装置であって、
前記演算命令生成部は、要素番号が１つ間隔で空いたマスク付きの前記マスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理装置。
【請求項５】
請求項１に記載の情報処理装置であって、
前記演算命令生成部は、所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも１つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送するベクトル移送命令を生成すると共に、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を行う命令を生成する、
情報処理装置。
【請求項６】
請求項１乃至５のいずれかに記載の情報処理装置であって、
前記演算命令生成部は、前記複素数データを構成する実部と虚部との配列に対するループ演算を含むプログラムコードに基づいてベクトル演算命令を生成する、
情報処理装置。
【請求項７】
請求項１乃至６のいずれかに記載の情報処理装置であって、
生成された前記ベクトル演算命令に従った演算結果を格納したベクトルレジスタの各要素に連続アクセスして、当該演算結果をメモリに書き込む命令を生成するベクトルストア命令生成部を備えた、
情報処理装置。
【請求項８】
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成し、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する、
情報処理方法。
【請求項９】
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
ベクトル処理装置。
【請求項１０】
ベクトル処理装置による情報処理方法であって、
複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
２つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
情報処理方法。
【国際調査報告】
2020066375.tif 000034
2020066375.tif 000035
2020066375.tif 000036
2020066375.tif 000037