図面 (/)

技術 配列演算処理方式

出願人 富士通株式会社
発明者 湯田雄二
出願日 1994年3月30日 (27年6ヶ月経過) 出願番号 1994-060709
公開日 1995年10月20日 (26年0ヶ月経過) 公開番号 1995-271737
状態 特許登録済
技術分野 マルチプロセッサ 複合演算 並列プロセッサ
主要キーワード 各表示値 巡回回数 計算行 縦分割 作業配列 演算対象領域 巡回処理 演算規則
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(1995年10月20日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

目的

本発明は、複数のプロセッサを用いて配列Aと配列Bとの配列演算を実行する配列演算処理方式に関し、大きな作業領域を必要とすることなく配列演算を実行できるようにすることを目的とする。

構成

プロセッサに任意指定サイズの作業領域10を用意し、配列Bを分割することで分割配列Bを生成してプロセッサに分割常駐させ、配列Aを分割することで分割配列Aを生成してプロセッサに分割展開するとともに、これを更に作業領域10の大きさに応じて分割することで分割配列単位Aを生成する構成を採り、かつ、プロセッサが、自展開の分割配列単位Aを、規定の他プロセッサの分割配列Aと作業領域10とに交互に転送する転送手段14と、初期配置の分割配列単位A及び転送されてくる分割配列単位Aと、これと演算対象となる自常駐の分割配列Bとの配列演算を実行する演算手段14とを備えるように構成する。

概要

背景

単一プロセッサ計算機で、配列Aと配列Bとの配列演算を行って配列Cを求める場合には、図24に示すように、同一メモリ上に配列を展開することになる。しかるに、このような配列演算を並列計算機で行う場合には、各プロセッサのメモリに同じ配列を全て展開するのは現実的でないことから、図25に示すように、配列を各プロセッサで分割して演算する方法を採っている。

このような分割演算処理構成を採る場合にあって、最初に割り付けられた配列部分のみの演算を行うことで演算処理が達成される場合には何ら問題はないものの、最初に割り付けられた配列部分以外の配列部分を必要とする場合には、各プロセッサに作業領域を用意して、この作業領域を使ってプロセッサ間通信でもって配列部分を交換していく処理を行うことになる。例えば、配列Bの分割配列Biを各プロセッサに常駐させる場合には、図26に示すように、もう一方の配列Aの分割配列Aiを交換していくことになる。

従来では、このとき用意する作業領域として、交換対象となる配列部分と同じ大きさを持つものを要求するという構成を採っていた。すなわち、配列Bの分割配列Biを各プロセッサに常駐させ、配列Aの分割配列Aiを交換していく場合には、図27に示すように、分割配列Aiと同じ大きさを持つ作業領域を用意して、これを使って分割配列Aiを交換していくことで、配列Aと配列Bとの配列演算を行うという構成を採っていたのである。

概要

本発明は、複数のプロセッサを用いて配列Aと配列Bとの配列演算を実行する配列演算処理方式に関し、大きな作業領域を必要とすることなく配列演算を実行できるようにすることを目的とする。

プロセッサに任意指定サイズの作業領域10を用意し、配列Bを分割することで分割配列Bを生成してプロセッサに分割常駐させ、配列Aを分割することで分割配列Aを生成してプロセッサに分割展開するとともに、これを更に作業領域10の大きさに応じて分割することで分割配列単位Aを生成する構成を採り、かつ、プロセッサが、自展開の分割配列単位Aを、規定の他プロセッサの分割配列Aと作業領域10とに交互に転送する転送手段14と、初期配置の分割配列単位A及び転送されてくる分割配列単位Aと、これと演算対象となる自常駐の分割配列Bとの配列演算を実行する演算手段14とを備えるように構成する。

目的

本発明はかかる事情に鑑みてなされたものであって、複数のプロセッサを用いて配列Aと配列Bとの配列演算を実行するときにあって、大きな作業領域を必要とすることなく配列演算を実行できるようにする新たな配列演算処理方式の提供を目的とする。

効果

実績

技術文献被引用数
1件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

複数のプロセッサを用いて配列Aと配列Bとの配列演算を実行する配列演算処理方式において、プロセッサに任意指定サイズの作業領域(10)を用意し、配列Bを分割することで分割配列Bを生成してプロセッサに分割常駐させ、配列Aを分割することで分割配列Aを生成してプロセッサに分割展開するとともに、これを更に作業領域(10)の大きさに応じて分割することで分割配列単位Aを生成する構成を採り、かつ、プロセッサが、自展開の分割配列単位Aを、規定の他プロセッサの分割配列Aと作業領域(10)とに交互に転送する転送手段(14)と、初期配置される分割配列Aの分割配列単位Aと、これと演算対象となる自常駐の分割配列Bとの配列演算を実行するとともに、上記転送手段(14)により転送されてくる分割配列単位Aと、これと演算対象となる自常駐の分割配列Bとの配列演算を実行する演算手段(15)とを備えることを、特徴とする配列演算処理方式。

請求項2

請求項1記載の配列演算処理方式において、転送手段(14)は、循環先となる他プロセッサに対して分割配列単位Aを転送していくよう処理することを、特徴とする配列演算処理方式。

請求項3

請求項1又は2記載の配列演算処理方式において、転送手段(14)は、分割配列Aの分割配列単位Aを規定の他プロセッサの作業領域(10)に転送する処理と、作業領域(10)の分割配列単位Aを規定の他プロセッサの分割配列Aに転送する処理とを交互に実行するよう処理することを、特徴とする配列演算処理方式。

請求項4

請求項3記載の配列演算処理方式において、転送手段(14)は、演算手段(15)が分割配列Aの分割配列単位Aを用いて配列演算を実行しているときには、その配列演算と並行させて他プロセッサの作業領域への転送処理を実行するとともに、演算手段(15)が作業領域の分割配列単位Aを用いて配列演算を実行しているときには、その配列演算と並行させて他プロセッサの分割配列Aへの転送処理を実行するよう処理することを、特徴とする配列演算処理方式。

請求項5

請求項1、2、3又は4記載の配列演算処理方式において、演算手段(15)は、分割配列単位A及び分割配列Bのサイズを考慮しつつ、分割配列単位Aと分割配列Bとの配列演算を実行するよう処理することを、特徴とする配列演算処理方式。

技術分野

0001

本発明は、複数のプロセッサを用いて配列Aと配列Bとの配列演算を実行する配列演算処理方式に関し、特に、大きな作業領域を必要とすることなく配列演算を実行できるようにする配列演算処理方式に関する。

背景技術

0002

単一プロセッサ計算機で、配列Aと配列Bとの配列演算を行って配列Cを求める場合には、図24に示すように、同一メモリ上に配列を展開することになる。しかるに、このような配列演算を並列計算機で行う場合には、各プロセッサのメモリに同じ配列を全て展開するのは現実的でないことから、図25に示すように、配列を各プロセッサで分割して演算する方法を採っている。

0003

このような分割演算処理構成を採る場合にあって、最初に割り付けられた配列部分のみの演算を行うことで演算処理が達成される場合には何ら問題はないものの、最初に割り付けられた配列部分以外の配列部分を必要とする場合には、各プロセッサに作業領域を用意して、この作業領域を使ってプロセッサ間通信でもって配列部分を交換していく処理を行うことになる。例えば、配列Bの分割配列Biを各プロセッサに常駐させる場合には、図26に示すように、もう一方の配列Aの分割配列Aiを交換していくことになる。

0004

従来では、このとき用意する作業領域として、交換対象となる配列部分と同じ大きさを持つものを要求するという構成を採っていた。すなわち、配列Bの分割配列Biを各プロセッサに常駐させ、配列Aの分割配列Aiを交換していく場合には、図27に示すように、分割配列Aiと同じ大きさを持つ作業領域を用意して、これを使って分割配列Aiを交換していくことで、配列Aと配列Bとの配列演算を行うという構成を採っていたのである。

発明が解決しようとする課題

0005

しかしながら、このような従来技術に従っていると、交換対象となる配列部分と同じ大きさを持つ作業領域が必要となることから、メモリ消費量が増大するという問題点があった。

0006

また、並列計算機では、プロセッサ数可変性も考慮して、作業領域として使用するメモリ量も柔軟性が要求され、従来技術のように固定的な一意の大きさを持つ作業領域を用意するという方法は好ましいものではない。

0007

本発明はかかる事情に鑑みてなされたものであって、複数のプロセッサを用いて配列Aと配列Bとの配列演算を実行するときにあって、大きな作業領域を必要とすることなく配列演算を実行できるようにする新たな配列演算処理方式の提供を目的とする。

課題を解決するための手段

0008

図1に本発明の原理構成を図示する。図中、1は並列計算機を構成する複数のプロセッサであって、配列Aと配列Bとの配列演算を実行するものである。

0009

この各プロセッサ1は、指定されたサイズを持つ作業領域10と、配列Bを分割することで生成される分割配列B11と、配列Aを分割することで生成される分割配列A12と、分割配列A12を作業領域10のサイズで分割することで生成される分割配列単位A13と、作業領域10/分割配列A12に展開される分割配列単位A13を規定の他プロセッサ1の作業領域10/分割配列A12へ交互に転送する転送手段14と、作業領域10/分割配列A12に展開される分割配列単位A13と分割配列B11との配列演算を実行する演算手段15とを備える。

0010

図2ないし図7に従って、このように構成される本発明の動作について具体的に説明する。

0011

ここで、この具体例では、行列積演算を想定しており、第1番目のプロセッサ1(図中のIP=1)には、縦分割の分割配列単位A1/A2が初期展開されるとともに、縦分割の分割配列Bi1(i=1〜6)からなる分割配列B1が常駐展開され、第2番目のプロセッサ1(図中のIP=2)には、縦分割の分割配列単位A3/A4が初期展開されるとともに、縦分割の分割配列Bi2(i=1〜6)からなる分割配列B2が常駐展開され、第3番目のプロセッサ1(図中のIP=3)には、縦分割の分割配列単位A5/A6が初期展開されるとともに、縦分割の分割配列Bi3(i=1〜6)からなる分割配列B3が常駐展開されている。

0012

ここで、行列積演算の演算規則に従って、A1の列数とB1j(j=1〜3)の行数とは等しく、A2の列数とB2j(j=1〜3)の行数とは等しく、A3の列数とB3j(j=1〜3)の行数とは等しく、A4の列数とB4j(j=1〜3)の行数とは等しく、A5の列数とB5j(j=1〜3)の行数とは等しく、A6の列数とB6j(j=1〜3)の行数とは等しくなる。

0013

なお、この具体例では、配列Aを3台のプロセッサ1で可能な限り等分割し、これを更に作業領域10のサイズで可能な限り等分割することでA1〜A6を生成することを想定していることから、この2つの等分割が不可能である場合には、サイズ的には、「A1=A3=A5」で、「A2=A4」で、「A1≠A2≠A6」の関係がある。また、配列Bを3台のプロセッサ1で可能な限り等分割するとともに、A1〜A6の列数に応じて分割することでBij(i=1〜6,j=1〜3)を生成することを想定していることから、この等分割が不可能である場合には、サイズ的には、「B11=B12=B31=B32=B51=B52」で、「B21=B22=B41=B42」で、「B13=B33=B53」で、「B23=B43」で、「B61=B62」で、「B11≠B21≠B13≠B23≠B61≠B63」の関係がある。

0014

このようにして、図2上段のように分割配列B/分割配列単位Aが初期配置されると、各プロセッサ1の演算手段15は、分割配列Bと、分割配列Aの第1段目に展開される分割配列単位Aとの行列積演算に従い、図2の上段に示すハッチング部分を行列積演算することで、行列積演算値「A1×B11,A3×B32,A5×B53」を算出する。

0015

続いて、各プロセッサ1の転送手段14は、演算の終了した分割配列単位Aを循環先となる他プロセッサ1の作業領域10(図中では配列Wで記述)に転送することで、図2下段に示すように、各々の作業領域10に「A5,A1,A3」を展開する。

0016

続いて、各プロセッサ1の演算手段15は、分割配列Bと、作業領域10に展開される分割配列単位Aとの行列積演算に従い、図2の下段に示すハッチング部分を行列積演算することで、行列積演算値「A5×B51,A1×B12,A3×B33」を算出する。

0017

続いて、各プロセッサ1の転送手段14は、演算の終了した分割配列単位Aを循環先となる他プロセッサ1の分割配列Aに転送することで、図3の上段に示すように、各々の分配配列Aの第1段目に「A3,A5,A1」を展開する。

0018

続いて、各プロセッサ1の演算手段15は、分割配列Bと、分割配列Aの第1段目に展開される分割配列単位Aとの行列積演算に従い、図3の上段に示すハッチング部分を行列積演算することで、行列積演算値「A3×B31,A5×B52,A1×B13」を算出する。

0019

続いて、各プロセッサ1の転送手段14は、演算の終了した分割配列単位Aを循環先となる他プロセッサ1の作業領域10に転送することで、図3の下段に示すように、各々の作業領域10に「A1,A3,A5」を展開する。このようにして一巡した「A1,A3,A5」は、図4に示すように、同一プロセッサ1内の元の分割配列Aの第1段目に複写されることになる。

0020

続いて、各プロセッサ1の演算手段15は、分割配列Bと、分割配列Aの第2段目に展開される分割配列単位Aとの行列積演算に従い、図5の上段に示すハッチング部分を行列積演算することで、行列積演算値「A2×B21,A4×B42,A6×B63」を算出する。

0021

続いて、各プロセッサ1の転送手段14は、演算の終了した分割配列単位Aを循環先となる他プロセッサ1の作業領域10に転送することで、図5の下段に示すように、各々の作業領域10に「A6,A2,A4」を展開する。

0022

続いて、各プロセッサ1の演算手段15は、分割配列Bと、作業領域10に展開される分割配列単位Aとの行列積演算に従い、図5の下段に示すハッチング部分を行列積演算することで、行列積演算値「A6×B61,A2×B22,A4×B43」を算出する。

0023

続いて、各プロセッサ1の転送手段14は、演算の終了した分割配列単位Aを循環先となる他プロセッサ1の分割配列Aに転送することで、図6の上段に示すように、各々の分配配列Aの第2段目に「A4,A6,A2」を展開する。

0024

続いて、各プロセッサ1の演算手段15は、分割配列Bと、分割配列Aの第2段目に展開される分割配列単位Aとの行列積演算に従い、図6の上段に示すハッチング部分を行列積演算することで、行列積演算値「A4×B41,A6×B62,A2×B23」を算出する。

0025

続いて、各プロセッサ1の転送手段14は、演算の終了した分割配列単位Aを循環先となる他プロセッサ1の作業領域10に転送することで、図6の下段に示すように、各々の作業領域10に「A2,A4,A6」を展開する。このようにして一巡した「A2,A4,A6」は、図7に示すように、同一プロセッサ1内の元の分割配列Aの第2段目に複写されることになる。

0026

以上の処理に従って、配列Aと配列Bとの行列積演算が完了することになるが、この演算処理の高速化を図るために、図8に示すように、転送手段14は、演算手段15が分割配列Aの分割配列単位Aを用いて行列積演算を実行しているときには、その行列積演算と並行させて、その分割配列単位Aを他プロセッサの作業領域10へ転送し、演算手段15が作業領域10の分割配列単位Aを用いて配列演算を実行しているときには、その行列積演算と並行させて、その分割配列単位Aを他プロセッサの分割配列Aへ転送していくことが好ましい。

0027

このように、本発明では、複数のプロセッサを用いて配列Aと配列Bとの配列演算を実行するときにあって、交換対象となる配列部分と同じ大きさを持つ作業領域10を用意する必要がなくなって、任意サイズの小さな作業領域10を用意すれば足りることから、メモリ消費量を削減できるようになる。

0028

そして、この作業領域10のサイズは任意に指定できることから、本発明を用いることで、メモリ消費量の削減を優先するときには、作業領域10のメモリサイズを小さく設定し、処理速度を優先するときには、通信回数を削減しベクトル効率を高めるために、作業領域10のメモリサイズを大きく設定するというように、利用者プログラム希望する態様に従って配列演算を実行できるようになる。

0029

以下、行列Aと行列Bとを行列積演算することで行列Cを求める実施例に従って本発明を詳細に説明する。

0030

最初に、利用者プログラムが与える各パラメータの意味について説明する。ここで、NPは動作させるプロセッサ1の台数であって、システムが与えるものである。

0031

行列Aの行数をM、行列Aの列数をN、行列Bの行数をN、行列Bの列数をL、行列Cの行数をM、行列Cの列数をL、行列Aを含んでNPで割り切れる列数NRを持つM行×NR列の配列A、行列Bを含んでNPで割り切れる行数NR/列数LRを持つNR行×LR列の配列B、行列Cを含んでNPで割り切れる列数LRを持つM行×LR列の配列C、NPで割り切れる列数NBPEを持つM行×NBPE列の作業配列W、配列Aの列数NRをNPで分割した列数ND、配列B及び配列Cの列数LRをNPで分割した列数LD、作業配列Wの列数NBPEをNPで分割した列数NBLを定義する。ここで、作業配列Wが、図1に示した作業領域10に相当するものである。

0032

図9(a)に、行列A/配列Aに関しての各パラメータ値図9(b)に、行列B/配列Bに関しての各パラメータ値、図10(a)に、行列C/配列Cに関しての各パラメータ値、図10(b)に、作業配列Wに関しての各パラメータ値を図示する。なお、これらの図では「NP=3」を想定している。

0033

このように、行列A/行列B/行列C/作業配列Wをプロセッサ1の台数に応じて縦分割して各プロセッサ1に分割配置することになることから、列数NDは行列Aの分割幅となり、列数LDは行列B及び行列Cの分割幅となり、列数NBLは作業配列Wの分割幅となる。

0034

次に、以下に説明する処理フローで用いる各値の意味について説明する。NEPEは、行列Aがまたがるプロセッサ1の台数、LEPEは、行列B及び行列Cがまたがるプロセッサ1の台数、MODNPEは、行列Aがまたがる最後のプロセッサ1に展開される行列Aの列数、MODLPEは、行列B及び行列Cがまたがる最後のプロセッサ1に展開される行列B及び行列Cの列数、LOOPNは、配列Aの分割幅NDを作業配列Wの分割幅NBLで割った商、MODNは、配列Aの分割幅NDを作業配列Wの分割幅NBLで割った余り、LOOPNFは、行列Aがまたがる最後のプロセッサ1に展開される行列Aの列数MODNPEを作業配列Wの分割幅NBLで割った商、MODNFは、行列Aがまたがる最後のプロセッサ1に展開される行列Aの列数MODNPEを作業配列Wの分割幅NBLで割った余り、IPは、1から始まるプロセッサ1の識別番号である。

0035

すなわち、MODNPEは、図9(a)の例で説明するならば、第3番目のプロセッサ1に展開される行列Aの列数であり、MODLPEは、図9(b),図10(a)の例で説明するならば、第3番目のプロセッサ1に展開される行列B及び行列Cの列数であり、LOOPNは、図9(a)の例で説明するならば、列数NDが列数NBLを1つ包含することから“1”の値をとり、MODNは、図9(a)の例で説明するならば、LOOPNが“1”であることに対応して“ND−1×NBL”の値をとり、LOOPNFは、図9(a)の例で説明するならば、列数MODNPEが列数NBLを1つ包含することから“1”の値をとり、MODNFは、LOOPNFが“1”であることに対応して“MODNPE−1×NBL”の値をとる。

0036

ここで、行列Aが、プロセッサ台数と作業配列Wの分割幅NBLとにより、図9(a)のように縦分割されるときには、行列積演算の演算規則に従って、行列Bは、図9(b)に示すように、この分割形態同一形式に従って横分割されることになる。すなわち、分割される行列Aの列数と同じ分割形態に従って、行列Bの行数が分割されることになる。

0037

また、図2ないし図7で説明したように、各プロセッサ1に分割配置される行列Aの第1段目の小分割部分(NBLによる分割部分)に対して処理を行い、続いて第2段目の小分割部分に対して処理を行うという順序でもって巡回的に処理を行っていくことになることから、列数NDの行列A部分を持つプロセッサ1については、“LOOPN+1”が巡回予定回数となって、最後の巡回時に処理する列数がMODNとなり、列数MODNPEの行列A部分を持つプロセッサ1については、“LOOPNF+1”が巡回予定回数となって、その最後の巡回時に処理する列数がMODNFとなる。但し、「“LOOPNF+1”≦“LOOPN+1”」の関係式成立することから、最終的な巡回予定回数は、“LOOPN+1”である。

0038

次に、以下に説明する処理フローで用いる計算ブロック各表示値の意味について説明する。NXTは、プロセッサ1の台数に応じて分割された配列Aの各分割部分の先頭を指すポインタであり、“0”〜“NP−1”をとる。IOFは、プロセッサ1の台数に応じて分割された作業配列Wの各分割部分の先頭を指すポインタであり、“0”〜“(NP−1)×NBL”をとる。INNは、プロセッサ1の台数に応じて分割された配列Aの各分割部分が持つ各小分割部分(NBLによる分割部分)の先頭を指すポインタであり、“0”〜“LOOPN×NBL”をとる。IIOFは、配列Aの全体を指すポインタであり、“NXT×ND+INN”をとる。IPPCは、配列Bの縦方向演算対象領域番号であり、“1”〜“NP”をとる。MOFは、行列Bの縦方向の計算開始位置を指すポインタであり、“0”〜“(NP−1)×ND”をとる。

0039

図11(a)に、図9(a)を例とするNXT/INN/IIOFの値、図11(b)に、図9(b)を例とするIPPC/MOFの値、図12に、図10(b)を例とするIOFの値を図示する。

0040

図13ないし図18に、各プロセッサ1が行列Aと行列Bとを行列積演算することで行列Cを求めるときに実行する処理フローの一実施例を図示する。次に、これらの処理フローに従って本発明を詳細に説明する。

0041

プロセッサ1は、行列積演算の指示を受け取ると、図13ないし図17の処理フローに示すように、先ず最初に、ステップ1で、動作させるプロセッサ1の台数NPが奇数なのか偶数なのかを調べる。

0042

図8で説明したように、本発明では、分割配置される配列Aの行列部分と、分割配置される配列Bの行列部分との行列積演算を実行している間に、その演算中の配列A部分を循環先となる他プロセッサ1の作業配列Wへ転送していくとともに、作業配列Wに展開される配列Aの行列部分と、分割配置される配列Bの行列部分との行列積演算を実行している間に、その演算中の配列A部分を循環先となる他プロセッサ1の分割配置の配列Aへ転送していく構成を採る。

0043

図8(b)に示すように、この2つの転送処理ペアーとして見るならば、プロセッサ1の台数NPが偶数のときには、後述する具体例からも分かるように、このペアーの転送処理の終了時点で処理が完了するのに対して、プロセッサ1の台数NPが奇数のときには、図2ないし図7の具体例からも分かるように、このペアーの転送処理の半分の時点で処理が完了することになる。これから、このステップ1では、どの時点で処理を完了させるのか認識するために、プロセッサ1の台数NPが奇数なのか偶数なのかを調べるのである。

0044

続いて、ステップ2で、列数Nを列数NDで割った商に“1”を加えたものをNEPEに入れることで、行列Aがまたがるプロセッサ台数のNEPEを求める。続いて、ステップ3で、列数Nを列数NDで割った余りをMODNPEに入れることで、行列Aがまたがる最後のプロセッサ1に展開される行列Aの列数MODNPEを求める。

0045

続いて、ステップ4で、列数Lを列数LDで割った商に“1”を加えたものをLEPEに入れることで、行列B及び行列Cがまたがるプロセッサ台数のLEPEを求める。続いて、ステップ5で、列数Lを列数LDで割った余りをMODLPEに入れることで、行列B及び行列Cがまたがる最後のプロセッサ1に展開される行列B及び行列Cの列数MODLPEを求める。

0046

続いて、ステップ6で、列数NDを列数NBLで割った商をLOOPNに入れることで、巡回予定回数“LOOPN+1”を求めるのに必要となるLOOPNを求めるとともに、そのときの余りをMODNに入れることで、その最後の巡回時に処理する列数MODNを求める。

0047

続いて、ステップ7で、列数Nが列数NRに等しいか否かを判断して、等しくないことを判断するときには、ステップ8に進んで、列数MODNPEを列数NBLで割った商をLOOPNFに入れることで、巡回予定回数“LOOPNF+1”を求めるのに必要となるLOOPNFを求めるとともに、そのときの余りをMODNFに入れることで、その最後の巡回時に処理する列数MODNFを求める。一方、ステップ7で等しいことを判断するときには、ステップ8の処理を省略する。

0048

続いて、ステップ9で、作業配列Wの分割幅となる列数NBLを、作業配列Wの計算列数を格納するNBLWに格納する。なお、このNBLWについては上述していない。

0049

続いて、ステップ10で、行列B及び行列Cの分割幅となる列数LDを、行列B及び行列Cがまたがる最後のプロセッサ1に展開される行列B及び行列Cの列数を格納するLFNLPEに仮に入れる。なお、このLFNLPEについては上述していない。

0050

続いて、ステップ11で、列数MODLPEが“0”であるのか否かを判断して、“0”でないことを判断するときには、ステップ12に進んで、LFNLPEの内容をこのMODLPEに書き換える。一方、ステップ11で“0”であることを判断するときには、ステップ12の処理を省略する。このステップ10ないしステップ12の処理に従って、LFNLPEには、行列B及び行列Cがまたがる最後のプロセッサ1に展開される行列B及び行列Cの正確な列数が入ることになる。

0051

続いて、ステップ13で、行列Cの領域(1:M,1:LD)をクリアする。続いて、ステップ14で、巡回回数を表示する巡回カウンタIII に“0”を入れる。続いて、ステップ15で、巡回カウンタIII のカウント値を1つカウントアップする。この時点では、巡回カウンタIII のカウント値は“1”となる。なお、この巡回カウンタIII については上述していないが、図2ないし図7の左側部分に示す「III =1,2」は、この巡回カウンタIII のカウント値を示している。続いて、ステップ16で、配列Bの縦方向の演算対象領域番号を表示するIPPCに、初期値として自プロセッサ番号IPを入れる。

0052

続いて、ステップ17で、巡回カウンタIII のカウント値が巡回予定回数“LOOPN+1”に到達したのか否かを判断して、到達を判断するときには、ステップ18に進んで、最後の巡回時に処理する列数MODNを、作業配列Wの計算列数を格納するNBLWに格納する。続いて、ステップ19で、列数MODNが“0”であるのか否かを判断して、“0”であることを判断するときには、全処理を終了し、“0”でないことを判断するときには、次に説明するステップ20の処理に進む。一方、ステップ17で未到達を判断するときには、ステップ18/ステップ19の処理を省略する。

0053

続いて、ステップ20で、配列Aから作業配列Wへのデータ転送準備として、分割された配列Aの各分割部分が持つ各小分割部分(NBLによる分割部分)の先頭を指すポインタINNに、“(III−1)×NBL”を入れる。ここで、IIIは巡回カウンタIII のカウント値であり、この“(III−1)×NBL”は、現在行列積演算対象となっている小分割部分の先頭を指すことになる。このポインタINNの指す小分割部分のデータが転送対象となる。

0054

続いて、ステップ21で、転送回数を表示する転送回数カウンタIWに“−1”を入れる。続いて、ステップ22で、転送回数カウンタIWのカウント値を2つカウントアップする。この時点では、転送回数カウンタIWのカウント値は“1”となる。なお、この転送回数カウンタIWについては上述していないが、図2ないし図7の左側部分に示す「IW=1,3」は、この転送回数カウンタIWのカウント値を示している。

0055

続いて、ステップ23で、転送回数カウンタIWのカウント値が“1”であるのか否かを判断して、“1”でないことを判断するときは、ステップ24に進んで、後述するステップ35の処理に従って実行に入る作業配列Wから配列Aへのデータ転送終了を確認する。一方、ステップ23で“1”であることを判断するときは、初めて行列積演算に入ることを意味しているのでステップ24の処理を省略する。なお、ステップ23で、プロセッサ台数NPが“1”であることを判断するときにも、ステップ24の処理を省略することになる。

0056

続いて、ステップ25で、配列Aから作業配列Wへのデータ転送準備として、自プロセッサ番号IPがプロセッサ台数NPと一致するのか否かを判断する。すなわち、自プロセッサ番号IPが、最終のプロセッサ番号であるのか否かを判断するのである。

0057

このステップ25で、自プロセッサ番号IPが最終のプロセッサ番号であることを判断するときには、ステップ26に進み、配列Aのデータの転送先となるプロセッサ番号が循環先の“1”であることに対応して、分割された配列Aの各分割部分の先頭を指すポインタNXTに“0”を入れる。一方、自プロセッサ番号IPが最終のプロセッサ番号でないことを判断するときには、ステップ27に進み、配列Aのデータの転送先となるプロセッサ番号が自プロセッサ番号IPに“1”を加算したものであることに対応して、ポインタNXTに自プロセッサ番号IPを入れる。すなわち、プロセッサ番号は“1”から始まり、NXTは“0”から始まることを考慮して、ポインタNXTに自プロセッサ番号IPを入れるのである。

0058

このステップ26/ステップ27処理を終了すると、続いて、ステップ28で、配列Aから作業配列Wへのデータ転送準備として、転送先となる作業配列Wの格納場所を示すIOFに、“NXT×NBL”を入れる。

0059

このようにして、ステップ20で転送対象を設定し、ステップ25ないしステップ28で転送先を設定すると、続いて、ステップ29で、転送対象として設定したポインタINNの指す配列Aの小分割部分のデータを、転送先として設定したプロセッサ番号“NXT+1”のプロセッサ1の持つ作業配列Wへ転送する。すなわち、自分の持つ配列A部分(1:M,1+INN:NBLW+INN)のデータを、プロセッサ番号“NXT+1”のプロセッサ1の持つ作業配列W(1:M,1+IOF:NBLW+IOF)に転送するのである。

0060

続いて、ステップ30で、後述する図18の処理フローに従い、行列Bの縦方向の計算開始位置を指すポインタMOFと、演算対象となる行列Bの計算列数を表示するLDWと、演算対象となる行列Aの計算列数及び行列Bの計算行数を表示するNDWとを設定する。なお、このLDW/NDWについては上述していない。

0061

このステップ30での設定処理が終了すると、ステップ29でのデータ転送処理と並行して、続いて、ステップ31で、このステップ30で設定したMOF/LDW/NDWを使い、巡回カウンタIII のカウント値の指す配列A部分のデータの行列積演算を実行する。すなわち、自分の持つ配列A部分(1:M,1+INN:NDW+INN)のデータと、自分の持つ配列B部分(1+MOF+INN:NDW+MOF+INN,1:LDW)のデータとの行列積演算を実行するのである。

0062

続いて、ステップ32で、プロセッサ台数NPが奇数で、転送回数カウンタIWのカウント値が“NP−1”以上になったのか否かを判断して、この条件が成立するときには、配列A部分のデータ転送が一巡したことを意味するので、巡回カウンタIII のカウント値を1つカウントアップして行われる次の巡回処理ベルに進むべく後述するステップ44に進む。

0063

一方、ステップ32での条件が成立しないときには、ステップ33に進んで、ステップ29のデータ転送処理が終了することを確認する。続いて、ステップ34で、作業配列Wから配列Aへのデータ転送準備として、配列Aの格納場所を示すポインタIIOFに、“NXT×ND+INN”を入れる。

0064

このようにして、ステップ34で転送先を設定すると、続いて、ステップ35で、転送対象となる作業配列Wのデータを、転送先として設定したプロセッサ番号“NXT+1”のプロセッサ1に展開されるポインタIIOFの指す配列A部分へ転送する。すなわち、自分の持つ作業配列W(1:M,1:NBLW)のデータを、プロセッサ番号“NXT+1”のプロセッサ1に展開されるポインタIIOFの指す配列A部分(1:M,1+IIOF:NBLW+IIOF)に転送するのである。

0065

続いて、ステップ36で、作業配列Wと配列Bとの行列積演算を行うために、配列Bの縦方向の演算対象領域番号IPPCの値を1つ減算する。続いて、ステップ37で、ステップ36で減算したIPPCの値が“0”となったか否かを判断して、“0”となることを判断するときには、続いて、ステップ38で、IPPCに最終のプロセッサ番号であるNPを入れる。一方、ステップ37で“0”でないことを判断するときには、ステップ38の処理を省略する。

0066

続いて、ステップ39で、後述する図18の処理フローに従い、行列Bの縦方向の計算開始位置を指すポインタMOFと、演算対象となる行列Bの計算列数を表示するLDWと、演算対象となる行列Aの計算列数及び行列Bの計算行数を表示するNDWとを設定する。

0067

このステップ39での設定処理が終了すると、ステップ35での転送処理と並行して、続いて、ステップ40で、このステップ39で設定したMOF/LDW/NDWを使い、作業配列W部分のデータの行列積演算を実行する。すなわち、自分の持つ作業配列W部分(1:M,1:NDW)のデータと、自分の持つ配列B部分(1+MOF+INN:NDW+MOF+INN,1:LDW)のデータとの行列積演算を実行するのである。

0068

続いて、ステップ41で、配列Aと配列Bとの行列積演算を行うために、配列Bの縦方向の演算対象領域番号IPPCの値を1つ減算する。続いて、ステップ42で、ステップ41で減算したIPPCの値が“0”となったか否かを判断して、“0”となることを判断するときには、続いて、ステップ43で、IPPCに最終のプロセッサ番号であるNPを入れる。一方、ステップ42で“0”でないことを判断するときには、ステップ43の処理を省略する。

0069

続いて、ステップ44で、転送回数カウンタIWの値に“2”を加算した“IW+2”の値が、プロセッサ台数NPより大きくなったか否かを判断して、大きくなっていないことを判断するときはステップ22に戻って、巡回カウンタIIIのカウント値を同一値に保持したままで行われる同一巡回処理レベルの処理を進めていく。

0070

一方、ステップ44で大きくなったことを判断するときには、ステップ45に進んで、プロセッサ台数NPが奇数であるのか偶数であるのかを判断する。このステップ45で、プロセッサ台数NPが奇数であることを判断するときには、ステップ46に進み、ステップ29のデータ転送処理の終了を確認する。すなわち、プロセッサ台数NPが奇数であるときには、ステップ32を介してステップ44に飛ぶことで、ステップ29のデータ転送処理の終了を確認していないことから、これを確認するのである。そして、続くステップ47で、配列Aのデータがシフトされたまま元に戻されておらず、作業配列W上に元の順序で格納されていることに対応して、同一プロセッサ1内で、作業配列Wのデータを配列A(1:M,1+INN:NBLW+INN)に複写する。一方、プロセッサ台数NPが偶数であることを判断するときには、ステップ48に進み、ステップ35のデータ転送処理の終了を確認する。

0071

このステップ47/ステップ48の処理を終了すると、続いて、ステップ49で、巡回カウンタIII のカウント値が、巡回予定回数“LOOPN+1”に到達したのか否かを判断して、到達を判断するときには、全処理を終了し、未到達を判断するときには、巡回カウンタIII のカウント値を1つカウントアップして行われる次の巡回処理レベルに進むべく、ステップ15に戻る。

0072

以上の処理に従って、利用者プログラムの指定する任意のサイズの作業領域10を使って、行列Aと行列Bとの行列積演算が実行されることになる。なお、以上の処理では説明を省略したが、行列積演算の結果は配列Cに格納され、これらの格納値累積加算されることで最終的な演算値が求められることになる。

0073

次に、図18の処理フローに従い、上述のステップ30/ステップ39で実行するMOF/LDW/NDWの設定処理について説明する。上述のステップ30/ステップ39の処理に入ると、図18の処理フローに示すように、先ず最初に、ステップ1で、行列Bの縦方向の計算開始位置を指すポインタMOFに、“(IPPC−1)×ND”を入れる。

0074

続いて、ステップ2で、演算対象となる行列Bの計算列数を表示するLDWに、初期値として列数LDを入れる。続いて、ステップ3で、「列数MODLPEが“0”でなく、かつ、(自プロセッサ番号IPがプロセッサ台数NPに等しい、または、自プロセッサ番号IPがプロセッサ数LEPEに等しい)」という条件が成立するか否かを判断して、この条件が成立するときには、ステップ4に進んで、計算列数LDWに列数LFNLPEを入れてからステップ9に進む。

0075

続いて、ステップ5で、「自プロセッサ番号IPがプロセッサ数LEPEより大きく、かつ、列数MODLPEが“0”でない」という条件が成立するか否かを判断して、この条件が成立するときには、ステップ6に進んで、計算列数LDWに列数“0”を入れてからステップ9に進む。

0076

続いて、ステップ7で、「自プロセッサ番号IPがプロセッサ数LEPE以上で、かつ、列数MODLPEが“0”で、かつ、列数Lと列数LRとが異なる」という条件が成立するか否かを判断して、この条件が成立するときには、ステップ8に進んで、計算列数LDWに列数“0”を入れてからステップ9に進む。

0077

続いて、ステップ9で、演算対象となる行列Aの計算列数及び行列Bの計算行数を表示するNDW(計算列数NDWと略記する)に、初期値として作業配列Wの計算列数NBLWを入れる。

0078

続いて、ステップ10で、「列数Nが列数NRに等しく、かつ、巡回カウンタIII のカウント値が巡回予定回数“LOOPN+1”に等しい」という条件が成立するか否かを判断して、この条件が成立するときには、ステップ11に進んで、計算列数NDWに列数MODNを入れて全処理を終了する。

0079

続いて、ステップ12で、「列数Nが列数NRと異なり、かつ、列数MODNPEが“0”でなく、かつ、演算対象領域番号IPPCがプロセッサ数NEPEより大きい」という条件が成立するか否かを判断して、この条件が成立するときには、ステップ13に進んで、計算列数LDWに列数“0”を入れる。

0080

続いて、ステップ14で、「列数Nが列数NRと異なり、かつ、列数MODNPEが“0”でなく、かつ、巡回カウンタIII のカウント値が巡回予定回数“LOOPN+1”に等しく、かつ、演算対象領域番号IPPCがプロセッサ数NEPEより小さく、かつ、列数MODNが“0”でない」という条件が成立するか否かを判断して、この条件が成立するときには、ステップ15に進んで、計算列数NDWに列数MODNを入れて全処理を終了する。

0081

続いて、ステップ16で、「列数Nが列数NRと異なり、かつ、列数MODNPEが“0”でなく、かつ、巡回カウンタIII のカウント値が巡回予定回数“LOOPNF+1”に等しく、かつ、(演算対象領域番号IPPCがプロセッサ台数NPに等しい、または、演算対象領域番号IPPCがプロセッサ数NEPEに等しい)」という条件が成立するか否かを判断して、この条件が成立するときには、ステップ17に進んで、計算列数NDWに列数MODNFを入れて全処理を終了する。

0082

続いて、ステップ18で、「列数Nが列数NRと異なり、かつ、列数MODNPEが“0”でなく、かつ、巡回カウンタIII のカウント値が巡回予定回数“LOOPNF+1”より大きく、かつ、(演算対象領域番号IPPCがプロセッサ台数NPに等しい、または、演算対象領域番号IPPCがプロセッサ数NEPEに等しい)」という条件が成立するか否かを判断して、この条件が成立するときには、ステップ19に進んで、計算列数LDWに列数“0”を入れて全処理を終了する。

0083

続いて、ステップ20で、「列数Nが列数NRと異なり、かつ、列数MODNPEが“0”で、かつ、演算対象領域番号IPPCがプロセッサ数NEPE以上)」という条件が成立するか否かを判断して、この条件が成立するときには、ステップ21に進んで、計算列数LDWに列数“0”を入れて全処理を終了する。

