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

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

▶ クンルンシン テクノロジー (ベイジン) カンパニー リミテッドの特許一覧

特開2023-103419演算方法、装置、チップ、電子機器及び記憶媒体
<>
  • 特開-演算方法、装置、チップ、電子機器及び記憶媒体 図1
  • 特開-演算方法、装置、チップ、電子機器及び記憶媒体 図2
  • 特開-演算方法、装置、チップ、電子機器及び記憶媒体 図3
  • 特開-演算方法、装置、チップ、電子機器及び記憶媒体 図4
  • 特開-演算方法、装置、チップ、電子機器及び記憶媒体 図5
  • 特開-演算方法、装置、チップ、電子機器及び記憶媒体 図6
  • 特開-演算方法、装置、チップ、電子機器及び記憶媒体 図7
  • 特開-演算方法、装置、チップ、電子機器及び記憶媒体 図8
  • 特開-演算方法、装置、チップ、電子機器及び記憶媒体 図9
  • 特開-演算方法、装置、チップ、電子機器及び記憶媒体 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023103419
(43)【公開日】2023-07-26
(54)【発明の名称】演算方法、装置、チップ、電子機器及び記憶媒体
(51)【国際特許分類】
   G06F 17/16 20060101AFI20230719BHJP
【FI】
G06F17/16 P
【審査請求】有
【請求項の数】21
【出願形態】OL
【外国語出願】
【公開請求】
(21)【出願番号】P 2023082124
(22)【出願日】2023-05-18
(31)【優先権主張番号】202210553451.2
(32)【優先日】2022-05-20
(33)【優先権主張国・地域又は機関】CN
(71)【出願人】
【識別番号】521457387
【氏名又は名称】クンルンシン テクノロジー (ベイジン) カンパニー リミテッド
【氏名又は名称原語表記】Kunlunxin Technology (Beijing) Company Limited
【住所又は居所原語表記】CW Section, F/4, Building 1, No.10, Shangdi 10th Street, Haidian District, 100101, Beijing, China
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【弁理士】
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【弁理士】
【氏名又は名称】松尾 淳一
(74)【代理人】
【識別番号】100138759
【弁理士】
【氏名又は名称】大房 直樹
(74)【代理人】
【識別番号】100201743
【弁理士】
【氏名又は名称】井上 和真
(72)【発明者】
【氏名】ペン・ウー
(72)【発明者】
【氏名】ジアン・オウヤン
(57)【要約】      (修正有)
【課題】浮動小数点データを固定小数点データに変換する無感覚化操作を実現し、人件費及び計算リソースを節約する演算方法、装置、チップ、電子機器並びに記憶媒体を提供する。
【解決手段】方法は、演算装置に入力される第1ベクトルの複数の第1の浮動小数点数と第2ベクトルの複数の第2の浮動小数点数に基づいて、複数の第1の固定小数点数と複数の第1の指数及び複数の第2の固定小数点数と複数の第2の指数を取得し、複数の第1の固定小数点数のうちの各第1の固定小数点数とそれに対応する第2の固定小数点数との固定小数点積の値及び相応する固定小数点積の指数を取得し、固定小数点積の指数に基づいて、第1ベクトルと第2ベクトルの固定小数点の内積計算結果を取得し、固定小数点の内積計算結果に基づいて、浮動小数点データフォーマットの浮動小数点の内積計算結果を取得する。
【選択図】図1
【特許請求の範囲】
【請求項1】
演算装置により実行される演算方法であって、
前記演算装置に入力される第1ベクトルの複数の第1の浮動小数点数と第2ベクトルの複数の第2の浮動小数点数に基づいて、前記複数の第1の浮動小数点数に相応する、2進数で表現される複数の第1の固定小数点数と複数の第1の指数、及び前記複数の第2の浮動小数点数に相応する、2進数で表現される複数の第2の固定小数点数と複数の第2の指数を取得し、ここで、前記複数の第1の浮動小数点数は前記複数の第2の浮動小数点数と1対1に対応し、前記複数の第1の固定小数点数と前記複数の第2の固定小数点数のうちの各固定小数点数は、それぞれ符号ビット及び第1の所定数の固定小数点の数値ビットを含むことと、
前記複数の第1の固定小数点数のうちの各第1の固定小数点数と該第1の固定小数点数に対応する第2の固定小数点数との固定小数点積の値及び相応する固定小数点積の指数を取得することと、
前記複数の第1の固定小数点数にそれぞれ相応する複数の固定小数点積の値のうちの各固定小数点積の値に相応する固定小数点積の指数に基づいて、前記第1ベクトルと前記第2ベクトルとの固定小数点の内積計算結果を取得することと、
前記固定小数点の内積計算結果に基づいて、前記固定小数点の内積計算結果に対応する浮動小数点データフォーマットの浮動小数点の内積計算結果を取得することとを含む、方法。
【請求項2】
前記の前記複数の第1の固定小数点数にそれぞれ相応する複数の固定小数点積の値のうちの各固定小数点積の値に相応する固定小数点積の指数に基づいて、前記第1ベクトルと前記第2ベクトルとの固定小数点の内積計算結果を取得することは、
前記複数の第1の固定小数点数にそれぞれ相応する複数の固定小数点積の値のうちの各固定小数点積の値に相応する固定小数点積の指数に基づいて、該固定小数点積の値を算術シフトさせることと、
前記複数の第1の固定小数点数に相応する複数の算術シフトされた固定小数点積の値を合計し、これにより、前記第1ベクトルと前記第2ベクトルとの固定小数点の内積計算結果を取得することとを含む、請求項1に記載の方法。
【請求項3】
前記の前記複数の第1の固定小数点数にそれぞれ相応する複数の固定小数点積の値のうちの各固定小数点積の値に相応する固定小数点積の指数に基づいて、該固定小数点積の値を算術シフトさせることは、
前記複数の第1の固定小数点数に相応する複数の固定小数点積の指数のうちに第1の固定小数点積の指数を確定することと、
前記複数の固定小数点積の指数のうちの各固定小数点積の指数と前記第1の固定小数点積の指数に基づいて、前記複数の固定小数点積の値のうちの各固定小数点積の値に相応する算術シフト値を取得することと、
前記複数の固定小数点積の値のうちの各固定小数点積の値に相応する算術シフト値に基づいて、該固定小数点積の値を算術シフトさせることとを含む、請求項2に記載の方法。
【請求項4】
前記の前記複数の第1の固定小数点数に相応する複数の固定小数点積の指数のうちに第1の固定小数点積の指数を確定することは、前記複数の第1の固定小数点数に相応する複数の固定小数点積の指数のうち数値が最大となる固定小数点積の指数を第1の固定小数点積の指数として取得することを含み、且つ、
前記の前記複数の固定小数点積の指数のうちの各固定小数点積の指数と前記第1の固定小数点積の指数に基づいて、前記複数の固定小数点積の値のうちの各固定小数点積の値に相応する算術シフト値を取得することは、 前記第1の固定小数点積の指数と前記複数の固定小数点積の指数のうちの各固定小数点積の指数の差を該固定小数点積の指数に対応する固定小数点積の値に相応する算術シフト値として計算することを含む、請求項3に記載の方法。
【請求項5】
前記の前記複数の第1の浮動小数点数に相応する、2進数で表現される複数の第1の固定小数点数と複数の第1の指数、及び前記複数の第2の浮動小数点数に相応する、2進数で表現される複数の第2の固定小数点数と複数の第2の指数を取得することは、
前記複数の第1の浮動小数点数と前記複数の第2の浮動小数点数のうちの各浮動小数点数に対して、
該浮動小数点数における符号ビット、指数ビット及び浮動小数点数値ビットを抽出し、ここで、該浮動小数点数は2進数により表現されることと、
前記浮動小数点数値ビットのうちの最上位の前記第2の所定数の上位数値ビットを抽出することと、
前記上位数値ビットに基づき、該浮動小数点数に対応する固定小数点数を確定することと、
該浮動小数点数の指数ビットに基づいて、該浮動小数点数に対応する指数を確定することとの操作を実行することを含む、請求項1~4のいずれか一項に記載の方法。
【請求項6】
前記の前記複数の第1の固定小数点数のうちの各第1の固定小数点数と該第1の固定小数点数に対応する第2の固定小数点数との固定小数点積の値及び相応する固定小数点積の指数を取得することは、
前記複数の第1の固定小数点数にそれぞれ相応する複数の第1の浮動小数点数の符号ビット及び前記複数の第2の固定小数点数にそれぞれ相応する複数の第2の浮動小数点数の符号ビットに基づき、前記複数の第1の固定小数点数に相応する複数の第1の補数と前記複数の第2の固定小数点数に相応する複数の第2の補数を取得することと、
前記複数の第1の補数のうちの各第1の補数と該第1の補数に対応する第2の補数との積を計算し、前記固定小数点積の値を取得することと、
前記複数の第1の固定小数点数のうちの各第1の固定小数点数に相応する第1の指数と該第1の固定小数点数に対応する第2の固定小数点数に相応する第2の指数との合計を計算し、前記固定小数点積の指数を取得することとを含む、請求項5に記載の方法。
【請求項7】
前記演算装置は一つの演算周期において二つの第1の所定長さのベクトルの内積を計算することができ、ベクトルの長さが同じである且ついずれも前記第1の所定長さより大きい第3のベクトルと第4のベクトルに対して、前記方法は、
前記第1の所定長さに基づき、第3のベクトルと第4のベクトルをそれぞれ複数の第1ベクトルと複数の第2ベクトルに分割し、ここで、前記複数の第1ベクトルが前記複数の第2ベクトルと1対1に対応することと、
複数組の対応する第1ベクトルと第2ベクトルの浮動小数点の内積計算結果をそれぞれ計算することと、
前記複数組の対応する第1ベクトルと第2ベクトルの浮動小数点の内積計算結果の合計を計算し、前記第3のベクトルと前記第4のベクトルの内積計算結果を取得することとをさらに含む、請求項1に記載の方法。
【請求項8】
演算装置により実行される演算方法であって、
第1行列と第2行列を取得し、ここで、前記第1行列が第1の数の行ベクトルを含み、前記第2行列が第2の数の列ベクトルを含み、且つ前記行ベクトルと前記列ベクトルのベクトル長さが同じであることと、
請求項1~7のいずれか一項に記載の方法によって、前記第1行列における各行ベクトルと前記第2行列における各列ベクトルの内積結果をそれぞれ取得し、前記第1行列と前記第2行列の内積結果行列を取得することとを含む、方法。
【請求項9】
演算装置であって、
前記演算装置に入力される第1ベクトルの複数の第1の浮動小数点数と第2ベクトルの複数の第2の浮動小数点数に基づいて、前記複数の第1の浮動小数点数に相応する、2進数で表現される複数の第1の固定小数点数と複数の第1の指数、及び前記複数の第2の浮動小数点数に相応する、2進数で表現される複数の第2の固定小数点数と複数の第2の指数を取得し、ここで、前記複数の第1の浮動小数点数は前記複数の第2浮動小数点数と1対1に対応し、前記複数の第1の固定小数点数と前記複数の第2の固定小数点数のうちの各固定小数点数は、それぞれ符号ビット及び第1の所定数の固定小数点の数値ビットを含むように構成される第1の取得ユニットと、
前記複数の第1の固定小数点数のうちの各第1の固定小数点数と該第1の固定小数点数に対応する第2の固定小数点数との固定小数点積の値及び相応する固定小数点積の指数を取得するように構成される乗算器と、
前記複数の第1の固定小数点数にそれぞれ相応する複数の固定小数点積の値のうちの各固定小数点積の値に相応する固定小数点積の指数に基づいて、前記第1ベクトルと前記第2ベクトルとの固定小数点の内積計算結果を取得するように構成される第2の取得ユニットと、
前記固定小数点の内積計算結果に基づいて、前記固定小数点の内積計算結果に対応する浮動小数点データフォーマットの浮動小数点の内積計算結果を取得するように構成される第3の取得ユニットとを含む、装置。
【請求項10】
前記第2の取得ユニットは、
前記複数の第1の固定小数点数にそれぞれ相応する複数の固定小数点積の値のうちの各固定小数点積の値に相応する固定小数点積の指数に基づいて、該固定小数点積の値を算術シフトさせるように構成されるシフターと、
前記複数の第1の固定小数点数に相応する複数の算術シフトされた固定小数点積の値を合計し、これにより、前記第1ベクトルと前記第2ベクトルとの固定小数点の内積計算結果を取得するように構成される加算器とを含む、請求項9に記載の装置。
【請求項11】
前記シフターは、
前記複数の第1の固定小数点数に相応する複数の固定小数点積の指数のうちに第1の固定小数点積の指数を確定するように構成される確定モジュールと、
前記複数の固定小数点積の指数のうちの各固定小数点積の指数と前記第1の固定小数点積の指数に基づいて、前記複数の固定小数点積の値のうちの各固定小数点積の値に相応する算術シフト値を取得するように構成される取得モジュールと、
前記複数の固定小数点積の値のうちの各固定小数点積の値に相応する算術シフト値に基づいて、該固定小数点積の値を算術シフトさせるように構成されるシフトモジュールとを含む、請求項10に記載の装置。
【請求項12】
前記確定モジュールは、前記複数の第1の固定小数点数に相応する複数の固定小数点積の指数のうち数値が最大となる固定小数点積の指数を第1の固定小数点積の指数として取得するように構成され、
前記取得モジュールは、前記第1の固定小数点積の指数と前記複数の固定小数点積の指数のうちの各固定小数点積の指数の差を、該固定小数点積の指数に対応する固定小数点積の値に相応する算術シフト値として計算するように構成される、請求項11に記載の装置。
【請求項13】
前記第1の取得ユニットは前記複数の第1の浮動小数点数と前記複数の第2の浮動小数点数のうちの各浮動小数点数に対して、
該浮動小数点数における符号ビット、指数ビット及び浮動小数点数値ビットを抽出し、ここで、該浮動小数点数は2進数により表現されるように構成される第1の抽出サブユニットと、
前記浮動小数点数値ビット中の最上位の前記第2の所定数の上位数値ビットを抽出するように構成される第2の抽出サブユニットと、
前記上位数値ビットに基づき、該浮動小数点数に対応する固定小数点数を確定するように構成される第1の確定サブユニットと、
該浮動小数点数の指数ビットに基づいて、該浮動小数点数に対応する指数を確定するように構成される第2の確定サブユニットによる操作を実行するように構成される、請求項9~12のいずれか一項に記載の装置。
【請求項14】
前記乗算器は、
前記複数の第1の固定小数点数にそれぞれ相応する複数の第1の浮動小数点数の符号ビット及び前記複数の第2の固定小数点数にそれぞれ相応する複数の第2の浮動小数点数の符号ビットに基づき、前記複数の第1の固定小数点数に相応する複数の第1の補数と前記複数の第2の固定小数点数に相応する複数の第2の補数を取得するように構成される取得サブユニットと、
前記複数の第1の補数のうちの各第1の補数と該第1の補数に対応する第2の補数との積を計算し、前記固定小数点積の値を取得するように構成される第1の計算サブユニットと、
前記複数の第1の固定小数点数のうちの各第1の固定小数点数に相応する第1の指数と該第1の固定小数点数に対応する第2の固定小数点数に相応する第2の指数との合計を計算し、前記固定小数点積の指数を取得するように構成される第2の計算サブユニットとを含む、請求項13に記載の装置。
【請求項15】
前記演算装置は一つの演算周期において二つの第1の所定長さのベクトルの内積を計算することができ、ベクトルの長さが同じである且ついずれも第1の所定長さより大きい第3のベクトルと第4のベクトルに対して、前記装置は、
前記第1の所定長さに基づき、第3のベクトルと第4のベクトルをそれぞれ複数の第1ベクトルと複数の第2ベクトルに分割し、ここで、前記複数の第1ベクトルが前記複数の第2ベクトルと1対1に対応するように構成される分割ユニットと、
複数組の対応する第1ベクトルと第2ベクトルの浮動小数点の内積計算結果をそれぞれ計算するように構成される第1計算ユニットと、
前記複数組の対応する第1ベクトルと第2ベクトルの浮動小数点の内積計算結果の合計を計算し、前記第3のベクトルと前記第4のベクトルの内積計算結果を取得するように構成される第2計算ユニットとをさらに含む、請求項9に記載の装置。
【請求項16】
演算装置であって、
第1行列と第2行列を取得し、ここで、前記第1行列が第1の数の行ベクトルを含み、前記第2行列が第2の数の列ベクトルを含み、且つ前記行ベクトルと前記列ベクトルのベクトル長さが同じであるように構成される第4取得ユニットと、
請求項1~7のいずれか一項に記載の方法によって、前記第1行列における各行ベクトルと前記第2行列における各列ベクトルの内積結果をそれぞれ取得し、前記第1行列と前記第2行列の内積結果行列を取得するように構成される第5取得ユニットとを含む、装置。
【請求項17】
チップであって、
請求項9~15のいずれか一項に記載の装置と、
請求項16に記載の装置とのうちの少なくとも一つを含む、チップ。
【請求項18】
請求項17に記載のチップを含む、電子機器。
【請求項19】
電子機器であって、
少なくとも一つのプロセッサと、
前記少なくとも一つのプロセッサに通信接続されたメモリとを含み、
前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶されており、前記命令は、前記少なくとも1つのプロセッサによって実行されることにより、前記少なくとも1つのプロセッサが請求項1~8のいずれか一項に記載の方法を実行することができる、電子機器。
【請求項20】
コンピュータに請求項1~8のいずれか一項に記載の方法を実行させるためのコンピュータ命令が記憶された非一時的コンピュータ可読記憶媒体。
【請求項21】
プロセッサによって実行されると、請求項1~8のいずれか一項に記載の方法を実現するコンピュータプログラムを含むコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータ技術分野に関し、特にチップ技術分野、人工知能分野に関し、具体的には、演算方法、装置、チップ、電子機器、コンピュータ可読記憶媒体及びコンピュータプログラム製品に関する。
【背景技術】
【0002】
人工知能技術の発展に伴って、ますます多くのアプリケーションは、人工知能技術に基づいて、従来のアルゴリズムよりはるかに良い効果を達成しました。深層学習は現在の人工知能技術のコア技術である。深層学習はデータ集約型アルゴリズムと計算集約型アルゴリズムであり、迅速に反復発展しているアルゴリズムでもある。
【0003】
従来のCPU、GPU、DSPなどのような汎用処理機器は、汎用計算タスクに対する設計されたものであり、深層学習アプリケーションを処理する時に、計算性能が低く、効能が低いなどの欠点があるため、深層学習アルゴリズムのデータセンターなどのシーンにおける大規模なデプロイメントを効果的にサポートすることができない。ASIC/FPGAに基づく深層学習の専用加速機器は、深層学習の計算特徴について、ハードウェア構造を深くカスタマイズし、従来のCPU、GPU、DSPなどの機器に比べ、より高い計算性能と計算効能を実現することができる。
【0004】
この部分で説明される方法は、必ずしも以前に想定される方法又は採用される方法ではない。特に断りのない限り、この部分に記載されているいずれの方法は、この部分に含まれるだけで従来技術であると考えられるべきではない。同様に、特に断りのない限り、この部分で言及されている課題は、従来の技術で承認されたものであると考えるべきではない。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本開示は、演算方法、装置、チップ、電子機器及びコンピュータ可読記憶媒体及びコンピュータプログラム製品を提供する。
【課題を解決するための手段】
【0006】
本開示の一態様によれば、演算装置が実行する演算方法を提供し、この方法は、演算装置に入力される第1ベクトルの複数の第1の浮動小数点数と第2ベクトルの複数の第2の浮動小数点数に基づいて、複数の第1の浮動小数点数に相応する、2進数で表現される複数の第1の固定小数点数と複数の第1の指数、及び複数の第2の浮動小数点数に対応する、2進数で表現される複数の第2の固定小数点数と複数の第2の指数を取得し、ここで、複数の第1の浮動小数点数は複数の第2浮動小数点数と1対1に対応し、複数の第1の固定小数点数と複数の第2の固定小数点数との中の各固定小数点数は、それぞれ符号ビット及び第1の所定数の固定小数点の数値ビットを含むことと、複数の第1の固定小数点数のうちの各第1の固定小数点数と該第1の固定小数点数に対応する第2の固定小数点数との固定小数点積の値及び相応する固定小数点積の指数を取得することと、複数の第1の固定小数点数にそれぞれ対応する複数の固定小数点積の値のうちの各固定小数点積の値に相応する固定小数点積の指数に基づいて、第1ベクトルと第2ベクトルとの固定小数点の内積計算結果を取得することと、固定小数点の内積計算結果に基づいて、固定小数点の内積計算結果に対応する浮動小数点データフォーマットの浮動小数点の内積計算結果を取得することとを含む。
【0007】
本開示の一態様によれば、演算装置により実行される演算方法を提供し、この方法は、第1行列と第2行列を取得し、ここで、第1行列が第1の数の行ベクトルを含み、第2行列が第2の数の列ベクトルを含み、且つ行ベクトルと列ベクトルのベクトル長さが同じであることと、ベクトル内積を計算するための演算装置により実行される上述の演算方法によって、第1行列における各行ベクトルと第2行列における各列ベクトルの内積結果をそれぞれ取得し、第1行列と第2行列の内積結果行列を取得することとを含む。
【0008】
本開示の別の態様によれば、演算装置を提供し、この演算装置は、演算装置に入力される第1ベクトルの複数の第1の浮動小数点数と第2ベクトルの複数の第2の浮動小数点数に基づいて、複数の第1の浮動小数点数に相応する、2進数で表現される複数の第1の固定小数点数と複数の第1の指数、及び複数の第2の浮動小数点数に相応する、2進数で表現される複数の第2の固定小数点数と複数の第2の指数を取得し、ここで、複数の第1の浮動小数点数は複数の第2浮動小数点数と1対1に対応し、複数の第1の固定小数点数と複数の第2の固定小数点数の中の各固定小数点数は、それぞれ符号ビット及び第1の所定数の固定小数点の数値ビットを含むように構成される第1の取得ユニットと、複数の第1の固定小数点数のうちの各第1の固定小数点数と該第1の固定小数点数に対応する第2の固定小数点数との固定小数点積の値及び相応する固定小数点積の指数を取得するように構成される乗算器と、複数の第1の固定小数点数にそれぞれ相応する複数の固定小数点積の値のうちの各固定小数点積の値に相応する固定小数点積の指数に基づいて、第1ベクトルと第2ベクトルとの固定小数点の内積計算結果を取得するように構成される第2の取得ユニットと、固定小数点の内積計算結果に基づいて、固定小数点の内積計算結果に対応する浮動小数点データフォーマットの浮動小数点の内積計算結果を取得するように構成される第3の取得ユニットとを含む。
【0009】
本開示の別の態様によれば、演算装置を提供し、この演算装置は、第1行列と第2行列を取得し、ここで、第1行列が第1の数の行ベクトルを含み、第2行列が第2の数の列ベクトルを含み、且つ行ベクトルと列ベクトルのベクトル長さが同じであるように構成される第4取得ユニットと、ベクトル内積を計算するための演算装置に実行される上述の演算方法によって、第1行列における各行ベクトルと第2行列における各列ベクトルの内積結果をそれぞれ取得し、第1行列と第2行列の内積結果行列を取得するように構成される第5取得ユニットとを含む。
【0010】
本開示の別の態様によれば、チップを提供し、このチップは、ベクトル内積を計算する上記の演算装置及び行列内積を計算する上記の演算装置のうちの少なくとも一つを含む。
【0011】
本開示の別の態様によれば、電子機器を提供し、この電子機器は、上記のチップを含む。
【0012】
本開示の別の態様によれば、電子機器を提供し、この電子機器は、少なくとも一つのプロセッサと少なくとも1つのプロセッサに通信接続されたメモリとを含み、ここで、メモリには、少なくとも1つのプロセッサによって実行可能な命令が記憶されており、命令は少なくとも1つのプロセッサによって実行されることにより、少なくとも1つのプロセッサは以上に記載のベクトル内積を計算する演算方法または以上に記載の行列内積を計算する演算方法を実行することができる。
【0013】
本開示の別の態様によれば、以上に記載のベクトル内積を計算する演算方法または以上に記載の行列内積を計算する演算方法をコンピュータに実行させるためのコンピュータ命令が記憶された非一時的コンピュータ可読記憶媒体を提供する。
【0014】
本開示の別の態様によれば、プロセッサによって実行されると、以上に記載のベクトル内積を計算する演算方法または以上に記載の行列内積を計算する演算方法を実現するコンピュータプログラムを含むコンピュータプログラム製品を提供する。
【発明の効果】
【0015】
本開示の一つまたは複数の実施例により、演算装置の内部の演算によって、演算装置に入力された浮動小数点データを固定小数点データに変換し、且つ固定小数点データに基づいて、関連演算を完了することによって、浮動小数点データを固定小数点データに変換する無感覚化操作を実現し、人件費及び計算リソースを節約することができる。
【0016】
理解すべきこととして、この部分に説明される内容は、本開示の実施例の要点又は重要な特徴を識別することを意図しておらず、本開示の保護範囲を限定するためのものではない。本開示の他の特徴は、以下の明細書によって容易に理解されるであろう。
【図面の簡単な説明】
【0017】
図面は、実施例を例示的に示し、明細書の一部を構成し、明細書の文字による説明とともに、実施例の例示的な実施形態を説明するために用いられる。図示の実施例は例示的目的のみであり、特許請求の範囲を限定するものではない。すべての図面において、同一の符号は類似しているが、必ずしも同じとは限らない要素を指す。
図1】本開示の実施例による演算装置により実行される演算方法を示すフローチャートである。
図2】本開示の実施例によるベクトル乗算装置の構成ブロック図である。
図3】本開示の実施例による、複数の第1の固定小数点数と複数の第1の指数及び複数の第2の固定小数点数と複数の第2の指数を取得するフローチャートである。
図4】本開示の実施例による複数の第1の固定小数点数に相応する固定小数点積の値及び相応する固定小数点積の指数を取得するフローチャートである。
図5】本開示の別の実施例によるベクトル乗算装置を示す構成ブロック図である。
図6】本開示の実施例による行列乗算を計算するための演算装置により実行される演算方法のフローチャートを示す。
図7】本開示の実施例による行列乗算装置の構成ブロック図である。
図8】本開示の実施例によるベクトル内積を計算するための演算装置の構成ブロック図を示す。
図9】本開示の実施例による行列乗算の計算に用いられる演算装置の構成ブロック図を示す。
図10】本開示の実施例を実現するために使用できる例示的な電子機器の構造ブロック図を示す。
【発明を実施するための形態】
【0018】
以下、図面を結び付けながら本開示の例示的な実施例を説明し、理解を容易にするために、その中には本開示の実施例の様々な詳細が含まれているが、それらは単なる例示的なものと見なされるべきである。したがって、当業者であれば認識できるように、本開示の範囲及び精神から逸脱することなく、本明細書で説明された実施例に対して様々な変更及び修正を行うことができる。同様に、明瞭と簡潔のために、以下の説明では公知の機能及び構造についての説明を省略している。
【0019】
本願では、特に明記しない限り、様々な要素を説明するための「第1」、「第2」などの用語は、これらの要素の位置関係、タイミング関係、又は重要性関係を限定することを意図していない。このような用語は、一要素を別の要素から区別するためにのみ使用される。いくつかの例では、第1の要素と第2の要素は、要素の同じ例を指すことができ、場合によっては、コンテキストの説明に基づいて、異なる例を指してもよい。
【0020】
本開示の様々な例の説明で使用される用語は、特定の例を説明することのみを目的としており、限定することを意図していない。コンテキストで別途に明確に示されていない限り、特に要素の数を限定しないなら、要素は一つであってもよいし、複数であってもよい。なお、本開示で使用される用語「及び/又は」は、リストされた項目のいずれか及び可能なすべての組み合わせをカバーする。
【0021】
以下、図面を参照して本開示の実施例について詳細に説明する。
【0022】
深層学習アルゴリズムのコア操作は行列乗算操作であり、主流となる言語モデル(例えば、BERT、ERNIEなど)にはいずれも大量の行列乗算が含まれ、主流となるマシンビジョンモデル(例えば、RESNET、MASK-RCNN、YOLO、SSDなどのネットワーク)には大量の畳み込み操作が含まれるが、畳み込み操作は、通常、行列演算に変換されて実現される。
【0023】
深層学習ネットワークはすべて、単精度浮動小数点フォーマット(即ち、floatフォーマット)のデータに基づいて行列乗算演算を行うものであり、深層学習の発展に伴い、当業者は行列乗算操作と畳み込み操作に対して、固定小数点精度、例えば、符号付き16ビット固定小数点データを使用し、ハードウェアによって実現される面積と消費電力を著しい低下させ、より良い性能/消費電力の比、性能/面積の比を取得するとともに、精度に明らかな損失がないことを保証することができることを発見した。
【0024】
関連技術において、深層学習ネットワークにおける行列乗算演算は深層学習チップにおける行列乗算装置によって完了することができる。行列乗算装置が固定小数点演算をサポートするが、当業者は独立した装置を介して、浮動小数点精度のデータを固定小数点化によって固定小数点データに変換した後、固定小数点データを行列乗算装置に入力し演算する必要がある。
【0025】
本開示の実施例は、演算装置により実行される演算方法を提供し、この方法は、演算装置の内部の演算により、演算装置に入力された浮動小数点データを固定小数点データに変換した後、固定小数点データに基づいて、ベクトル乗算又は行列乗算演算を行うことによって、浮動小数点データを固定小数点データに変換する無感覚化操作を実現し、人件費及び計算リソースを節約することができる。
【0026】
本開示の実施例によれば、図1に示すように、演算装置により実行される演算方法を提供し、この演算方法は、演算装置に入力される第1ベクトルの複数の第1の浮動小数点数と第2ベクトルの複数の第2の浮動小数点数に基づいて、複数の第1の浮動小数点数に相応する、2進数で表現される複数の第1の固定小数点数と複数の第1の指数、及び複数の第2の浮動小数点数に相応する、2進数で表現される複数の第2の固定小数点数と複数の第2の指数を取得し、ここで、複数の第1の浮動小数点数は複数の第2浮動小数点数と1対1に対応し、複数の第1の固定小数点数と複数の第2の固定小数点数の中の各固定小数点数は、それぞれ符号ビット及び第1の所定数の固定小数点の数値ビットを含むステップS101と、複数の第1の固定小数点数のうちの各第1の固定小数点数と該第1の固定小数点数に対応する第2の固定小数点数との固定小数点積の値及び相応する固定小数点積の指数を取得するステップS102と、複数の第1の固定小数点数にそれぞれ相応する複数の固定小数点積の値のうちの各固定小数点積の値に相応する固定小数点積の指数に基づいて、第1ベクトルと第2ベクトルとの固定小数点の内積計算結果を取得するステップS103と、固定小数点の内積計算結果に基づいて、固定小数点の内積計算結果に対応する浮動小数点データフォーマットの浮動小数点の内積計算結果を取得するステップS104とを含むことができる。
【0027】
これにより、演算装置の内部の演算によって、演算装置に入力された浮動小数点データを固定小数点データに変換し、且つ固定小数点データに基づいて、関連演算を完了することによって、浮動小数点データを固定小数点データに変換する無感覚化操作を実現し、人件費及び計算リソースを節約することができる。
【0028】
図2は本開示の実施例によるベクトル乗算装置の構成ブロック図である。
【0029】
いくつかの実施例において、図2に示すようなベクトル乗算装置200はチップ上に配置される一つの演算装置であってもよく、且つ上記の演算方法はベクトル乗算装置200によって実現できる。具体的に、ベクトル乗算装置200はデータ抽出モジュール210、固定小数点乗算モジュール220、指数比較モジュール230、シフトモジュール240、加算器250及び逆固定小数点化モジュール260を含む。
【0030】
IEEE 754規格に従って、一つの単精度浮動小数点データは、{S,E,M}に表現し、ここでは、1ビットの符号ビットS、8ビットの指数ビットE及び23ビットの浮動小数点数値ビットMが含まれ、この浮動小数点データの実際値は以下の式で計算できる。
N=(-1)×1.M×2(E-127)
【0031】
いくつかの実施例において、先ず第1ベクトルA{a[0],a[1],…,a[k-1]}と第2ベクトルB{b[0],b[1],…,b[k-1]}をベクトル乗算装置200におけるデータ抽出モジュール210に並行して入力し、ここで、kは2より大きい正の整数である。第1ベクトルAにおける各第1の浮動小数点数a[i]と第2ベクトルBのおける各第2の浮動小数点数b[i]はいずれも単精度浮動小数点データ(ここで、i∈[0,k-1])であり、その記憶形式は、上記のとおりである。
【0032】
いくつかの実施例において、先ずデータ抽出モジュール210によって、各第1の浮動小数点数a[k-1]と各第2の浮動小数点数b[k-1]を処理し、それを第1の固定小数点数と第2の固定小数点数にそれぞれ変換することができる。
【0033】
いくつかの実施例において、図3に示すように、複数の第1の浮動小数点数に相応する、2進数で表現される複数の第1の固定小数点数と複数の第1の指数、及び複数の第2の浮動小数点数に相応する、2進数で表現される複数の第2の固定小数点数と複数の第2の指数を取得することは、複数の第1の浮動小数点数と複数の第2の浮動小数点数のうちの各浮動小数点数に対して、該浮動小数点数における符号ビット、指数ビット及び浮動小数点数値ビットを抽出し、ここで、該浮動小数点数は2進数により表現されるステップS301と、浮動小数点数値ビット中の最上位の第2の所定数の上位数値ビットを抽出するステップS302と、上位数値ビットと該浮動小数点数の符号ビットに基づいて、該浮動小数点数に対応する固定小数点数を確定するステップS303と、該浮動小数点数の指数ビットに基づいて、該浮動小数点数に対応する指数を確定することとを実行するステップS304との操作を実行することを含む。
【0034】
これにより、本開示の演算装置のみで入力された浮動小数点数を固定小数点数に変換することができ、これにより、浮動小数点データの固定小数点データへの変換の無感覚化を実現し、ユーザの体験を向上させることができるとともに、データの固定小数点処理のために追加のリソースが必要なく、計算リソースを節約することができる。
【0035】
まず、データ抽出モジュール210により、各第1の浮動小数点数a[i]と各第2の浮動小数点数b[i]における符号ビット、指数ビット及び浮動小数点数値ビットをそれぞれ並行して抽出し、ここで、符号ビットをそれぞれa[i][31]とb[i][31]と記し、指数ビットをそれぞれa[i][30:23]とb[i][30:23]と記し、浮動小数点数値ビットをそれぞれa[i][22:0]とb[i][22:0]と記す。
【0036】
その後、その中の浮動小数点数値ビットに対して、最上位の第2の所定数の上位数値ビットをそれぞれ抽出する。
【0037】
いくつかの実施例において、変換される第1の固定小数点数と第2の固定小数点数は16ビット固定小数点データであってもよく、それに応じて、第2の所定数は14ビットであってもよく、即ちa[i][22:0]とb[i][22:0]に対して最上位の14ビットのデータをそれぞれ抽出し、得られた上位数値ビットはそれぞれa[i][22:9]とb[i][22:9]である。
【0038】
いくつかの実施例において、以下の式に基づいて、上位数値ビットと符号ビットによって、各浮動小数点数に対応する固定小数点数を取得することができる。
【0039】
【数1】
【0040】
ここで、a.us[i]とb.us[i]は第1の浮動小数点数a[i]と第2の固定小数点数b[i]に対応する第1の固定小数点数と第2の固定小数点数をそれぞれ表現し、且つその中で、a[i][22:9]とb[i][22:9]の前に補足される2ビットデータの中の1’b0はは符号ビットであり、1’b1は浮動小数点データが記憶される時に、省略される小数点前の整数を埋めるために用いられる。
【0041】
第1の固定小数点数a.us[i]と第2の固定小数点数b.us[i]にそれぞれ対応する第1の指数a.e[i]と第2の指数b.e[i]は、以下の式に基づいて取得できる。
【0042】
【数2】
【0043】
いくつかの実施例において、図4のように、複数の第1の固定小数点数のうちの各第1の固定小数点数と該第1の固定小数点数に対応する第2の固定小数点数との固定小数点積の値及び相応する固定小数点積の指数を取得することは、複数の第1の固定小数点数に相応する複数の第1の補数及び複数の第2の固定小数点数に相応する複数の第2の補数を取得するステップS401と、複数の第1の補数のうちの各第1の補数と該第1の補数に対応する第2の補数との積を計算し、固定小数点積の値を取得するステップS402と、複数の第1の固定小数点数のうちの各第1の固定小数点数に相応する第1の指数と該第1の固定小数点数に対応する第2の固定小数点数に相応する第2の指数との合計を計算し、固定小数点積の指数を取得するステップS403とを含む。
【0044】
これにより、固定小数点数を補数に変換し、後続の演算を行うことにより、符号ビットも演算に参加することができ、符号ビットに対して単独で計算する必要がなく、計算リソースを節約することができる。
【0045】
いくつかの実施例において、第1の浮動小数点数a[i]と第2の浮動小数点数b[i]に対応する符号ビットa[i][31]とb[i][31]にそれぞれ基づいて、以下の式によって、第1の固定小数点数a.us[i]と第2の固定小数点数b.us[i]にそれぞれ相応する第1の補数a.s[i]と第2の補数b.s[i]を取得することができる。
【0046】
【数3】
【0047】
このように、データ抽出モジュール210により、第1ベクトルAにおける各第1の浮動小数点数a[i]と第2ベクトルBにおける各第2の浮動小数点数b[i]に対して、それに応じて各第1の固定小数点数a.us[i]とその補数a.s[i]及び各第2の固定小数点数b.us[i]とその補数b.s[i]をそれぞれ取得し、且つデータ抽出モジュール210により、固定小数点乗算モジュール220に伝送される。同時に、データ抽出モジュールは各第1の指数a.e[i]と各第2の指数b.e[i]を指数比較モジュール230に伝送することができる。
【0048】
いくつかの実施例において、固定小数点乗算モジュール220はk組の16ビット固定小数点データの固定小数点乗算サブモジュールを含んでもよく、且つ固定小数点乗算モジュール220の入力データは各第1の固定小数点数a.us[i]と各第2の固定小数点数b.us[i]であってもよく、相応する第1の固定小数点数と第2の固定小数点数とを乗算することにより、相応する固定小数点積の値を取得するが、固定小数点積の値の符号は該第1の固定小数点数と該第2の固定小数点数に相応する第1の浮動小数点数と第2の浮動小数点数の符号ビットによって判断される必要がある。
【0049】
いくつかの実施例において、固定小数点乗算モジュール220はk組の16ビット固定小数点データの固定小数点乗算サブモジュールを含んでもよく、且つ固定小数点乗算モジュール220の入力データは各第1の固定小数点数に相応する第1の補数a.s[i]と各第2の固定小数点数に相応する第2の補数b.s[i]であってもよい。また、ペアごとの相応する第1の補数a.s[i]と第2の補数b.s[i]に対してそれぞれ乗算することにより、固定小数点積の値m[i]を取得し、具体的な式は以下の通りである。
【0050】
【数4】
【0051】
ここで、各固定小数点積の値m[i]のビット数は32ビットである。
【0052】
同時に、それに応じて、指数比較モジュール230によって、各固定小数点積の値m[i]に対応する固定小数点積の指数ab.e[i]を取得してもよく、具体的な式は以下の通りである。
【0053】
【数5】
【0054】
各固定小数点積の値に対応する指数が異なるため、各固定小数点積の値を加算する前に、まず、各固定小数点積の値を同じ数値範囲に統一する必要がある。例えば、二つの固定小数点積の値の数値ビットがいずれも1001であるが、その指数に対応する数値がそれぞれ2と-2である場合、その実際値はそれぞれ100.1と0.01001(即ちこれら2つの固定小数点積の値を、指数0を基準としてシフトし桁揃えさせることにより、これら2つの固定小数点積の値を同じ数値範囲に統一させる)であり、その後、加算計算を行い得られた結果こそが正しいものである。
【0055】
関連技術において、一般的にデータを入力する前に、先ず、各ベクトル中の最大値を取得することにより、該最大値に基づいてベクトルにおける各データに対して数値範囲の統一を行う。このような方式はデータが固定小数点データに変換された後に、再び大きな精度を失うことを招く。
【0056】
いくつかの実施例において、複数の第1の固定小数点数にそれぞれ対応する複数の固定小数点積の値のうちの各固定小数点積の値に相応する固定小数点積の指数に基づいて、第1ベクトルと第2ベクトルとの固定小数点の内積計算結果を取得することは、複数の第1の固定小数点数にそれぞれ相応する複数の固定小数点積の値のうちの各固定小数点積の値に相応する固定小数点積の指数に基づいて、該固定小数点積の値を算術シフトさせることと、複数の第1の固定小数点数に相応する複数の算術シフトされた固定小数点積の値を合計し、これにより、第1ベクトルと第2ベクトルの固定小数点の内積計算結果を取得することとを含む。
【0057】
これにより、各固定小数点積の値を取得した後、固定小数点の内積計算結果を計算する前に、各固定小数点積の値をシフトさせることにより、各固定小数点積の値の数値範囲を統一し、関連技術における方式に比べて、データの精度の失いを低減させ、計算の正確度を向上させることができる。
【0058】
いくつかの実施例において、各固定小数点積の値と各固定小数点積の指数をシフトモジュール240に相応的に入力することにより、相応する固定小数点積の指数に基づいて各固定小数点積の値を算術シフトさせ、各固定小数点積の値を同じ数値範囲に桁揃えさせることができ、その後、桁揃えされた固定小数点積の値を加算器250に入力し、それにより、第1ベクトルと第2ベクトルの固定小数点の内積計算結果を取得する。
【0059】
いくつかの実施例において、複数の第1の固定小数点数にそれぞれ相応する複数の固定小数点積の値のうちの各固定小数点積の値に相応する固定小数点積の指数に基づいて、該固定小数点積の値を算術シフトさせることは、複数の第1の固定小数点数に相応する複数の固定小数点積の指数のうちに第1の固定小数点積の指数を確定することと、複数の固定小数点積の指数のうちの各固定小数点積の指数と第1の固定小数点積の指数に基づいて、複数の固定小数点積の値のうちの各固定小数点積の値に相応する算術シフト値を取得することと、複数の固定小数点積の値のうちの各固定小数点積の値に相応する算術シフト値に基づいて、該固定小数点積の値を算術シフトさせることとを含む。
【0060】
いくつかの実施例において、全ての固定小数点積の指数のうちに一つの第1の固定小数点積の指数を算術シフトの基準として確定し、その他の固定小数点積の指数と該第1の固定小数点積の指数の差を計算することにより、各固定小数点積の値に相応するシフト距離を確定することができる。これにより、演算をさらに簡略化し、演算効率を向上させ、計算リソースを節約することができる。
【0061】
いくつかの実施例において、複数の第1の固定小数点数に相応する複数の固定小数点積の指数のうち第1の固定小数点積の指数を確定することは、複数の第1の固定小数点数に相応する複数の固定小数点積の指数のうち数値が最大となる固定小数点積の指数を第1の固定小数点積の指数として取得することを含み、且つ、複数の固定小数点積の指数のうちの各固定小数点積の指数と第1の固定小数点積の指数に基づいて、複数の固定小数点積の値のうちの各固定小数点積の値に相応する算術シフト値を取得することは、第1の固定小数点積の指数と複数固定小数点積の指数のうちの各固定小数点積の指数の差を、該固定小数点積の指数に対応する固定小数点積の値に相応する算術シフト値として計算することを含む。
【0062】
従って、第1の固定小数点積の指数という基準指数を全ての指数の中の最大指数として確定することにより、実際の数値が大きいデータが多くの精度を失うことを回避し、計算の正確度を保証することができる。
【0063】
いくつかの実施例において、先ず、指数比較モジュール230によって、全ての固定小数点積の指数ab.e[i]における最大指数を第1の固定小数点積の指数ab.e.maxとして取得することができ、具体的な式は以下の通りである。
【0064】
【数6】
【0065】
次いで、第1の固定小数点積の指数ab.e.maxと各固定小数点積の指数ab.e[i]の差を計算することにより、各算術シフト値sft[i]を取得し、具体的な式は以下の通りである。
【0066】
【数7】
【0067】
指数比較モジュール230により出力される各算術シフト値sft[i]及び固定小数点乗算モジュール220により出力される各固定小数点乗算値m[i]をシフトモジュール240に入力し、シフトモジュール240によって、各固定小数点乗算値m[i]に対して、それに相応する算術シフト値sft[i]に基づき、算術右シフト処理を行い、相応する算術シフトされた固定小数点積の値m.s[i]を取得し、具体的な式は以下の通りである。
【0068】
【数8】
【0069】
いくつかの実施例において、シフトモジュール240により出力される、算術シフトされた各固定小数点積の値m.s[i]を加算器250に入力し、加算器250によって、算術シフトされた固定小数点積の値を合計することにより、第1ベクトルAと第2ベクトルBの固定小数点の内積計算結果s.iを取得し、具体的な式は以下の通りである。
【0070】
【数9】
【0071】
ここで、固定小数点の内積計算結果s.iはビット数が(32+j)ビットである、符号付き固定小数点データであり、ここでは、jは下式により確定する。
【0072】
【数10】
【0073】
ここで、ceiling(x)はデータを切り上げるための関数である。従って、固定小数点の内積計算結果s.iに対してより多くのビット数を設定することにより、合計プロセス中のデータのオーバーフローを防止することができる。
【0074】
いくつかの実施例において、固定小数点の内積計算結果に基づいて、固定小数点の内積計算結果に対応する浮動小数点データフォーマットの浮動小数点の内積計算結果を取得することは逆固定小数点化モジュール260によって処理することができる。
【0075】
加算器250は固定小数点の内積計算結果s.iを逆固定小数点化モジュール260に伝送し、且つ先ず、逆固定小数点化モジュール260によって固定小数点の内積計算結果s.iを等値の浮動小数点フォーマットのデータs.fに変換する。
【0076】
同時に、指数比較モジュール230は第1の固定小数点積の指数ab.e.maxを逆固定小数点化モジュール260に伝送し、逆固定小数点化モジュール260によって第1の固定小数点積の指数ab.e.maxを浮動小数点フォーマットの指数データd.fに変換し、具体的な式は以下の通りである。
【0077】
【数11】
【0078】
その後、逆固定小数点化モジュール260における浮動小数点乗算器によってs.fとd.fの積を計算することにより、第1ベクトルと第2ベクトルの浮動小数点データフォーマットの浮動小数点の内積計算結果resを取得し、具体的な式は以下の通りである。
【0079】
【数12】
【0080】
いくつかの実施例において、演算装置は一つの演算周期において二つの第1の所定長さのベクトルの内積を計算することができ、ベクトルの長さが同じである且ついずれも第1の所定長さより大きい第3のベクトルと第4のベクトルに対して、方法は第1の所定長さに基づき、第3のベクトルと第4のベクトルをそれぞれ複数の第1ベクトルと複数の第2ベクトルに分割し、ここで、複数の第1ベクトルが複数の第2ベクトルと1対1に対応することと、複数組の対応する第1ベクトルと第2ベクトルの浮動小数点の内積計算結果をそれぞれ計算することと、複数組の対応する第1ベクトルと第2ベクトルの浮動小数点の内積計算結果の合計を計算し、これにより、第3のベクトルと第4のベクトルの内積計算結果を取得することとをさらに含む。
【0081】
従って、入力されたベクトルを分割し、異なる演算周期で演算装置にそれぞれ入力し、さらに各演算周期で得られた結果を累積加算することにより、ベクトルのより大規模な内積計算を実現することができる。
【0082】
図5は本開示の別の実施例によるベクトル乗算装置を示す構成ブロック図である。
【0083】
いくつかの実施例において、図5に示すようなベクトル乗算装置500はチップ上に配置される一つの演算装置であってもよく、且つ上記の演算方法はベクトル乗算装置500によって実現できる。具体的に、ベクトル乗算装置500はデータ抽出モジュール510、固定小数点乗算モジュール520、指数比較モジュール530、シフトモジュール540、加算器550及び逆固定小数点化モジュール560及び累積加算モジュール570を含む。
【0084】
ここで、ベクトル乗算装置500におけるモジュール510~モジュール560に対する操作は、上述のベクトル乗算装置200におけるモジュール210~モジュール260に対する操作と同様であるため、ここでは詳細な説明を省略する。
【0085】
いくつかの実施例において、データ抽出モジュール510により各演算周期内に、ベクトル乗算装置500に入力された第3のベクトルと第4のベクトルに対して、第1の所定長さの第1ベクトルと第2ベクトルを順次に抽出し、且つ該演算周期で該第1ベクトルと第2ベクトルの浮動小数点の内積計算結果を取得し、且つそれを累積加算モジュール570に記憶する。各浮動小数点の内積計算結果を取得した後、累積加算モジュール570により全ての浮動小数点の内積計算結果の合計を計算することによって、第3のベクトルと第4のベクトルの浮動小数点フォーマットの内積計算結果を取得することができる。
【0086】
いくつかの実施例において、行列乗算を計算するための演算装置により実行される演算方法を提供し、この演算方法は、図6に示すように、第1行列と第2行列を取得し、ここで、第1行列が第1の数の行ベクトルを含み、第2行列が第2の数の列ベクトルを含み、且つ行ベクトルと列ベクトルのベクトル長さが同じであるステップS601と、ベクトル内積を計算するための上述の演算方法によって、第1行列における各行ベクトルと第2行列における各列ベクトルの内積結果をそれぞれ取得し、これにより、第1行列と第2行列の内積結果行列を取得するステップS602とを含む。
【0087】
図7は本開示の実施例による行列乗算装置の構成ブロック図である。
【0088】
いくつかの実施例において、図7に示すようなベクトル乗算装置はチップ上に配置される一つの演算装置であってもよく、且つ行列乗算を計算するための上記の演算方法は該ベクトル乗算装置によって実現できる。
【0089】
ここで、第1行列はm個の行ベクトルA(0),A(1),...,A(m-1)を含み、第2行列はn個の列ベクトルB(0),B(1),…,B(n-1)を含む。図7に示すような行列乗算装置にm×n個のベクトル乗算装置が含まれ、そのうちの各ベクトル乗算装置は図2のベクトル乗算装置200又は図5に示すようなベクトル乗算装置500であってもよく、且つ各ベクトル乗算装置はいずれもベクトル内積を計算する上述の演算方法に従って、行ベクトルAと列ベクトルBとのベクトル内積を計算し、さらに、各ベクトル乗算装置の計算結果を取得することにより、第1行列と第2行列の内積結果行列を取得することができる。
【0090】
いくつかの実施例において、図8に示されるように、演算装置800を提供し、この装置は、演算装置に入力される第1ベクトルの複数の第1の浮動小数点数と第2ベクトルの複数の第2の浮動小数点数に基づいて、複数の第1の浮動小数点数に相応する、2進数で表現される複数の第1の固定小数点数と複数の第1の指数、及び複数の第2の浮動小数点数に相応する、2進数で表現される複数の第2の固定小数点数と複数の第2の指数を取得し、ここで、複数の第1の浮動小数点数は複数の第2浮動小数点数と1対1に対応し、複数の第1の固定小数点数と複数の第2の固定小数点数の中の各固定小数点数は、それぞれ符号ビット及び第1の所定数の固定小数点の数値ビットを含むように構成される第1の取得ユニット810と、複数の第1の固定小数点数のうちの各第1の固定小数点数と該第1の固定小数点数に対応する第2の固定小数点数との固定小数点積の値及び相応する固定小数点積の指数を取得するように構成される乗算器820と、複数の第1の固定小数点数にそれぞれ相応する複数の固定小数点積の値のうちの各固定小数点積の値に相応する固定小数点積の指数に基づいて、第1ベクトルと第2ベクトルとの固定小数点の内積計算結果を取得するように構成される第2の取得ユニット830と、固定小数点の内積計算結果に基づいて、固定小数点の内積計算結果に対応する浮動小数点データフォーマットの浮動小数点の内積計算結果を取得するように構成される第3の取得ユニット840とを含むことができる。
【0091】
ここで、演算装置800におけるユニット810~ユニット840に対する操作は前述した演算装置に実行される演算方法におけるステップS101~S104の操作と同様であり、ここで詳細な説明を省略する。
【0092】
いくつかの実施例において、第2の取得ユニットは、複数の第1の固定小数点数にそれぞれ相応する複数の固定小数点積の値のうちの各固定小数点積の値に相応する固定小数点積の指数に基づいて、該固定小数点積の値を算術シフトさせるように構成されるシフターと、複数の第1の固定小数点数に相応する、複数の算術シフトされた固定小数点積の値を合計し、これにより、第1ベクトルと第2ベクトルの固定小数点の内積計算結果を取得するように構成される加算器とを含むことができる。
【0093】
いくつかの実施例において、シフターは、複数の第1の固定小数点数に相応する複数の固定小数点積の指数のうちに第1の固定小数点積の指数を確定するように構成される確定モジュールと、複数の固定小数点積の指数のうちの各固定小数点積の指数と第1の固定小数点積の指数に基づいて、複数の固定小数点積の値のうちの各固定小数点積の値に相応する算術シフト値を取得するように構成される取得モジュールと、複数の固定小数点積の値のうちの各固定小数点積の値に相応する算術シフト値に基づいて、該固定小数点積の値を算術シフトさせるように構成されるシフトモジュールとを含むことができる。
【0094】
いくつかの実施例において、確定モジュールは、複数の第1の固定小数点数に相応する複数の固定小数点積の指数のうち数値が最大となる固定小数点積の指数を第1の固定小数点積の指数として取得するように構成されることができ、且つここで、取得モジュールは、第1の固定小数点積の指数と複数の固定小数点積の指数のうちの各固定小数点積の指数の差を、該固定小数点積の指数に対応する固定小数点積の値に相応する算術シフト値として計算するように構成されることができる。
【0095】
いくつかの実施例において、第1の取得ユニットは複数の第1の浮動小数点数と複数の第2の浮動小数点数のうちの各浮動小数点数に対して、該浮動小数点数における符号ビット、指数ビット及び浮動小数点数値ビットを抽出し、ここで、該浮動小数点数は2進数により表現されるように構成される第1の抽出サブユニットと、浮動小数点数値ビット中の最上位の第2の所定数の上位数値ビットを抽出するように構成される第2の抽出サブユニットと、上位数値ビットに基づき、該浮動小数点数に対応する固定小数点数を確定するように構成される第1の確定サブユニットと、該浮動小数点数の指数ビットに基づいて、該浮動小数点数に対応する指数を確定するように構成される第2の確定サブユニットによる操作を実行するように構成されることができる。
【0096】
いくつかの実施例によれば、乗算器は、複数の第1の固定小数点数にそれぞれ相応する複数の第1の浮動小数点数の符号ビット及び複数の第2の固定小数点数にそれぞれ相応する複数の第2の浮動小数点数の符号ビットに基づき、複数の第1の固定小数点数に相応する複数の第1の補数と複数の第2の固定小数点数に相応する複数の第2の補数を取得するように構成される取得サブユニットと、複数の第1の補数のうちの各第1の補数と該第1の補数に対応する第2の補数との積を計算し、固定小数点積の値を取得するように構成される第1の計算サブユニットと、複数の第1の固定小数点数のうちの各第1の固定小数点数に相応する第1の指数と該第1の固定小数点数に対応する第2の固定小数点数に相応する第2の指数との合計を計算し、固定小数点積の指数を取得するように構成される第2の計算サブユニットとを含むことができる。
【0097】
いくつかの実施例において、上述の演算装置は一つの演算周期において二つの第1の所定長さのベクトルの内積を計算することができ、ベクトルの長さが同じである且ついずれも第1の所定長さより大きい第3のベクトルと第4のベクトルに対して、上述の演算装置は、第1の所定長さに基づき、第3のベクトルと第4のベクトルをそれぞれ複数の第1ベクトルと複数の第2ベクトルに分割し、ここで、複数の第1ベクトルが複数の第2ベクトルと1対1に対応するように構成される分割ユニットと、複数組の対応する第1ベクトルと第2ベクトルの浮動小数点の内積計算結果をそれぞれ計算するように構成される第1計算ユニットと、複数組の対応する第1ベクトルと第2ベクトルの浮動小数点の内積計算結果の合計を計算し、第3のベクトルと第4のベクトルの内積計算結果を取得するように構成される第2計算ユニットとをさらに含むことができる。
【0098】
いくつかの実施例において、図9に示されるように、演算装置900をさらに提供し、この演算装置は、第1行列と第2行列を取得し、ここで、第1行列が第1の数の行ベクトルを含み、第2行列が第2の数の列ベクトルを含み、且つ行ベクトルと列ベクトルのベクトル長さが同じであるように構成される第4取得ユニット910と、ベクトル内積を計算するための演算装置に実行される上述の演算方法によって、第1行列における各行ベクトルと第2行列における各列ベクトルの内積結果をそれぞれ取得し、第1行列と第2行列の内積結果行列を取得するように構成される第5取得ユニット920とを含む。
【0099】
ここで、演算装置900におけるユニット910~ユニット920に対する操作は前述した行列乗算を計算するための演算装置により実行される演算方法におけるステップS601~S602の操作と同様であり、ここで詳細な説明を省略する。
【0100】
いくつかの実施例において、チップを提供し、このチップは、ベクトル内積を計算する上記の演算装置及び行列内積を計算する上記の演算装置のうちの少なくとも一つを含む。
【0101】
いくつかの実施例において、電子機器を提供し、この電子機器は、上記のチップを含む。
【0102】
いくつかの実施例において、電子機器を提供し、この電子機器は、少なくとも一つのプロセッサと、少なくとも1つのプロセッサに通信接続されたメモリとを含み、ここで、メモリは、少なくとも1つのプロセッサによって実行可能な命令を記憶し、命令は少なくとも1つのプロセッサによって実行されることにより、少なくとも1つのプロセッサに以上に記載のベクトル内積を計算する演算方法または以上に記載の行列内積を計算する演算方法を実行させる。
【0103】
いくつかの実施例において、以上に記載のベクトル内積を計算する演算方法または以上に記載の行列内積を計算する演算方法をコンピュータに実行させるためのコンピュータ命令を記憶した非一時的コンピュータ可読記憶媒体が提供される。
【0104】
いくつかの実施例において、コンピュータプログラムを含むコンピュータプログラム製品が提供される。ここで、コンピュータプログラムはプロセッサによって実行される時に、以上に記載のベクトル内積を計算する演算方法または以上に記載の行列内積を計算する演算方法を実現する。
【0105】
本開示の実施例によれば、電子機器、可読記憶媒体及びコンピュータプログラム製品をさらに提供する。
【0106】
図10を参照して、ここでは、本開示の様々な態様に適用可能なハードウェア装置の一例である、本開示のサーバ又はクライアントとして利用可能な電子機器1000の構造ブロック図について説明する。電子機器は、様々な形態のデジタル電子コンピュータ機器、例えば、ラップトップ型コンピュータ、デスクトップ型コンピュータ、ステージ、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、大型コンピュータ、その他の適切なコンピュータを示す。電子機器はさらに、様々な形態の移動装置、例えば、パーソナルデジタル処理、携帯電話、スマートフォン、着用可能な装置とその他の類似する計算装置を示してよい。本明細書に示される部品、これらの接続関係及びこれらの機能は例示的なものに過ぎず、本明細書に説明した及び/又は請求した本開示の実現を制限しない。
【0107】
図10に示すように、電子機器1000は、計算ユニット1001を含み、それはリードオンリーメモリ(ROM)1002に記憶されたコンピュータプログラムまた記憶ユニット1008からランダムアクセスメモリ(RAM)1003にロードされるコンピュータプログラムによって、種々の適当な動作と処理を実行することができる。RAM1003において、更に電子機器1000を操作するために必要な様々なプログラムとデータを記憶してよい。計算ユニット1001、ROM1002及びRAM1003は、バス1004を介して互いに接続される。入力/出力(I/O)インターフェース1005も、バス1004に接続される。
【0108】
電子機器1000における複数の部品はI/Oインターフェース1005に接続され、入力ユニット1006、出力ユニット1007、記憶ユニット1008及び通信ユニット1009を含む。入力ユニット1006は、電子機器1000に情報を入力することが可能な任意のタイプの装置であってもよく、入力ユニット1006は、入力された数字又は文字情報と、電子機器のユーザ設定及び/又は機能制御に関するキー信号入力を生成することができ、マウス、キーボード、タッチスクリーン、トラックボード、トラックボール、操作レバー、マイク及び/又はリモコンを含んでもよいが、これらに限定されない。出力ユニット1007は、情報を提示することが可能ないずれかのタイプの装置であってもよく、ディスプレイ、スピーカ、映像/オーディオ出力端末、バイブレータ、及び/又はプリンタを含んでもよいが、これらに限定されない。記憶ユニット1008は磁気ディスク、光ディスクを含むことができるが、これらに限定されない。通信ユニット1009は、電子機器1000が例えば、インターネットであるコンピュータネットワーク及び/又は様々な電気通信ネットワークを介して他の装置と情報/データを交換することを可能にし、モデム、ネットワークカード、赤外線通信装置、無線通信送受信機、及び/又はチップセット、例えば、ブルートゥース(登録商標)装置、802.11装置、WiFi装置、WiMax装置、セルラー通信装置及び/又は類似物を含んでもよいが、これらに限定されない。
【0109】
計算ユニット1001は処理及びコンピューティング能力を有する様々な汎用及び/又は専用の処理アセンブリであってもよい。計算ユニット1001のいくつかの例として、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、様々な専用人工知能(AI)計算チップ、機械学習モデルアルゴリズムを実行する様々な計算ユニット、デジタルシグナルプロセッサ(DSP)、及び任意の適当なプロセッサ、コントローラ、マイクロコントローラなどを含んでもよいが、これらに限定されない。計算ユニット1001は上記内容で説明した各方法と処理、例えば、ベクトル内積を計算するための上述の演算方法または行列内積を計算するための上述の演算方法を実行する。例えば、いくつかの実施例において、ベクトル内積を計算するための上述の演算方法または行列内積を計算するための上述の演算方法は記憶ユニット1008のような機械可読媒体に有形に組み込まれたコンピュータソフトウェアプログラムとして実装されてもよい。いくつかの実施例において、コンピュータプログラムの部分又は全てはROM1002及び/又は通信ユニット1009を経由して電子機器1000にロード及び/又はインストールされてよい。コンピュータプログラムがRAM1003にロードされて計算ユニット1001によって実行されると、上記で説明したベクトル内積を計算するための上述の演算方法または行列内積を計算するための上述の演算方法の1つまたは複数のステップを実行することができる。代替的に、他の実施形態において、コンピューティングユニット1001は、他のいずれかの適当な方法で(例えば、ファームウェアを用いて)、ベクトル内積を計算するための上述の演算方法または行列内積を計算するための上述の演算方法を実行するように構成される。
【0110】
本明細書で上述したシステムおよび技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップ(SOC)、複雑なプログラマブル論理デバイス(CPLD)、ソフトウェア・ハードウェア、ファームウェア、ソフトウェア、および/またはこれらの組み合わせにおいて実装することができる。これらの様々な実施形態は、一つ又は複数のコンピュータプログラムに実施され、この一つ又は複数のコンピュータプログラムは少なくとも一つのプログラマブルプロセッサを含むプログラマブルシステムで実行し及び/又は解釈してもよく、このプログラマブルプロセッサは専用又は汎用プログラマブルプロセッサであってもよく、記憶システム、少なくとも一つの入力装置、少なくとも一つの出力装置からデータと命令を受信し、データと命令をこの記憶システム、この少なくとも一つの入力装置、この少なくとも一つの出力装置に送信してよいこと、を含んでもよい。
【0111】
本開示の方法を実施するプログラムコードは一つ又は複数のプログラミング言語のいかなる組み合わせで書かれてよい。これらのプログラムコードを汎用コンピュータ、特殊目的のコンピュータ又は他のプログラマブルデータ処理装置のプロセッサ又はコントローラに提供してよく、これによってプログラムコードはプロセッサ又はコントローラにより実行される時にフローチャート及び/又はブロック図に規定の機能/操作を実施する。プログラムコードは完全に機械で実行してよく、部分的に機械で実行してよく、独立ソフトウェアパッケージとして部分的に機械で実行し且つ部分的に遠隔機械で実行してよく、又は完全に遠隔機械又はサーバで実行してよい。
【0112】
本開示の文脈において、機械読み取り可能な媒体は有形の媒体であってもよく、命令実行システム、装置又はデバイスに使用される又は命令実行システム、装置又はデバイスに結合されて使用されるプログラムを具備又は記憶してよい。機械読み取り可能な媒体は機械読み取り可能な信号媒体又は機械可読記憶媒体であってもよい。機械読み取り可能な媒体は、電子、磁気、光学、電磁、赤外線、又は半導体システム、装置又はデバイス、又は上記内容のいかなる適切な組み合わせを含んでもよいが、これらに限定されない。機械可読記憶媒体のより具体的な例は、一つ又は複数のリード線による電気接続、ポータブルコンピュータディスク、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラマブル読み出し専用メモリ(EPROM又はフラッシュメモリ)、光ファイバー、ポータブルコンパクトディスク読み出し専用メモリ(CD-ROM)、光記憶装置、磁気記憶装置、又は上記内容のいかなる適切な組み合わせを含む。
【0113】
ユーザとのインタラクションを提供するために、コンピュータにはここで説明したシステムと技術を実施してよく、このコンピュータは、ユーザに情報を表示するための表示装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)監視モニタ)、及びキーボードとポインティング装置(例えば、マウスやトラックボール)を備え、ユーザはこのキーボードとこのポインティング装置を介してコンピュータに入力してよい。その他の種類の装置はさらに、ユーザとのインタラクティブを提供するためのものであってもよい。例えば、ユーザに提供するフィードバックはいかなる形態の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、いかなる形態(音入力、音声入力、又は触覚入力を含む)でユーザからの入力を受信してよい。
【0114】
ここで述べたシステムや技術は、バックステージ部材を含む計算システム(例えば、データサーバとして)や、ミドルウェア部材を含む計算システム(例えば、アプリケーションサーバ)や、フロントエンド部材を含む計算システム(例えば、グラフィカルユーザインターフェースやウェブブラウザを有するユーザコンピュータ、ユーザが、そのグラフィカルユーザインターフェースやウェブブラウザを通じて、それらのシステムや技術の実施形態とのインタラクティブを実現できる)、あるいは、それらのバックステージ部材、ミドルウェア部材、あるいはフロントエンド部材の任意の組み合わせからなる計算システムには実施されてもよい。システムの部材は、任意の形式や媒体のデジタルデータ通信(例えば、通信ネットワーク)により相互に接続されてもよい。通信ネットワークの一例は、ローカルネットワーク(LAN)、広域ネットワーク(WAN)とインターネットを含む。
【0115】
コンピュータシステムは、クライアント側とサーバを含んでもよい。クライアント側とサーバは、一般的に相互に遠く離れ、通常、通信ネットワークを介してインタラクションを行う。互にクライアント側-サーバという関係を有するコンピュータプログラムを対応するコンピュータで実行することによってクライアント側とサーバとの関係を生成する。サーバは、クラウドサーバであってもよく、分散型システムのサーバであっても、又はブロックチェーンと組み合わせたサーバであってもよい。
【0116】
理解すべきこととして、前述した様々な形態のフローを用いて、ステップを改めて順位付け、増加又は削除してよい。例えば、本開示に記載された各ステップは、並行して実行してもよいし、順次実行してもよいし、異なる順序で実行させてもよいし、本開示に開示された技術案が所望する結果を実現できれば、本文はこれに限定されない。
【0117】
本開示の実施形態又は例は図面を参照して説明されたが、上記の方法、システム、及び装置は単なる例示的な実施形態又は例であり、本発明の範囲はこれらの実施形態又は例によって制限されるものではなく、授権後の特許請求の範囲及びその均等範囲のみによって限定されることを理解されたい。実施例又は例の様々な要素は省略されてもよく、又はそれらの均等要素によって代替されてもよい。なお、各ステップは、本開示で説明した順序とは異なる順序で実行されてもよい。さらに、実施形態又は例の様々な要素は、様々な方法で組み合わせられてもよい。重要なのは、技術の進化に伴い、ここで説明される多くの要素は、本開示の後に現れる同等の要素に置き換えることができるということである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
【外国語明細書】