IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ▲騰▼▲訊▼科技(深▲セン▼)有限公司の特許一覧

特許7551223シストリックアレイに基づくデータ処理方法、計算装置、及びコンピュータプログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-06
(45)【発行日】2024-09-17
(54)【発明の名称】シストリックアレイに基づくデータ処理方法、計算装置、及びコンピュータプログラム
(51)【国際特許分類】
   G06F 15/173 20060101AFI20240909BHJP
【FI】
G06F15/173 660B
【請求項の数】 14
(21)【出願番号】P 2023547488
(86)(22)【出願日】2022-02-21
(65)【公表番号】
(43)【公表日】2024-02-07
(86)【国際出願番号】 CN2022077046
(87)【国際公開番号】W WO2022179472
(87)【国際公開日】2022-09-01
【審査請求日】2023-08-04
(31)【優先権主張番号】202110219814.4
(32)【優先日】2021-02-26
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】517392436
【氏名又は名称】▲騰▼▲訊▼科技(深▲セン▼)有限公司
【氏名又は名称原語表記】TENCENT TECHNOLOGY (SHENZHEN) COMPANY LIMITED
【住所又は居所原語表記】35/F,Tencent Building,Kejizhongyi Road,Midwest District of Hi-tech Park,Nanshan District, Shenzhen,Guangdong 518057,CHINA
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【弁理士】
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】于 ▲瀟▼宇
(72)【発明者】
【氏名】▲陳▼ ▲徳▼▲ウェイ▼
(72)【発明者】
【氏名】章 恒
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2015-056124(JP,A)
【文献】国際公開第2019/152451(WO,A1)
【文献】特表2021-508895(JP,A)
【文献】特開2020-077298(JP,A)
【文献】米国特許出願公開第2020/0150958(US,A1)
【文献】国際公開第2020/190807(WO,A1)
【文献】特開2021-082289(JP,A)
【文献】米国特許出願公開第2021/0150770(US,A1)
【文献】米国特許出願公開第2018/0165574(US,A1)
【文献】米国特許出願公開第2020/0175355(US,A1)
【文献】中国特許出願公開第110543934(CN,A)
【文献】中国特許出願公開第111506344(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/173
(57)【特許請求の範囲】
【請求項1】
計算装置が実行する、シストリックアレイに基づくデータ処理方法であって、
前記シストリックアレイの標準入力深度及び標準出力深度を決定するとともに、浅深度モデルのターゲット入力深度及びターゲット出力深度を決定するステップと、
前記ターゲット入力深度及び前記標準入力深度に基づいて、前記シストリックアレイ用の入力連結数量を決定するとともに、前記ターゲット出力深度及び前記標準出力深度に基づいて、前記シストリックアレイ用の出力連結数量を決定するステップと、
前記入力連結数量の入力データを生成し、前記入力連結数量分の入力データを互いに重なり合わないように前記シストリックアレイの入力バッファにバッチで入力し、前記シストリックアレイによって前記入力バッファ内の入力データを処理して、各入力データに対応する出力データを生成するステップであって、各入力データが前記ターゲット入力深度を有し、各出力データが前記ターゲット出力深度を有する、ステップと、
前記シストリックアレイの出力バッファが前記シストリックアレイから受信した出力データの数量が前記出力連結数量に達すると、前記出力バッファ内の前記出力連結数量分の出力データをバッチで出力するステップと、
を含むデータ処理方法。
【請求項2】
前記ターゲット入力深度及び前記標準入力深度に基づいて、前記シストリックアレイ用の入力連結数量を決定するとともに、前記ターゲット出力深度及び前記標準出力深度に基づいて、前記シストリックアレイ用の出力連結数量を決定するステップは、
前記標準入力深度と前記ターゲット入力深度との比を決定し、この比の整数部分を前記入力連結数量とするステップと、
前記標準出力深度と前記ターゲット出力深度との比を決定し、この比の整数部分を前記出力連結数量とするステップと、を含み、
前記入力連結数量及び/又は前記出力連結数量は、1より大きい整数である、
請求項1に記載のデータ処理方法。
【請求項3】
前記シストリックアレイは、計算ユニットアレイであり、前記計算ユニットアレイの行数及び列数は、それぞれ、前記標準入力深度及び前記標準出力深度に対応しており、
前記入力バッファの深度は前記標準入力深度に対応しており、前記出力バッファの深度は前記標準出力深度に対応している、
請求項1に記載のデータ処理方法。
【請求項4】
前記入力連結数量は1に等しく、前記出力連結数量は1より大きく、前記入力連結数量分の入力データを互いに重なり合わないように前記シストリックアレイの入力バッファにバッチで入力し、前記シストリックアレイによって前記入力バッファ内の入力データを処理して、各入力データに対応する出力データを生成するステップは、
前記シストリックアレイにおける各計算ユニットの計算パラメータを設定するステップと、
前記出力連結数量の入力データを1グループの入力データとするステップであって、該グループの入力データのうちの異なる入力データに対応する出力データは、前記シストリックアレイにおける互いに重ね合わない列集合に対応しており、かつ、前記出力バッファの互いに重ね合わないバッファ領域に対応している、ステップと、
前記入力バッファを介して、該グループの入力データを前記シストリックアレイに順番に提供することにより、前記シストリックアレイが、該グループの入力データのうちの1つの入力データを受信するたびに、該入力データに対応する計算ユニットの計算パラメータに基づいて、該入力データを処理し、該入力データに対応する出力データを取得するステップと、
該グループの入力データのうちの各入力データに対して、前記入力データに対応する出力データを、該出力データに対応するバッファ領域に出力するステップと、を含み、
前記出力バッファ内の前記出力連結数量分の出力データをバッチで出力するステップは、
該グループの入力データに対して、前記出力バッファによって、出力バッファの各バッファ領域における前記出力連結数量分の出力データを互いに重ね合わないようにバッチで出力するステップを含む、
請求項1に記載のデータ処理方法。
【請求項5】
前記該グループの入力データのうちの各入力データに対して、前記入力データに対応する出力データを、該出力データに対応するバッファ領域に出力するステップは、
各々の入力データに対して計算を行う際に、該グループの入力データのうち、計算対象の該入力データ以外の他の入力データに対応する出力データに対応するバッファ領域への書き込みを禁止するステップを含む、
請求項4に記載のデータ処理方法。
【請求項6】
前記入力連結数量は1より大きく、前記出力連結数量は1に等しく、前記入力連結数量分の入力データを互いに重なり合わないように前記シストリックアレイの入力バッファにバッチで入力し、前記シストリックアレイによって前記入力バッファ内の入力データを処理して、各入力データに対応する出力データを生成するステップは、
前記入力連結数量分の入力データを1グループの入力データとするステップであって、該グループの入力データのうちの異なる入力データは、前記シストリックアレイにおける互いに重ね合わない行集合に対応しており、該グループの入力データのうちの異なる入力データに対応する出力データは、いずれも、前記シストリックアレイにおける全ての列に対応している、ステップと、
前記入力バッファを介して、該グループの入力データを前記シストリックアレイに並列に提供するステップと、
該グループの入力データのうちの各入力データに対して順番に計算を行い、各々の入力データの計算プロセスにおいて、該入力データに対応する計算ユニットの計算パラメータを有効値に設定し、前記シストリックアレイにおける該入力データに対応する計算ユニット以外の計算ユニットの計算パラメータを0に設定するステップと、
各入力データに対応する出力データを出力バッファに順番に出力するステップと、を含む、
請求項1に記載のデータ処理方法。
【請求項7】
前記入力連結数量は1より大きく、前記出力連結数量は1より大きく、前記入力連結数量分の入力データを互いに重なり合わないように前記シストリックアレイの入力バッファにバッチで入力し、前記シストリックアレイによって前記入力バッファ内の入力データを処理して、各入力データに対応する出力データを生成するステップは、
前記入力連結数量及び前記出力連結数量に基づいて、総合連結数量を決定するステップと、
前記総合連結数量分の入力データを1グループの入力データとするステップと、
前記入力連結数量及び前記出力連結数量に基づいて、該グループの入力データを少なくとも1つのサブグループに分割するステップであって、各々のサブグループ内の各入力データは、前記シストリックアレイにおける互いに重ね合わない前記入力連結数量分の行集合に対応しており、該サブグループ内の異なる入力データに対応する出力データは、前記シストリックアレイにおける互いに重ね合わない列集合に対応しており、かつ、前記出力バッファの互いに重ね合わないバッファ領域に対応している、ステップと、を含む、
請求項1に記載のデータ処理方法。
【請求項8】
前記入力連結数量が前記出力連結数量に等しい場合、前記総合連結数量は前記入力連結数量であり、該グループの入力データに含まれるサブグループの数量は1であり、前記入力連結数量分の入力データを互いに重なり合わないように前記シストリックアレイの入力バッファにバッチで入力し、前記シストリックアレイによって前記入力バッファ内の入力データを処理して、各入力データに対応する出力データを生成するステップは、
該グループの入力データのサブグループに対して、前記入力バッファを介して、該サブグループ内の入力データを前記シストリックアレイに並列に提供するステップと、
該サブグループの計算に対して、該サブグループの入力データのうちの各入力データに対応する計算ユニットの計算パラメータを有効値に設定し、前記シストリックアレイにおける各入力データに対応する計算ユニット以外の残りの計算ユニットの計算パラメータをゼロに設定するステップと、
該サブグループ内の各入力データに対応する出力データを出力バッファに出力するステップと、をさらに含む、
請求項7に記載のデータ処理方法。
【請求項9】
前記入力連結数量が前記出力連結数量の1より大きい整数倍である場合、前記総合連結数量は前記入力連結数量であり、該グループの入力データに含まれる各々のサブグループ内の入力データの数量は前記出力連結数量であり、前記入力連結数量分の入力データを互いに重なり合わないように前記シストリックアレイの入力バッファにバッチで入力し、前記シストリックアレイによって前記入力バッファ内の入力データを処理して、各入力データに対応する出力データを生成するステップは、
前記入力バッファを介して、各々のサブグループ内の入力データを前記シストリックアレイに並列に提供するステップと、
各々のサブグループの計算に対して、該サブグループ内の各入力データに対応する計算ユニットの計算パラメータを有効値に設定し、前記シストリックアレイにおける該サブグループの入力データのうちの各入力データに対応する計算ユニット以外の残りの計算ユニットの計算パラメータをゼロに設定するステップと、
各々のサブグループに対応する出力データを出力バッファに順番に出力するステップと、をさらに含む、
請求項7に記載のデータ処理方法。
【請求項10】
前記入力連結数量が前記出力連結数量より大きいが、その整数倍ではない場合、前記総合連結数量は前記出力連結数量であり、該グループの入力データに含まれるサブグループの数量は1であり、前記入力連結数量分の入力データを互いに重なり合わないように前記シストリックアレイの入力バッファにバッチで入力し、前記シストリックアレイによって前記入力バッファ内の入力データを処理して、各入力データに対応する出力データを生成するステップは、
該グループの入力データに、ゼロで補完したN個の入力データを追加するステップであって、前記Nの値は、入力連結数量から出力連結数量を引いたものに等しい、ステップと、
前記入力バッファを介して、該グループの入力データを前記シストリックアレイに並列に提供するステップと、
該グループの入力データの計算に対して、該グループの入力データのうちの各入力データに対応する計算ユニットの計算パラメータを有効値に設定し、前記シストリックアレイにおける該グループの入力データのうちの各入力データに対応する計算ユニット以外の残りの計算ユニットの計算パラメータをゼロに設定するステップと、
該グループの入力データのうちの各入力データに対応する出力データを出力バッファに出力するステップと、をさらに含む、
請求項7に記載のデータ処理方法。
【請求項11】
前記出力連結数量が前記入力連結数量の1より大きい整数倍である場合、前記総合連結数量は前記出力連結数量であり、前記各々のサブグループの入力データには、前記入力連結数量の入力データが含まれ、前記入力連結数量分の入力データを互いに重なり合わないように前記シストリックアレイの入力バッファにバッチで入力し、前記シストリックアレイによって前記入力バッファ内の入力データを処理して、各入力データに対応する出力データを生成するステップは、
各々のサブグループ内の入力データの計算に対して、前記入力バッファを介して、該サブグループ内の入力データを前記シストリックアレイに並列に提供するステップと、
該サブグループ内の各入力データに対応する計算ユニットの計算パラメータを有効値に設定し、前記シストリックアレイにおける該サブグループ内の各入力データに対応する計算ユニット以外の残りの計算ユニットの計算パラメータをゼロに設定するステップと、
該グループの入力データに対応する出力データを出力バッファに出力するステップと、をさらに含み、
各々のサブグループ内の入力データに対して計算を行う際に、該サブグループに対応する出力データに対応するバッファ領域のみに対して書き込みを行うが、該サブグループ以外の他のサブグループに対応する出力データに対応するバッファ領域への書き込みを禁止する、
請求項7に記載のデータ処理方法。
【請求項12】
前記出力連結数量が前記入力連結数量より大きいが、その整数倍ではない場合、前記総合連結数量は前記入力連結数量であり、サブグループの数量は1であり、前記入力連結数量分の入力データを互いに重なり合わないように前記シストリックアレイの入力バッファにバッチで入力し、前記シストリックアレイによって前記入力バッファ内の入力データを処理して、各入力データに対応する出力データを生成するステップは、
前記入力バッファを介して、該グループの入力データを前記シストリックアレイに並列に提供するステップと、
該グループの入力データの計算に対して、該グループの入力データのうちの各入力データに対応する計算ユニットの計算パラメータを有効値に設定し、前記シストリックアレイにおける該グループの入力データのうちの各入力データに対応する計算ユニット以外の残りの計算ユニットの計算パラメータをゼロに設定するステップと、
該グループの入力データに対応する出力データを出力バッファに出力するステップと、をさらに含む、
請求項7に記載のデータ処理方法。
【請求項13】
計算装置であって、コントローラと、データ取得器と、シストリックアレイ、入力バッファと、出力バッファと、を含み、前記シストリックアレイは、計算ユニットアレイであり、
前記コントローラは、前記シストリックアレイの標準入力深度及び標準出力深度を決定するとともに、浅深度モデルのターゲット入力深度及びターゲット出力深度を決定し、
前記コントローラは、前記ターゲット入力深度及び前記標準入力深度に基づいて、前記シストリックアレイ用の入力連結数量を決定するとともに、前記ターゲット出力深度及び前記標準出力深度に基づいて、前記シストリックアレイ用の出力連結数量を決定し、
前記コントローラは、前記データ取得器を制御して、前記入力連結数量の入力データを取得して生成し、前記入力連結数量分の入力データを互いに重なり合わないように前記シストリックアレイの入力バッファにバッチで入力し、前記シストリックアレイを制御して、前記入力バッファ内の入力データを処理して、各入力データに対応する出力データを生成し、前記シストリックアレイの出力バッファが前記シストリックアレイから受信した出力データの数量が前記出力連結数量に達すると、出力バッファを制御して、前記出力連結数量分の出力データをバッチで出力し、各入力データが前記ターゲット入力深度を有し、各出力データが前記ターゲット出力深度を有する、
計算装置。
【請求項14】
コンピュータに、請求項1乃至12のいずれか1項に記載のデータ処理方法を実施させるコンピュータプログラム
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2021年2月26日に中国特許庁に提出された、出願番号が第202110219814.4号であり、発明の名称が「シストリックアレイに基づく浅深度モデルの計算最適化方法及び装置」である中国特許出願に基づく優先権を主張し、その全ての内容が、参照することにより本願に組み込まれている。
【0002】
本開示は、コンピュータ分野に関し、より具体的には、シストリックアレイに基づくデータ処理方法、装置、媒体、及びプログラム製品に関する。
【背景技術】
【0003】
データ処理分野において、多くのデータ処理プロセス、例えば、深層学習プロセスは、畳み込みニューラルネットワーク(CNN)によってデータ処理プロセスを行うことができ、大量の計算手順が必要であり、そのほとんどは積和演算である。
【0004】
シストリックアレイ構造は、現在、多くの積和演算プロセスを実現するために使用されている。シストリックアレイ構造は、各行と各列のノードに設置された計算ユニット(PEで表され、各々のPEには、積和演算器又は同類の計算デバイス、及び記憶ユニットが含まれる)を含み、その利点が、内部演算に関与するオペランド又は中間結果を高速な並列パイプライン方式で処理でき、即ち、各部分の入力データ(各行に入力されるデータ)及び各PEの計算結果に対してアレイ全体で簡単かつ効率的なシストリック伝達を実現できることにあるため、データ多重化を向上させ、オフチップデータの移動を低減させ、帯域幅の需要を低減させる効果を有する。したがって、単一又は複数の2次元シストリックアレイは、積和演算の計算コアとして、例えばTPUなどの人工知能(AI)プロセッサに大量に使用されている。
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記の問題を解決するために、本開示の実施例は、シストリックアレイに基づくデータ処理方法、装置、媒体、及びプログラム製品を提供する。
【課題を解決するための手段】
【0006】
本開示の一態様によれば、シストリックアレイに基づくデータ処理方法が提供されている。この方法は、前記シストリックアレイの標準入力深度及び標準出力深度を決定するとともに、浅深度モデルのターゲット入力深度及びターゲット出力深度を決定するステップと、前記ターゲット入力深度及び標準入力深度に基づいて、前記シストリックアレイ用の入力連結数量を決定するとともに、前記ターゲット出力深度及び標準出力深度に基づいて、前記シストリックアレイ用の出力連結数量を決定するステップと、前記入力連結数量の入力データを生成し、前記入力連結数量分の入力データを互いに重なり合わないように前記シストリックアレイの入力バッファにバッチで入力し、前記シストリックアレイによって前記入力バッファ内の入力データを処理して、各入力データに対応する出力データを生成するステップであって、各入力データが前記ターゲット入力深度を有し、各出力データが前記ターゲット出力深度を有する、ステップと、前記シストリックアレイの出力バッファが前記シストリックアレイから受信した出力データの数量が前記出力連結数量に達すると、前記出力バッファ内の前記出力連結数量分の出力データをバッチで出力するステップと、を含む。
【0007】
本開示の他の態様によれば、計算装置が提供されている。この計算装置は、コントローラと、データ取得器と、シストリックアレイ、入力バッファと、出力バッファと、を含んでもよい。前記コントローラは、前記シストリックアレイの標準入力深度及び標準出力深度を決定するとともに、浅深度モデルのターゲット入力深度及びターゲット出力深度を決定する。前記コントローラは、前記ターゲット入力深度及び標準入力深度に基づいて、前記シストリックアレイ用の入力連結数量を決定するとともに、前記ターゲット出力深度及び標準出力深度に基づいて、前記シストリックアレイ用の出力連結数量を決定する。前記コントローラは、前記データ取得器を制御して、前記入力連結数量の入力データを取得して生成し、前記入力連結数量分の入力データを互いに重なり合わないように前記シストリックアレイの入力バッファにバッチで入力し、前記シストリックアレイを制御して、前記入力バッファ内の入力データを処理して、各入力データに対応する出力データを生成し、前記シストリックアレイの出力バッファが前記シストリックアレイから受信した出力データの数量が前記出力連結数量に達すると、出力バッファを制御して、前記出力連結数量分の出力データをバッチで出力し、各入力データが前記ターゲット入力深度を有し、各出力データが前記ターゲット出力深度を有する。
【0008】
本開示の別の態様によれば、命令又はコードを記憶したコンピュータ可読記憶媒体が提供されている。前記命令又はコードは、プロセッサによって実行されると、上記のような計算装置のコントローラによる動作を実現させる。
【0009】
本開示の別の態様によれば、命令又はコードを有するコンピュータプログラム製品が提供されている。前記命令又はコードは、計算装置によって実行されると、上記データ処理方法を実施させる。
【0010】
本開示の実施例の構成をより明確に説明するために、以下に、実施例の説明に必要な図面を簡単に紹介する。以下の説明における図面は、本開示の例示的な実施例に過ぎない。
【図面の簡単な説明】
【0011】
図1】本開示の実施例によるシストリックアレイに基づく計算装置の構成の模式図を示す。
図2】本開示の実施例によるシストリックアレイに基づくデータ処理方法200の流れの模式図を示す。
図3図2に示す方法のステップの例示的な流れの模式図を示す。
図4A】1つの具体例を示す。
図4B】1つの具体例を示す。
図5図2に示す方法のステップの例示的な流れの模式図を示す。
図6】1つの具体例を示す。
図7図2に示す方法のステップの例示的な流れの模式図を示す。
図8A図7に示す流れの1つの場合、及びそれに対応する1つの具体例を示す。
図8B図7に示す流れの1つの場合、及びそれに対応する1つの具体例を示す。
図9A図7に示す流れの他の場合、及びそれに対応する他の具体例を示す。
図9B図7に示す流れの他の場合、及びそれに対応する他の具体例を示す。
図9C図7に示す流れの他の場合、及びそれに対応する他の具体例を示す。
図9D図7に示す流れの他の場合、及びそれに対応する他の具体例を示す。
図10A図7に示す流れの別の場合、及びそれに対応する別の具体例を示す。
図10B図7に示す流れの別の場合、及びそれに対応する別の具体例を示す。
図10C図7に示す流れの別の場合、及びそれに対応する別の具体例を示す。
図10D図7に示す流れの別の場合、及びそれに対応する別の具体例を示す。
【発明を実施するための形態】
【0012】
本開示の目的、構成、及びメリットをより明らかにするために、以下、図面を参照しながら、本開示による例示的な実施例を詳しく説明する。明らかなように、説明される実施例は、本開示の一部の実施例に過ぎず、本開示の全部の実施例ではない。理解すべきものとして、本開示は、ここで説明される例示的な実施例によって限定されない。
【0013】
本明細書及び図面において、基本的に同じ又は類似のステップ及び要素は、同じ又は類似の符号で表され、これらのステップ及び要素の繰り返し説明が省略される。また、本開示の説明において、「第1」、「第2」などの用語は、区別して説明するためのものに過ぎず、相対的な重要性又はランクを指示又は示唆するものと理解するわけにはいかない。
【0014】
深層学習(深層構造化学習又は階層化学習とも呼ばれる)は、人工ニューラルネットワークに基づくより広範な機械学習方法のファミリーの一部である。学習は、教師あり、半教師あり、又は教師なしであってもよい。
【0015】
前述したように、深層学習は、例えば、畳み込みニューラルネットワーク(CNN)によってデータ処理を行ってもよい。畳み込みニューラルネットワーク(CNN)は、主に、入力層、畳み込み層、活性化関数、プーリング層、全結合層、損失関数で構成され、中間の各々の層(例えば、畳み込み層、プーリング層)は、複数であってもよい。畳み込み層の計算では、データの大量の積和演算に関わる。このため、シストリックアレイ構造によって、畳み込み層の計算プロセスを実現することができる。注意すべきものとして、本開示のコンテキストでは、シストリックアレイ構造が畳み込み層の計算に適用される場合を例にして説明しているが、シストリックアレイ構造は、任意の行列計算にも適用可能である。
【0016】
本開示の実施例を詳しく説明するに先立って、本明細書で採用される用語の一部を簡単に紹介する。
【0017】
浅深度モデル(「浅い深度モデル」、「浅い深層モデル」とも呼ばれる)は、深層学習に使用される軽量モデルであり、入力データに基づいて出力データを生成するためのものであり、一般的に入力データ及び出力データの深度が小さい。この浅深度モデルの計算プロセスは、以下に説明するシストリックアレイに基づいて実現される。
【0018】
シストリックアレイは、行と列に並んだ複数の計算ユニットを有し、計算ユニットには、ニューラルネットワークの基本計算ユニットである行列乗算を実行するために、例えば乗算-累算器の計算素子(例えば、積和演算器で実現される)が含まれる。これらの計算ユニット同士を導線で接続し、計算ユニット内に必要なバッファを組み入れて計算ユニット外部のバッファに接続する。シストリックアレイは、心臓の収縮機能に基づいて名づけられ、血流のように、データがこれらの計算ユニットによって「ポンプ」される。
【0019】
図1は、本開示の実施例によるシストリックアレイに基づく計算装置100の構成の模式図を示す。
【0020】
図1に示すように、計算装置100は、コントローラ101と、データ取得器102と、シストリックアレイ103と、入力バッファ104と、出力バッファ105と、を含む。
【0021】
本開示の実施例では、説明の便宜上、図1において、コントローラ101を1つのみ示しているが、当業者が理解すべきものとして、コントローラは、該計算装置100の全ての動作を互いに協調して制御する複数の制御モジュールの総称であってもよい。ここでのコントローラ101は、グローバル制御のためのグローバルコントローラ、並びに、データ取得器、入力バッファ、出力バッファの動作を制御する様々なタイプの制御ロジック又は制御回路などのうちの1つ又は複数を指してもよく、計算ユニットにおける積和演算器の組み合わせを指してもよい。例えば、グローバルコントローラには、データ取得器102や入力バッファ104、出力バッファ105などに実行パラメータを提供するために、例えば命令解析及びパラメータ設定の機能が配置されてもよい。入力バッファ104に対応する制御ロジックは、バッファリングされた入力データをシストリックアレイ103に送信するように制御することができる。出力バッファに対応する制御ロジックは、シストリックアレイ103の出力データを出力バッファにバッファリングして、出力バッファから該出力データを出力するように制御することができる。
【0022】
シストリックアレイ103は、計算ユニットアレイであってもよく(以下ではシストリックアレイと交換して使われる場合もある)、標準入力深度及び標準出力深度を有してもよい。ここで、計算ユニットアレイの行数及び列数は、それぞれ、前記標準入力深度及び前記標準出力深度に対応している。言い換えれば、標準入力深度は計算ユニットアレイの行数であり、標準出力深度は計算ユニットアレイの列数である。いくつかの実施例において、前記計算ユニットアレイの行数及び列数は、それぞれ、前記標準入力深度及び前記標準出力深度に等しくてもよい。他のいくつかの実施例において、一部の行と列における計算ユニットを代替又は冗長とするために、前記計算ユニットアレイの行数及び列数は、それぞれ、前記標準入力深度及び前記標準出力深度より大きくてもよい。本開示はこれを限定しない。注意すべきものとして、異なる状況では、計算ユニットアレイの標準入力深度と標準出力深度が異なってもよい。例えば、計算ユニットアレイが含まれる異なるタイプのAIプロセッサは、16×32、32×32などの計算ユニットアレイを選択することができる。
【0023】
該計算ユニットアレイ(シストリックアレイ)103には、少なくとも1行の計算ユニットが含まれてもよく、各々の行の計算ユニットには、少なくとも2つの計算ユニット103aが含まれ、各々の行の計算ユニットのうちの隣接する2つの計算ユニット103aが接続される。
【0024】
入力バッファ104には、シストリックアレイによって計算する、データ取得器102からの少なくとも1つの入力データがバッファリングされる。入力バッファ104には、計算のための各計算パラメータがバッファリングされてもよい。該計算パラメータは、データ取得器102から、直接にシストリックアレイ103に提供されたり、入力バッファ104を介してシストリックアレイ103に提供されたりしてもよい。各入力データも深度を有してもよい(複数部分の入力データ、複数チャネルの入力データを含むとみなされてもよい)。また、入力バッファ104は、複数の(例えば、シストリックアレイの行数に等しい)サブ入力バッファ(示されていない)を含んでもよく、各々のサブ入力バッファは、シストリックアレイの1行における計算ユニットに1つの部分の入力データを提供するためのものである。例えば、ある入力データの深度がm(mは1以上の整数)である場合、該入力データは、m個の部分の入力データ又はm個のチャネルの入力データを含むとみなされてもよい。このm個の部分の入力データは、シストリックアレイに必要な入力フォーマット及びタイミングにしたがって、それぞれm個のサブ入力バッファにバッファリングされる。m個のサブ入力バッファは、シストリックアレイのタイミングにしたがって、m個の部分の入力データをシストリックアレイのm行にそれぞれ入力する。
【0025】
コントローラ101(例えば、入力バッファ104に対応する制御ロジック)は、入力バッファ104内の入力データを、それに対応する行の計算ユニット103aに入力するように制御することができる。ここで、各々の行における計算ユニット103aは、受信した各々の部分の入力データを、それに対応する行の計算ユニット103a内で伝送する。例えば、1行目1列目の計算ユニット103aの場合、1番目のサブ入力バッファからの1つの部分の入力データを受信すると、この部分の入力データを1行目2列目の計算ユニットに伝達し、シストリック的に順次伝達していく。隣接する行における1番目の計算ユニット103aが該入力データのうちのそれぞれの1つの部分の入力データを受信する時間は、1クロックずつずれている。
【0026】
シストリックアレイ103における各々の計算ユニット103aは、受信した1つの部分の入力データ、及びそれに対応する計算パラメータ(例えば、CNNモデルにおける畳み込みカーネルの重み係数)に対して計算を行うためのものである。シストリックアレイ103の列毎に、該列における各計算ユニット103aによる計算結果を重ね合わせる(即ち、累算する)(図中では下から上へ)ことにより、各列における最後(各列のm行目)の計算ユニット103aにおいて出力データを取得し、該列の出力データを出力バッファ105に出力する。注意すべきものとして、該計算パラメータは、必要に応じて更新してもよく、シストリックアレイの各計算ユニットが計算タスクを実行する際に、それに対応する計算ユニットによって使用されるだけでよい。例えば、シストリックアレイの設定方式に応じて、各入力データの計算に対して、各計算ユニットにおける計算パラメータは、計算ユニットに予め記憶されてもよく、あるいは、入力データのシストリック伝達とは同じクロック及び異なる方向(相互に垂直)で、計算中に各計算ユニットにシストリック的に伝達されてもよい。これはシストリックアレイの一般原理と同じである。
【0027】
同様に、出力バッファ105は、各々の列における最後の計算ユニット103aから出力された出力データをバッファリングするためのサブ出力バッファを複数含んでもよい。コントローラ101(例えば、出力バッファに対応する制御ロジック)は、出力バッファ105(又は複数のサブ出力バッファ)からこれらの出力データをバッチで出力し、例えば、後続の記憶装置に提供したり、出力バッファ105から入力バッファ104へデータを移動して後続の演算を用意したりするように制御することができる。
【0028】
本開示の実施例において、CNNモデルを例にすると、各々の計算ユニットに入力された各々の部分の入力データ、及び、提供された計算ユニットにおける畳み込みカーネルは、それぞれ、1つの2次元のデータ行列であってもよい。例えば、該CNNモデルを使用して画像処理プロセスを行い、かつ、畳み込みカーネルがCNNモデルにおける特徴重みである場合を例にすると、畳み込み計算を行う際に、入力データは画像特徴マップテンソル(Image feature map tensor;NHWCフォーマットで記憶され、ここで、Nはこの1バッチの画像の数量であり、Hは画像の垂直方向の画素数量であり、Wは水平方向の画素数量を表し、Cはチャネル数量を表す)である。即ち、各々の入力データは、画像から抽出された特徴データであり、垂直方向の画素数量H、水平方向の画素数量W、及びチャネル数量Cで表すことができる。該入力データ(深度C)の各々の部分の入力データは、1つの10(H)×10(W)のデータ行列であってもよく、即ち、該データ行列は、10行に分けられ、1行あたりに10個のデータ要素が含まれる。これに応じて、各々の畳み込みカーネルは、1つの3×3の重み行列であってもよく、即ち、該重み行列は、3行に分けられ、1行あたりに3つの重み要素が含まれ、各重み要素は、データ要素と乗算するための重み値である。説明すべきものとして、上記の入力データ及び畳み込みカーネルについて2次元データのみを例示しているが、実際の応用において、上記の入力データ及び畳み込みカーネルは、3次元データであってもよい。
【0029】
本開示の実施例に示される計算ユニットアレイにおいて、1行の計算ユニットのうちの各計算ユニットには、それぞれ、各自の計算パラメータが予め記憶されており、計算ユニットアレイ103は、計算を行う際に、1行の計算ユニットに対応する1つの部分の入力データをパイプライン(pipeline)方式で該行の計算ユニットのうちの各計算ユニットに順次入力し、各計算ユニットにおいて、それぞれ、該部分の入力データ及びそれに対応する計算パラメータに対して計算を行ってもよい。
【0030】
上記は、図1を参照して、本開示の実施例によるシストリックアレイに基づく計算装置100の構成の模式図及び一般的な計算プロセスを説明している。該計算装置100は、入力データに対して複数の深度の並列計算を実現できるため、例えば、畳み込み計算のような積和演算を速めることができる。
【0031】
シストリックアレイ構造に基づく計算プロセスにおいて、シストリックアレイ構造の利用効率、入力データを入力バッファに移動したり、シストリックアレイによって計算された出力データを、シストリックアレイに対応する出力バッファから取り出したりする移動効率は、計算プロセスでしばしば考慮される要素である。実際の応用では、異なるモデルによって入力データ深度及び出力データ深度が異なる可能性があり、一定の変動範囲がある。例えば、軽量モデル(浅深度モデル)の入力データ深度及び出力データ深度の値が小さく(浅深度モデルの入力深度及び浅深度モデルの出力深度と略称)、例えば、16、8などである。この場合、シストリックアレイの標準入力深度及び標準出力深度が例えば32であれば、図1を参照して説明したシストリックアレイに基づく計算プロセスによると、シストリックアレイの利用率が大幅に低下する。例えば、シストリックアレイの標準入力深度及び標準出力深度が全て32であり、浅深度モデルの入力深度及び出力深度が全て8である場合、32*32のシストリックアレイは、8行*8列のみの計算ユニットによる計算結果が有効である(残りの24行に入力された24個の部分の入力データを0で埋める)。このため、シストリックアレイにおける計算ユニットの利用効率が1/16に低減し、性能に大きな影響を与える。また、毎回、深度が8である1つの入力データのみがシストリックアレイに入力され、浅深度モデル(シストリックアレイに基づいて計算される)の8チャネルの出力データは出力バッファに書き込まれる際に並列度32で書き込まれるので、32個の部分の出力データを書き込むたびに、24個の部分の無効データがある。これにより、後続処理に出力バッファ内のデータを使用する必要がある場合、出力バッファからこの32個の部分の出力データが同時に取得される。このため、大量の無効データが移動されることになり、移動効率も低下する。浅深度モデルの計算プロセスに適用される場合、シストリックアレイ構造は、利用効率及びデータの移動効率が高くないことが多い。
【0032】
そこで、上記の問題を解決するために、本開示の実施例は、シストリックアレイに基づく浅深度モデルのデータ処理方法及び計算装置を提供する。本開示の実施例は、浅深度モデルのターゲット入力深度及びターゲット出力深度に基づいて、異なる入力データ及び/又は異なる出力データを連結することにより、異なる入力データを入力バッファに並列に入力し、さらに、異なる入力データをシストリックアレイに提供することができるとともに、異なる出力データを出力バッファからバッチで出力することができる。このため、入力/出力データの移動効率を向上させることができる。また、各行のデータが、隣接する計算ユニット間でシストリック的に伝達され、かつ、各列の計算ユニットによる計算結果が、隣接する計算ユニット間でシストリック的に伝達・累算されるため、シストリックアレイにおける大多数の計算ユニットが常に計算状態にあることが可能になる。そして、浅深度モデルの計算において、異なる入力データ、及びそれに対応する出力データが、異なる行集合及び列集合に対応する計算ユニットを使用することができるため、シストリックアレイの利用効率をより効果的に向上させることができるとともに、スループットの向上及び演算遅延の低減が可能になり、さらに総所有コスト(TCO:total cost of ownership;データセンタの運営コストを評価するためのものである)を低減させる。
【0033】
以下、図2-10Dを参照して、本開示の実施例によるシストリックアレイに基づく浅深度モデルのデータ処理方法及び装置を説明する。
【0034】
図2は、本開示の実施例によるシストリックアレイに基づく浅深度モデルのデータ処理方法200の流れの模式図を示す。データ処理方法200は、例えば、計算装置100に適用されるが、これに限定されない。
【0035】
図2に示すように、ステップS210では、シストリックアレイの標準入力深度及び標準出力深度を決定するとともに、浅深度モデルのターゲット入力深度及びターゲット出力深度を決定する。
【0036】
前述したように、シストリックアレイは、計算ユニットアレイであってもよく、計算ユニットアレイの行数及び列数は、それぞれ、前記標準入力深度及び前記標準出力深度に対応してもよい。いくつかの実施例において、前記計算ユニットアレイの行数及び列数は、それぞれ、前記標準入力深度及び前記標準出力深度に等しくてもよい。他のいくつかの実施例において、一部の行と列における計算ユニットを代替又は冗長とするために、前記計算ユニットアレイの行数及び列数は、それぞれ、前記標準入力深度及び前記標準出力深度より大きくてもよい。本開示は、以下で、計算ユニットアレイの行及び列がそれぞれ標準入力深度及び標準出力深度に等しい場合を例にするが、等しくないことも実行可能である。本開示はこれを限定しない。
【0037】
浅深度モデルは、入力深度がシストリックアレイの標準入力深度より小さいこと、出力深度がシストリックアレイの標準出力深度より小さいことのうちの少なくとも1つの条件を満たす深度モデルである。本開示のいくつかの実施例において、コンピュータデータ処理の実際な状況を考慮すると、通常、シストリックアレイの標準入力深度/出力深度が2のべき乗であり、かつ、浅深度モデルのターゲット入力深度及びターゲット出力深度もいずれも2のべき乗である。
【0038】
ただし、これは必須ではない。シストリックアレイの他の数値(即ち、2のべき乗ではない数値)の標準入力深度/出力深度、並びに、浅深度モデルの他の数値のターゲット入力深度及びターゲット出力深度も実行可能である。例えば、シストリックアレイの標準入力深度/出力深度は、それぞれ、48及び96であり、浅深度モデルのターゲット入力深度及びターゲット出力深度は、それぞれ、24及び32、あるいは、31及び42などの数値であってもよい。本開示はこれを限定しない。
【0039】
本明細書の以降の詳述では、説明の便宜上、例として、シストリックアレイに入力された1つの入力データ及びそれに対応する出力データの深度が全て2のべき乗である場合を説明する。ただし、他の場合も同様の原理に基づいている。
【0040】
ステップS220では、ターゲット入力深度及び標準入力深度に基づいて、シストリックアレイ用の入力連結数量を決定するとともに、ターゲット出力深度及び標準出力深度に基づいて、シストリックアレイ用の出力連結数量を決定する。ここで、入力連結数量及び/又は出力連結数量は、1より大きい整数である。
【0041】
いくつかの実施例において、ステップS220では、標準入力深度と前記ターゲット入力深度との比を決定し、この比の整数部分を入力連結数量としてもよい。これに類似して、ステップS220では、標準出力深度とターゲット出力深度との比を決定し、この比の整数部分を出力連結数量としてもよい。例えば、入力深度と出力深度との一致性を保証するために、シストリックアレイの標準入力深度と標準出力深度とが等しくてもよく(現在のAIプロセッサの大多数の場合)、例えば、いずれも32であり、浅深度モデルのターゲット入力深度及びターゲット出力深度が全て8である場合、入力連結数量が4であり、かつ、出力連結数量も4であると決定することができ、あるいは、浅深度モデルのターゲット入力深度が16であり、かつ、ターゲット出力深度が8である場合、入力連結数量が2であり、かつ、出力連結数量が4であると決定することができる。
【0042】
例として、浅深度モデルのターゲット入力深度が32であり、かつ、ターゲット出力深度が8である場合、入力連結数量が1であり、即ち、計算のために浅深度モデルに入力された各入力データの深度が32であり(即ち、32個のデータ入力チャネル)、かつ、出力連結数量が4であると決定することができる。あるいは、浅深度モデルのターゲット入力深度が8であり、かつ、ターゲット出力深度が32である場合、入力連結数量が4であり、かつ、出力連結数量が1であり、即ち、各入力データが浅深度モデルの計算を経た後に出力された出力データの深度が32である(即ち、32個のデータ出力チャネル)と決定することができる。
【0043】
また、浅深度モデルのターゲット入力深度及びターゲット出力深度が2のべき乗ではない場合、シストリックアレイの標準入力深度及び標準出力深度の値と、浅深度モデルのターゲット入力深度及びターゲット出力深度の値とに基づいて決定してもよい。例えば、標準入力深度及び標準出力深度がそれぞれ32及び32であり、かつ、ターゲット入力深度及びターゲット出力深度がそれぞれ15及び7である場合、入力連結数量が2であってもよく、かつ、出力連結数量が4であってもよい。シストリックアレイの残りの行と列における計算ユニットは、今回の計算に使用されない。即ち、シストリックアレイを、行が30であり、かつ、列が28であるアレイとみなせばよい。
【0044】
注意すべきものとして、入力連結数量又は出力連結数量が1より大きい場合、シストリックアレイの入力又は出力においてデータ連結を行って、本開示の実施例のシストリックアレイに基づく各計算動作を行うために、複数の入力データが存在することを保証する必要がある。
【0045】
一例では、1つのみの初期入力データ(1つの画像特徴マップテンソル(前述したようなNHWCフォーマット、N=1))が取得された場合、複数の入力データを取得するために、必要に応じて該初期入力データを水平方向H及び垂直方向Wに切り分けてもよい(tile)。切り分けられた各入力データの深度がターゲット入力深度より大きい場合、該切り分けられた入力データを深度方向にターゲット入力深度でセグメント化する(均等に分割できない場合、最後のセグメントで不足分の深度に対応するチャネルのデータを0で補完する)。また、各々の入力データに対して、深度方向にセグメント化することで、複数のセグメント化された入力データが取得された場合、セグメント化された入力データに対する複数のラウンドの演算を行ってもよい。また、後続の処理ユニットは、該複数のセグメント化された入力データに対応する複数の出力データの値を出力バッファから取得してから、複数の出力データの和を求めることにより、該入力データに対応する出力データの値を取得してもよい。
【0046】
一方、複数の初期入力データ(画像特徴マップテンソル(前述したようなNHWCフォーマット、Nは1より大きい整数))がバッチで取得された場合、複数の入力データを取得するために、各初期入力データ(画像特徴マップテンソル)それぞれを、シストリックアレイに入力する1つの入力データとしてもよい。そして、各々の入力データに対して、深度もターゲット入力深度より大きい場合、ターゲット入力深度の入力データを取得するために、該入力データをターゲット入力深度で再度セグメント化してもよい。
【0047】
ステップS230では、入力連結数量の入力データを生成し、入力連結数量分の入力データを互いに重なり合わないようにシストリックアレイの入力バッファにバッチで入力し、前記シストリックアレイによって前記入力バッファ内の入力データを処理して、各入力データに対応する出力データを生成し、シストリックアレイの出力バッファが前記シストリックアレイから受信した出力データの数量が前記出力連結数量に達すると、出力バッファ内の出力連結数量分の出力データをバッチで出力し、各入力データがターゲット入力深度を有し、各出力データが前記ターゲット出力深度を有する。
【0048】
例えば、ステップS230では、複数(入力連結数量)の入力データをシストリックアレイの入力バッファにバッチで提供し、さらに入力バッファによって、タイミングにしたがって、各入力データをシストリックアレイの異なる行集合に提供することができる。例えば、4つの入力データ(各入力データの深度は8)のうちの各入力データを入力バッファに入力して、シストリックアレイの異なる8行に提供することができる。
【0049】
例えば、出力連結数量が1より大きい整数である場合は、異なる時点でシストリックアレイから複数の出力データ、即ち出力連結数量の出力データを出力することができ、該出力連結数量の出力データをシストリックアレイの出力バッファにバッファリングすることができ、さらに、出力バッファから該出力連結数量の出力データをバッチで取得することができるということを示す。例えば、シストリックアレイの4つの8列出力出力データ(各出力データの深度は8)を出力バッファに書き込み、その後、出力バッファからこの4つの出力データを一括して読み出すことができる。
【0050】
図2を参照して説明したシストリックアレイに基づくデータ処理方法によれば、浅深度モデルに対して、複数の入力データ(同じ深度を有する)を、他の装置から入力バッファへバッチで移動して、入力バッファを介して共同でシストリックアレイの入力とすることができるため、入力データの移動効率を向上させることができる。また、複数の出力データ(同じ深度を有する)を出力バッファにバッファリングすることができ、出力バッファから複数の出力データをバッチで出力することができるため、出力データの移動効率を向上させることもできる。
【0051】
以下、図3-4Bを参照して、本開示の実施例によるシストリックアレイに基づく浅深度モデルのデータ処理方法をさらに説明する。図3は、図2に示す方法200のステップS230の具体的な流れの模式図を示す。図4A-4Bは、図2に示す方法200の1つの具体例を示す。
【0052】
図3-4Bは、入力連結数量が1に等しく、かつ、出力連結数量が1より大きい場合に対応している。この場合、方法のステップS230は、以下のステップを含むように実施されてもよい。
【0053】
ステップS310では、シストリックアレイにおける各計算ユニットの計算パラメータを設定する。
【0054】
例えば、各計算ユニットの計算パラメータを設定することは、各計算ユニットでの計算を行うために、各入力データの計算プロセスの前に、各計算ユニットに必要な計算パラメータを予め記憶したり、各入力データの計算プロセスにおいて、入力データの伝達プロセスに使用されるクロックに基づいて、シストリック的に計算パラメータを各計算ユニットに順次提供したりすることを含んでもよい。
【0055】
例えば、シストリックアレイがCNNモデルにおける畳み込み層の計算に使用できるため、計算ユニットには、例えば、畳み込みカーネルである計算パラメータが含まれてもよく、計算ユニットにおける畳み込みカーネル(例えば、前述したような3×3の重み行列)を設定してもよい。該実施例において、各計算ユニットの計算パラメータは、入力データ毎に決定される。これを後続のステップで説明する。
【0056】
ステップS320では、出力連結数量分の入力データを1グループの入力データとし、該グループの入力データのうちの異なる入力データに対応する出力データは、シストリックアレイにおける互いに重ね合わない列集合に対応しており、かつ、出力バッファの互いに重ね合わないバッファ領域に対応している。
【0057】
例えば、図4Aに示すように、シストリックアレイの標準入力/出力深度が全て32であり、かつ、浅深度モデルのターゲット入力深度が32であり、ターゲット出力深度が8である。これにより、入力連結数量が1であり、かつ、出力連結数量が4であると決定することができる。また、4つの入力データ(各入力データの深度は32)を生成して1グループの入力データとし、異なる時点で(順番に)入力バッファに入力し、さらにシストリックアレイの各行に提供する。1番目の入力データに対応する出力データ(即ち、シストリックアレイの計算を経たデータ)は、シストリックアレイの第1-8列から出力して(即ち、該第1-8列に対応)、出力バッファの1番目のバッファ領域にバッファリングされる。2番目の入力データに対応する出力データは、シストリックアレイの第9-16列から出力して(即ち、該第9-16列に対応)、出力バッファの2番目のバッファ領域にバッファリングされる。3番目の入力データに対応する出力データは、シストリックアレイの第17-24列から出力して(即ち、該第17-24列に対応)、出力バッファの3番目のバッファ領域にバッファリングされる。4番目の入力データに対応する出力データは、シストリックアレイの第25-32列から出力して(即ち、該第25-32列に対応)、出力バッファの4番目のバッファ領域にバッファリングされる。出力バッファの異なる領域は重なり合わない。さらに、前述したように、出力バッファは、複数のサブ出力バッファを含んでもよく、サブ出力バッファの数量は、シストリックアレイの列数に等しくてもよい。このため、シストリックアレイの各列集合内の各列における最後の計算ユニットから出力された出力データは、いずれも、列集合内の列数に等しい数量の複数のサブ出力バッファにバッファリングされる。この複数のサブ出力バッファは、前述した出力バッファの1つのバッファ領域に対応している。
【0058】
ステップS330では、入力バッファを介して、該グループの入力データをシストリックアレイに順番に提供することにより、シストリックアレイが、該グループの入力データのうちの1つの入力データを受信するたびに、該入力データに対応する計算ユニットの計算パラメータに基づいて、該入力データを処理し、該入力データに対応する出力データを取得する。
【0059】
例えば、該グループの入力データに4つの入力データが含まれるとする(各入力データの深度は32であり、それに対応する出力データの深度は8である)。図4Aに示すように、毎回、入力バッファに1つの入力データを提供し、さらに入力バッファを介して、シストリックアレイに該入力データを提供する(特定のタイミングにしたがって該入力データの複数部分(複数チャネル)の入力データをシストリック的にシストリックアレイにおける対応する各行に入力する)。シストリックアレイは、各入力データに対して、それに対応する出力データを出力する。少なくとも、入力バッファが1つの入力データをシストリックアレイに提供してから、他の入力データを入力バッファに入力する。
【0060】
ステップS340では、該グループの入力データのうちの各入力データに対して、入力データに対応する出力データを、該出力データに対応するバッファ領域に出力する。
【0061】
本実施例の場合、シストリックアレイの動作原理に基づき、入力バッファは、毎回の計算プロセスにおいて、シストリックアレイに1つの入力データ(例えば、深度は32である)を入力し、即ち、特定のタイミングにしたがって該入力データの例えば32個の部分の入力データをシストリックアレイの32行に入力し、各行における各計算ユニットは、いずれも、該行に入力された1つの部分の入力データと、計算パラメータとに基づいて計算を行い、同一の列における1つ前の行の計算ユニットによる計算結果と累算を行う。本実施例において、該入力データに対応する出力データの深度が小さいため(例えば、図4Aに示された出力データの深度は8である)、該入力データに対応する出力データを一部のみの列(例えば、8列)から出力すればよく、これらの列(例えば、8列)と、該入力データの深度に対応するシストリックアレイの行(例えば、32行)との交点における計算ユニットに、該入力データと相関する計算パラメータを設定する必要がある。例えば、計算パラメータを各計算ユニットに予め記憶したり、計算プロセスにおいてタイミングに従って各計算ユニットにシストリック的に提供したりする。もちろん、他の入力データの以前の計算結果に影響を与えずに、今回の計算に計算パラメータを提供できることを満たせれば、計算パラメータを提供するための他の方式があってもよい。本開示はこれを限定しない。
【0062】
同様に、他の各入力データに対しても、それぞれに対応する列集合(8列)と、該入力データの深度に対応するシストリックアレイの行(例えば、32行)との交点における計算ユニットに、該入力データと相関する計算パラメータを設定する必要がある。
【0063】
このため、本実施例では、各入力データに対して、特定の一部の計算ユニットにおける計算パラメータを設定する必要がある。例えば、1番目の入力データの場合、この特定の一部の計算ユニットは、第1-8列と第1-32行の交点における計算ユニットである。計算ユニットアレイ内の各計算ユニットにおける計算パラメータを設定してもよい。例えば、図4Aでは、第1-8列と第1-32行(第1領域Z1)の交点における計算ユニットに、1番目の入力データの計算に必要な計算パラメータを設定し、第9-16列と第1-32行(第2領域Z2)の交点における計算ユニットに、2番目の入力データの計算に必要な計算パラメータを設定し、第17-24列と第1-32行(第3領域Z3)の交点における計算ユニットに、3番目の入力データの計算に必要な計算パラメータを設定し、第25-32列と第1-32行(第4領域Z4)の交点における計算ユニットに、4番目の入力データの計算に必要な計算パラメータを設定する。
【0064】
しかし、シストリックアレイの動作原理を考慮すると、他の調整を行わないのであれば、各々の入力データがシストリックアレイに入力されると、計算ユニットアレイ内の各計算ユニットには、他の入力データの計算に必要な計算パラメータも設定されているため、該入力データ及びこれらの計算パラメータ(例えば、3番目の入力データ、及び、第9-16列の計算ユニットにおける、2番目の入力データのための計算パラメータ)に対して計算が行われる。これにより、該入力データに対応する出力データに対応する列集合以外の列から他の出力データが出力されて(例えば、3番目の入力データ、及び、第9-16列の計算ユニットにおける計算パラメータに対して計算が行われ、それに対応する出力データが第9-16列から出力されて)出力バッファにバッファリングされ、以前の入力データに対応する出力データが上書きされる。一方、後続の入力データが入力されると、出力バッファ内の、該入力データに対応する出力データも上書きされる。これは許されない。
【0065】
本開示の実施例において、この問題は、以下の方法によって解決することができる。即ち、各々の入力データに対して計算を行う際に、該グループの入力データのうち、計算対象の該入力データ以外の他の入力データに対応する出力データに対応するバッファ領域への書き込みを禁止する。例えば、コントローラによって、シストリックアレイの出力ポートによる出力を禁止してもよく(例えば、出力イネーブル信号を無効にする)、コントローラによって、出力バッファの一部の領域への書き込みを禁止してもよい(例えば、出力バッファのこれらの領域に対応する書き込みチャネルに対応するライトイネーブル信号を無効にする)。
【0066】
このように、複数の入力データに対応する各出力データを、出力データ同士が重ね合わなくて互いに影響を与えないように、出力バッファの異なるバッファ領域にバッファリングすることができる。
【0067】
ステップS350では、該グループの入力データに対して、出力バッファによって、出力バッファの各バッファ領域における出力連結数量分の出力データを互いに重ね合わないようにバッチで出力する。
【0068】
例えば、図4Aに示すように、4つの入力データに対応する4つの出力データがそれぞれ出力バッファの4つの重ね合わないバッファ領域に記憶され(各々のバッファ領域には、8つのサブ出力バッファが含まれる)、この4つの出力データが互いに重ね合わないように出力バッファから他の装置(例えば、メモリ又は入力バッファ)に移動される。
【0069】
図3-4Aを参照して説明した実施例において、出力バッファの各バッファ領域における出力連結数量の出力データを互いに重ね合わないようにバッチで出力することを実現するために、複数の入力データが存在することが前提となる。こうして初めて、バッチ出力のための複数の出力データが存在することが可能になる。例えば、該複数の入力データは、少なくとも1つのグループに分割されてもよく、各々のグループの入力データには、出力連結数量の入力データが含まれる。残りの入力データは、値がゼロである入力データと組み合わせて、1グループの入力データとして入力されてもよい。例えば、10個の入力データがあり、出力連結数量が4である場合、この10個の入力データを3つのグループに分け、上記で図3-4Aを参照して説明した方法をそれぞれ実行してもよい。3グループの入力データのうちの1グループには、値が0である2つの入力データが含まれる。
【0070】
一例では、1つのみの画像特徴マップテンソル(前述したようなNHWCフォーマット、N=1)が取得された場合、図4Bに示すように、複数の入力データを取得するために、この1つの画像特徴マップテンソルをH及びWの方向に切り分けてもよい。該テンソルの深度Cの値がターゲット入力深度(Dsで表す)に等しく、この例においてターゲット入力深度も標準入力深度である場合、各々の入力データに含まれる各部分の入力データ(各データ行列)は、シストリックアレイの各行にちょうど入力することができる。Cの値がDsより小さい場合、入力データの深度がDsになるように、各入力データに値が0である(Ds-C)個の部分の入力データを補足する必要がある。また、Cの値がDsより大きい場合(図4Bの場合)、各入力データをC方向にDsでさらにセグメント化して複数のセグメント化された入力データとする必要がある。また、深度がDs未満である残りの1つの入力データが存在する場合、この残りの1つの入力データに値が0である(Ds-(C-nDs))個(nは1以上)の部分の入力データ(データ行列)を補足する。また、各々の入力データに対して、C方向にセグメント化した場合、セグメント化された入力データに対して複数のラウンドの演算を行ってもよい。後続の処理ユニットは、該入力データからセグメント化した複数のセグメント化された入力データに対応する複数の出力データの値を出力バッファから取得してから、複数の出力データの和を求めることにより、該入力データに対応する出力データの値を取得してもよい。
【0071】
一方、複数の画像特徴マップテンソル(前述したようなNHWCフォーマット、Nは1より大きい整数)がバッチで取得された場合、各々の画像特徴マップテンソルを1つの入力データとしてもよい。同様に、該テンソルの深度Cの値とターゲット入力深度(Dsで表す)との大小関係に基づいて、各入力データの深度が全てDsになるように、さらに各入力データとしての各テンソルに対してさらなるセグメント化又は補足を行ってもよい。明らかに、該複数のテンソルに対応する複数の入力データは、少なくとも1グループの入力データに分割されてもよい(各々のグループには、出力連結数量の入力データが含まれる)。各グループの入力データについて、上記で図3を参照して説明した方法によってこれらの入力データに対して計算を行ってもよい。
【0072】
同様に、以下で説明する各実施例においても、複数の入力データの取得は、ここで説明されたのと類似してもよい。即ち、取得された1つの初期入力データに対して、水平及び垂直の方向の切り分け及び可能な深度方向のセグメント化を行ったり、バッチで取得された初期入力データのそれぞれを1つの入力データとしたりする。このため、以下では説明を繰り返さない。
【0073】
図3-4Bを参照して説明したシストリックアレイに基づく浅深度モデルのデータ処理方法によれば、入力連結数量が1に等しく、かつ、出力連結数量が1より大きい場合、1グループの入力データ(出力連結数量の入力データ)に対応する出力データを出力バッファからバッチで取り出すことができ、出力データの移動効率を向上させる。
【0074】
以下、図5-6を参照して、本開示の実施例によるシストリックアレイに基づく浅深度モデルのデータ処理方法をさらに説明する。図5は、図2に示す方法200のステップS230の具体的な流れの模式図を示す。図6は1つの具体例を示す。
【0075】
図5-6は、入力連結数量が1より大きく、かつ、出力連結数量が1に等しい場合に対応している。この場合、方法200のステップS230は、以下の各ステップを含んでもよい。
【0076】
ステップS510では、入力連結数量分の入力データを1グループの入力データとし、該グループの入力データのうちの異なる入力データは、シストリックアレイにおける互いに重ね合わない行集合に対応しており、該グループの入力データのうちの異なる入力データに対応する出力データは、いずれも、シストリックアレイにおける全ての列に対応している。
【0077】
任意選択的に、各入力データに対応する出力データは、シストリックアレイの全ての列から出力バッファに出力され、出力バッファの記憶空間には、1つの入力データに対応する出力データしか記憶できない場合、各入力データに対応する出力データが該出力バッファのバッファ領域全体に出力され、該出力バッファ内の現在の出力データが取り出されてから、次の入力データに対応する出力データが該出力バッファにバッファリングされる。あるいは、出力バッファの記憶空間が十分に大きくて複数の入力データに対応する出力データを記憶できる場合、各入力データに対して得られた出力データは、出力バッファにおいて、深度が連続するように配列してもよい。例えば、1番目の入力データに対応する出力データは、出力バッファにおいてアドレス0-7で指示されるバッファ領域を使用してもよく、番目の入力データに対応する出力データは、出力バッファにおいてアドレス8-15で指示されるバッファ領域を使用してもよく、このように類推する。
【0078】
例えば、図6に示すように、シストリックアレイの標準入力/出力深度が全て32であり、かつ、浅深度モデルのターゲット入力深度が8であり、ターゲット出力深度が32である。これにより、入力連結数量が4であり、かつ、出力連結数量が1であると決定することができる。また、4つの入力データ(各入力データの深度は8である)を生成し、1グループの入力データとして入力バッファに入力し、さらにシストリックアレイの異なる行集合に並列に提供する。例えば、1番目の入力データは、入力バッファを介して、シストリックアレイの第1-8行(即ち、該第1-8行で構成される行集合に対応)に提供され、2番目の入力データは、入力バッファを介して、シストリックアレイの第9-16行(即ち、該第9-16行で構成される行集合に対応)に提供され、3番目の入力データは、入力バッファを介して、シストリックアレイの第17-24行(即ち、該第17-24行で構成される行集合に対応)に提供され、4番目の入力データは、入力バッファを介して、シストリックアレイの第25-32行(即ち、該第25-32行で構成される行集合に対応)に提供される。また、この4つの入力データのうちの各入力データに対応する出力データ(即ち、シストリックアレイの計算を経たデータ)は、いずれも、シストリックアレイの第1-32列から出力されて、出力バッファのバッファ領域の全体又は少なくとも一部にバッファリングされてもよい(出力バッファの記憶空間に応じて)。さらに、前述したように、出力バッファは、複数のサブ出力バッファを含んでもよい。このため、シストリックアレイの各列における最後の計算ユニットから出力された出力データは、いずれも、複数のサブ出力バッファにバッファリングされる。この複数のサブ出力バッファは、前述した出力バッファのバッファ領域全体又は少なくとも一部のバッファ領域に対応している(出力バッファの記憶空間に応じて)。
【0079】
ステップS520では、入力バッファを介して、該グループの入力データを前記計算ユニットアレイに並列に提供する。ステップS530では、該グループの入力データのうちの各入力データに対して順番に計算を行い、各々の入力データの計算プロセスにおいて、該入力データに対応する計算ユニットの計算パラメータを有効値に設定し、前記シストリックアレイにおける該入力データに対応する計算ユニット以外の計算ユニットの計算パラメータを0に設定する。
【0080】
同様に、計算ユニットにおける計算パラメータを設定する方式は、対応する各計算ユニットに予め記憶したり、タイミングに従って各計算ユニットにシストリック的に提供したりすることを含んでもよい。
【0081】
例えば、前述したように、シストリックアレイは、計算プロセスにおいて、列方向に同一の列における計算ユニットによる計算結果を累算して出力する。このため、シストリックアレイに並列に提供された該グループの入力データ(深度は8)について、各々の入力データに対して計算を行うプロセスでは、該入力データに対応する行集合以外の行における計算ユニットの計算パラメータの値を0に設定する必要がある。これにより、該入力データは、それに対応する行集合における計算ユニットのみによる計算結果が有効値であり、他の計算ユニットによる計算結果が全て0である。このため、同一の列における計算結果を重ね合わせる際に、該列においてそれに対応する行集合における計算ユニットのみによる計算結果を重ね合わせる。さらに、同一の列における異なる入力データに対する計算結果を誤って重ね合わせることを避ける(例えば、各々の列における計算ユニットは、1回の計算プロセスにおいて、4つの入力データに対して計算を行うことが可能である。このように計算した結果は誤る)。これに基づき、該グループの入力データを入力するたびに、1つのみの入力データに対して計算を行ってもよい。例えば、図6では、まず、第1-8行の計算ユニットの計算パラメータを有効値に設定し、他の計算ユニットの計算パラメータの値を0にする。次に、1回目に該グループの入力データを並列に入力し、シストリックアレイの計算を経て、シストリックアレイの全ての列から、計算された、1番目の入力データ(深度は8)に対応する出力データ(深度は32)を出力する。続いて、第9-16行の計算ユニットの計算パラメータを有効値に設定し、他の計算ユニットの計算パラメータの値を0にする。次に、2回目に該グループの入力データを並列に入力し、シストリックアレイの計算を経て、シストリックアレイの全ての列から、計算された、2番目の入力データ(深度は8)に対応する出力データ(深度は32)を出力する。図6には、2つの入力データの場合のみが示されている。該グループの入力データのそれぞれに対応する出力データが全て出力されるまで、他の入力データに対して類似の操作を行う。
【0082】
例えば、図6に示すように、該グループの入力データ(4つの入力データ)を入力バッファに入力する(同時であっても、異なる時間であってもよい)。即ち、入力バッファには、該グループの入力データが同時にバッファリングされている。また、入力バッファは、所定のタイミングにしたがって(コントローラによって制御され、シストリックアレイの動作原理に基づく)、該グループの入力データをシストリックアレイに並列に提供することができる。例えば、1番目の入力データはシストリックアレイの第1-8行に提供され、2番目の入力データはシストリックアレイの第9-16行に提供され、3番目の入力データはシストリックアレイの第17-24行に提供され、4番目の入力データはシストリックアレイの第25-32行に提供される。
【0083】
ステップS540では、各入力データに対応する出力データを出力バッファに順番に出力する。
【0084】
例えば、図6に示すように、まず、1番目の入力データに対応する出力データを出力バッファのバッファ領域に出力し、少なくとも出力バッファが再び空いた(即ち、それにバッファリングされた出力データが取り出された)後、又は、残りの記憶空間が次の入力データに対応する出力データのバッファリングに十分である場合、2番目の入力データに対応する出力データを該出力バッファのバッファ領域全体又は少なくとも一部のバッファ領域に出力する(出力バッファの記憶空間に応じて)。
【0085】
注意すべきものとして、本開示の各実施例の具体的な説明では、方法の説明について、フローチャートを採用して各ステップを示しているが、これは、必ずしも、これらの方法を示された順序で行わなければならいとは限らず、交互に行ってもよい。限定ではなく例として、図5-6の実施例では、1番目の入力データの計算のための各計算ユニットの計算パラメータが設定された場合(第1-8行の計算ユニットの計算パラメータは有効値であり、残りの行の計算ユニットの計算パラメータは0である)、1番目の入力データに対する計算を実行することにより、1番目の入力データに対応する出力データを取得することができる。また、2番目の入力データの計算のための各計算ユニットの計算パラメータを設定し(第9-16行の計算ユニットの計算パラメータは有効値であり、残りの行の計算ユニットの計算パラメータは0である)、次に、2番目の入力データに対して計算を行うことにより、2番目の入力データに対応する出力データを取得することができる。このように類推する。このため、本開示の発明の原理に基づいて各ステップの実行順序を柔軟に調整してもよい。
【0086】
図5-6を参照して説明したシストリックアレイに基づく浅深度モデルのデータ処理方法によれば、入力連結数量が1より大きく、かつ、出力連結数量が1に等しい場合、1グループの入力データ(入力連結数量の入力データ)を入力バッファにバッファリングして、シストリックアレイに並列に提供することができる。各入力データの計算でも、入力バッファからシストリックアレイへ提供される入力が同じであるため、入力データの移動が1回だけでよく(例えば、他のメモリから入力バッファへ移動する)、入力データの移動効率を向上させる。一方、本開示の実施例で説明されるようなデータ処理方法を採用しない場合、該グループの入力データに含まれる複数の入力データについて、該複数の入力データに対する、入力バッファへの複数回の移動プロセスが必要であるが(この場合、シストリックアレイの標準入力深度に対する各入力データの深度の不足分に対応するチャネルのデータを0で補う)、計算パラメータを計算ユニットにロードするプロセスを1回のみ実行してもよい。上記のデータ処理方法を採用する場合、入力バッファへの移動プロセスを1回のみ必要とし、この場合に計算パラメータが計算ユニットに複数回ロードされる(各々の入力データに対応して1回ロードされる)が、計算パラメータのデータサイズが一般的に入力データのデータサイズよりはるかに小さく、計算パラメータのロードに必要な時間が入力データの移動に必要な時間よりはるかに小さいため、全体的にかかる時間の面では、依然として比較的に良い性能があり、移動効率を向上させる。
【0087】
以下、図7-10Dを参照して、本開示の実施例によるシストリックアレイに基づく浅深度モデルのデータ処理方法をさらに説明する。図7は、図2に示す方法のステップの例示的な流れの模式図を示す。図8A図8Bは、入力連結数量が出力連結数量に等しい場合の図7のデータ処理方法のより多い細部を示す。図9A図9Dは、入力連結数量が出力連結数量より大きい場合の図7のデータ処理方法のより多い細部を示す。図10A図10Dは、入力連結数量が出力連結数量より小さい場合の図7のデータ処理方法のより多い細部を示す。
【0088】
図7の実施例において、入力連結数量が1より大きく、かつ、出力連結数量が1より大きいため、前記データ処理方法200のステップS230は、以下の各ステップを含む。
【0089】
ステップS710では、入力連結数量及び出力連結数量に基づいて、総合連結数量を決定する。
【0090】
任意選択的に、以下で詳述するように、総合連結数量は、入力連結数量と出力連結数量の大小及び倍数の関係に基づいて、両者のうちの大きい値又は小さい値であってもよい。あるいは、入力連結数量が出力連結数量に等しい場合、該総合連結数量は、入力連結数量又は出力連結数量に等しい。
【0091】
ステップS720では、総合連結数量分の入力データを1グループの入力データとする。
【0092】
ステップS730では、入力連結数量及び出力連結数量に基づいて、該グループの入力データを少なくとも1つのサブグループに分割し、各々のサブグループ内の各入力データは、シストリックアレイにおける互いに重ね合わない入力連結数量分の行集合に対応しており、該サブグループ内の異なる入力データに対応する出力データは、シストリックアレイにおける互いに重ね合わない列集合に対応しており、かつ、出力バッファの互いに重ね合わないバッファ領域に対応している。
【0093】
任意選択的に、サブグループの数量は、1又は1より大きい整数であってもよい。各々のサブグループには、1つ又は複数の入力データが含まれてもよい。
【0094】
例えば、シストリックアレイの標準入力深度/標準出力深度が全て32であり、かつ、浅深度モデルのターゲット入力深度が16であり、ターゲット出力深度が8である。これにより、入力連結数量が2であり、かつ、出力連結数量が4であり、総合連結数量が4であると決定することができる。また、該グループの入力データに4つの入力データが含まれるが、入力連結数量が2であるため、1回にシストリックアレイに2つしかの入力データ(深度は16)を提供できない。そこで、この4つの入力データを2つのサブグループに分割し、1つのサブグループに2つの入力データが含まれ、毎回シストリックアレイに1つのサブグループの入力データを提供する。
【0095】
図8A図8Bは、入力連結数量が出力連結数量に等しい場合の図7のデータ処理方法のより多い細部を示す。図7の方法は、以下の各ステップをさらに含んでもよい。
【0096】
図8A図8Bにおいて、入力連結数量が出力連結数量に等しい(図中では4である)。この場合、1つのみのサブグループがあるとみなすことができ、各々のサブグループには、入力連結数量(出力連結数量)の入力データが含まれる。
【0097】
図8Aにおいて、ステップS810では、該グループの入力データのサブグループに対して、前記入力バッファを介して、該サブグループ内の入力データをシストリックアレイに並列に提供する。
【0098】
同様に、各サブグループの入力データは、前記計算ユニットアレイにおける互いに重ね合わない前記入力連結数量の行集合に対応しており、該グループの入力データのうちの異なる入力データに対応する出力データは、前記計算ユニットアレイにおける互いに重ね合わない列集合に対応しており、かつ、前記出力バッファの互いに重ね合わないバッファ領域に対応している。
【0099】
例えば、図8Bに示すように、シストリックアレイの標準入力深度及び標準出力深度が全て32であり、かつ、浅深度モデルのターゲット入力深度が8であり、ターゲット出力深度が8である。これにより、入力連結数量が4であり、かつ、出力連結数量も4であると決定することができる。また、4つの入力データ(各入力データの深度は8である)を1グループの入力データとして入力バッファに入力し、さらにシストリックアレイの異なる行集合に並列に提供する。また、該グループの入力データのそれぞれに対応する出力データもシストリックアレイの異なる列集合から出力される。例えば、1番目の入力データは、入力バッファを介して、シストリックアレイの第1-8行(即ち、該第1-8行で構成される行集合に対応)に提供され、それに対応する出力データがシストリックアレイの第1-8列から出力され、2番目の入力データは、入力バッファを介して、シストリックアレイの第16行(即ち、該第9-16行で構成される行集合に対応)に提供され、それに対応する出力データがシストリックアレイの第9-16列から出力され、3番目の入力データは、入力バッファを介して、シストリックアレイの第17-24行(即ち、該第17-24行で構成される行集合に対応)に提供され、それに対応する出力データがシストリックアレイの第17-24列から出力され、4番目の入力データは、入力バッファを介して、シストリックアレイの第25-32行(即ち、該第25-32行で構成される行集合に対応)に提供され、それに対応する出力データがシストリックアレイの第25-32列から出力される。即ち、サブグループに含まれる4つの入力データに対応する行集合、及び、それに対応する4つの出力データに対応する列集合は、第1領域Z1(1-8,1-8)、第2領域Z2(9-169-16)、第3領域Z3(17-24,17-24)、及び第4領域Z4(25-32,25-32)で表すことができる。さらに、前述したように、出力バッファは、複数のサブ出力バッファを含んでもよい。このため、シストリックアレイの各列における最後の計算ユニットから出力された出力データは、いずれも、複数のサブ出力バッファにバッファリングされる。この複数のサブ出力バッファは、前述した出力バッファのバッファ領域の全体又は少なくとも一部に対応している(出力バッファの記憶空間に応じて)。
【0100】
ステップS820では、該サブグループの計算に対して、該サブグループの入力データのうちの各入力データに対応する計算ユニットの計算パラメータを有効値に設定し、シストリックアレイにおける各入力データに対応する計算ユニット以外の残りの計算ユニットの計算パラメータをゼロに設定する。
【0101】
即ち、シストリックアレイは、計算プロセスにおいて、列方向に同一の列における計算ユニットによる計算結果を累算して出力するので、シストリックアレイに並列に提供された各々のサブグループの入力データのうちの各入力データについて、該入力データに対する計算プロセスでは、出力データの正確性及び対応性を保証するために、その計算とは無関係な計算ユニットにおける計算パラメータをゼロに設定する必要がある。例えば、図8Bに示すように、4つの領域(Z1-Z4)は、図8Bの塗りつぶし部分に示す通りである。これらの塗りつぶし領域における対応する入力データに対して計算を行うための計算ユニットの計算パラメータをそれぞれ設定するとともに、各列における他の計算ユニットの計算パラメータを0に設定する(例えば、図中の空白枠領域)。
【0102】
ステップS830では、該サブグループ内の各入力データに対して、該入力データに対応する出力データを、該出力データに対応するバッファ領域に出力する。即ち、該サブグループの入力データに対応する出力データは、出力バッファにバッファリングされる。
【0103】
例えば、8Bに示すように、出力バッファには、該サブグループの入力データのうちの各入力データに対応する出力データ(4つの出力データ)がバッファリングされているため、この4つの出力データは、出力バッファからバッチで取り出すことができる。
【0104】
しかしながら、いくつかの実施例では、別の場合があり得る。即ち、入力連結数量が1より大きく、かつ、出力連結数量が1より大きく、かつ、出力連結数量が入力連結数量より大きい又は小さい。
【0105】
図9Aは、出力連結数量が入力連結数量の1より大きい整数倍である場合の図7のデータ処理方法のより多い細部を示す。
【0106】
この場合、総合連結数量は出力連結数量であり、各々のサブグループの入力データには、入力連結数量の入力データが含まれる。また、この場合に対して、図7を参照して説明したデータ処理方法は、以下のステップをさらに含んでもよい。
【0107】
ステップS910では、各々のサブグループ内の入力データの計算に対して、前記入力バッファを介して、該サブグループ内の入力データをシストリックアレイに並列に提供する。
【0108】
例えば、図9Bに示すように、シストリックアレイの標準入力深度及び標準出力深度が32である場合、浅深度モデルのターゲット入力深度が16であり、かつ、ターゲット出力深度が8であるため、入力連結数量は2であってもよいが、出力連結数量は4であり、総合連結数量は4である。生成された1グループの入力データ(4つの入力データ)は2つのサブグループに分割され、各々のサブグループには、2つの入力データが含まれる。各々のサブグループの入力データ(2つの入力データが含まれる)を前記入力バッファに順番に入力する。各々のサブグループの入力データは、シストリックアレイに並列に提供される。
【0109】
ステップS920では、各々のサブグループ内の入力データの計算に対して、該サブグループ内の各入力データに対応する計算ユニットの計算パラメータを有効値に設定し、シストリックアレイにおける該サブグループ内の各入力データに対応する計算ユニット以外の他の計算ユニットにおける計算パラメータをゼロに設定する
【0110】
例えば、図9Bに示すように、1番目のサブグループ(1番目の入力データ及び2番目の入力データが含まれる)に対応する行集合、及び、それに対応する出力データに対応する列集合は、それぞれ、第1領域Z1(1-16,1-8)、第2領域Z2(17-32,9-16)で表される。該1番目のサブグループに対して計算を行う前に、該行集合及び列集合における計算ユニットの計算パラメータを設定する必要がある。2番目のサブグループ(3番目の入力データ及び4番目の入力データが含まれる)に対応する行集合、及び、それに対応する出力データに対応する列集合は、それぞれ、第3領域Z3(1-16,17-24)、第4領域Z4(17-32,25-32)で表される。同様に、該2番目のサブグループに対して計算を行う前に、該行集合及び列集合における計算ユニットの計算パラメータを設定する必要がある。これらの行集合及び列集合がカバーする領域はいずれも重ね合わないため、1つの簡単な方法として、2つのサブグループの計算に必要な計算ユニットの計算パラメータを一緒に設定してもよい。また、前述したように、シストリックアレイの計算原理を考慮して、各々のサブグループの入力データに対して計算を行う際に、該サブグループの入力データの出力データに対応するバッファ領域のみに対して書き込みを行うが、該サブグループ以外の他のサブグループに対応する出力データに対応するバッファ領域への書き込みを禁止する。即ち、1番目のサブグループの入力データに対して計算を行う際に、2つのみの列集合(1-16列が含まれる)から、2つの入力データのそれぞれに対応する出力データを出力し、2番目のサブグループの入力データに対して計算を行う際に、2つのみの列集合(17-32列が含まれる)から、後の2つの入力データのそれぞれに対応する出力データを出力する。
【0111】
ステップS930では、該グループの入力データに対応する出力データを出力バッファに出力する。
【0112】
例えば、図9Bに示すように、2つのサブグループの入力データに対応する4つの出力データを、シストリックアレイの第1-32列から出力し(1番目のサブグループに対応する2つの出力データは、先に第1-16列から出力され、2番目のサブグループに対応する2つの出力データは、後で第17-32列から出力される)、即ち、出力バッファのバッファ領域の全体又は少なくとも一部に出力する。これにより、外部装置又は入力バッファは、出力バッファからこれらの出力データをバッチで取り出すことができる。
【0113】
図9Cは、前記出力連結数量が前記入力連結数量より大きいが、その整数倍ではない場合の図7のデータ処理方法のより多い細部を示す。この場合、総合連結数量は前記入力連結数量であり、サブグループの数量は1であり、即ち、生成された1グループの入力データには、1つのみのサブグループが含まれる。
【0114】
ステップS910’では、前記入力バッファを介して、該グループの入力データをシストリックアレイに並列に提供する。
【0115】
図9Dに示すように、シストリックアレイの標準入力深度及び標準出力深度が36及び64である場合、浅深度モデルのターゲット入力深度が12であり、かつ、ターゲット出力深度が16であるため、入力連結数量は3であってもよいが、出力連結数量は4であり、総合連結数量は3である。生成された1グループの入力データ(3つの入力データ)は、前記入力バッファにバッチで入力されることで、シストリックアレイに並列に提供される。
【0116】
ステップS920’では、該グループの入力データの計算に対して、該グループの入力データのうちの各入力データに対応する計算ユニットの計算パラメータを有効値に設定し、シストリックアレイにおける該グループの入力データのうちの各入力データに対応する計算ユニット以外の残りの計算ユニットの計算パラメータをゼロに設定する。
【0117】
例えば、図9Dに示すように、該グループの入力データ(1番目から3番目の入力データが含まれる)に対応する行集合、及び、それに対応する出力データに対応する列集合は、それぞれ、(1-12,1-16)、(13-24,17-32)、及び(25-36,33-48)で表される。該行集合及び列集合における計算ユニットの計算パラメータを有効値に設定するとともに、残りの計算ユニットの計算パラメータを0に設定してもよい(第49-64列における計算ユニットが含まれる)。また、これらの行集合及び列集合がカバーする領域はいずれも重ね合わないため、2つのサブグループの入力データの計算に必要な計算ユニットの計算パラメータを一緒に設定してもよい。
【0118】
ステップS930’では、該グループの入力データに対応する出力データを出力バッファに出力する。ここで、出力バッファのバッファ領域全体における少なくとも一部の値は、0である。
【0119】
例えば、図9Dに示すように、該グループの入力データに対応する3つの出力データをシストリックアレイの第1-48列から出力するとともに、第49-64列における計算ユニットから、計算された0を出力する。即ち、出力バッファ内の第1-48列に対応するバッファ領域には、有効データが記憶されているが、残りのバッファ領域には、0が記憶されている。これにより、出力バッファからこれらの出力データ及び0をバッチで取り出すことができる。
【0120】
上記は、図9A-9Dを参照して、入力連結数量が1より大きく、かつ、出力連結数量が1より大きく、かつ、出力連結数量が入力連結数量より大きい場合を説明している。
【0121】
以下では、主に、入力連結数量が1より大きく、かつ、出力連結数量が1より大きく、かつ、入力連結数量が出力連結数量より大きい場合を説明する。
【0122】
いくつかの場合に、入力連結数量は、出力連結数量の1より大きい整数倍である。
【0123】
図10A-10Bは、入力連結数量が出力連結数量の1より大きい整数倍である場合の図7のデータ処理方法のより多い細部を示す。この場合、総合連結数量は入力連結数量であり、各々のサブグループの入力データには、出力連結数量の入力データが含まれる。
【0124】
例えば、シストリックアレイの標準入力深度及び標準出力深度が32である場合、浅深度モデルのターゲット入力深度が8であり、かつ、ターゲット出力深度が16であるため、出力連結数量は2であってもよいが、入力連結数量は4であり、総合連結数量は4である。各々のサブグループの入力データには、2つの入力データが含まれる。
【0125】
図7の方法は、以下の各ステップをさらに含んでもよい。
【0126】
ステップS1010では、入力バッファを介して、各サブグループ内の入力データを前記計算ユニットアレイに並列に提供する。
【0127】
例えば、図10Bに示すように、4つの入力データを入力バッファにバッチで入力して、前記計算ユニットアレイに並列に提供する。
【0128】
ステップS1020では、各々のサブグループの計算に対して、該サブグループ内の各入力データに対応する計算ユニットの計算パラメータを有効値に設定し、シストリックアレイにおける該サブグループの入力データのうちの各入力データに対応する計算ユニット以外の残りの計算ユニットの計算パラメータをゼロに設定する。
【0129】
例えば、図10Bに示すように、1番目のサブグループ(1番目の入力データ及び2番目の入力データが含まれる)に対応する行集合、及び、それに対応する出力データに対応する列集合は、それぞれ、第1領域Z1(1-8,1-16)、第2領域Z2(9-16,17-32)、第3領域Z3(17-24,1-16)、及び第4領域Z4(25-32,17-32)で表される。1番目のサブグループの入力データに対して計算を行うための、第1領域Z1(1-8,1-16)の計算ユニットの計算パラメータを有効値に設定し、第2領域Z(9-16,17-32)の計算ユニットの計算パラメータを有効値に設定し、その他の計算ユニットの計算パラメータを0に設定する。2番目のサブグループの入力データに対して計算を行う際に、2つのサブグループの入力データが並列に入力されるが、第3領域Z3(17-24,1-16)の計算ユニットの計算パラメータを有効値に設定し、第4領域Z4(25-32,17-32)の計算ユニットの計算パラメータを有効値に設定し、その他の計算ユニットの計算パラメータを0に設定する。
【0130】
ステップS1030では、各サブグループに対応する出力データを出力バッファに順番に出力する。
【0131】
例えば、図10Bでは、1番目のサブグループの入力データの計算が完了すると、それに含まれる1番目の入力データ及び2番目の入力データのそれぞれに対応する出力データを、シストリックアレイの全ての列を介して出力バッファに出力し、出力バッファが再び空いた後、又は、残りの記憶空間が次の入力データに対応する出力データのバッファリングに十分である場合、後続の2番目のサブグループの入力データの計算結果を出力バッファに出力する。
【0132】
また、いくつかの場合に、入力連結数量は、出力連結数量より大きいが、その整数倍ではない。
【0133】
図10C-10Dは、入力連結数量が出力連結数量より大きいが、その整数倍ではない場合の図7のデータ処理方法のより多い細部を示す。この場合、総合連結数量は出力連結数量であり、サブグループの数量は1であり、即ち、生成された1グループの入力データには、1つのみのサブグループが含まれる。
【0134】
例えば、シストリックアレイの標準入力深度及び標準出力深度が48及び36である場合、浅深度モデルのターゲット入力深度が12であり、かつ、ターゲット出力深度が12であるため、出力連結数量は3であってもよいが、入力連結数量は4であり、総合連結数量は3である。該グループの入力データ及び該サブグループの入力データには、3つの入力データが含まれる。
【0135】
図10Cに示すように、図7の方法は、以下の各ステップをさらに含んでもよい。
【0136】
ステップS1010’では、該グループの入力データに、ゼロで補完したN個の入力データを追加し、前記Nの値は、入力連結数量から出力連結数量を引いたものに等しい。
【0137】
例えば、図10Dに示すように、シストリックアレイの行数に合うように1つの入力データ(深度は12)を追加する。
【0138】
ステップS1020’では、前記入力バッファを介して、該グループの入力データをシストリックアレイに並列に提供する。
【0139】
例えば、図10Dに示すように、4つの入力データをシストリックアレイに並列に提供する。
【0140】
ステップS1030’では、該グループの入力データに対して計算を行う前に、該グループの入力データのうちの各入力データに対応する計算ユニットの計算パラメータを有効値に設定し、シストリックアレイにおける該グループの入力データのうちの各入力データに対応する計算ユニット以外の残りの計算ユニットの計算パラメータをゼロに設定する。
【0141】
例えば、図10Dに示すように、該グループの入力データに対応する行集合、及び、それに対応する出力データに対応する列集合は、それぞれ、第1領域Z1(1-12,1-12)、第2領域Z2(13-24,13-24)、及び第3領域Z3(25-36,25-36)で表される。該グループに対して計算を行うための該行集合及び列集合における計算ユニットの計算パラメータを設定する必要がある。これらの行集合及び列集合の領域における計算ユニットの計算パラメータを有効値に設定するが、その他の計算ユニット(追加された0入力データに対応する第37-48行における計算ユニットが含まれる)の計算パラメータを0に設定する。
【0142】
ステップS1040’では、該グループの入力データのうちの各入力データに対応する出力データを出力バッファに出力する。
【0143】
例えば、図10Dに示すように、補足された0入力データは、それに対応する第37-48行における全ての計算ユニットによる計算結果が0であり、各列におけるその他の計算結果に影響を与えないため、3つの入力データに対応する出力データは、いずれも、出力バッファのバッファ領域の全体又は少なくとも一部にバッファリングされて、出力バッファからバッチで出力される。
【0144】
図7-10Dを参照して説明したシストリックアレイに基づく浅深度モデルのデータ処理方法によれば、入力連結数量が1より大きく、かつ、出力連結数量が1より大きい場合(両者が等しかったり等しくなかったりする様々な場合が含まれる)、1グループの入力データ(出力連結数量の入力データ)を入力バッファにバッファリングしてシストリックアレイに並列に提供することができ、シストリックアレイから出力された、該グループの入力データに対応する複数の出力データを出力バッファにバッファリングして出力バッファからバッチで出力することができるので、入力データ及び出力データの移動効率を向上させることができる。また、シストリックアレイは、1回の計算プロセスにおいて、該グループの入力データのうちの少なくとも2つの入力データに対して計算を行うことができ、図1を参照して説明した、1回の計算プロセスにおいて1つのみの入力データに対して計算を行う従来の方式に対して、計算効率、及び、シストリックアレイにおける計算ユニットの利用効率を向上させる。
【0145】
本開示の他の態様によれば、計算装置がさらに提供されている。この計算装置は、図1を参照して説明した計算装置100とは、アーキテクチャが基本的に同じである。
【0146】
図1に示すように、該計算装置100は、コントローラ101と、データ取得器102と、シストリックアレイ103と、入力バッファ104と、出力バッファ105と、を含む。
【0147】
本開示の実施例によれば、コントローラ101は、シストリックアレイ103の標準入力深度及び標準出力深度を決定するとともに、浅深度モデルのターゲット入力深度及びターゲット出力深度を決定する。次に、コントローラ101は、ターゲット入力深度及び標準入力深度に基づいて、シストリックアレイ用の入力連結数量を決定するとともに、ターゲット出力深度及び標準出力深度に基づいて、シストリックアレイ用の出力連結数量を決定する。ここで、入力連結数量及び/又は出力連結数量は、1より大きい整数である。コントローラ101は、データ取得器102を制御して、入力連結数量分の入力データを取得して生成し、入力連結数量の入力データを互いに重なり合わないようにシストリックアレイ103の入力バッファにバッチで入力し、前記入力バッファを制御して、前記入力連結数量の入力データをシストリックアレイ103に並列に提供し、シストリックアレイ103を制御して、前記入力バッファ内の入力データを処理して、各入力データに対応する出力データを生成し、シストリックアレイ103の出力バッファ105がシストリックアレイ103から受信した出力データの数量が前記出力連結数量に達すると、シストリックアレイ103の出力バッファ105を制御して、出力連結数量分の出力データを互いに重なり合わないように出力し、各入力データがターゲット入力深度を有し、各出力データが前記ターゲット出力深度を有する。
【0148】
本開示の実施例によれば、シストリックアレイ103は、計算ユニットアレイであり、該計算ユニットアレイの行数及び列数は、それぞれ、標準入力深度及び標準出力深度に対応している(等しい又はより多い)。入力バッファ104の深度は標準入力深度に対応しており、出力バッファ105の深度は標準出力深度に対応している(等しい又はより大きい)。
【0149】
本開示の実施例によれば、入力連結数量が1に等しく、出力連結数量が1より大きい場合、コントローラ101は、計算ユニットアレイにおける各計算ユニットに計算パラメータ(例えば、CNNモデルにおける畳み込みカーネル)を設定するように制御し、データ取得器102を制御して、出力連結数量分の入力データを1グループの入力データとし、該グループの入力データのうちの異なる入力データに対応する出力データは、計算ユニットアレイ103における互いに重ね合わない列集合に対応しており、かつ、出力バッファ105の互いに重ね合わないバッファ領域に対応している。コントローラ101は、データ取得器102を制御して該グループの入力データを入力バッファに順番に入力し、入力バッファ104を制御して該グループの入力データを計算ユニットアレイに順番に提供することにより、シストリックアレイが、該グループの入力データのうちの1つの入力データを受信するたびに、該入力データに対応する計算ユニットの計算パラメータに基づいて、該入力データを処理し、該入力データに対応する出力データを取得する。該グループの入力データのうちの各入力データに対して、コントローラ101は、計算ユニットアレイを制御して、入力データに対応する出力データを、それに対応する、出力バッファ内のバッファ領域に出力する。次に、該グループの入力データに対して、コントローラ101は、出力バッファ105を制御して、出力バッファ105の各バッファ領域における出力連結数量分の出力データを互いに重ね合わないようにバッチで出力する。
【0150】
本開示の実施例によれば、入力連結数量が1より大きく、かつ、出力連結数量が1に等しい場合、コントローラ101は、データ取得器102を制御して、入力連結数量分の入力データを1グループの入力データとすることができる。ここで、該グループの入力データのうちの異なる入力データは、計算ユニットアレイにおける互いに重ね合わない行集合に対応しており、該グループの入力データのうちの異なる入力データに対応する出力データは、いずれも、計算ユニットアレイにおける全ての列に対応しており、出力バッファのバッファ領域の全体又は少なくとも一部に対応している。コントローラ101は、データ取得器102を制御して、該グループの入力データを入力バッファ104に入力し、該グループの入力データのうちの各入力データの計算に必要な各計算ユニットの計算パラメータを各計算ユニットに順番に設定するように制御することができる。コントローラ101は、シストリックアレイを制御して、該グループの入力データのうちの各入力データに対して順番に計算を行い、各々の入力データの計算プロセスにおいて、該入力データに対応する計算ユニットの計算パラメータを有効値に設定し、前記計算ユニットアレイにおける該入力データに対応する計算ユニット以外の計算ユニットの計算パラメータを0に設定する。例えば、各々の入力データに対して、入力データに対応する行集合における計算ユニットの計算パラメータは有効値であるが、残りの計算ユニットの計算パラメータはゼロである。コントローラ101は、前記シストリックアレイを制御して、各入力データに対応する出力データを前記出力バッファに順番に出力する。例えば、コントローラ101は、前記入力バッファを制御して、前記入力連結数量の入力データを前記計算ユニットアレイ103に並列に提供し、該グループの入力データに対して、各入力データに対応する出力データを出力バッファのバッファ領域の全体又は少なくとも一部に順番に出力し(出力バッファの記憶空間に応じて)、出力バッファによって順番に出力する又はバッチで出力する(出力バッファの記憶空間に応じて)ように制御する。
【0151】
本開示の実施例によれば、前記入力連結数量が1より大きく、かつ、前記出力連結数量が1より大きい場合、コントローラ101は、前記入力連結数量及び前記出力連結数量に基づいて、総合連結数量を決定し、前記データ取得器102を制御して、総合連結数量分の入力データを1グループの入力データとし、前記データ取得器102を制御して、前記入力連結数量及び前記出力連結数量に基づいて、該グループの入力データを少なくとも1つのサブグループに分割することができる。ここで、各々のサブグループ内の各入力データは、前記計算ユニットアレイにおける互いに重ね合わない前記入力連結数量分の行集合に対応しており、該サブグループ内の異なる入力データに対応する出力データは、前記計算ユニットアレイにおける互いに重ね合わない列集合に対応しており、かつ、前記出力バッファ105の互いに重ね合わないバッファ領域に対応している。
【0152】
いくつかの実施形態において、入力連結数量が1より大きく、出力連結数量が1より大きく、かつ、前記入力連結数量が前記出力連結数量に等しい。この場合、総合連結数量は、前記入力連結数量又は前記出力連結数量であり、サブグループの数量は1である。コントローラ101は、該グループの入力データのサブグループに対して前記入力バッファ104を制御して、該サブグループ内の入力データを前記計算ユニットアレイ103に並列に提供し、該サブグループの計算に対して、該サブグループの入力データのうちの各入力データに対応する計算ユニットの計算パラメータを有効値に設定し、前記計算ユニットアレイ103における各入力データに対応する計算ユニット以外の残りの計算ユニットの計算パラメータをゼロに設定するように制御し、前記シストリックアレイを制御して、該サブグループ内の各入力データに対応する出力データを出力バッファ105に出力し、出力バッファ105を制御して、これらの出力データをバッチで出力することもできる。
【0153】
他のいくつかの実施形態において、入力連結数量が出力連結数量の1より大きい整数倍である。この場合、総合連結数量は、前記入力連結数量であり、該グループの入力データに含まれる各々のサブグループ内の入力データの数量は前記出力連結数量である。コントローラ101は、データ取得器102を制御して、前記総合連結数量の入力データを前記入力バッファ104にバッチで入力し、前記入力バッファ104を制御して、各々のサブグループ内の入力データを前記計算ユニットアレイ103に並列に提供し、各サブグループの計算に対して、該サブグループ内の各入力データに対応する計算ユニットの計算パラメータを有効値に設定し、前記計算ユニットアレイにおける該サブグループの入力データのうちの各入力データに対応する計算ユニット以外の残りの計算ユニットの計算パラメータをゼロに設定するように制御し、総合連結数量の入力データが含まれる該グループの入力データに対して、計算ユニットアレイ103を制御して、各々のサブグループに対応する出力データを出力バッファ105に順番に出力し、出力バッファ105によって順番に出力する又はバッチで出力する(出力バッファの記憶空間に応じて)こともできる。
【0154】
別のいくつかの実施形態において、入力連結数量が出力連結数量より大きいが、その整数倍ではない。この場合、総合連結数量は、前記出力連結数量であり、サブグループの数量は1である。コントローラ101は、データ取得器102を制御して、該グループの入力データに、ゼロで補完したN個の入力データを追加し(前記Nの値は、入力連結数量から出力連結数量を引いたものに等しい)、データ取得器102を制御して、N個の入力データが追加された該グループの入力データを前記入力バッファ104にバッチで入力し、前記入力バッファを制御して、該グループの入力データを前記計算ユニットアレイ103に並列に提供し、該グループの入力データの計算に対して、該グループの入力データのうちの各入力データに対応する計算ユニットの計算パラメータを有効値に設定し、前記計算ユニットアレイにおける該グループの入力データのうちの各入力データに対応する計算ユニット以外の残りの計算ユニットの計算パラメータをゼロに設定するように制御し、計算ユニットアレイ103を制御して、該グループの入力データのうちの各入力データに対応する出力データを出力バッファ105に出力し、出力バッファ105によってバッチで出力することもできる。
【0155】
別のいくつかの実施形態において、前記出力連結数量が前記入力連結数量の1より大きい整数倍である。この場合、総合連結数量は、前記出力連結数量であり、各々のサブグループの入力データには、前記入力連結数量の入力データが含まれる。コントローラ101は、各々のサブグループ内の入力データの計算に対して、データ取得器102を制御して、前記総合連結数量の入力データをサブグループ毎に前記入力バッファ104に順番に入力し、入力バッファ104を制御して、各々のサブグループ内の入力データを前記計算ユニットアレイに並列に提供し、各サブグループの入力データの計算に対して、該サブグループ内の各入力データに対応する計算ユニットの計算パラメータを有効値に設定し、前記シストリックアレイにおける該サブグループ内の各入力データに対応する計算ユニット以外の残りの計算ユニットの計算パラメータをゼロに設定するように制御し、計算ユニットアレイ103を制御して、該グループの入力データ(全てのサブグループの入力データが含まれる)に対応する出力データを出力バッファ105に出力し、出力バッファ105によってバッチで出力することもできる。ここで、各々のサブグループ内の入力データに対して計算を行う際に、前記出力バッファ内の、該サブグループの入力データの出力データに対応するバッファ領域のみに対して書き込みを行うが、該サブグループ以外の他のサブグループに対応する出力データに対応する他のバッファ領域への書き込みを禁止する。
【0156】
別のいくつかの実施形態において、出力連結数量が前記入力連結数量より大きいが、その整数倍ではない。この場合、総合連結数量は、前記入力連結数量であり、サブグループの数量は1である。コントローラ101は、データ取得器102を制御して、該グループの入力データを前記入力バッファ104にバッチで入力し、入力バッファ104を制御して、該グループの入力データを前記計算ユニットアレイに並列に提供し、該グループの入力データの計算に対して、該グループの入力データのうちの各入力データに対応する計算ユニットの計算パラメータを有効値に設定し、前記計算ユニットアレイにおける該グループの入力データのうちの各入力データに対応する計算ユニット以外の残りの計算ユニットの計算パラメータをゼロに設定するように制御し、計算ユニットアレイ103を制御して、該グループの入力データに対応する各出力データを出力バッファ105に出力し、出力バッファによってバッチで出力することもできる。ここで、バッファ領域全体における少なくとも一部の値は0である。
【0157】
コントローラ101の上記動作のより多い細部は、上記で図2-10Dを参照して説明した内容を参考すればよいが、ここでは説明を繰り返さない。
【0158】
1つ又は複数のコントローラの形態として、本明細書で説明される上記の任意の動作を実行できるコンピューティング機器を含んでもよく、例えば、汎用プロセッサ、DSP、ASIC、FPGA又は他のプログラマブルロジックデバイス、ディスクリートゲート又はトランジスタロジック、ディスクリートハードウェアコンポーネント、あるいはこれらの任意の組み合わせで実施又は実行する。汎用プロセッサは、マイクロプロセッサやマイクロコントローラなどであってもよい。本明細書で説明される上記の任意の動作は、ハードウェア、プロセッサによって実行されるソフトウェア、ファームウエア、又はこれらの任意の組み合わせで実施してもよい。プロセッサの形をしたコントローラによって実行されるソフトウェアで実施すれば、これらの動作は、コンピュータ可読記憶媒体に記憶されたり、コンピュータ可読記憶媒体における1つ又は複数の命令又はコードに符号化されることで伝送されたりしてもよい。
【0159】
このため、本開示の実施例では、命令又はコードを記憶したコンピュータ可読記憶媒体がさらに提供されている。前記命令又はコードは、プロセッサによって実行されると、上記のようなコントローラによる動作を実現させる。
【0160】
該コンピュータ可読記憶媒体は、命令又はコードが含まれるメモリであってもよく、上記のコード又は命令セットは、コントローラ(プロセッサ)によって実行されると、上記の計算装置におけるコントローラ(入力バッファなどを制御するコンポーネントと、計算ユニットにおけるDSPとが含まれる)によるステップの全部又は一部を完成させることが可能である。例えば、前記コンピュータ可読記憶媒体は、ROM、ランダムアクセスメモリ(RAM)、CD-ROM、磁気テープ、フロッピーディスク、及び光データ記憶装置などであってもよい。
【0161】
説明すべきものとして、図面中のフローチャート及びブロック図は、本開示の各種の実施例による方法及び装置の実現可能なシステムアーキテクチャ、機能、及び動作を図示している。この点で、フローチャート又はブロック図における各ブロックは、モジュール、プログラムセグメント、又はコードの一部を表すことができ、前記モジュール、プログラムセグメント、又はコードの一部には、所定のロジック機能を実現するための少なくとも1つの実行可能命令が含まれる。別の注意すべきものとして、代替としてのいくつかの実現では、ブロックに記載された機能は、図面に記載された順序とは異なる順序で行われてもよい。例えば、連続して示される2つのブロックは、実際には、基本的に並列に実行される場合があり、関連する機能によっては、逆の順序で実行される場合もある。別の注意すべきものとして、ブロック図及び/又はフローチャートにおける各ブロック、並びに、ブロック図及び/又はフローチャートにおけるブロックの組み合わせは、所定の機能又は動作を実行するための専用の、ハードウェアに基づくシステムで実現されてもよく、あるいは、専用ハードウェアとコンピュータ命令との組み合わせで実現されてもよい。
【0162】
以上で詳述された本開示の例示的な実施例は、説明的なものに過ぎず、限定的なものではない。当業者が理解すべきものとして、本開示の原理及び精神を逸脱しない場合、これらの実施例又はその特徴に対する様々な修正及び組み合わせが可能であり、このような修正は、本開示の範囲内にあるべきである。
【符号の説明】
【0163】
100 計算装置
101 コントローラ
102 データ取得器
103 シストリックアレイ
103 計算ユニットアレイ(シストリックアレイ)
103 計算ユニット
103 計算ユニットアレイ
104 入力バッファ
105 出力バッファ
200 データ処理方法
図1
図2
図3
図4A
図4B
図5
図6
図7
図8A
図8B
図9A
図9B
図9C
図9D
図10A
図10B
図10C
図10D