0084

続いて、ステップ22で、「列数Nが列数NRと異なり、かつ、列数MODNPEが“0”で、かつ、巡回カウンタIII のカウント値が巡回予定回数“LOOPN+1”に等しく、かつ、演算対象領域番号IPPCがプロセッサ数NEPEより小さい」という条件が成立するか否かを判断して、この条件が成立するときには、ステップ23に進んで、計算列数NDWに列数MODNを入れて全処理を終了する。このようにして、この図18の処理フローに従って、行列Bの縦方向の計算開始位置を指すポインタMOFに、“(IPPC−1)×ND”が設定され、演算対象となる行列Bの計算列数を表示するLDWに、列数LDか、列数LFNLPEか、列数“0”が設定され、演算対象となる行列Aの計算列数及び行列Bの計算行数を表示するNDWに、列数NBLか、列数MODNか、列数MODNFか、列数“0”が設定され、これらのMOF/LDW/NDWを使うことで、図13ないし図17の処理フローで実行する行列積演算のデータ範囲が正確に画定されることになる。

0085

図2ないし図7に、このように構成される本発明の動作の具体例を示した。この具体例では、プロセッサ台数NPが“3”という奇数もので開示したが、次に、プロセッサ台数NPが偶数の具体例について開示する。

0086

図19ないし図23に、プロセッサ台数NPが“4”という偶数の場合の動作具体例を図示する。なお、ここでは、図1で使用した用語を用いている。この具体例では、第1番目のプロセッサ1(図中のIP=1)には、分割配列単位A1/A2が初期展開されるとともに、分割配列Bi1(i=1〜8)からなる分割配列B1が常駐展開され、第2番目のプロセッサ1(図中のIP=2)には、分割配列単位A3/A4が初期展開されるとともに、分割配列Bi2(i=1〜8)からなる分割配列B2が常駐展開され、第3番目のプロセッサ1(図中のIP=3)には、分割配列単位A5/A6が初期展開されるとともに、分割配列Bi3(i=1〜8)からなる分割配列B3が常駐展開され、第4番目のプロセッサ1(図中のIP=4)には、分割配列単位A7/A8が初期展開されるとともに、分割配列Bi4(i=1〜8)からなる分割配列B4が常駐展開されていることを想定している。

