(57)【特許請求の範囲】
【請求項１】
元のアレイと、前記元のアレイのサイズとスケーリングされたアレイのサイズとの比を表すスケーリング係数とを取得する手順と、
前記スケーリングされたアレイの各列について、前記元のアレイの水平次元における２つの最も近い要素の各々の水平座標を、前記スケーリングされたアレイの各行について、前記元のアレイの垂直次元における２つの最も近い要素の各々の垂直座標を決定する手順と、
前記スケーリングされたアレイの各行と前記スケーリングされたアレイの各列について、線形補間係数を算出する手順と、
前記元のアレイの各値を、浮動小数点数から、量子化された数へ変換する手順と、
各線形補間係数を浮動小数点数から固定小数点数へ変換する手順と、
前記水平座標および前記垂直座標を整数として、前記値を量子化された数として、ならびに、前記線形補間係数を固定小数点数として、メモリに格納する手順と
を含むオペレーションをコンピュータに実行させるために前記コンピュータにより実行可能である命令を備えるコンピュータプログラム。
【請求項２】
前記オペレーションは、
前記元のアレイをスケーリングするよう集積回路に命令する手順であって、前記集積回路は、スケーリングオペレーションを実行するように構成され、前記集積回路は、前記メモリと通信する、命令する手順と、
前記スケーリングされたアレイを前記集積回路から受信する手順と
をさらに含む、
請求項１に記載のコンピュータプログラム。
【請求項３】
命令する前記手順は、
前記スケーリングオペレーションを実行するための命令をコンパイルする手順と、
前記集積回路に前記命令を実行させる手順と
をさらに含む、
請求項２に記載のコンピュータプログラム。
【請求項４】
前記命令は、
前記スケーリングされたアレイのうちの少なくとも一部の各列について、前記元のアレイの前記水平次元における２つの最も近い要素の各々の予め決定された水平座標整数と、水平線形補間係数固定小数点数とを、
前記スケーリングされたアレイの前記一部の各行について、前記元のアレイの前記垂直次元における２つの最も近い要素の各々の予め決定された垂直座標整数と、垂直線形補間係数固定小数点数とを、
前記予め決定された水平座標整数と前記予め決定された垂直座標整数との各組み合わせについて、前記元のアレイの値量子化された数を
前記メモリから読み出す手順と、
前記スケーリングされたアレイの前記一部の各要素を、
前記要素の行と前記要素の列とに対応する、前記元のアレイの値量子化された数、
前記要素の前記列に対応する前記水平線形補間係数固定小数点数、および、
前記要素の前記行に対応する前記垂直線形補間係数固定小数点数
に線形補間を適用することにより算出する手順と
を前記集積回路に実行させる、
請求項３に記載のコンピュータプログラム。
【請求項５】
コンパイルする前記手順は、
前記集積回路のオンボードメモリの能力に基づいてタイルサイズを決定する手順
を含み、
前記スケーリングされたアレイの前記一部は、前記タイルサイズに対応し、読み出す前記手順および算出する前記手順は、前記スケーリングされたアレイの各要素が算出されるまで繰り返される、
請求項４に記載のコンピュータプログラム。
【請求項６】
前記集積回路により適用される前記線形補間は、
【数５】
0006874932.tif 000006
に従ってオペレーションを実行する手順を含み、
ＸＣは、量子化済みの補間された値であり、ＸＡおよびＸＢは、量子化された値であり、Ｘｃｏｅｆｆは、線形補間係数の整数乗数であり、Ｅｃｏｅｆｆは、整数シフト値である、
請求項４または５に記載のコンピュータプログラム。
【請求項７】
コンパイルする前記手順は、重複する線形補間オペレーションに基づいて後続の要素が選択されるように要素の前記算出を順序付ける手順をさらに含み、
前記命令は、前記集積回路に、重複する線形補間オペレーションを有する後続の要素の算出において用いるための補間された値をラインキャッシュさせる、
請求項４から６のいずれか一項に記載のコンピュータプログラム。
【請求項８】
各線形補間係数を変換する手順は、
全ての固定小数点数について幅を決定する手順と、
各固定小数点数について整数乗数および整数シフト値を決定する手順であって、各整数乗数は、前記幅により定義されるサイズを有する、決定する手順と
を含む、
請求項１から７のいずれか一項に記載のコンピュータプログラム。
【請求項９】
前記元のアレイの各値を変換する手順は、
全ての量子化された数についてスケーリング係数およびゼロ点を決定する手順と、
各量子化された数について、量子化された値を決定する手順と
を含む、
請求項１から８のいずれか一項に記載のコンピュータプログラム。
【請求項１０】
前記スケーリング係数は、水平スケーリング係数および垂直スケーリング係数を含み、前記水平スケーリング係数は、前記元のアレイの幅とスケーリングされたアレイの幅との比を表し、前記垂直スケーリング係数は、前記元のアレイの高さとスケーリングされたアレイの高さとの比を表す、請求項１から９のいずれか一項に記載のコンピュータプログラム。
【請求項１１】
命令を受信して、スケーリングされたアレイを元のアレイから生成する手順と、
前記スケーリングされたアレイのうちの少なくとも一部の各列について、前記元のアレイの水平次元における２つの最も近い要素の各々の予め決定された水平座標整数と、水平線形補間係数固定小数点数とを、
前記スケーリングされたアレイの前記一部の各行について、前記元のアレイの垂直次元における２つの最も近い要素の各々の予め決定された垂直座標整数と、垂直線形補間係数固定小数点数とを、
前記予め決定された水平座標整数と前記予め決定された垂直座標整数との各組み合わせについて、前記元のアレイの値量子化された数を
外部メモリから読み出す手順と、
前記スケーリングされたアレイの前記一部の各要素を、
前記要素の行と前記要素の列とに対応する、前記元のアレイの値量子化された数、
前記要素の前記列に対応する前記水平線形補間係数固定小数点数、および、
前記要素の前記行に対応する前記垂直線形補間係数固定小数点数
に線形補間を適用することにより算出する手順と
を含むオペレーションを集積回路に実行させるために前記集積回路により実行可能である命令を備えるコンピュータプログラム。
【請求項１２】
前記命令は、タイルサイズを含み、
前記スケーリングされたアレイの前記一部は、前記タイルサイズに対応し、
読み出す前記手順および算出する手順は、前記スケーリングされたアレイの各要素が算出されるまで繰り返される、
請求項１１に記載のコンピュータプログラム。
【請求項１３】
前記線形補間は、
【数６】
0006874932.tif 000007
に従ってオペレーションを実行する手順を含み、
ＸＣは、量子化済みの補間された値であり、ＸＡおよびＸＢは、量子化された値であり、Ｘｃｏｅｆｆは、線形補間係数の整数乗数であり、Ｅｃｏｅｆｆは、整数シフト値である、
請求項１１または１２に記載のコンピュータプログラム。
【請求項１４】
算出する前記手順は、
重複する線形補間オペレーションに基づいて後続の要素が選択されるように前記要素を順序付ける手順と、
重複する線形補間オペレーションを有する後続の要素の算出において用いるための補間された値をラインキャッシュする手順と、
を含む、
請求項１１から１３のいずれか一項に記載のコンピュータプログラム。
【請求項１５】
算出する前記手順は、前記スケーリングされたアレイの各要素の算出された値を前記外部メモリへ書き込む手順をさらに含む、請求項１１から１４のいずれか一項に記載のコンピュータプログラム。
【請求項１６】
元のアレイと、前記元のアレイのサイズとスケーリングされたアレイのサイズとの比を表すスケーリング係数とを取得する段階と、
前記スケーリングされたアレイの各列について、前記元のアレイの水平次元における２つの最も近い要素の各々の水平座標を、前記スケーリングされたアレイの各行について、前記元のアレイの垂直次元における２つの最も近い要素の各々の垂直座標を決定する段階と、
前記スケーリングされたアレイの各行と前記スケーリングされたアレイの各列について、線形補間係数を算出する段階と、
前記元のアレイの各値を、浮動小数点数から、量子化された数へ変換する段階と、
各線形補間係数を浮動小数点数から固定小数点数へ変換する段階と、
前記水平座標および前記垂直座標を整数として、前記値を量子化された数として、ならびに、前記線形補間係数を固定小数点数として、メモリに格納する段階と
を備える方法。
【請求項１７】
前記元のアレイをスケーリングするよう集積回路に命令する段階であって、前記集積回路は、スケーリングオペレーションを実行するように構成され、前記集積回路は、前記メモリと通信する、命令する段階と、
前記スケーリングされたアレイを前記集積回路から受信する段階と
をさらに備える、請求項１６に記載の方法。
【請求項１８】
命令する前記段階は、
前記スケーリングオペレーションを実行するための命令をコンパイルする段階と、
前記集積回路に前記命令を実行させる段階と
をさらに有する、
請求項１７に記載の方法。
【請求項１９】
前記命令は、
前記スケーリングされたアレイのうちの少なくとも一部の各列について、前記元のアレイの前記水平次元における２つの最も近い要素の各々の予め決定された水平座標整数と、水平線形補間係数固定小数点数とを、
前記スケーリングされたアレイの前記一部の各行について、前記元のアレイの前記垂直次元における２つの最も近い要素の各々の予め決定された垂直座標整数と、垂直線形補間係数固定小数点数とを、
前記予め決定された水平座標整数と前記予め決定された垂直座標整数との各組み合わせについて、前記元のアレイの値量子化された数を
前記メモリから読み出す段階と、
前記スケーリングされたアレイの前記一部の各要素を、
前記要素の行と前記要素の列とに対応する、前記元のアレイの値量子化された数、
前記要素の前記列に対応する前記水平線形補間係数固定小数点数、および、
前記要素の前記行に対応する前記垂直線形補間係数固定小数点数
に線形補間を適用することにより算出する段階と
を前記集積回路に実行させる、
請求項１８に記載の方法。
【請求項２０】
コンパイルする前記段階は、
前記集積回路のオンボードメモリの能力に基づいてタイルサイズを決定する段階
を含み、
前記スケーリングされたアレイの前記一部は、前記タイルサイズに対応し、読み出す前記段階および算出する前記段階は、前記スケーリングされたアレイの各要素が算出されるまで繰り返される、
請求項１９に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
［技術分野］
【０００２】
本発明は、量子化されたスケーリングの準備および実行に関する。より具体的には、本発明は、集積回路上での実行のためのスケーリングオペレーションの準備に関する。
【０００３】
［背景技術］
【０００４】
スケーリングオペレーションは共通のものであり、ニューラルネットワークアクセラレータなどの集積回路により実行されるスケーリングオペレーションを含む。エッジデバイスは通常、計算リソースが限られているので、集積回路を用いる誘因は通常、その効率にある。より効率的なスケーリングオペレーション、特に、集積回路により実行されるスケーリングオペレーションに対するニーズが存在する。
【発明の概要】
【０００５】
本発明の態様によれば、集積回路上で実行されるスケーリングオペレーションの準備のためのオペレーションをコンピュータに実行させるためにコンピュータにより実行可能である命令を含むコンピュータプログラムが提供される。当該オペレーションは、元のアレイと、元のアレイのサイズとスケーリングされたアレイのサイズとの比を表すスケーリング係数とを取得する手順と、スケーリングされたアレイの各列について、元のアレイの水平次元における２つの最も近い要素の各々の水平座標を、スケーリングされたアレイの各行について、元のアレイの垂直次元における２つの最も近い要素の各々の垂直座標を決定する手順と、スケーリングされたアレイの各行とスケーリングされたアレイの各列について、線形補間係数を算出する手順と、元のアレイの各値を、浮動小数点数から、量子化された数へ変換する手順と、各線形補間係数を浮動小数点数から固定小数点数へ変換する手順と、水平座標および垂直座標を整数として、値を量子化された数として、ならびに、線形補間係数を固定小数点数として、メモリに格納する手順とを含む。
【０００６】
この態様は、コンピュータプログラムの命令を実行するプロセッサにより実行される方法および当該方法を実行する装置も含み得る。装置は、当該方法のオペレーションを実行するように構成されたセクションを含み得る。
【０００７】
本発明の別の態様によれば、スケーリングオペレーションのためのオペレーションを集積回路に実行させるために集積回路により実行可能である命令を含むコンピュータプログラムが提供される。当該オペレーションは、命令を受信して、スケーリングされたアレイを元のアレイから生成する手順と、スケーリングされたアレイのうちの少なくとも一部の各列について、元のアレイの水平次元における２つの最も近い要素の各々の予め決定された水平座標整数と、水平線形補間係数固定小数点数とを、スケーリングされたアレイの一部の各行について、元のアレイの垂直次元における２つの最も近い要素の各々の予め決定された垂直座標整数と、垂直線形補間係数固定小数点数とを、予め決定された水平座標整数と予め決定された垂直座標整数との各組み合わせについて、元のアレイの値量子化された数を外部メモリから読み出す手順と、スケーリングされたアレイの一部の各要素を、要素の行と要素の列とに対応する、元のアレイの値量子化された数、要素の列に対応する水平線形補間係数固定小数点数、および、要素の行に対応する垂直線形補間係数固定小数点数に線形補間を適用することにより算出する手順とを含む。
【０００８】
発明の概要は、本発明の実施形態の必要な特徴の全てを説明しているわけではない。上述の特徴のサブコンビネーションも本発明となり得る。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態による量子化されたスケーリングの準備および実行のためのシステムを示す。
【００１０】
【図２Ａ】本発明の実施形態によるスケーリングオペレーションの対象になる元のアレイを示す。
【００１１】
【図２Ｂ】本発明の実施形態によるスケーリングオペレーションの図を示す。
【００１２】
【図３】本発明の実施形態によるスケーリングオペレーションの準備のためのシステムを示す。
【００１３】
【図４】本発明の実施形態によるスケーリングオペレーションの準備のためのオペレーションフローを示す。
【００１４】
【図５】本発明の実施形態による最も近い要素の座標を決定するためのオペレーションフローを示す。
【００１５】
【図６】本発明の実施形態による線形補間係数を算出するためのオペレーションフローを示す。
【００１６】
【図７】本発明の実施形態による値浮動小数点数を量子化された数へ変換するためのオペレーションフローを示す。
【００１７】
【図８】本発明の実施形態による係数浮動小数点数を固定小数点数へ変換するためのオペレーションフローを示す。
【００１８】
【図９】本発明の実施形態によるスケーリングオペレーションのためのオペレーションフローを示す。
【００１９】
【図１０】本発明の実施形態によるスケーリング命令をコンパイルするためのオペレーションフローを示す。
【００２０】
【図１１】本発明の実施形態によるスケーリングオペレーションのためのシステムを示す。
【００２１】
【図１２】本発明の実施形態による集積回路によるスケーリングオペレーションの実行のためのオペレーションフローを示す。
【００２２】
【図１３】本発明の実施形態によるスケーリングされたアレイ部分の要素を算出するためのオペレーションフローを示す。
【００２３】
【図１４】本発明の実施形態による量子化されたスケーリングの準備および実行のためのハードウェア構成を示す。
【発明を実施するための形態】
【００２４】
本発明の例示的な実施形態を以下で説明する。例示的な実施形態は、特許請求の範囲による本発明を限定しないものとし、実施形態に記載される特徴の組み合わせは、必ずしも本発明に不可欠ではない。
【００２５】
集積回路の効率に対する最も大きい影響のうちの１つは、タスクの実行中にＤＲＡＭなどの外部メモリへのアクセスがどれくらいの頻度で行われるかである。スケーリングオペレーションは、多くの計算を伴い得る。しかしながら、それらの計算のうちの多くが繰り返される。そのような計算を繰り返す代わりに、集積回路によるより効率的な実行を目的として、当該スケーリングオペレーションは、ホストプロセッサにより予め計算され得る。
【００２６】
さらに、当該計算のうちの多くが実数を伴う。実数は通常、精度を高めるために、浮動小数点数として格納される。しかしながら、浮動小数点数はまた、他の種類の数よりも多くのストレージ空間を必要とする。例えば、浮動小数点数のストレージは、以下の式により表され得る。
【００２７】
【数１】
0006874932.tif 000002
【００２８】
Ｘは、固有の２３ビットの仮数であり、Ｅは、固有の８ビットの指数であり、Ｓは、固有の１ビットの符号である。各実数について、合計で３２ビットのストレージが必要とされる。一方、実数が、量子化された数として格納される場合、ストレージの量は低減され得る。例えば、量子化された数のストレージは、以下の式により表され得る。
【００２９】
【数２】
0006874932.tif 000003
【００３０】
Ｘは、固有の８ビットの量子化された値であり、ＳＣは、共通のスケーリング係数または乗数であり、ＺＰは、共通のゼロ点またはシフト値である。共通のＳＣおよびＺＰのストレージ能力が実数毎に無視できると仮定すると、各実数について、８ビットのストレージのみが必要とされる。
【００３１】
図１は、本発明の実施形態による量子化されたスケーリングの準備および実行のためのシステムを示す。システムは、ホストプロセッサ１００、外部メモリ１１０および集積回路１２０を含む。ホストプロセッサ１００および集積回路１２０は、外部メモリ１１０と通信する。ホストプロセッサ１００は、スケーリングオペレーション用のデータを前処理する集積回路１２０を用いて、量子化されたスケーリングの実行の準備を行う。次に、ホストプロセッサ１００は、前処理されたデータ１１４を外部メモリ１１０へ書き込む。また、ホストプロセッサ１００は、集積回路１２０により実行された場合にスケーリングオペレーションを集積回路１２０に実行させる命令をコンパイルする。ホストプロセッサ１００は、コンパイルされた命令１１７を集積回路１２０へ転送し、集積回路１２０に、コンパイルされた命令１１７を実行してスケーリングオペレーションを行うようにさせる。スケーリングオペレーション中に、集積回路１２０は、前処理されたデータ１１４の１または複数の部分を外部メモリ１１０から読み出す。スケーリングされたアレイ１１８の要素が集積回路１２０により計算されるときに、集積回路は、スケーリングされたアレイ１１８を外部メモリ１１０へ書き込む。
【００３２】
図２Ａは、本発明の実施形態によるスケーリングオペレーションの対象になる元のアレイ２１１を示す。元のアレイ２１１は、要素２１１Ｅなどの要素から構成され、各要素は値を有する。本実施形態において、スケーリングオペレーションは、元のアレイ２１１を４行４列のアレイから３行３列のアレイへダウンスケーリングする。スケーリングされたアレイは、要素２１８Ｅなどの要素から構成される。スケーリングされたアレイの各要素は、元のアレイ２１１の４つの最も近い要素の各々の値に基づいて算出される。
【００３３】
図２Ｂは、本発明の実施形態による要素２１８Ｅのスケーリングオペレーションの図を示す。要素２１８Ｅは、スケーリングされたアレイの要素であり、２１１Ｅなど、元のアレイ２１１の４つの最も近い要素の各々から算出される。要素２１８Ｅの算出は、元のアレイ２１１の４つの最も近い要素の各々の値に基づくと共に、要素２１８Ｅからの各要素の距離にも基づく。本実施形態において、同じ行に沿った元のアレイの要素間の中間値が、要素２１８Ｅより上および要素２１８Ｅより下の行について算出される。ひとたび中間値が決定されると、次に、要素２１８Ｅが、中間値と、要素２１８Ｅからの各中間値の距離とに基づいて算出され得る。より具体的には、要素２１８Ｅより上の中間値は、左上の要素の値に等しく、加えて、右上の要素の値と左上の要素の値との間の差を１と１／ＳＦ（スケーリング係数）との間の距離により乗算したものに等しい。この算出は、中間値に基づき、要素２１８Ｅより下の中間値について繰り返され、次に、要素２１８Ｅの値について繰り返される。１と１／ＳＦとの間の距離は、線形補間係数と称され、スケーリングされたアレイの要素の行および列と共に変わる。本明細書において、線形補間係数の算出を以下で説明する。
【００３４】
図３は、本発明の実施形態によるスケーリングオペレーションの準備のためのシステムを示す。システムは、ホストプロセッサ３００および外部メモリ３１０を含む。ホストプロセッサ３００は、元のアレイ３１１およびスケーリング係数３１３を処理して、外部メモリ３１０に格納するための前処理されたデータを生成する。これにより、スケーリングオペレーションは、集積回路により実行され、スケーリングされたアレイ３１８が取得され得る。そのようにする際、ホストプロセッサ３００は、最も近い左側座標整数３１４Ｌと、最も近い右側座標整数３１４Ｒと、最も近い上側座標整数３１４Ｔと、最も近い下側座標整数３１４Ｂと、水平線形補間係数量子化済み数３１４Ｘと、垂直線形補間係数量子化済み数３１４Ｙと、元のアレイ３１２の値固定小数点数とを含む前処理されたデータを外部メモリへ書き込み得る。この前処理されたデータは、スケーリング係数３１３を用いて変換される任意の元のアレイについて同じであり得る。これにより、ホストプロセッサ３００は、前処理されたデータを複数のスケーリングオペレーション用に再使用することが可能になり得る。例えば、スケーリングオペレーションがニューラルネットワーク推論の過程で用いられる場合、スケーリングオペレーションは、異なる値の元のアレイを毎回用いて何度も実行され得る。しかしながら、同じ前処理されたデータは、スケーリング係数３１３が同じである限り、再使用され得る。より具体的には、同じ前処理されたデータは、同じサイズまたはより小さいサイズの元のアレイをスケーリングするために用いられ得る。より大きい元のアレイについては、同じ前処理されたデータが用いられ得るが、追加の元の値を考慮するために、より多く前処理されたデータが算出されなければならない。
【００３５】
図４は、本発明の実施形態によるスケーリングオペレーションの準備のためのオペレーションフローを示す。当該オペレーションフローは、スケーリングオペレーションの準備のための方法を提供し得る。当該方法は、図１４に示されるホストプロセッサなどの特定のオペレーションを実行するための各部を含むホストプロセッサにより実行され得る。以下でこれを説明する。
【００３６】
Ｓ４４０において、取得部が、元のアレイと、元のアレイのサイズとスケーリングされたアレイのサイズとの比を表すスケーリング係数とを取得する。スケーリングオペレーションを準備する目的では、元のアレイの値は必要ないが、水平方向の要素の数と垂直方向の要素の数とに関する元のアレイの次元により、前処理の範囲が決まる。スケーリング係数は、任意の数であり得る。また、スケーリング係数は、概して１に等しくないが、オペレーションフローは依然として、同じ方式で機能するであろう。０と１との間のスケーリング係数は、元のアレイのサイズのダウンスケーリングまたは低減を表す。１よりも大きいスケーリング係数は、元のアレイのサイズのアップスケーリングまたは増加を表す。いくつかの実施形態において、水平次元の１つのスケーリング係数および垂直次元の別のスケーリング係数など、１よりも多くのスケーリング係数が存在し得る。いくつかの実施形態において、スケーリング係数は、元のアレイのサイズおよびスケーリングされたアレイのサイズからの導出を通じて取得され得る。
【００３７】
Ｓ４５０において、決定部が、スケーリングされたアレイの各列について、元のアレイの水平次元における２つの最も近い要素の各々の水平座標を、スケーリングされたアレイの各行について、元のアレイの垂直次元における２つの最も近い要素の各々の垂直座標を決定する。これにより、例えば要素２１８Ｅについて図２Ｂに示されるように、スケーリングされたアレイの要素の値を算出するために用いられる、元のアレイの値の座標が識別される。２つの座標により元のアレイの値が識別されるが、このオペレーションでは、水平座標が垂直座標とは別々に決定される。図３は、これらが外部メモリへどのように格納され得るかについてのロジック図を示す。スケーリングされたアレイの各要素は、上側座標、下側座標、左側座標および右側座標という４つの座標に対応し、組み合わされた場合、元のアレイの左上の要素、元のアレイの右上の要素、元のアレイの左下の要素および元のアレイの右下の要素の座標が得られる。この決定を図５においてさらに説明する。
【００３８】
Ｓ４６０において、算出部が、スケーリングされたアレイの各行およびスケーリングされたアレイの各列について、線形補間係数を算出する。例えば、スケーリングされたアレイがｉの行により表される場合において、ｉが１からｎであり、ｎが行の数であるときは、以下の式により垂直線形補間係数ＹＣｉが算出され得る。
【００３９】
【数３】
0006874932.tif 000004
【００４０】
ＳＦは、スケーリング係数または垂直スケーリング係数であり、ＹＴｉは、スケーリングされたアレイの行ｉに最も近い上側座標である。各行の垂直線形補間係数がそれに応じて算出され得ると共に、各列の水平線形補間係数が、次元を切り替ることにより、同様に算出され得る。この算出を図６においてさらに説明する。
【００４１】
Ｓ４７０において、変換部が、元のアレイの各値を、浮動小数点数から、量子化された数へ変換し、各線形補間係数を浮動小数点数から固定小数点数へ変換する。元のアレイの値が実数であると仮定すると、各値は典型的には、浮動小数点数として格納される。変換部は、これらの値浮動小数点数を、量子化された数へ変換して、各値が占有するストレージ空間の量を減らす。Ｓ４６０において算出された各線形補間係数は、浮動小数点数として格納される実数でもある。変換部は、これらの係数浮動小数点数を固定小数点数へ変換して、各値が占有するストレージ空間の量を減らす。この変換を図７においてさらに説明する。
【００４２】
Ｓ４４２において、格納部が、水平座標および垂直座標を整数として、値を量子化された数として、線形補間係数を固定小数点数として、メモリに格納する。
【００４３】
本実施形態では、線形補間係数が浮動小数点数として格納され、次に固定小数点数へ変換されると説明したが、他の実施形態では、線形補間係数は、算出の後に固定小数点数として格納され得る。これは、算出および変換が一度に起こり、線形補間係数は、実際には決して浮動小数点数としては格納されないことを意味する。
【００４４】
図５は、本発明の実施形態による最も近い要素の座標を決定するためのオペレーションフローを示す。このオペレーションフロー内のオペレーションは、決定部またはその対応する名前が付けられたサブ部により実行され得る。図４において説明したように、元のアレイおよびスケーリング係数は、最も近い要素の座標を決定するより前に取得される。
【００４５】
Ｓ５５１において、決定部またはそのサブ部が、スケーリングされたアレイの第１列の左側に対する元のアレイの最も近い座標を決定する。図２Ｂに示される例において、スケーリングされたアレイの第１列の左側に対する元のアレイの最も近い座標は、要素２１８Ｅにより表されており、１である。これは、元のアレイの第１列を表す。最も近い座標は、ｉ／ＳＦの床関数および天井関数を用いて数理的に決定され得る。ｉは、スケーリングされたアレイの行（または列）の数である。図２Ｂの例において、スケーリング係数は０．７５なので、第１行のｉ／ＳＦは１／０．７５＝４／３である。床（４／３）＝１は、スケーリングされたアレイの第１行より上の元のアレイの最も近い座標が１であることを意味し、天井（４／３）＝２は、スケーリングされたアレイの第１行より下の元のアレイの最も近い座標が２であることを意味する。
【００４６】
Ｓ５５２において、決定部またはそのサブ部が、スケーリングされたアレイの第１列の右側に対する元のアレイの最も近い座標を決定する。図２Ｂに示される例において、スケーリングされたアレイの第１列の右側に対する最も近い座標は、要素２１８Ｅにより表されており、２である。これは、元のアレイの第２列を表す。
【００４７】
Ｓ５５３において、決定部またはそのサブ部が、最も近い座標の決定について残りの列が存在するか否かを決定する。未決定の列がより多く存在する場合、オペレーションフローは、Ｓ５５１の別の反復へ進む前に、次列を選択する（Ｓ５５４）。未決定の列がもはや存在しない場合、オペレーションフローは、Ｓ５５６へ進み、スケーリングされたアレイの行に対する最も近い座標の決定を開始する。
【００４８】
Ｓ５５６において、決定部またはそのサブ部が、スケーリングされたアレイの第１行より上の元のアレイの最も近い座標を決定する。図２Ｂに示される例において、スケーリングされたアレイの第１行より上の元のアレイの最も近い座標は、要素２１８Ｅにより表されており、１である。これは、元のアレイの第１行を表す。
【００４９】
Ｓ５５７において、決定部またはそのサブ部が、スケーリングされたアレイの第１行より下の元のアレイの最も近い座標を決定する。図２Ｂに示される例において、スケーリングされたアレイの第１行より下の最も近い座標は、要素２１８Ｅにより表されており、２である。これは、元のアレイの第２行を表す。
【００５０】
Ｓ５５８において、決定部またはそのサブ部が、最も近い座標の決定について残りの行が存在するか否かを決定する。未決定の行がより多く存在する場合、オペレーションフローは、Ｓ５５６の別の反復へ進む前に、次行を選択する（Ｓ５５９）。未決定の行がもはや存在しない場合、オペレーションフローは終了する。
【００５１】
図６は、本発明の実施形態による線形補間係数を算出するためのオペレーションフローを示す。このオペレーションフロー内のオペレーションは、算出部またはその対応する名前が付けられたサブ部により実行され得る。図４において説明したように、元のアレイ、スケーリング係数および最も近い座標は、線形補間係数を算出するより前に取得される。
【００５２】
Ｓ６６２において、算出部またはそのサブ部が、スケーリングされたアレイの第１列の水平線形補間係数を算出する。図２Ｂに示される例において、第１列の水平線形係数ＸＣ１は、式３（１×１／（３／４）−１）を用いて算出され、１／３が得られ得る。
【００５３】
Ｓ６６３において、算出部またはそのサブ部が、係数の算出について残りの列が存在するか否かを決定する。未計算の列がより多く存在する場合、オペレーションフローは、Ｓ６６２の別の反復へ進む前に、次列を選択する（Ｓ６６４）。未計算の列がもはや存在しない場合、オペレーションフローは、Ｓ６６６へ進み、スケーリングされたアレイの行の係数の算出を開始する。
【００５４】
Ｓ６６６において、算出部またはそのサブ部が、スケーリングされたアレイの第１列の垂直線形補間係数を算出する。図２Ｂに示される例において、第１列の垂直線形係数ＹＣ１は、式３（１×１／（３／４）−１）を用いて算出され、１／３が得られ得る。
【００５５】
Ｓ６６７において、算出部またはそのサブ部が、係数の算出について残りの行が存在するか否かを決定する。未計算の行がより多く存在する場合、オペレーションフローは、Ｓ６６６の別の反復へ進む前に、次行を選択する（Ｓ６６４）。未計算の行がもはや存在しない場合、オペレーションフローは終了する。
【００５６】
図７は、本発明の実施形態による値浮動小数点数を量子化された数へ変換するためのオペレーションフローを示す。このオペレーションフロー内のオペレーションは、変換部またはその対応する名前が付けられたサブ部により実行され得る。元のアレイの値は、図４におけるオペレーションの全てを実行するために必要ではないが、図７のオペレーションフローを実行するために必要である。
【００５７】
Ｓ７７１において、変換部またはそのサブ部が、適切なスケーリング係数および適切なゼロ点を決定する。スケーリング係数およびゼロ点は、元のアレイの値に基づいて計算または選択され得る。
【００５８】
Ｓ７７２において、変換部またはそのサブ部が、元のアレイの値と、スケーリング係数と、ゼロ点とから、量子化された値を決定する。例えば、元のアレイの値は、スケーリング係数により除算され得、次に、ゼロ点により増やされ得る。これにより、量子化された値がもたらされる。
【００５９】
Ｓ７７３において、変換部またはそのサブ部が、量子化について残りの値が存在するか否かを決定する。量子化されていない値がより多く存在する場合、オペレーションフローは、Ｓ７７２の別の反復へ進む前に、次の値を選択する（Ｓ７７４）。量子化されていない値がもはや存在しない場合、オペレーションフローは終了する。
【００６０】
図８は、本発明の実施形態による係数浮動小数点数を固定小数点数へ変換するためのオペレーションフローを示す。このオペレーションフロー内のオペレーションは、変換部またはその対応する名前が付けられたサブ部により実行され得る。図４において説明したように、線形補間係数は、浮動小数点数を変換する前に算出される。
【００６１】
Ｓ８７６において、変換部またはそのサブ部が、適切な幅を決定する。幅は、精度とリソース使用とのバランスをとるために計算または選択され得る。
【００６２】
Ｓ８７７において、変換部またはそのサブ部が、線形補間係数から整数乗数およびシフト値を決定する。言い換えると、各固定小数点数は、整数乗数および整数シフト値を含む。整数乗数のサイズは、Ｓ８７６において決定された幅により定義される。いくつかの実施形態において、整数シフト値は、一定の乗算後シフトに固定され得る。言い換えると、整数シフト値は、全ての固定小数点数について同じであり得る。
【００６３】
Ｓ８７８において、変換部またはそのサブ部が、変換について残りの線形補間係数が存在するか否かを決定する。未変換の線形補間係数がより多く存在する場合、オペレーションフローは、Ｓ８７７の別の反復へ進む前に、次の値を選択する（Ｓ８７９）。未変換の線形補間係数がもはや存在しない場合、オペレーションフローは終了する。
【００６４】
図９は、本発明の実施形態によるスケーリングオペレーションのためのオペレーションフローを示す。当該オペレーションフローは、スケーリングオペレーションのための方法を提供し得る。当該方法は、命令部またはその対応する名前が付けられたサブ部により実行され得る。図４において説明したように、元のアレイ、スケーリング係数、最も近い座標および線形補間係数は、スケーリングオペレーションより前に取得される。
【００６５】
Ｓ９８０において、命令部またはそのサブ部などのコンパイル部が、スケーリングオペレーションを実行するための命令をコンパイルする。命令は、最も近い座標と、固定小数点数として格納された線形補間係数と、量子化された数として格納された元のアレイの値とを含む前処理されたデータを用いて元のアレイのスケーリングオペレーションを実行するための命令を集積回路が実行し得るようにコンパイルされる。例えば、命令は、スケーリングされたアレイのうちの少なくとも一部の各列について、元のアレイの水平次元における２つの最も近い要素の各々の予め決定された水平座標整数と、水平線形補間係数固定小数点数とを、スケーリングされたアレイの一部の各行について、元のアレイの垂直次元における２つの最も近い要素の各々の予め決定された垂直座標整数と、垂直線形補間係数固定小数点数とを、予め決定された水平座標整数と予め決定された垂直座標整数との各組み合わせについて、元のアレイの値量子化された数をメモリから読み出す段階と、スケーリングされたアレイの一部の各要素を、要素の行と要素の列とに対応する、元のアレイの値量子化された数、要素の列に対応する水平線形補間係数固定小数点数、および、要素の行に対応する垂直線形補間係数固定小数点数に線形補間を適用することにより算出する段階とを集積回路に実行させ得る。いくつかの実施形態において、スケーリングオペレーションは、唯一のオペレーションではなく、主なオペレーションでさえない。そのような実施形態では、スケーリングオペレーションを実行するための命令は、集積回路により実行される命令の中でも特に、例えばニューラルネットワーク推論等についての命令となる。
【００６６】
Ｓ９４４において、命令部またはそのサブ部が、集積回路に命令を実行させる。例えば、命令部は、前処理されたデータが格納されたメモリと通信して元のアレイをスケーリングするよう集積回路に命令し得る。
【００６７】
Ｓ９４９において、命令部またはそのサブ部などの受信部が、スケーリングされたアレイを集積回路から受信する。スケーリングオペレーションが主なオペレーションではない実施形態において、受信部は、スケーリングされたアレイを受信し得ないが、スケーリングされたアレイが中間段階であるさらなる計算の結果を代わりに受信し得る。
【００６８】
図１０は、本発明の実施形態によるスケーリング命令をコンパイルするためのオペレーションフローを示す。このオペレーションフロー内のオペレーションは、命令部またはその対応する名前が付けられたサブ部などのコンパイル部により実行され得る。図９において説明したように、元のアレイ、スケーリング係数、最も近い座標および線形補間係数は、スケーリングオペレーションより前に取得される。
【００６９】
Ｓ１０８２において、コンパイル部またはそのサブ部などのタイリング部が、スケーリングオペレーションの実行中にタイリングを用いるかどうかを決定する。例えば、前処理されたデータおよび結果として得られるスケーリングされた値の全てを保持するために必要とされるオンボードメモリが集積回路のオンボードメモリの能力を超えている場合、タイリングが用いられる。スケーリングオペレーションが集積回路の唯一のオペレーションではない実施形態において、タイリング部は、前処理されたデータおよび結果として得られるスケーリングされた値の全てを保持するために十分なオンボードメモリがスケーリングオペレーションに割り当てられ得るかどうかを決定し得る。十分なオンボードメモリ能力がある場合、オペレーションフローは、タイルサイズの決定をスキップして、Ｓ１０８６へ進む。十分なオンボードメモリ能力がない場合、オペレーションフローは、タイルサイズを決定すべくＳ１０８４へ進む。
【００７０】
Ｓ１０８４において、タイリング部が、集積回路のオンボードメモリの能力に基づいてタイルサイズを決定する。例えば、タイルサイズは、タイル全体を格納するための、かつ、スケーリングされたアレイの値へと処理するための十分なオンボードメモリ能力を集積回路が有するように選択される。しかしながら、タイルサイズが低減されるので、外部メモリからの読出オペレーションの量が増え、効率に負の影響が及び得る。集積回路がスケーリングオペレーションを実行することが可能になるようタイルサイズが最大であることが理想的であり得る。スケーリングされたアレイの一部は、タイルサイズに対応し、読出オペレーションおよび算出オペレーションは、スケーリングされたアレイの各要素が算出されるまで繰り返される。前処理されたデータの必要な一部のサイズおよびオフセットは、スケーリングされたアレイの出力タイルのサイズとオフセットとに基づいて決定され得る。必要な一部は、出力タイルの各要素を算出するために必要なデータを含む。元のアレイの入力タイルのサイズおよびオフセットは、出力タイルの各要素を算出するために必要とされる前処理されたデータに基づいて決定され得る。命令は、入力タイルと出力タイルの各要素を算出するために必要とされる前処理されたデータとのみが所与の時点で集積回路に提供されるようにコンパイルされ得る。前処理されたデータのうちの座標は、各入力タイルの左上角のオフセットにより調整される必要があり得る。当該調整は、集積回路またはホストプロセッサによるスケーリングオペレーションの前または集積回路によるスケーリングオペレーション中に１回行われ得る。線形補間係数は、スケーリングオペレーションについて変更の必要がないことがある。
【００７１】
Ｓ１０８６において、コンパイル部またはそのサブ部などの順序付け部が、中間値などの中間結果が、パージされる前に再使用され得るように、かつ、１回または複数回の算出を繰り返すことを回避するために、スケーリングされたアレイの要素の算出を順序付ける。言い換えると、コンパイルすることは、重複する線形補間オペレーションに基づいて後続の要素が選択されるように要素の算出を順序付けることをさらに含む。中間値を再使用するために、命令はさらに、集積回路に、重複する線形補間オペレーションを有する後続の要素の算出において用いるための補間された値をラインキャッシュさせ得る。
【００７２】
図１１は、本発明の実施形態によるスケーリングオペレーションのためのシステムを示す。システムは、外部メモリ１１１０および集積回路１１２０を含む。元のアレイおよびスケーリング係数が処理され、外部メモリ１１１０に格納するための前処理されたデータが生成される。これにより、スケーリングオペレーションは、集積回路１１２０により実行され、スケーリングされたアレイ１１１８が取得され得る。そのようにする際、集積回路１１２０は、最も近い左側座標整数１１１４Ｌと、最も近い右側座標整数１１１４Ｒと、最も近い上側座標整数１１１４Ｔと、最も近い下側座標整数１１１４Ｂと、水平線形補間係数量子化済み数１１１４Ｘと、垂直線形補間係数量子化済み数１１１４Ｙと、元のアレイ１１１２の値固定小数点数とを含む前処理されたデータを用いて、図１２において説明するオペレーションを実行し得る。集積回路１１２０は、前処理されたデータを利用して、スケーリングされたアレイ１１１８の各値を決定する。例えば、スケーリングされたアレイ１１１８の要素１１３０の値１１１８Ｅを決定するために、集積回路１１２０は、最も近い座標と、最も近い座標に関連する元のアレイの値とを読み出す。要素１１３０に対する最も近い座標に関連する値は、（ＸＬ１，ＹＴ３）、（ＸＲ１，ＹＴ３）、（ＸＬ１，ＹＢ３）および（ＸＲ１，ＹＢ３）に位置する元のアレイの値である。値１１１８Ｅを決定するために、集積回路１１２０はさらに、要素１１３０に関連する水平線形補間係数１１１４Ｙおよび垂直線形補間係数１１１１４Ｘ、つまり、水平線形補間係数ＹＣ３および垂直線形補間係数ＸＣ１読み出す。
【００７３】
図１２は、本発明の実施形態による集積回路によるスケーリングオペレーションの実行のためのオペレーションフローを示す。当該オペレーションフローは、スケーリングするための方法を提供し得る。当該方法は、図１４に示される集積回路などの特定のオペレーションを実行するための各部を含む集積回路により実行され得る。以下でこれを説明する。
【００７４】
Ｓ１２４６において、受信部がスケーリング命令を受信する。例えば、受信部は、スケーリングされたアレイを元のアレイから生成するための命令を受信し得る。命令は、スケーリングオペレーションのための前処理されたデータを準備し、前処理されたデータを外部メモリに格納したホストプロセッサから受信され得る。
【００７５】
Ｓ１２４７において、読出部が、元のアレイの座標と、線形補間係数と、元のアレイの値とを含むデータのうちの少なくとも一部を外部メモリから読み出す。例えば、読出部は、スケーリングされたアレイのうちの少なくとも一部の各列について、元のアレイの水平次元における２つの最も近い要素の各々の予め決定された水平座標整数と、水平線形補間係数固定小数点数とを、スケーリングされたアレイの一部の各行について、元のアレイの垂直次元における２つの最も近い要素の各々の予め決定された垂直座標整数と、垂直線形補間係数固定小数点数とを、予め決定された水平座標整数と予め決定された垂直座標整数との各組み合わせについて、元のアレイの値量子化された数を読み出し得る。集積回路が十分なオンボードメモリ能力を有する場合、上述のデータの全てが一度に読み出され得る。そうでなければ、読出部は、上述のデータの一部またはタイルを読み出す。ホストプロセッサからの命令は、タイルサイズを含み得る。タイルサイズにより、各部分のサイズが決定される。読出オペレーションおよび算出オペレーションは、スケーリングされたアレイの各要素が算出されるまで繰り返される。
【００７６】
Ｓ１２９０において、算出部が、Ｓ１２４７において読み出されたデータの一部に関連するスケーリングされたアレイの要素を算出する。例えば、算出部は、スケーリングされたアレイの一部の各要素を、要素の行と要素の列とに対応する、元のアレイの値量子化された数、要素の列に対応する水平線形補間係数固定小数点数、および、要素の行に対応する垂直線形補間係数固定小数点数に線形補間を適用することにより算出する。集積回路が十分なオンボードメモリ能力を有する場合、要素の全てが一度に算出され得る。そうでなければ、算出部は、要素の一部またはタイルを算出する。言い換えると、算出は、読み出しの各部分間で部分的に実行される。Ｓ１２４７およびＳ１２９０の反復が進むので、スケーリングされたアレイの各要素が算出されるまで、部分の読み出しおよび部分の算出が繰り返される。
【００７７】
Ｓ１２４８において、集積回路またはその部が、スケーリングについて残りの部分が存在するか否かを決定する。スケーリングされていない部分がより多く存在する場合、オペレーションフローは、Ｓ１２４７の別の反復へ進む前に、次の部分を選択する（Ｓ１２４９）。スケーリングされていない部分がもはや存在しない場合、オペレーションフローは終了する。
【００７８】
図１３は、本発明の実施形態によるスケーリングされたアレイ部分の要素を算出するためのオペレーションフローを示す。このオペレーションフロー内のオペレーションは、算出部またはその対応する名前が付けられたサブ部により実行され得る。図１２において説明したように、元のアレイの座標と、線形補間係数と、元のアレイの値とは、オペレーションを算出するより前に読み出される。
【００７９】
Ｓ１３９２において、算出部またはそのサブ部などの抽出部が、スケーリングされたアレイの要素に対する最も近い座標に関連する値量子化された数を抽出する。式２の例を用いて、抽出部は、スケーリング係数ＳＣおよびゼロ点ＺＰとは別に、量子化された実数から、量子化された値Ｘを抽出する。図１１の例において、抽出部は、要素１１３０の値１１１８Ｅを算出すべく、値量子化された数Ｖ（ＸＬ１）（ＹＴ３）、Ｖ（ＸＲ１）（ＹＴ３）、Ｖ（ＸＬ１）（ＹＢ３）およびＶ（ＸＲ１）（ＹＢ３）から、量子化された値を抽出するであろう。
【００８０】
Ｓ１３９４において、算出部またはそのサブ部などの適用部が、量子化された値と線形補間係数固定小数点数とに補間式を適用して、スケーリングされた値を算出する。例えば、線形補間は、以下の式に従ってオペレーションを実行することを含む。
【００８１】
【数４】
0006874932.tif 000005
【００８２】
ＸＣは、量子化済みの補間された値であり、ＸＡおよびＸＢは、量子化された値であり、Ｘｃｏｅｆｆは、線形補間係数の整数乗数であり、Ｅｃｏｅｆｆは、整数シフト値である。式４を用いて、スケーリングされた値が、３つの段階で算出され得る。図１１の例において、第１ステップは、水平線形補間係数ＹＣ３の整数乗数（Ｘｃｏｅｆｆ）およびシフト値（Ｅｃｏｅｆｆ）を用いて、Ｖ３１（ＸＡ）とＶ３２（ＸＢ）との間の中間値（ＸＣ）を算出することであり得る。第２ステップは、水平線形補間係数ＹＣ３の整数乗数（Ｘｃｏｅｆｆ）およびシフト値（Ｅｃｏｅｆｆ）を用いて、Ｖ４１（ＸＡ）とＶ４２（ＸＢ）との間の中間値（ＸＣ）を算出することであり得る。第３段階は、垂直線形補間係数ＸＣ３の整数乗数（Ｘｃｏｅｆｆ）およびシフト値（Ｅｃｏｅｆｆ）を用いて、第１ステップにおいて算出された中間値（ＸＡ）と第２ステップにおいて算出された中間値（ＸＢ）との間の中間値（ＸＣ）として、スケーリングされた値１１１８Ｅの量子化された値を算出することであり得る。次に、スケーリングされた値１１１８Ｅは、式２において示されるように、ゼロ点ＺＰを減算し、スケーリング係数ＳＣを乗算することにより、第３段階において算出された量子化された値から導出され得る。
【００８３】
Ｓ１３９５において、算出部またはそのサブ部などの書込部が、図１１におけるスケーリングされた値１１１８Ｅなどのスケーリングされた値をメモリへ書き込む。例えば、集積回路の主な目的がスケーリングオペレーションを実行することである実施形態において、書込部は、スケーリングされた値を外部メモリへ書き込み得る。例えば集積回路の主な目的がニューラルネットワーク推論を実行することである他の実施形態において、書込部は、スケーリングされた値をオンボードメモリへ書き込み得る。スケーリングされた値は、推論中のさらなる処理において利用され得る。
【００８４】
Ｓ１３９６において、算出部またはそのサブ部などのラインキャッシュ部が、重複する線形補間オペレーションを有する後続の要素の算出において用いるための中間補間済み値をラインキャッシュする。図１１の例において、Ｖ３１とＶ３２との間の第１ステップにおいて算出された中間値は、スケーリングされたアレイ１１１８の要素１１３０のスケーリングされた値１１１８Ｅを最終的に算出するために用いられており、要素１１３０より上の要素のスケーリングされた値を算出するためにも用いられるであろう。ラインキャッシュ部は、この中間値の算出を再び実行するのではなく、この中間値をラインキャッシュする。これにより、中間値がＳ１３９４の適切な反復において利用され、要素１１３０より上の要素のスケーリングされた値が算出され得る。この例における要素１１３０より上の要素のスケーリングされた値の算出のために、メモリ読み出しは、半分低減され得るので、ランタイム計算の２／３のみが必要とされ得る。アップスケーリングオペレーションにおいて、２またはそれより多くのスケーリングされた値は、元のアレイの同じ４つの最も近い要素を有し得る。そのような事例において、後者の算出されたスケーリングされた値は、さらなるメモリ読み出しを必要としないことがあり、ランタイム計算の１／３のみが必要とされ得る。
【００８５】
Ｓ１３９８において、算出部またはそのサブ部が、算出について残りの要素が存在するか否かを決定する。未計算の要素がより多く存在する場合、オペレーションフローは、Ｓ１３９２の別の反復へ進む前に、次の要素を選択する（Ｓ１３９９）。未計算の要素がもはや存在しない場合、オペレーションフローは終了する。
【００８６】
本実施形態において、当該オペレーションフローは、量子化された数で動作すべく、量子化された値を抽出し、量子化された数を導出することを含む。他の実施形態において、当該オペレーションフローは、量子化された値で直接動作し得る。そのような実施形態において、書き込みオペレーションは、補間式から結果として生じる量子化された値を書き込み、抽出オペレーションは不要である。ホストプロセッサは、量子化された値の抽出を実行し得ると共に、また、集積回路により外部メモリへ書き込まれる結果として得られた量子化された値から量子化された数の導出を担い得る。これは、再量子化と称される場合がある。そのような実施形態は、集積回路がスケーリングオペレーションを排他的に実行する場合、または、推論もしくは他の意図された機能が、量子化された値を用いて実行され得る場合に有用であり得る。
【００８７】
図１４は、本発明の実施形態による量子化されたスケーリングの準備および実行のためのハードウェア構成を示す。例示的なハードウェア構成は、外部メモリ１４１０および集積回路１４２０と通信するホストプロセッサ１４００を含む。ホストプロセッサ１４００、外部メモリ１４１０および集積回路１４２０は、オンプレミスアプリケーションを実行するサーバコンピュータまたはメインフレームコンピュータなどのホストコンピュータおよびそれを用いるホストクライアントコンピュータの一部であり得る。ホストプロセッサ１４００、外部メモリ１４１０および集積回路１４２０は、ユーザ用のアプリケーションを実行するパーソナルコンピュータ、モバイルコンピュータまたは小規模コンピューティングデバイスの一部であり得る。
【００８８】
本実施形態において、ホストプロセッサ１４００は、様々な部のオペレーションをプロセッサまたはプログラマブル回路に実行させるためにプロセッサまたはプログラマブル回路により実行可能であるプログラム命令を集合的に格納する１または複数のコンピュータ可読記憶媒体を含むコンピュータプログラム製品などのロジック部として考えられ得る。ホストプロセッサ１４００は、代替的に、アナログプログラマブル回路もしくはデジタルプログラマブル回路またはそれらの任意の組み合わせであり得る。ホストプロセッサ１４００は、通信を通じて相互作用する物理的に分離されたストレージまたは回路から構成され得る。外部メモリ１４１０は、本明細書におけるプロセスの実行中にホストプロセッサ１４００によるアクセスのためのデータを格納することが可能な揮発性または非揮発性のコンピュータ可読媒体であり得る。集積回路１４２０は、例えばＦＰＧＡ、ＡＳＩＣ等、スケーリングオペレーション、ニューラルアーキテクチャ推論等を実行することが可能なハードウェアチップであり得る。
【００８９】
ホストプロセッサ１４００は、取得部１４０２、決定部１４０３、算出部１４０４。変換部１４０６および命令部１４０８を含む。外部メモリ１４１０は、元のアレイ１４１２、スケーリング係数１４１３、前処理されたデータ１４１４、コンパイルパラメータ１４１５、集積回路パラメータ１４１６、集積回路命令１４１７およびスケーリングされたアレイ１４１８を含む。
【００９０】
取得部１４０２は、量子化されたスケーリングの準備および実行のための情報を取得するホストプロセッサ１４００の一部である。例えば、取得部１４０２は、元のアレイおよびスケーリング係数を取得するように構成され得る。取得部１４０２は、取得した情報を、元のアレイ１４１２およびスケーリング係数１４１３として外部メモリ１４１０に格納し得る。上述のフローチャートで説明したように、取得部１４０２は、追加の機能を実行するためのサブ部を含み得る。そのようなサブ部は、それらの機能に関連する名前で称され得る。
【００９１】
決定部１４０３は、例えば座標または元のアレイにおける最も近い要素等の量子化されたスケーリングの準備および実行のための様々な決定を行うホストプロセッサ１４００の一部である。決定している間、決定部１４０３は、元のアレイ１４１２、スケーリング係数１４１３および前処理されたデータ１４１４にアクセスし得る。上述のフローチャートにおいて説明したように、決定部１４０３は、追加の機能を実行するサブ部を含み得る。そのようなサブ部は、それらの機能に関連した名前で称され得る。
【００９２】
算出部１４０４は、線形補間係数を算出するホストプロセッサ１４００の一部である。算出している間、算出部１４０４は、元のアレイ１４１２、スケーリング係数１４１３および前処理されたデータ１４１４にアクセスし得る。上述のフローチャートにおいて説明したように、算出部１４０４は、追加の機能を実行するサブ部を含み得る。そのようなサブ部は、それらの機能に関連する名前で称され得る。
【００９３】
変換部１４０６は、浮動小数点数を、量子化された数または固定小数点数へ変換するホストプロセッサ１４００の一部である。変換している間、変換部１４０６は、元のアレイ１４１２、スケーリング係数１４１３および前処理されたデータ１４１４にアクセスし得る。上述のフローチャートにおいて説明したように、変換部１４０６は、追加の機能を実行するサブ部を含み得る。そのようなサブ部は、それらの機能に関連する名前で称され得る。
【００９４】
命令部１４０８は、スケーリングオペレーションを実行するよう集積回路１４２０に命令するホストプロセッサ１４００の一部である。例えば、スケーリングオペレーションを実行するよう集積回路に命令することは、集積回路により実行された場合に集積回路にスケーリングオペレーションを実行させる命令をコンパイルすることを含み得る。命令をコンパイルしている間、命令部１４０８は、元のアレイ１４１２、スケーリング係数１４１３、前処理されたデータ１４１４、コンパイルパラメータ１４１５、集積回路パラメータ１４１６および集積回路命令１４１７にアクセスし得る。上述のフローチャートにおいて説明したように、命令部１４０８は、追加の機能を実行するためのサブ部を含み得る。そのようなサブ部は、それらの機能に関連する名前で称され得る。
【００９５】
集積回路１４２０は、受信部１４２２、読出部１４２３、算出部１４２４およびオンボードメモリ１４２６を含む。
【００９６】
受信部１４２２は、スケーリングオペレーションを実行するための命令などの命令を受信する集積回路１４２０の一部である。命令を受信している間、受信部１４２２は、集積回路命令１４１７にアクセスし得るか、または命令を命令部１４０８から直接受信し得る。受信部１４２２は、命令をオンボードメモリ１４２６に格納し得る。上述のフローチャートにおいて説明したように、受信部１４２２は、追加の機能を実行するサブ部を含み得る。そのようなサブ部は、それらの機能に関連する名前で称され得る。
【００９７】
読出部１４２３は、スケーリングオペレーションを実行するためのデータなどのデータを外部メモリ１４１０から読み出す集積回路１４２０の一部である。読出部１４２３は、元のアレイ１４１２からのデータと、スケーリング係数１４１３と、前処理されたデータ１４１４とを読み出し得る。上述のフローチャートにおいて説明したように、読出部１４２３は、追加の機能を実行するためのサブ部を含み得る。そのようなサブ部は、それらの機能に関連する名前で称され得る。
【００９８】
算出部１４２４は、前処理されたデータ１４１４からのスケーリングされた値の算出などの算出を実行する集積回路１４２０の一部である。算出部１４２４は、元のアレイ１４１２からのデータと、スケーリング係数１４１３と、前処理されたデータ１４１４とを読み出し得る。上述のフローチャートにおいて説明したように、算出部１４２４は、追加の機能を実行するためのサブ部を含み得る。そのようなサブ部は、それらの機能に関連する名前で称され得る。
【００９９】
オンボードメモリ１４２６は、スケーリングオペレーションの実行中に受信部１４２２、読出部１４２３および算出部１４２４によるアクセスのためのデータを格納することが可能なＲＡＭフラッシュメモリまたは他の埋め込み型書き込み可能メモリなどのコンピュータ可読媒体であり得る。
【０１００】
他の実施形態において、ホストプロセッサは、本明細書におけるプロセスを実行すべくロジック機能を処理することが可能な任意の他のデバイスであり得る。外部メモリは、１または複数のコンピュータ可読媒体であり得る。例えば、ホストプロセッサは、中央処理装置（ＣＰＵ）であり得、外部メモリは、本明細書におけるプロセスの実行中にＣＰＵによる実行のためにコンピュータ実行可能命令の全部または一部がコピーされ得るダイナミックランダムアクセスメモリ（ＤＲＡＭ）であり得る。
【０１０１】
装置がコンピュータである実施形態において、当該コンピュータにインストールされるプログラムは、当該コンピュータに、本発明の実施形態の装置またはそれらの１または複数のセクション（モジュール、コンポーネント、要素等を含む）として機能させ、または、それらに関連付けられたオペレーションを実行させ、および／または、当該コンピュータに本発明の実施形態のプロセスまたはそれらの段階を実行させ得る。そのようなプログラムは、プロセッサにより実行され、本明細書において説明したフローチャートおよびブロック図のブロックのいくつかまたは全てに関連する特定のオペレーションをコンピュータに実行させ得る。
【０１０２】
本発明の様々な実施形態は、ブロックが（１）動作が実行されるプロセスの段階または（２）オペレーションの実行を担う装置のセクションを表し得るフローチャートおよびブロック図を参照して説明され得る。特定の段階およびセクションは、専用回路、コンピュータ可読媒体に格納されたコンピュータ可読命令が供給されているプログラマブル回路、および／またはコンピュータ可読媒体に格納されたコンピュータ可読命令が供給されているプロセッサにより実装され得る。専用回路は、デジタルおよび／またはアナログハードウェア回路を含んでいてよく、集積回路（ＩＣ）および／またはディスクリート回路を含んでよい。プログラマブル回路は、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブルロジックアレイ（ＰＬＡ）等といった、論理ＡＮＤ、ＯＲ、ＸＯＲ、ＮＡＮＤ、ＮＯＲ、および他の論理演算、フリップ−フロップ、レジスタ、メモリ要素等を含む再構成可能なハードウェア回路を含み得る。
【０１０３】
本発明は、システム、方法および／またはコンピュータプログラム製品であり得る。コンピュータプログラム製品は、プロセッサに本発明の態様を実現させるためのコンピュータ可読プログラム命令を有する（１または複数の）コンピュータ可読記憶媒体を含み得る。
【０１０４】
コンピュータ可読記憶媒体は、命令実行デバイスにより使用される命令を保持および格納し得る有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えばであって、限定されるものではないが、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイスまたは上述のものの任意の適切な組み合わせであり得る。コンピュータ可読記憶媒体のより具体的な例の非包括的な列挙は、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭまたはフラッシュメモリ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）ポータブルコンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリスティック、フロッピーディスク、パンチカードまたは記録された命令を有する溝内の隆起構造などの機械的に暗号化されたデバイス、および、上述のものの任意の適切な組み合わせを含む。コンピュータ可読記憶媒体は、本明細書において用いられる場合、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバケーブルを通過する光パルス）または、ワイヤを通じて伝送される電気信号などの一時的な信号それ自体とは解釈されない。
【０１０５】
本明細書において説明するコンピュータ可読プログラム命令は、例えばインターネット、ローカルエリアネットワーク、ワイドエリアネットワークおよび／または無線ネットワークなどのネットワークを介して、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスへダウンロードされ得るか、または、外部コンピュータもしくは外部ストレージデバイスへダウンロードされ得る。当該ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータおよび／またはエッジサーバを備え得る。各コンピューティング／処理デバイスにおけるネットワークアダプターカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に格納するためのコンピュータ可読プログラム命令を転送する。
【０１０６】
本発明のオペレーションを実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、例えばＳｍａｌｌｔａｌｋ（登録商標）、Ｃ＋＋等のオブジェクト指向プログラミング言語と、「Ｃ」プログラミング言語もしくは同様のプログラミング言語などの従来の手続き型プログラミング言語とを含む１または複数のプログラミング言語の任意の組み合わせで書き込まれたソースコードもしくはオブジェクトコードのいずれかであり得る。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全て実行され得るか、スタンドアロンのソフトウェアパッケージとして部分的にユーザのコンピュータ上で実行され得るか、部分的にユーザのコンピュータ上で、かつ、部分的にリモートコンピュータ上で実行され得るか、または、リモートコンピュータもしくはサーバ上で全て実行され得る。後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）を含む任意の種類のネットワークを通じてユーザのコンピュータに接続されてもよく、接続は、外部コンピュータ（例えば、インターネットサービスプロバイダを用いるインターネットを通じて）行われてもよい。いくつかの実施形態において、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）またはプログラマブルロジックアレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実行すべく、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別設定することによりコンピュータ可読プログラム命令を実行してよい。
【０１０７】
本発明の実施形態を説明したが、本発明の技術的範囲は、上述の実施形態に限定されない。上述の実施形態に様々な変更または改良が追加され得ることが、当業者には明らかである。そのような変更または改良が追加された実施形態が本発明の技術的範囲に含まれ得ることも、特許請求の範囲から明らかである。
【０１０８】
特許請求の範囲、実施形態または図に示される装置、システム、プログラムおよび方法により実行される各プロセスの動作、手順、ステップおよび段階は、順序が「より前に」、「の前に」等と示されない限り、かつ、前の処理の出力が後の処理で用いられない限り、任意の順序で実行され得る。特許請求の範囲、実施形態または図において処理フローを「まず」または「次に」などの語句を用いて説明した場合でも、処理フローがこの順序で実行されなければならないことを必ずしも意味しない。
【要約】      （修正有）【課題】集積回路上で量子化されたスケーリングの準備及び実行を行う。【解決手段】方法は、元のアレイと、元のアレイのサイズとスケーリングされたアレイのサイズとの比を表すスケーリング係数とを取得する手順と、スケーリングされたアレイの各列について、元のアレイの水平次元における２つの最も近い要素の各々の水平座標を、スケーリングされたアレイの各行について、元のアレイの垂直次元における２つの最も近い要素の各々の垂直座標を決定する手順と、スケーリングされたアレイの各行とスケーリングされたアレイの各列について、線形補間係数を算出する手順と、元のアレイの各値を、浮動小数点数から量子化された数へ変換する手順と、各線形補間係数を浮動小数点数から固定小数点数へ変換する手順と、水平座標及び垂直座標を、整数、値を量子化された数並びに線形補間係数を固定小数点数としてメモリに格納する手順と、を含むオペレーションを実行する。【選択図】図１【図１】
0006874932.tif 000008
【図２Ａ】
0006874932.tif 000009
【図２Ｂ】
0006874932.tif 000010
【図３】
0006874932.tif 000011
【図４】
0006874932.tif 000012
【図５】
0006874932.tif 000013
【図６】
0006874932.tif 000014
【図７】
0006874932.tif 000015
【図８】
0006874932.tif 000016
【図９】
0006874932.tif 000017
【図１０】
0006874932.tif 000018
【図１１】
0006874932.tif 000019
【図１２】
0006874932.tif 000020
【図１３】
0006874932.tif 000021
【図１４】
0006874932.tif 000022