特許第6874932号(P6874932)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ エッジコーティックス ピーティーイー. リミテッドの特許一覧

特許6874932集積回路上での量子化されたスケーリングの準備および実行
<>
  • 特許6874932-集積回路上での量子化されたスケーリングの準備および実行 図000008
  • 特許6874932-集積回路上での量子化されたスケーリングの準備および実行 図000009
  • 特許6874932-集積回路上での量子化されたスケーリングの準備および実行 図000010
  • 特許6874932-集積回路上での量子化されたスケーリングの準備および実行 図000011
  • 特許6874932-集積回路上での量子化されたスケーリングの準備および実行 図000012
  • 特許6874932-集積回路上での量子化されたスケーリングの準備および実行 図000013
  • 特許6874932-集積回路上での量子化されたスケーリングの準備および実行 図000014
  • 特許6874932-集積回路上での量子化されたスケーリングの準備および実行 図000015
  • 特許6874932-集積回路上での量子化されたスケーリングの準備および実行 図000016
  • 特許6874932-集積回路上での量子化されたスケーリングの準備および実行 図000017
  • 特許6874932-集積回路上での量子化されたスケーリングの準備および実行 図000018
  • 特許6874932-集積回路上での量子化されたスケーリングの準備および実行 図000019
  • 特許6874932-集積回路上での量子化されたスケーリングの準備および実行 図000020
  • 特許6874932-集積回路上での量子化されたスケーリングの準備および実行 図000021
  • 特許6874932-集積回路上での量子化されたスケーリングの準備および実行 図000022
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6874932
(24)【登録日】2021年4月26日
(45)【発行日】2021年5月19日
(54)【発明の名称】集積回路上での量子化されたスケーリングの準備および実行
(51)【国際特許分類】
   G06F 17/17 20060101AFI20210510BHJP
【FI】
   G06F17/17