0087

ここで、行列積演算の演算規則に従って、A1の列数とB1j(j=1〜4)の行数とは等しく、A2の列数とB2j(j=1〜4)の行数とは等しく、A3の列数とB3j(j=1〜4)の行数とは等しく、A4の列数とB4j(j=1〜4)の行数とは等しく、A5の列数とB5j(j=1〜4)の行数とは等しく、A6の列数とB6j(j=1〜4)の行数とは等しく、A7の列数とB7j(j=1〜4)の行数とは等しく、A8の列数とB8j(j=1〜4)の行数とは等しくなる。

0088

このようにして、図19の上段のように分割配列B/分割配列単位Aが初期配置されると、各プロセッサ1は、図13ないし図18の処理フローに従って、分割配列Bと、分割配列Aの第1段目に展開される分割配列単位Aとの行列積演算に従い、図19の上段に示すハッチング部分を行列積演算することで、行列積演算値「A1×B11,A3×B32,A5×B53、A7×B74」を算出する。

0089

このとき、各プロセッサ1は、図13ないし図18の処理フローに従って、この演算対象の分割配列単位Aを循環先となる他プロセッサ1の作業配列Wに並列的に転送していくことで、図19の下段に示すように、各々の作業配列Wに「A7,A1,A3,A5」を展開する。

0090

続いて、各プロセッサ1は、図13ないし図18の処理フローに従って、分割配列Bと、作業配列Wに展開される分割配列単位Aとの行列積演算に従い、図19の下段に示すハッチング部分を行列積演算することで、行列積演算値「A7×B71,A1×B12,A3×B33,A5×B54」を算出する。

0091

このとき、各プロセッサ1は、図13ないし図18の処理フローに従って、この演算対象の分割配列単位Aを循環先となる他プロセッサ1の分割配列Aに並列的に転送していくことで、図20の上段に示すように、各々の分配配列Aの第1段目に「A5,A7,A1,A3」を展開する。

0092

続いて、各プロセッサ1は、図13ないし図18の処理フローに従って、分割配列Bと、分割配列Aの第1段目に展開される分割配列単位Aとの行列積演算に従い、図20の上段に示すハッチング部分を行列積演算することで、行列積演算値「A5×B51,A7×B72,A1×B13、A3×B34」を算出する。

0093

このとき、各プロセッサ1は、図13ないし図18の処理フローに従って、この演算対象の分割配列単位Aを循環先となる他プロセッサ1の作業配列Aに並列的に転送していくことで、図20の下段に示すように、各々の作業配列Wに「A3,A5,A7,A1」を展開する。

0094

続いて、各プロセッサ1は、図13ないし図18の処理フローに従って、分割配列Bと、作業配列Wに展開される分割配列単位Aとの行列積演算に従い、図20の下段に示すハッチング部分を行列積演算することで、行列積演算値「A3×B31,A5×B52,A7×B73,A1×B14」を算出する。