【請求項の数】20
【外国語出願】
【全頁数】25
(21)【出願番号】特願2020-174978(P2020-174978)
(22)【出願日】2020年10月16日
【審査請求日】2020年12月16日
【早期審査対象出願】
(73)【特許権者】
【識別番号】520171826
【氏名又は名称】エッジコーティックス ピーティーイー. リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】オレグ カービン
(72)【発明者】
【氏名】ニコライ ネズ
(72)【発明者】
【氏名】サキャシンガ ダスグプタ
(72)【発明者】
【氏名】ネバド ビルチェス アントニオ トマス
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 特開2015−12415(JP,A)
【文献】 米国特許出願公開第2020/0257960(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/17
G06T 3/40
G06N 3/063
(57)【特許請求の範囲】
【請求項1】
元のアレイと、前記元のアレイのサイズとスケーリングされたアレイのサイズとの比を表すスケーリング係数とを取得する手順と、
前記スケーリングされたアレイの各列について、前記元のアレイの水平次元における2つの最も近い要素の各々の水平座標を、前記スケーリングされたアレイの各行について、前記元のアレイの垂直次元における2つの最も近い要素の各々の垂直座標を決定する手順と、
前記スケーリングされたアレイの各行と前記スケーリングされたアレイの各列について、線形補間係数を算出する手順と、
前記元のアレイの各値を、浮動小数点数から、量子化された数へ変換する手順と、
各線形補間係数を浮動小数点数から固定小数点数へ変換する手順と、
前記水平座標および前記垂直座標を整数として、前記値を量子化された数として、ならびに、前記線形補間係数を固定小数点数として、メモリに格納する手順と
を含むオペレーションをコンピュータに実行させるために前記コンピュータにより実行可能である命令を備えるコンピュータプログラム。
【請求項2】
前記オペレーションは、
前記元のアレイをスケーリングするよう集積回路に命令する手順であって、前記集積回路は、スケーリングオペレーションを実行するように構成され、前記集積回路は、前記メモリと通信する、命令する手順と、
前記スケーリングされたアレイを前記集積回路から受信する手順と
をさらに含む、
請求項1に記載のコンピュータプログラム。
【請求項3】
命令する前記手順は、
前記スケーリングオペレーションを実行するための命令をコンパイルする手順と、
前記集積回路に前記命令を実行させる手順と
をさらに含む、
請求項2に記載のコンピュータプログラム。
【請求項4】
前記命令は、
前記スケーリングされたアレイのうちの少なくとも一部の各列について、前記元のアレイの前記水平次元における2つの最も近い要素の各々の予め決定された水平座標整数と、水平線形補間係数固定小数点数とを、
前記スケーリングされたアレイの前記一部の各行について、前記元のアレイの前記垂直次元における2つの最も近い要素の各々の予め決定された垂直座標整数と、垂直線形補間係数固定小数点数とを、
前記予め決定された水平座標整数と前記予め決定された垂直座標整数との各組み合わせについて、前記元のアレイの値量子化された数を
前記メモリから読み出す手順と、
前記スケーリングされたアレイの前記一部の各要素を、
前記要素の行と前記要素の列とに対応する、前記元のアレイの値量子化された数、
前記要素の前記列に対応する前記水平線形補間係数固定小数点数、および、
前記要素の前記行に対応する前記垂直線形補間係数固定小数点数
に線形補間を適用することにより算出する手順と
を前記集積回路に実行させる、
請求項3に記載のコンピュータプログラム。
【請求項5】
コンパイルする前記手順は、
前記集積回路のオンボードメモリの能力に基づいてタイルサイズを決定する手順
を含み、
前記スケーリングされたアレイの前記一部は、前記タイルサイズに対応し、読み出す前記手順および算出する前記手順は、前記スケーリングされたアレイの各要素が算出されるまで繰り返される、
請求項4に記載のコンピュータプログラム。
【請求項6】
前記集積回路により適用される前記線形補間は、
【数5】
に従ってオペレーションを実行する手順を含み、
は、量子化済みの補間された値であり、XおよびXは、量子化された値であり、Xcoeffは、線形補間係数の整数乗数であり、Ecoeffは、整数シフト値である、
請求項4または5に記載のコンピュータプログラム。
【請求項7】
コンパイルする前記手順は、重複する線形補間オペレーションに基づいて後続の要素が選択されるように要素の前記算出を順序付ける手順をさらに含み、
前記命令は、前記集積回路に、重複する線形補間オペレーションを有する後続の要素の算出において用いるための補間された値をラインキャッシュさせる、
請求項4から6のいずれか一項に記載のコンピュータプログラム。
【請求項8】
各線形補間係数を変換する手順は、
全ての固定小数点数について幅を決定する手順と、
各固定小数点数について整数乗数および整数シフト値を決定する手順であって、各整数乗数は、前記幅により定義されるサイズを有する、決定する手順と
を含む、
請求項1から7のいずれか一項に記載のコンピュータプログラム。
【請求項9】
前記元のアレイの各値を変換する手順は、
全ての量子化された数についてスケーリング係数およびゼロ点を決定する手順と、
各量子化された数について、量子化された値を決定する手順と
を含む、
請求項1から8のいずれか一項に記載のコンピュータプログラム。
【請求項10】
前記スケーリング係数は、水平スケーリング係数および垂直スケーリング係数を含み、前記水平スケーリング係数は、前記元のアレイの幅とスケーリングされたアレイの幅との比を表し、前記垂直スケーリング係数は、前記元のアレイの高さとスケーリングされたアレイの高さとの比を表す、請求項1から9のいずれか一項に記載のコンピュータプログラム。
【請求項11】
命令を受信して、スケーリングされたアレイを元のアレイから生成する手順と、
前記スケーリングされたアレイのうちの少なくとも一部の各列について、前記元のアレイの水平次元における2つの最も近い要素の各々の予め決定された水平座標整数と、水平線形補間係数固定小数点数とを、
前記スケーリングされたアレイの前記一部の各行について、前記元のアレイの垂直次元における2つの最も近い要素の各々の予め決定された垂直座標整数と、垂直線形補間係数固定小数点数とを、
前記予め決定された水平座標整数と前記予め決定された垂直座標整数との各組み合わせについて、前記元のアレイの値量子化された数を
外部メモリから読み出す手順と、
前記スケーリングされたアレイの前記一部の各要素を、
前記要素の行と前記要素の列とに対応する、前記元のアレイの値量子化された数、
前記要素の前記列に対応する前記水平線形補間係数固定小数点数、および、
前記要素の前記行に対応する前記垂直線形補間係数固定小数点数
に線形補間を適用することにより算出する手順と
を含むオペレーションを集積回路に実行させるために前記集積回路により実行可能である命令を備えるコンピュータプログラム。
【請求項12】
前記命令は、タイルサイズを含み、
前記スケーリングされたアレイの前記一部は、前記タイルサイズに対応し、
読み出す前記手順および算出する手順は、前記スケーリングされたアレイの各要素が算出されるまで繰り返される、
請求項11に記載のコンピュータプログラム。
【請求項13】
前記線形補間は、
【数6】
に従ってオペレーションを実行する手順を含み、
は、量子化済みの補間された値であり、XおよびXは、量子化された値であり、Xcoeffは、線形補間係数の整数乗数であり、Ecoeffは、整数シフト値である、
請求項11または12に記載のコンピュータプログラム。
【請求項14】
算出する前記手順は、
重複する線形補間オペレーションに基づいて後続の要素が選択されるように前記要素を順序付ける手順と、
重複する線形補間オペレーションを有する後続の要素の算出において用いるための補間された値をラインキャッシュする手順と、
を含む、
請求項11から13のいずれか一項に記載のコンピュータプログラム。
【請求項15】
算出する前記手順は、前記スケーリングされたアレイの各要素の算出された値を前記外部メモリへ書き込む手順をさらに含む、請求項11から14のいずれか一項に記載のコンピュータプログラム。
【請求項16】
元のアレイと、前記元のアレイのサイズとスケーリングされたアレイのサイズとの比を表すスケーリング係数とを取得する段階と、
前記スケーリングされたアレイの各列について、前記元のアレイの水平次元における2つの最も近い要素の各々の水平座標を、前記スケーリングされたアレイの各行について、前記元のアレイの垂直次元における2つの最も近い要素の各々の垂直座標を決定する段階と、
前記スケーリングされたアレイの各行と前記スケーリングされたアレイの各列について、線形補間係数を算出する段階と、
前記元のアレイの各値を、浮動小数点数から、量子化された数へ変換する段階と、
各線形補間係数を浮動小数点数から固定小数点数へ変換する段階と、
前記水平座標および前記垂直座標を整数として、前記値を量子化された数として、ならびに、前記線形補間係数を固定小数点数として、メモリに格納する段階と
を備える方法。
【請求項17】
前記元のアレイをスケーリングするよう集積回路に命令する段階であって、前記集積回路は、スケーリングオペレーションを実行するように構成され、前記集積回路は、前記メモリと通信する、命令する段階と、
前記スケーリングされたアレイを前記集積回路から受信する段階と
をさらに備える、請求項16に記載の方法。
【請求項18】
命令する前記段階は、
前記スケーリングオペレーションを実行するための命令をコンパイルする段階と、
前記集積回路に前記命令を実行させる段階と
をさらに有する、
請求項17に記載の方法。
【請求項19】
前記命令は、
前記スケーリングされたアレイのうちの少なくとも一部の各列について、前記元のアレイの前記水平次元における2つの最も近い要素の各々の予め決定された水平座標整数と、水平線形補間係数固定小数点数とを、
前記スケーリングされたアレイの前記一部の各行について、前記元のアレイの前記垂直次元における2つの最も近い要素の各々の予め決定された垂直座標整数と、垂直線形補間係数固定小数点数とを、
前記予め決定された水平座標整数と前記予め決定された垂直座標整数との各組み合わせについて、前記元のアレイの値量子化された数を
前記メモリから読み出す段階と、
前記スケーリングされたアレイの前記一部の各要素を、
前記要素の行と前記要素の列とに対応する、前記元のアレイの値量子化された数、
前記要素の前記列に対応する前記水平線形補間係数固定小数点数、および、
前記要素の前記行に対応する前記垂直線形補間係数固定小数点数
に線形補間を適用することにより算出する段階と
を前記集積回路に実行させる、
請求項18に記載の方法。
【請求項20】
コンパイルする前記段階は、
前記集積回路のオンボードメモリの能力に基づいてタイルサイズを決定する段階
を含み、
前記スケーリングされたアレイの前記一部は、前記タイルサイズに対応し、読み出す前記段階および算出する前記段階は、前記スケーリングされたアレイの各要素が算出されるまで繰り返される、
請求項19に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
[技術分野]
【0002】
本発明は、量子化されたスケーリングの準備および実行に関する。より具体的には、本発明は、集積回路上での実行のためのスケーリングオペレーションの準備に関する。
【0003】
[背景技術]
【0004】
スケーリングオペレーションは共通のものであり、ニューラルネットワークアクセラレータなどの集積回路により実行されるスケーリングオペレーションを含む。エッジデバイスは通常、計算リソースが限られているので、集積回路を用いる誘因は通常、その効率にある。より効率的なスケーリングオペレーション、特に、集積回路により実行されるスケーリングオペレーションに対するニーズが存在する。
【発明の概要】
【0005】
本発明の態様によれば、集積回路上で実行されるスケーリングオペレーションの準備のためのオペレーションをコンピュータに実行させるためにコンピュータにより実行可能である命令を含むコンピュータプログラムが提供される。当該オペレーションは、元のアレイと、元のアレイのサイズとスケーリングされたアレイのサイズとの比を表すスケーリング係数とを取得する手順と、スケーリングされたアレイの各列について、元のアレイの水平次元における2つの最も近い要素の各々の水平座標を、スケーリングされたアレイの各行について、元のアレイの垂直次元における2つの最も近い要素の各々の垂直座標を決定する手順と、スケーリングされたアレイの各行とスケーリングされたアレイの各列について、線形補間係数を算出する手順と、元のアレイの各値を、浮動小数点数から、量子化された数へ変換する手順と、各線形補間係数を浮動小数点数から固定小数点数へ変換する手順と、水平座標および垂直座標を整数として、値を量子化された数として、ならびに、線形補間係数を固定小数点数として、メモリに格納する手順とを含む。
【0006】
この態様は、コンピュータプログラムの命令を実行するプロセッサにより実行される方法および当該方法を実行する装置も含み得る。装置は、当該方法のオペレーションを実行するように構成されたセクションを含み得る。
【0007】
本発明の別の態様によれば、スケーリングオペレーションのためのオペレーションを集積回路に実行させるために集積回路により実行可能である命令を含むコンピュータプログラムが提供される。当該オペレーションは、命令を受信して、スケーリングされたアレイを元のアレイから生成する手順と、スケーリングされたアレイのうちの少なくとも一部の各列について、元のアレイの水平次元における2つの最も近い要素の各々の予め決定された水平座標整数と、水平線形補間係数固定小数点数とを、スケーリングされたアレイの一部の各行について、元のアレイの垂直次元における2つの最も近い要素の各々の予め決定された垂直座標整数と、垂直線形補間係数固定小数点数とを、予め決定された水平座標整数と予め決定された垂直座標整数との各組み合わせについて、元のアレイの値量子化された数を外部メモリから読み出す手順と、スケーリングされたアレイの一部の各要素を、要素の行と要素の列とに対応する、元のアレイの値量子化された数、要素の列に対応する水平線形補間係数固定小数点数、および、要素の行に対応する垂直線形補間係数固定小数点数に線形補間を適用することにより算出する手順とを含む。
【0008】
発明の概要は、本発明の実施形態の必要な特徴の全てを説明しているわけではない。上述の特徴のサブコンビネーションも本発明となり得る。
【図面の簡単な説明】
【0009】
図1】本発明の実施形態による量子化されたスケーリングの準備および実行のためのシステムを示す。
【0010】
図2A】本発明の実施形態によるスケーリングオペレーションの対象になる元のアレイを示す。
【0011】
図2B】本発明の実施形態によるスケーリングオペレーションの図を示す。
【0012】
図3】本発明の実施形態によるスケーリングオペレーションの準備のためのシステムを示す。
【0013】
図4】本発明の実施形態によるスケーリングオペレーションの準備のためのオペレーションフローを示す。
【0014】
図5】本発明の実施形態による最も近い要素の座標を決定するためのオペレーションフローを示す。
【0015】
図6】本発明の実施形態による線形補間係数を算出するためのオペレーションフローを示す。
【0016】
図7】本発明の実施形態による値浮動小数点数を量子化された数へ変換するためのオペレーションフローを示す。
【0017】
図8】本発明の実施形態による係数浮動小数点数を固定小数点数へ変換するためのオペレーションフローを示す。
【0018】
図9】本発明の実施形態によるスケーリングオペレーションのためのオペレーションフローを示す。
【0019】
図10】本発明の実施形態によるスケーリング命令をコンパイルするためのオペレーションフローを示す。
【0020】
図11】本発明の実施形態によるスケーリングオペレーションのためのシステムを示す。
【0021】
図12】本発明の実施形態による集積回路によるスケーリングオペレーションの実行のためのオペレーションフローを示す。
【0022】
図13】本発明の実施形態によるスケーリングされたアレイ部分の要素を算出するためのオペレーションフローを示す。
【0023】
図14】本発明の実施形態による量子化されたスケーリングの準備および実行のためのハードウェア構成を示す。
【発明を実施するための形態】
【0024】
本発明の例示的な実施形態を以下で説明する。例示的な実施形態は、特許請求の範囲による本発明を限定しないものとし、実施形態に記載される特徴の組み合わせは、必ずしも本発明に不可欠ではない。
【0025】
集積回路の効率に対する最も大きい影響のうちの1つは、タスクの実行中にDRAMなどの外部メモリへのアクセスがどれくらいの頻度で行われるかである。スケーリングオペレーションは、多くの計算を伴い得る。しかしながら、それらの計算のうちの多くが繰り返される。そのような計算を繰り返す代わりに、集積回路によるより効率的な実行を目的として、当該スケーリングオペレーションは、ホストプロセッサにより予め計算され得る。
【0026】
さらに、当該計算のうちの多くが実数を伴う。実数は通常、精度を高めるために、浮動小数点数として格納される。しかしながら、浮動小数点数はまた、他の種類の数よりも多くのストレージ空間を必要とする。例えば、浮動小数点数のストレージは、以下の式により表され得る。
【0027】
【数1】
【0028】
Xは、固有の23ビットの仮数であり、Eは、固有の8ビットの指数であり、Sは、固有の1ビットの符号である。各実数について、合計で32ビットのストレージが必要とされる。一方、実数が、量子化された数として格納される場合、ストレージの量は低減され得る。例えば、量子化された数のストレージは、以下の式により表され得る。
【0029】
【数2】
【0030】
Xは、固有の8ビットの量子化された値であり、SCは、共通のスケーリング係数または乗数であり、ZPは、共通のゼロ点またはシフト値である。共通のSCおよびZPのストレージ能力が実数毎に無視できると仮定すると、各実数について、8ビットのストレージのみが必要とされる。
【0031】
図1は、本発明の実施形態による量子化されたスケーリングの準備および実行のためのシステムを示す。システムは、ホストプロセッサ100、外部メモリ110および集積回路120を含む。ホストプロセッサ100および集積回路120は、外部メモリ110と通信する。ホストプロセッサ100は、スケーリングオペレーション用のデータを前処理する集積回路120を用いて、量子化されたスケーリングの実行の準備を行う。次に、ホストプロセッサ100は、前処理されたデータ114を外部メモリ110へ書き込む。また、ホストプロセッサ100は、集積回路120により実行された場合にスケーリングオペレーションを集積回路120に実行させる命令をコンパイルする。ホストプロセッサ100は、コンパイルされた命令117を集積回路120へ転送し、集積回路120に、コンパイルされた命令117を実行してスケーリングオペレーションを行うようにさせる。スケーリングオペレーション中に、集積回路120は、前処理されたデータ114の1または複数の部分を外部メモリ110から読み出す。スケーリングされたアレイ118の要素が集積回路120により計算されるときに、集積回路は、スケーリングされたアレイ118を外部メモリ110へ書き込む。
【0032】
図2Aは、本発明の実施形態によるスケーリングオペレーションの対象になる元のアレイ211を示す。元のアレイ211は、要素211Eなどの要素から構成され、各要素は値を有する。本実施形態において、スケーリングオペレーションは、元のアレイ211を4行4列のアレイから3行3列のアレイへダウンスケーリングする。スケーリングされたアレイは、要素218Eなどの要素から構成される。スケーリングされたアレイの各要素は、元のアレイ211の4つの最も近い要素の各々の値に基づいて算出される。
【0033】
図2Bは、本発明の実施形態による要素218Eのスケーリングオペレーションの図を示す。要素218Eは、スケーリングされたアレイの要素であり、211Eなど、元のアレイ211の4つの最も近い要素の各々から算出される。要素218Eの算出は、元のアレイ211の4つの最も近い要素の各々の値に基づくと共に、要素218Eからの各要素の距離にも基づく。本実施形態において、同じ行に沿った元のアレイの要素間の中間値が、要素218Eより上および要素218Eより下の行について算出される。ひとたび中間値が決定されると、次に、要素218Eが、中間値と、要素218Eからの各中間値の距離とに基づいて算出され得る。より具体的には、要素218Eより上の中間値は、左上の要素の値に等しく、加えて、右上の要素の値と左上の要素の値との間の差を1と1/SF(スケーリング係数)との間の距離により乗算したものに等しい。この算出は、中間値に基づき、要素218Eより下の中間値について繰り返され、次に、要素218Eの値について繰り返される。1と1/SFとの間の距離は、線形補間係数と称され、スケーリングされたアレイの要素の行および列と共に変わる。本明細書において、線形補間係数の算出を以下で説明する。
【0034】
図3は、本発明の実施形態によるスケーリングオペレーションの準備のためのシステムを示す。システムは、ホストプロセッサ300および外部メモリ310を含む。ホストプロセッサ300は、元のアレイ311およびスケーリング係数313を処理して、外部メモリ310に格納するための前処理されたデータを生成する。これにより、スケーリングオペレーションは、集積回路により実行され、スケーリングされたアレイ318が取得され得る。そのようにする際、ホストプロセッサ300は、最も近い左側座標整数314Lと、最も近い右側座標整数314Rと、最も近い上側座標整数314Tと、最も近い下側座標整数314Bと、水平線形補間係数量子化済み数314Xと、垂直線形補間係数量子化済み数314Yと、元のアレイ312の値固定小数点数とを含む前処理されたデータを外部メモリへ書き込み得る。この前処理されたデータは、スケーリング係数313を用いて変換される任意の元のアレイについて同じであり得る。これにより、ホストプロセッサ300は、前処理されたデータを複数のスケーリングオペレーション用に再使用することが可能になり得る。例えば、スケーリングオペレーションがニューラルネットワーク推論の過程で用いられる場合、スケーリングオペレーションは、異なる値の元のアレイを毎回用いて何度も実行され得る。しかしながら、同じ前処理されたデータは、スケーリング係数313が同じである限り、再使用され得る。より具体的には、同じ前処理されたデータは、同じサイズまたはより小さいサイズの元のアレイをスケーリングするために用いられ得る。より大きい元のアレイについては、同じ前処理されたデータが用いられ得るが、追加の元の値を考慮するために、より多く前処理されたデータが算出されなければならない。
【0035】
図4は、本発明の実施形態によるスケーリングオペレーションの準備のためのオペレーションフローを示す。当該オペレーションフローは、スケーリングオペレーションの準備のための方法を提供し得る。当該方法は、図14に示されるホストプロセッサなどの特定のオペレーションを実行するための各部を含むホストプロセッサにより実行され得る。以下でこれを説明する。
【0036】
S440において、取得部が、元のアレイと、元のアレイのサイズとスケーリングされたアレイのサイズとの比を表すスケーリング係数とを取得する。スケーリングオペレーションを準備する目的では、元のアレイの値は必要ないが、水平方向の要素の数と垂直方向の要素の数とに関する元のアレイの次元により、前処理の範囲が決まる。スケーリング係数は、任意の数であり得る。また、スケーリング係数は、概して1に等しくないが、オペレーションフローは依然として、同じ方式で機能するであろう。0と1との間のスケーリング係数は、元のアレイのサイズのダウンスケーリングまたは低減を表す。1よりも大きいスケーリング係数は、元のアレイのサイズのアップスケーリングまたは増加を表す。いくつかの実施形態において、水平次元の1つのスケーリング係数および垂直次元の別のスケーリング係数など、1よりも多くのスケーリング係数が存在し得る。いくつかの実施形態において、スケーリング係数は、元のアレイのサイズおよびスケーリングされたアレイのサイズからの導出を通じて取得され得る。
【0037】
S450において、決定部が、スケーリングされたアレイの各列について、元のアレイの水平次元における2つの最も近い要素の各々の水平座標を、スケーリングされたアレイの各行について、元のアレイの垂直次元における2つの最も近い要素の各々の垂直座標を決定する。これにより、例えば要素218Eについて図2Bに示されるように、スケーリングされたアレイの要素の値を算出するために用いられる、元のアレイの値の座標が識別される。2つの座標により元のアレイの値が識別されるが、このオペレーションでは、水平座標が垂直座標とは別々に決定される。図3は、これらが外部メモリへどのように格納され得るかについてのロジック図を示す。スケーリングされたアレイの各要素は、上側座標、下側座標、左側座標および右側座標という4つの座標に対応し、組み合わされた場合、元のアレイの左上の要素、元のアレイの右上の要素、元のアレイの左下の要素および元のアレイの右下の要素の座標が得られる。この決定を図5においてさらに説明する。
【0038】
S460において、算出部が、スケーリングされたアレイの各行およびスケーリングされたアレイの各列について、線形補間係数を算出する。例えば、スケーリングされたアレイがiの行により表される場合において、iが1からnであり、nが行の数であるときは、以下の式により垂直線形補間係数YCiが算出され得る。
【0039】
【数3】
【0040】
SFは、スケーリング係数または垂直スケーリング係数であり、YTiは、スケーリングされたアレイの行iに最も近い上側座標である。各行の垂直線形補間係数がそれに応じて算出され得ると共に、各列の水平線形補間係数が、次元を切り替ることにより、同様に算出され得る。この算出を図6においてさらに説明する。
【0041】
S470において、変換部が、元のアレイの各値を、浮動小数点数から、量子化された数へ変換し、各線形補間係数を浮動小数点数から固定小数点数へ変換する。元のアレイの値が実数であると仮定すると、各値は典型的には、浮動小数点数として格納される。変換部は、これらの値浮動小数点数を、量子化された数へ変換して、各値が占有するストレージ空間の量を減らす。S460において算出された各線形補間係数は、浮動小数点数として格納される実数でもある。変換部は、これらの係数浮動小数点数を固定小数点数へ変換して、各値が占有するストレージ空間の量を減らす。この変換を図7においてさらに説明する。
【0042】
S442において、格納部が、水平座標および垂直座標を整数として、値を量子化された数として、線形補間係数を固定小数点数として、メモリに格納する。
【0043】
本実施形態では、線形補間係数が浮動小数点数として格納され、次に固定小数点数へ変換されると説明したが、他の実施形態では、線形補間係数は、算出の後に固定小数点数として格納され得る。これは、算出および変換が一度に起こり、線形補間係数は、実際には決して浮動小数点数としては格納されないことを意味する。
【0044】
図5は、本発明の実施形態による最も近い要素の座標を決定するためのオペレーションフローを示す。このオペレーションフロー内のオペレーションは、決定部またはその対応する名前が付けられたサブ部により実行され得る。図4において説明したように、元のアレイおよびスケーリング係数は、最も近い要素の座標を決定するより前に取得される。
【0045】
S551において、決定部またはそのサブ部が、スケーリングされたアレイの第1列の左側に対する元のアレイの最も近い座標を決定する。図2Bに示される例において、スケーリングされたアレイの第1列の左側に対する元のアレイの最も近い座標は、要素218Eにより表されており、1である。これは、元のアレイの第1列を表す。最も近い座標は、i/SFの床関数および天井関数を用いて数理的に決定され得る。iは、スケーリングされたアレイの行(または列)の数である。図2Bの例において、スケーリング係数は0.75なので、第1行のi/SFは1/0.75=4/3である。床(4/3)=1は、スケーリングされたアレイの第1行より上の元のアレイの最も近い座標が1であることを意味し、天井(4/3)=2は、スケーリングされたアレイの第1行より下の元のアレイの最も近い座標が2であることを意味する。
【0046】
S552において、決定部またはそのサブ部が、スケーリングされたアレイの第1列の右側に対する元のアレイの最も近い座標を決定する。図2Bに示される例において、スケーリングされたアレイの第1列の右側に対する最も近い座標は、要素218Eにより表されており、2である。これは、元のアレイの第2列を表す。
【0047】
S553において、決定部またはそのサブ部が、最も近い座標の決定について残りの列が存在するか否かを決定する。未決定の列がより多く存在する場合、オペレーションフローは、S551の別の反復へ進む前に、次列を選択する(S554)。未決定の列がもはや存在しない場合、オペレーションフローは、S556へ進み、スケーリングされたアレイの行に対する最も近い座標の決定を開始する。
【0048】
S556において、決定部またはそのサブ部が、スケーリングされたアレイの第1行より上の元のアレイの最も近い座標を決定する。図2Bに示される例において、スケーリングされたアレイの第1行より上の元のアレイの最も近い座標は、要素218Eにより表されており、1である。これは、元のアレイの第1行を表す。
【0049】
S557において、決定部またはそのサブ部が、スケーリングされたアレイの第1行より下の元のアレイの最も近い座標を決定する。図2Bに示される例において、スケーリングされたアレイの第1行より下の最も近い座標は、要素218Eにより表されており、2である。これは、元のアレイの第2行を表す。
【0050】
S558において、決定部またはそのサブ部が、最も近い座標の決定について残りの行が存在するか否かを決定する。未決定の行がより多く存在する場合、オペレーションフローは、S556の別の反復へ進む前に、次行を選択する(S559)。未決定の行がもはや存在しない場合、オペレーションフローは終了する。
【0051】
図6は、本発明の実施形態による線形補間係数を算出するためのオペレーションフローを示す。このオペレーションフロー内のオペレーションは、算出部またはその対応する名前が付けられたサブ部により実行され得る。図4において説明したように、元のアレイ、スケーリング係数および最も近い座標は、線形補間係数を算出するより前に取得される。
【0052】
S662において、算出部またはそのサブ部が、スケーリングされたアレイの第1列の水平線形補間係数を算出する。図2Bに示される例において、第1列の水平線形係数XC1は、式3(1×1/(3/4)−1)を用いて算出され、1/3が得られ得る。
【0053】
S663において、算出部またはそのサブ部が、係数の算出について残りの列が存在するか否かを決定する。未計算の列がより多く存在する場合、オペレーションフローは、S662の別の反復へ進む前に、次列を選択する(S664)。未計算の列がもはや存在しない場合、オペレーションフローは、S666へ進み、スケーリングされたアレイの行の係数の算出を開始する。
【0054】
S666において、算出部またはそのサブ部が、スケーリングされたアレイの第1列の垂直線形補間係数を算出する。図2Bに示される例において、第1列の垂直線形係数YC1は、式3(1×1/(3/4)−1)を用いて算出され、1/3が得られ得る。
【0055】
S667において、算出部またはそのサブ部が、係数の算出について残りの行が存在するか否かを決定する。未計算の行がより多く存在する場合、オペレーションフローは、S666の別の反復へ進む前に、次行を選択する(S664)。未計算の行がもはや存在しない場合、オペレーションフローは終了する。
【0056】
図7は、本発明の実施形態による値浮動小数点数を量子化された数へ変換するためのオペレーションフローを示す。このオペレーションフロー内のオペレーションは、変換部またはその対応する名前が付けられたサブ部により実行され得る。元のアレイの値は、図4におけるオペレーションの全てを実行するために必要ではないが、図7のオペレーションフローを実行するために必要である。
【0057】
S771において、変換部またはそのサブ部が、適切なスケーリング係数および適切なゼロ点を決定する。スケーリング係数およびゼロ点は、元のアレイの値に基づいて計算または選択され得る。
【0058】
S772において、変換部またはそのサブ部が、元のアレイの値と、スケーリング係数と、ゼロ点とから、量子化された値を決定する。例えば、元のアレイの値は、スケーリング係数により除算され得、次に、ゼロ点により増やされ得る。これにより、量子化された値がもたらされる。
【0059】
S773において、変換部またはそのサブ部が、量子化について残りの値が存在するか否かを決定する。量子化されていない値がより多く存在する場合、オペレーションフローは、S772の別の反復へ進む前に、次の値を選択する(S774)。量子化されていない値がもはや存在しない場合、オペレーションフローは終了する。
【0060】
図8は、本発明の実施形態による係数浮動小数点数を固定小数点数へ変換するためのオペレーションフローを示す。このオペレーションフロー内のオペレーションは、変換部またはその対応する名前が付けられたサブ部により実行され得る。図4において説明したように、線形補間係数は、浮動小数点数を変換する前に算出される。
【0061】
S876において、変換部またはそのサブ部が、適切な幅を決定する。幅は、精度とリソース使用とのバランスをとるために計算または選択され得る。
【0062】
S877において、変換部またはそのサブ部が、線形補間係数から整数乗数およびシフト値を決定する。言い換えると、各固定小数点数は、整数乗数および整数シフト値を含む。整数乗数のサイズは、S876において決定された幅により定義される。いくつかの実施形態において、整数シフト値は、一定の乗算後シフトに固定され得る。言い換えると、整数シフト値は、全ての固定小数点数について同じであり得る。
【0063】
S878において、変換部またはそのサブ部が、変換について残りの線形補間係数が存在するか否かを決定する。未変換の線形補間係数がより多く存在する場合、オペレーションフローは、S877の別の反復へ進む前に、次の値を選択する(S879)。未変換の線形補間係数がもはや存在しない場合、オペレーションフローは終了する。
【0064】
図9は、本発明の実施形態によるスケーリングオペレーションのためのオペレーションフローを示す。当該オペレーションフローは、スケーリングオペレーションのための方法を提供し得る。当該方法は、命令部またはその対応する名前が付けられたサブ部により実行され得る。図4において説明したように、元のアレイ、スケーリング係数、最も近い座標および線形補間係数は、スケーリングオペレーションより前に取得される。
【0065】
S980において、命令部またはそのサブ部などのコンパイル部が、スケーリングオペレーションを実行するための命令をコンパイルする。命令は、最も近い座標と、固定小数点数として格納された線形補間係数と、量子化された数として格納された元のアレイの値とを含む前処理されたデータを用いて元のアレイのスケーリングオペレーションを実行するための命令を集積回路が実行し得るようにコンパイルされる。例えば、命令は、スケーリングされたアレイのうちの少なくとも一部の各列について、元のアレイの水平次元における2つの最も近い要素の各々の予め決定された水平座標整数と、水平線形補間係数固定小数点数とを、スケーリングされたアレイの一部の各行について、元のアレイの垂直次元における2つの最も近い要素の各々の予め決定された垂直座標整数と、垂直線形補間係数固定小数点数とを、予め決定された水平座標整数と予め決定された垂直座標整数との各組み合わせについて、元のアレイの値量子化された数をメモリから読み出す段階と、スケーリングされたアレイの一部の各要素を、要素の行と要素の列とに対応する、元のアレイの値量子化された数、要素の列に対応する水平線形補間係数固定小数点数、および、要素の行に対応する垂直線形補間係数固定小数点数に線形補間を適用することにより算出する段階とを集積回路に実行させ得る。いくつかの実施形態において、スケーリングオペレーションは、唯一のオペレーションではなく、主なオペレーションでさえない。そのような実施形態では、スケーリングオペレーションを実行するための命令は、集積回路により実行される命令の中でも特に、例えばニューラルネットワーク推論等についての命令となる。
【0066】
S944において、命令部またはそのサブ部が、集積回路に命令を実行させる。例えば、命令部は、前処理されたデータが格納されたメモリと通信して元のアレイをスケーリングするよう集積回路に命令し得る。
【0067】
S949において、命令部またはそのサブ部などの受信部が、スケーリングされたアレイを集積回路から受信する。スケーリングオペレーションが主なオペレーションではない実施形態において、受信部は、スケーリングされたアレイを受信し得ないが、スケーリングされたアレイが中間段階であるさらなる計算の結果を代わりに受信し得る。
【0068】
図10は、本発明の実施形態によるスケーリング命令をコンパイルするためのオペレーションフローを示す。このオペレーションフロー内のオペレーションは、命令部またはその対応する名前が付けられたサブ部などのコンパイル部により実行され得る。図9において説明したように、元のアレイ、スケーリング係数、最も近い座標および線形補間係数は、スケーリングオペレーションより前に取得される。
【0069】
S1082において、コンパイル部またはそのサブ部などのタイリング部が、スケーリングオペレーションの実行中にタイリングを用いるかどうかを決定する。例えば、前処理されたデータおよび結果として得られるスケーリングされた値の全てを保持するために必要とされるオンボードメモリが集積回路のオンボードメモリの能力を超えている場合、タイリングが用いられる。スケーリングオペレーションが集積回路の唯一のオペレーションではない実施形態において、タイリング部は、前処理されたデータおよび結果として得られるスケーリングされた値の全てを保持するために十分なオンボードメモリがスケーリングオペレーションに割り当てられ得るかどうかを決定し得る。十分なオンボードメモリ能力がある場合、オペレーションフローは、タイルサイズの決定をスキップして、S1086へ進む。十分なオンボードメモリ能力がない場合、オペレーションフローは、タイルサイズを決定すべくS1084へ進む。
【0070】
S1084において、タイリング部が、集積回路のオンボードメモリの能力に基づいてタイルサイズを決定する。例えば、タイルサイズは、タイル全体を格納するための、かつ、スケーリングされたアレイの値へと処理するための十分なオンボードメモリ能力を集積回路が有するように選択される。しかしながら、タイルサイズが低減されるので、外部メモリからの読出オペレーションの量が増え、効率に負の影響が及び得る。集積回路がスケーリングオペレーションを実行することが可能になるようタイルサイズが最大であることが理想的であり得る。スケーリングされたアレイの一部は、タイルサイズに対応し、読出オペレーションおよび算出オペレーションは、スケーリングされたアレイの各要素が算出されるまで繰り返される。前処理されたデータの必要な一部のサイズおよびオフセットは、スケーリングされたアレイの出力タイルのサイズとオフセットとに基づいて決定され得る。必要な一部は、出力タイルの各要素を算出するために必要なデータを含む。元のアレイの入力タイルのサイズおよびオフセットは、出力タイルの各要素を算出するために必要とされる前処理されたデータに基づいて決定され得る。命令は、入力タイルと出力タイルの各要素を算出するために必要とされる前処理されたデータとのみが所与の時点で集積回路に提供されるようにコンパイルされ得る。前処理されたデータのうちの座標は、各入力タイルの左上角のオフセットにより調整される必要があり得る。当該調整は、集積回路またはホストプロセッサによるスケーリングオペレーションの前または集積回路によるスケーリングオペレーション中に1回行われ得る。線形補間係数は、スケーリングオペレーションについて変更の必要がないことがある。
【0071】
S1086において、コンパイル部またはそのサブ部などの順序付け部が、中間値などの中間結果が、パージされる前に再使用され得るように、かつ、1回または複数回の算出を繰り返すことを回避するために、スケーリングされたアレイの要素の算出を順序付ける。言い換えると、コンパイルすることは、重複する線形補間オペレーションに基づいて後続の要素が選択されるように要素の算出を順序付けることをさらに含む。中間値を再使用するために、命令はさらに、集積回路に、重複する線形補間オペレーションを有する後続の要素の算出において用いるための補間された値をラインキャッシュさせ得る。
【0072】
図11は、本発明の実施形態によるスケーリングオペレーションのためのシステムを示す。システムは、外部メモリ1110および集積回路1120を含む。元のアレイおよびスケーリング係数が処理され、外部メモリ1110に格納するための前処理されたデータが生成される。これにより、スケーリングオペレーションは、集積回路1120により実行され、スケーリングされたアレイ1118が取得され得る。そのようにする際、集積回路1120は、最も近い左側座標整数1114Lと、最も近い右側座標整数1114Rと、最も近い上側座標整数1114Tと、最も近い下側座標整数1114Bと、水平線形補間係数量子化済み数1114Xと、垂直線形補間係数量子化済み数1114Yと、元のアレイ1112の値固定小数点数とを含む前処理されたデータを用いて、図12において説明するオペレーションを実行し得る。集積回路1120は、前処理されたデータを利用して、スケーリングされたアレイ1118の各値を決定する。例えば、スケーリングされたアレイ1118の要素1130の値1118Eを決定するために、集積回路1120は、最も近い座標と、最も近い座標に関連する元のアレイの値とを読み出す。要素1130に対する最も近い座標に関連する値は、(XL1,YT3)、(XR1,YT3)、(XL1,YB3)および(XR1,YB3)に位置する元のアレイの値である。値1118Eを決定するために、集積回路1120はさらに、要素1130に関連する水平線形補間係数1114Yおよび垂直線形補間係数11114X、つまり、水平線形補間係数YC3および垂直線形補間係数XC1読み出す。
【0073】
図12は、本発明の実施形態による集積回路によるスケーリングオペレーションの実行のためのオペレーションフローを示す。当該オペレーションフローは、スケーリングするための方法を提供し得る。当該方法は、図14に示される集積回路などの特定のオペレーションを実行するための各部を含む集積回路により実行され得る。以下でこれを説明する。
【0074】
S1246において、受信部がスケーリング命令を受信する。例えば、受信部は、スケーリングされたアレイを元のアレイから生成するための命令を受信し得る。命令は、スケーリングオペレーションのための前処理されたデータを準備し、前処理されたデータを外部メモリに格納したホストプロセッサから受信され得る。
【0075】
S1247において、読出部が、元のアレイの座標と、線形補間係数と、元のアレイの値とを含むデータのうちの少なくとも一部を外部メモリから読み出す。例えば、読出部は、スケーリングされたアレイのうちの少なくとも一部の各列について、元のアレイの水平次元における2つの最も近い要素の各々の予め決定された水平座標整数と、水平線形補間係数固定小数点数とを、スケーリングされたアレイの一部の各行について、元のアレイの垂直次元における2つの最も近い要素の各々の予め決定された垂直座標整数と、垂直線形補間係数固定小数点数とを、予め決定された水平座標整数と予め決定された垂直座標整数との各組み合わせについて、元のアレイの値量子化された数を読み出し得る。集積回路が十分なオンボードメモリ能力を有する場合、上述のデータの全てが一度に読み出され得る。そうでなければ、読出部は、上述のデータの一部またはタイルを読み出す。ホストプロセッサからの命令は、タイルサイズを含み得る。タイルサイズにより、各部分のサイズが決定される。読出オペレーションおよび算出オペレーションは、スケーリングされたアレイの各要素が算出されるまで繰り返される。
【0076】
S1290において、算出部が、S1247において読み出されたデータの一部に関連するスケーリングされたアレイの要素を算出する。例えば、算出部は、スケーリングされたアレイの一部の各要素を、要素の行と要素の列とに対応する、元のアレイの値量子化された数、要素の列に対応する水平線形補間係数固定小数点数、および、要素の行に対応する垂直線形補間係数固定小数点数に線形補間を適用することにより算出する。集積回路が十分なオンボードメモリ能力を有する場合、要素の全てが一度に算出され得る。そうでなければ、算出部は、要素の一部またはタイルを算出する。言い換えると、算出は、読み出しの各部分間で部分的に実行される。S1247およびS1290の反復が進むので、スケーリングされたアレイの各要素が算出されるまで、部分の読み出しおよび部分の算出が繰り返される。
【0077】
S1248において、集積回路またはその部が、スケーリングについて残りの部分が存在するか否かを決定する。スケーリングされていない部分がより多く存在する場合、オペレーションフローは、S1247の別の反復へ進む前に、次の部分を選択する(S1249)。スケーリングされていない部分がもはや存在しない場合、オペレーションフローは終了する。
【0078】
図13は、本発明の実施形態によるスケーリングされたアレイ部分の要素を算出するためのオペレーションフローを示す。このオペレーションフロー内のオペレーションは、算出部またはその対応する名前が付けられたサブ部により実行され得る。図12において説明したように、元のアレイの座標と、線形補間係数と、元のアレイの値とは、オペレーションを算出するより前に読み出される。
【0079】
S1392において、算出部またはそのサブ部などの抽出部が、スケーリングされたアレイの要素に対する最も近い座標に関連する値量子化された数を抽出する。式2の例を用いて、抽出部は、スケーリング係数SCおよびゼロ点ZPとは別に、量子化された実数から、量子化された値Xを抽出する。図11の例において、抽出部は、要素1130の値1118Eを算出すべく、値量子化された数V(XL1)(YT3)、V(XR1)(YT3)、V(XL1)(YB3)およびV(XR1)(YB3)から、量子化された値を抽出するであろう。
【0080】
S1394において、算出部またはそのサブ部などの適用部が、量子化された値と線形補間係数固定小数点数とに補間式を適用して、スケーリングされた値を算出する。例えば、線形補間は、以下の式に従ってオペレーションを実行することを含む。
【0081】
【数4】
【0082】
は、量子化済みの補間された値であり、XおよびXは、量子化された値であり、Xcoeffは、線形補間係数の整数乗数であり、Ecoeffは、整数シフト値である。式4を用いて、スケーリングされた値が、3つの段階で算出され得る。図11の例において、第1ステップは、水平線形補間係数YC3の整数乗数(Xcoeff)およびシフト値(Ecoeff)を用いて、V31(X)とV32(X)との間の中間値(X)を算出することであり得る。第2ステップは、水平線形補間係数YC3の整数乗数(Xcoeff)およびシフト値(Ecoeff)を用いて、V41(X)とV42(X)との間の中間値(X)を算出することであり得る。第3段階は、垂直線形補間係数XC3の整数乗数(Xcoeff)およびシフト値(Ecoeff)を用いて、第1ステップにおいて算出された中間値(X)と第2ステップにおいて算出された中間値(X)との間の中間値(X)として、スケーリングされた値1118Eの量子化された値を算出することであり得る。次に、スケーリングされた値1118Eは、式2において示されるように、ゼロ点ZPを減算し、スケーリング係数SCを乗算することにより、第3段階において算出された量子化された値から導出され得る。
【0083】
S1395において、算出部またはそのサブ部などの書込部が、図11におけるスケーリングされた値1118Eなどのスケーリングされた値をメモリへ書き込む。例えば、集積回路の主な目的がスケーリングオペレーションを実行することである実施形態において、書込部は、スケーリングされた値を外部メモリへ書き込み得る。例えば集積回路の主な目的がニューラルネットワーク推論を実行することである他の実施形態において、書込部は、スケーリングされた値をオンボードメモリへ書き込み得る。スケーリングされた値は、推論中のさらなる処理において利用され得る。
【0084】
S1396において、算出部またはそのサブ部などのラインキャッシュ部が、重複する線形補間オペレーションを有する後続の要素の算出において用いるための中間補間済み値をラインキャッシュする。図11の例において、V31とV32との間の第1ステップにおいて算出された中間値は、スケーリングされたアレイ1118の要素1130のスケーリングされた値1118Eを最終的に算出するために用いられており、要素1130より上の要素のスケーリングされた値を算出するためにも用いられるであろう。ラインキャッシュ部は、この中間値の算出を再び実行するのではなく、この中間値をラインキャッシュする。これにより、中間値がS1394の適切な反復において利用され、要素1130より上の要素のスケーリングされた値が算出され得る。この例における要素1130より上の要素のスケーリングされた値の算出のために、メモリ読み出しは、半分低減され得るので、ランタイム計算の2/3のみが必要とされ得る。アップスケーリングオペレーションにおいて、2またはそれより多くのスケーリングされた値は、元のアレイの同じ4つの最も近い要素を有し得る。そのような事例において、後者の算出されたスケーリングされた値は、さらなるメモリ読み出しを必要としないことがあり、ランタイム計算の1/3のみが必要とされ得る。
【0085】
S1398において、算出部またはそのサブ部が、算出について残りの要素が存在するか否かを決定する。未計算の要素がより多く存在する場合、オペレーションフローは、S1392の別の反復へ進む前に、次の要素を選択する(S1399)。未計算の要素がもはや存在しない場合、オペレーションフローは終了する。
【0086】
本実施形態において、当該オペレーションフローは、量子化された数で動作すべく、量子化された値を抽出し、量子化された数を導出することを含む。他の実施形態において、当該オペレーションフローは、量子化された値で直接動作し得る。そのような実施形態において、書き込みオペレーションは、補間式から結果として生じる量子化された値を書き込み、抽出オペレーションは不要である。ホストプロセッサは、量子化された値の抽出を実行し得ると共に、また、集積回路により外部メモリへ書き込まれる結果として得られた量子化された値から量子化された数の導出を担い得る。これは、再量子化と称される場合がある。そのような実施形態は、集積回路がスケーリングオペレーションを排他的に実行する場合、または、推論もしくは他の意図された機能が、量子化された値を用いて実行され得る場合に有用であり得る。
【0087】
図14は、本発明の実施形態による量子化されたスケーリングの準備および実行のためのハードウェア構成を示す。例示的なハードウェア構成は、外部メモリ1410および集積回路1420と通信するホストプロセッサ1400を含む。ホストプロセッサ1400、外部メモリ1410および集積回路1420は、オンプレミスアプリケーションを実行するサーバコンピュータまたはメインフレームコンピュータなどのホストコンピュータおよびそれを用いるホストクライアントコンピュータの一部であり得る。ホストプロセッサ1400、外部メモリ1410および集積回路1420は、ユーザ用のアプリケーションを実行するパーソナルコンピュータ、モバイルコンピュータまたは小規模コンピューティングデバイスの一部であり得る。
【0088】
本実施形態において、ホストプロセッサ1400は、様々な部のオペレーションをプロセッサまたはプログラマブル回路に実行させるためにプロセッサまたはプログラマブル回路により実行可能であるプログラム命令を集合的に格納する1または複数のコンピュータ可読記憶媒体を含むコンピュータプログラム製品などのロジック部として考えられ得る。ホストプロセッサ1400は、代替的に、アナログプログラマブル回路もしくはデジタルプログラマブル回路またはそれらの任意の組み合わせであり得る。ホストプロセッサ1400は、通信を通じて相互作用する物理的に分離されたストレージまたは回路から構成され得る。外部メモリ1410は、本明細書におけるプロセスの実行中にホストプロセッサ1400によるアクセスのためのデータを格納することが可能な揮発性または非揮発性のコンピュータ可読媒体であり得る。集積回路1420は、例えばFPGA、ASIC等、スケーリングオペレーション、ニューラルアーキテクチャ推論等を実行することが可能なハードウェアチップであり得る。
【0089】
ホストプロセッサ1400は、取得部1402、決定部1403、算出部1404。変換部1406および命令部1408を含む。外部メモリ1410は、元のアレイ1412、スケーリング係数1413、前処理されたデータ1414、コンパイルパラメータ1415、集積回路パラメータ1416、集積回路命令1417およびスケーリングされたアレイ1418を含む。
【0090】
取得部1402は、量子化されたスケーリングの準備および実行のための情報を取得するホストプロセッサ1400の一部である。例えば、取得部1402は、元のアレイおよびスケーリング係数を取得するように構成され得る。取得部1402は、取得した情報を、元のアレイ1412およびスケーリング係数1413として外部メモリ1410に格納し得る。上述のフローチャートで説明したように、取得部1402は、追加の機能を実行するためのサブ部を含み得る。そのようなサブ部は、それらの機能に関連する名前で称され得る。
【0091】
決定部1403は、例えば座標または元のアレイにおける最も近い要素等の量子化されたスケーリングの準備および実行のための様々な決定を行うホストプロセッサ1400の一部である。決定している間、決定部1403は、元のアレイ1412、スケーリング係数1413および前処理されたデータ1414にアクセスし得る。上述のフローチャートにおいて説明したように、決定部1403は、追加の機能を実行するサブ部を含み得る。そのようなサブ部は、それらの機能に関連した名前で称され得る。
【0092】
算出部1404は、線形補間係数を算出するホストプロセッサ1400の一部である。算出している間、算出部1404は、元のアレイ1412、スケーリング係数1413および前処理されたデータ1414にアクセスし得る。上述のフローチャートにおいて説明したように、算出部1404は、追加の機能を実行するサブ部を含み得る。そのようなサブ部は、それらの機能に関連する名前で称され得る。
【0093】
変換部1406は、浮動小数点数を、量子化された数または固定小数点数へ変換するホストプロセッサ1400の一部である。変換している間、変換部1406は、元のアレイ1412、スケーリング係数1413および前処理されたデータ1414にアクセスし得る。上述のフローチャートにおいて説明したように、変換部1406は、追加の機能を実行するサブ部を含み得る。そのようなサブ部は、それらの機能に関連する名前で称され得る。
【0094】
命令部1408は、スケーリングオペレーションを実行するよう集積回路1420に命令するホストプロセッサ1400の一部である。例えば、スケーリングオペレーションを実行するよう集積回路に命令することは、集積回路により実行された場合に集積回路にスケーリングオペレーションを実行させる命令をコンパイルすることを含み得る。命令をコンパイルしている間、命令部1408は、元のアレイ1412、スケーリング係数1413、前処理されたデータ1414、コンパイルパラメータ1415、集積回路パラメータ1416および集積回路命令1417にアクセスし得る。上述のフローチャートにおいて説明したように、命令部1408は、追加の機能を実行するためのサブ部を含み得る。そのようなサブ部は、それらの機能に関連する名前で称され得る。
【0095】
集積回路1420は、受信部1422、読出部1423、算出部1424およびオンボードメモリ1426を含む。
【0096】
受信部1422は、スケーリングオペレーションを実行するための命令などの命令を受信する集積回路1420の一部である。命令を受信している間、受信部1422は、集積回路命令1417にアクセスし得るか、または命令を命令部1408から直接受信し得る。受信部1422は、命令をオンボードメモリ1426に格納し得る。上述のフローチャートにおいて説明したように、受信部1422は、追加の機能を実行するサブ部を含み得る。そのようなサブ部は、それらの機能に関連する名前で称され得る。
【0097】
読出部1423は、スケーリングオペレーションを実行するためのデータなどのデータを外部メモリ1410から読み出す集積回路1420の一部である。読出部1423は、元のアレイ1412からのデータと、スケーリング係数1413と、前処理されたデータ1414とを読み出し得る。上述のフローチャートにおいて説明したように、読出部1423は、追加の機能を実行するためのサブ部を含み得る。そのようなサブ部は、それらの機能に関連する名前で称され得る。
【0098】
算出部1424は、前処理されたデータ1414からのスケーリングされた値の算出などの算出を実行する集積回路1420の一部である。算出部1424は、元のアレイ1412からのデータと、スケーリング係数1413と、前処理されたデータ1414とを読み出し得る。上述のフローチャートにおいて説明したように、算出部1424は、追加の機能を実行するためのサブ部を含み得る。そのようなサブ部は、それらの機能に関連する名前で称され得る。
【0099】
オンボードメモリ1426は、スケーリングオペレーションの実行中に受信部1422、読出部1423および算出部1424によるアクセスのためのデータを格納することが可能なRAMフラッシュメモリまたは他の埋め込み型書き込み可能メモリなどのコンピュータ可読媒体であり得る。
【0100】
他の実施形態において、ホストプロセッサは、本明細書におけるプロセスを実行すべくロジック機能を処理することが可能な任意の他のデバイスであり得る。外部メモリは、1または複数のコンピュータ可読媒体であり得る。例えば、ホストプロセッサは、中央処理装置(CPU)であり得、外部メモリは、本明細書におけるプロセスの実行中にCPUによる実行のためにコンピュータ実行可能命令の全部または一部がコピーされ得るダイナミックランダムアクセスメモリ(DRAM)であり得る。
【0101】
装置がコンピュータである実施形態において、当該コンピュータにインストールされるプログラムは、当該コンピュータに、本発明の実施形態の装置またはそれらの1または複数のセクション(モジュール、コンポーネント、要素等を含む)として機能させ、または、それらに関連付けられたオペレーションを実行させ、および/または、当該コンピュータに本発明の実施形態のプロセスまたはそれらの段階を実行させ得る。そのようなプログラムは、プロセッサにより実行され、本明細書において説明したフローチャートおよびブロック図のブロックのいくつかまたは全てに関連する特定のオペレーションをコンピュータに実行させ得る。
【0102】
本発明の様々な実施形態は、ブロックが(1)動作が実行されるプロセスの段階または(2)オペレーションの実行を担う装置のセクションを表し得るフローチャートおよびブロック図を参照して説明され得る。特定の段階およびセクションは、専用回路、コンピュータ可読媒体に格納されたコンピュータ可読命令が供給されているプログラマブル回路、および/またはコンピュータ可読媒体に格納されたコンピュータ可読命令が供給されているプロセッサにより実装され得る。専用回路は、デジタルおよび/またはアナログハードウェア回路を含んでいてよく、集積回路(IC)および/またはディスクリート回路を含んでよい。プログラマブル回路は、例えばフィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)等といった、論理AND、OR、XOR、NAND、NOR、および他の論理演算、フリップ−フロップ、レジスタ、メモリ要素等を含む再構成可能なハードウェア回路を含み得る。
【0103】
本発明は、システム、方法および/またはコンピュータプログラム製品であり得る。コンピュータプログラム製品は、プロセッサに本発明の態様を実現させるためのコンピュータ可読プログラム命令を有する(1または複数の)コンピュータ可読記憶媒体を含み得る。
【0104】
コンピュータ可読記憶媒体は、命令実行デバイスにより使用される命令を保持および格納し得る有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えばであって、限定されるものではないが、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイスまたは上述のものの任意の適切な組み合わせであり得る。コンピュータ可読記憶媒体のより具体的な例の非包括的な列挙は、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)ポータブルコンパクトディスクリードオンリメモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク、パンチカードまたは記録された命令を有する溝内の隆起構造などの機械的に暗号化されたデバイス、および、上述のものの任意の適切な組み合わせを含む。コンピュータ可読記憶媒体は、本明細書において用いられる場合、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)または、ワイヤを通じて伝送される電気信号などの一時的な信号それ自体とは解釈されない。
【0105】
本明細書において説明するコンピュータ可読プログラム命令は、例えばインターネット、ローカルエリアネットワーク、ワイドエリアネットワークおよび/または無線ネットワークなどのネットワークを介して、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスへダウンロードされ得るか、または、外部コンピュータもしくは外部ストレージデバイスへダウンロードされ得る。当該ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータおよび/またはエッジサーバを備え得る。各コンピューティング/処理デバイスにおけるネットワークアダプターカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するためのコンピュータ可読プログラム命令を転送する。
【0106】
本発明のオペレーションを実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、例えばSmalltalk(登録商標)、C++等のオブジェクト指向プログラミング言語と、「C」プログラミング言語もしくは同様のプログラミング言語などの従来の手続き型プログラミング言語とを含む1または複数のプログラミング言語の任意の組み合わせで書き込まれたソースコードもしくはオブジェクトコードのいずれかであり得る。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全て実行され得るか、スタンドアロンのソフトウェアパッケージとして部分的にユーザのコンピュータ上で実行され得るか、部分的にユーザのコンピュータ上で、かつ、部分的にリモートコンピュータ上で実行され得るか、または、リモートコンピュータもしくはサーバ上で全て実行され得る。後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意の種類のネットワークを通じてユーザのコンピュータに接続されてもよく、接続は、外部コンピュータ(例えば、インターネットサービスプロバイダを用いるインターネットを通じて)行われてもよい。いくつかの実施形態において、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行すべく、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別設定することによりコンピュータ可読プログラム命令を実行してよい。
【0107】
本発明の実施形態を説明したが、本発明の技術的範囲は、上述の実施形態に限定されない。上述の実施形態に様々な変更または改良が追加され得ることが、当業者には明らかである。そのような変更または改良が追加された実施形態が本発明の技術的範囲に含まれ得ることも、特許請求の範囲から明らかである。
【0108】
特許請求の範囲、実施形態または図に示される装置、システム、プログラムおよび方法により実行される各プロセスの動作、手順、ステップおよび段階は、順序が「より前に」、「の前に」等と示されない限り、かつ、前の処理の出力が後の処理で用いられない限り、任意の順序で実行され得る。特許請求の範囲、実施形態または図において処理フローを「まず」または「次に」などの語句を用いて説明した場合でも、処理フローがこの順序で実行されなければならないことを必ずしも意味しない。
【要約】      (修正有)
【課題】集積回路上で量子化されたスケーリングの準備及び実行を行う。
【解決手段】方法は、元のアレイと、元のアレイのサイズとスケーリングされたアレイのサイズとの比を表すスケーリング係数とを取得する手順と、スケーリングされたアレイの各列について、元のアレイの水平次元における2つの最も近い要素の各々の水平座標を、スケーリングされたアレイの各行について、元のアレイの垂直次元における2つの最も近い要素の各々の垂直座標を決定する手順と、スケーリングされたアレイの各行とスケーリングされたアレイの各列について、線形補間係数を算出する手順と、元のアレイの各値を、浮動小数点数から量子化された数へ変換する手順と、各線形補間係数を浮動小数点数から固定小数点数へ変換する手順と、水平座標及び垂直座標を、整数、値を量子化された数並びに線形補間係数を固定小数点数としてメモリに格納する手順と、を含むオペレーションを実行する。
【選択図】図1
図1
図2A
図2B
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14