0095

このとき、各プロセッサ1は、図13ないし図18の処理フローに従って、この演算対象の分割配列単位Aを循環先となる他プロセッサ1の分割配列Aに並列的に転送していくことで、図21の上段に示すように、各々の分配配列Aの第1段目に「A1,A3,A5,A7」を元のように展開する。ここまでが、巡回カウンタIII のカウント値が“1”の処理である。

0096

続いて、各プロセッサ1は、図13ないし図18の処理フローに従って、分割配列Bと、分割配列Aの第2段目に展開される分割配列単位Aとの行列積演算に従い、図21の上段に示すハッチング部分/*部分を行列積演算することで、行列積演算値「A2×B21,A4×B42,A6×B63、A8×B84」を算出する。なお、図中では、「B84」を「*」で表してある。

0097

このとき、各プロセッサ1は、図13ないし図18の処理フローに従って、この演算対象の分割配列単位Aを循環先となる他プロセッサ1の作業配列Wに並列的に転送していくことで、図21の下段に示すように、各々の作業配列Wに「A8,A2,A4,A6」を展開する。

0098

続いて、各プロセッサ1は、図13ないし図18の処理フローに従って、分割配列Bと、作業配列Wに展開される分割配列単位Aとの行列積演算に従い、図21の下段に示すハッチング部分/*部分を行列積演算することで、行列積演算値「A8×B81,A2×B22,A4×B43,A6×B64」を算出する。なお、図中では、「B64」を「*」で表してある。

0099

このとき、各プロセッサ1は、図13ないし図18の処理フローに従って、この演算対象の分割配列単位Aを循環先となる他プロセッサ1の分割配列Aに並列的に転送していくことで、図22の上段に示すように、各々の分配配列Aの第2段目に「A6,A8,A2,A4」を展開する。

0100

続いて、各プロセッサ1は、図13ないし図18の処理フローに従って、分割配列Bと、分割配列Aの第2段目に展開される分割配列単位Aとの行列積演算に従い、図22の上段に示すハッチング部分/*部分を行列積演算することで、行列積演算値「A6×B61,A8×B82,A2×B23、A4×B44」を算出する。なお、図中では、「B44」を「*」で表してある。

0101

このとき、各プロセッサ1は、図13ないし図18の処理フローに従って、この演算対象の分割配列単位Aを循環先となる他プロセッサ1の作業配列Aに並列的に転送していくことで、図22の下段に示すように、各々の作業配列Wに「A4,A6,A8,A2」を展開する。

0102

続いて、各プロセッサ1は、図13ないし図18の処理フローに従って、分割配列Bと、作業配列Wに展開される分割配列単位Aとの行列積演算に従い、図22の下段に示すハッチング部分/*部分を行列積演算することで、行列積演算値「A4×B41,A6×B62,A8×B83,A2×B24」を算出する。なお、図中では、「B24」を「*」で表してある。

0103

このとき、各プロセッサ1は、図13ないし図18の処理フローに従って、この演算対象の分割配列単位Aを循環先となる他プロセッサ1の分割配列Aに並列的に転送していくことで、図23の上段に示すように、各々の分配配列Aの第2段目に「A2,A4,A6,A8」を元のように展開する。

0104

このようにして、配列Aと配列Bとの行列積演算が完了することになる。図示実施例について説明したが、本発明はこれに限定されるものではない。例えば、実施例では、行列積演算を例にして本発明を開示したが、本発明はこれに限られるものではなく他の配列演算に対してもそのまま適用できるのである。

発明の効果

0105

以上説明したように、本発明によれば、複数のプロセッサを用いて配列Aと配列Bとの配列演算を実行するときにあって、交換対象となる配列部分と同じ大きさを持つ作業領域を用意する必要がなくなって、任意サイズの小さな作業領域を用意すれば足りることから、メモリ消費量を削減できるようになる。

0106

そして、この作業領域のサイズは任意に指定できることから、本発明を用いることで、メモリ消費量の削減を優先するときには、作業領域のメモリサイズを小さく設定し、処理速度を優先するときには、通信回数を削減しベクトル効率を高めるために、作業領域のメモリサイズを大きく設定するというように、利用者プログラムの希望する態様に従って配列演算を実行できるようになる。

0107

そして、必要な部分だけの領域を参照する構成を採っていることから、同じ領域を0クリアすることなく繰り返し使用して配列演算を進めることができ、効率的な配列演算を実行できるようになる。

図面の簡単な説明

0108

図1本発明の原理構成図である。
図2本発明の処理の説明図である。
図3本発明の処理の説明図である。
図4本発明の処理の説明図である。
図5本発明の処理の説明図である。
図6本発明の処理の説明図である。
図7本発明の処理の説明図である。
図8本発明の処理の説明図である。
図9利用者が与えるパラメータの説明図である。
図10利用者が与えるパラメータの説明図である。
図11計算機ブロックの表示値の説明図である。
図12計算機ブロックの表示値の説明図である。
図13各プロセッサの実行する処理フローの一実施例である。
図14各プロセッサの実行する処理フローの一実施例である。
図15各プロセッサの実行する処理フローの一実施例である。
図16各プロセッサの実行する処理フローの一実施例である。
図17各プロセッサの実行する処理フローの一実施例である。
図18行列積の計算量の設定処理フローである。
図19本発明の処理の説明図である。
図20本発明の処理の説明図である。
図21本発明の処理の説明図である。
図22本発明の処理の説明図である。
図23本発明の処理の説明図である。
図24単一プロセッサ型計算機による配列演算の説明図である。
図25並列計算機による配列演算の説明図である。
図26並列計算機による配列演算の説明図である。
図27従来技術の説明図である。

--

0109

1プロセッサ
10 作業領域
11 分割配列B
12 分割配列A
13 分割配列単位A
14転送手段
15演算手段

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

  • 新妻弘崇の「 遅延メモリ行列を用いたotsu-gram」が 公開されました。( 2021/08/19)

    【課題】自然言語処理などで時系列データの特徴量として良く利用されるn-gramにおいてnを職人芸で調節しないといけない問題を解決し、自動的に適切な特徴が選択されるotsu-gramを提供する。【解決手... 詳細

  • 富士通株式会社の「 計算プログラム、計算方法及び計算装置」が 公開されました。( 2021/08/19)

    【課題】物体検知技術を利用した異常判定の精度を向上させること。【解決手段】計算装置は、対象物を撮影した動画データに含まれる複数フレーム画像それぞれについて、複数種類の特徴量それぞれの検出結果と複数フレ... 詳細

  • 中科寒武紀科技股▲分▼有限公司の「 データ処理装置及び関連製品」が 公開されました。( 2021/08/19)

    【課題】人工ニューラルネットワーク演算に関連した計算命令を提供するデータ処理装置及び関連製品を提供する。【解決手段】データ処理装置は、制御ユニット11aと実行ユニット12aとを備える。制御ユニット11... 詳細

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