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

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

▶ 富士通株式会社の特許一覧

<>
  • 特開-演算器及び情報処理装置 図1
  • 特開-演算器及び情報処理装置 図2
  • 特開-演算器及び情報処理装置 図3
  • 特開-演算器及び情報処理装置 図4
  • 特開-演算器及び情報処理装置 図5
  • 特開-演算器及び情報処理装置 図6
  • 特開-演算器及び情報処理装置 図7
  • 特開-演算器及び情報処理装置 図8
  • 特開-演算器及び情報処理装置 図9
  • 特開-演算器及び情報処理装置 図10
  • 特開-演算器及び情報処理装置 図11
  • 特開-演算器及び情報処理装置 図12
  • 特開-演算器及び情報処理装置 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025006004
(43)【公開日】2025-01-17
(54)【発明の名称】演算器及び情報処理装置
(51)【国際特許分類】
   G06F 1/3287 20190101AFI20250109BHJP
   G06F 1/3206 20190101ALI20250109BHJP
   G06F 7/50 20060101ALI20250109BHJP
   G06F 7/523 20060101ALI20250109BHJP
   G06F 17/16 20060101ALI20250109BHJP
【FI】
G06F1/3287
G06F1/3206
G06F7/50
G06F7/523
G06F17/16 S
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2023106510
(22)【出願日】2023-06-28
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】伊藤 真紀子
(72)【発明者】
【氏名】吉川 隆英
【テーマコード(参考)】
5B011
5B056
【Fターム(参考)】
5B011DA00
5B011EA02
5B011LL00
5B056AA05
5B056BB31
5B056CC01
5B056FF01
5B056FF02
(57)【要約】
【課題】細粒度でPower Gatingを行なうことで低消費電力化を達成する。
【解決手段】第1のタイミングにおいて、第3の処理要素123から所定のサイクル前にある第1の処理要素123の第1のデータと第2の処理要素123の第2のデータとに基づき、第3の処理要素123における所定のサイクル後の第2の演算精度を予測し、第1のタイミングにおいて、予測の結果に基づき第3の処理要素123において稼働している第1の回路に対応する第1の演算精度の変更が必要な場合に、第3の処理要素123において第2の演算精度に対応する第2の回路の電源を投入し、第1のタイミングから所定のサイクル後の第2のタイミングにおいて、第3の処理要素123の第2の回路で第2の演算精度の演算を実行し、第2のタイミングの後の第3のタイミングにおいて、第3の処理要素123における第1の回路の電源を切断する、制御部を備える。
【選択図】図5
【特許請求の範囲】
【請求項1】
第1の処理要素と第2の処理要素と第3の処理要素とを含む複数の処理要素を有し、シストリックアレイ型行列演算を実行する演算器であって、
第1のタイミングにおいて、前記第3の処理要素から所定のサイクル前にある前記第1の処理要素の第1のデータと前記第2の処理要素の第2のデータとに基づき、前記第3の処理要素における前記所定のサイクル後の第2の演算精度を予測し、
前記第1のタイミングにおいて、前記予測の結果に基づき前記第3の処理要素において稼働している第1の回路に対応する第1の演算精度の変更が必要な場合に、前記第3の処理要素において前記第2の演算精度に対応する第2の回路の電源を投入し、
前記第1のタイミングから前記所定のサイクル後の第2のタイミングにおいて、前記第3の処理要素の前記第2の回路で前記第2の演算精度の演算を実行し、
前記第2のタイミングの後の第3のタイミングにおいて、前記第3の処理要素における前記第1の回路の電源を切断する、
制御部を備える、演算器。
【請求項2】
前記制御部は、前記第1のデータ若しくは前記第2のデータが表現できる範囲でなく、又は、前記第1のデータと前記第2のデータとの積に対して前記第3の処理要素で稼働している回路におけるアクセラレータの出力データを加算した値がオーバーフロー若しくはアンダーフローする場合に、前記第2の回路の電源を投入する、
請求項1に記載の演算器。
【請求項3】
前記制御部は、前記第3の処理要素の前記第2の回路における加算演算について、前記第2の演算精度の倍精度で演算する、
請求項1又は2に記載の演算器。
【請求項4】
プロセッサと、
第1の処理要素と第2の処理要素と第3の処理要素とを含む複数の処理要素を有し、シストリックアレイ型行列演算を実行することで前記プロセッサを補助する演算器と、
を備え、
前記演算器は、
第1のタイミングにおいて、前記第3の処理要素から所定のサイクル前にある前記第1の処理要素の第1のデータと前記第2の処理要素の第2のデータとに基づき、前記第3の処理要素における前記所定のサイクル後の第2の演算精度を予測し、
前記第1のタイミングにおいて、前記予測の結果に基づき前記第3の処理要素において稼働している第1の回路に対応する第1の演算精度の変更が必要な場合に、前記第3の処理要素において前記第2の演算精度に対応する第2の回路の電源を投入し、
前記第1のタイミングから前記所定のサイクル後の第2のタイミングにおいて、前記第3の処理要素の前記第2の回路で前記第2の演算精度の演算を実行し、
前記第2のタイミングの後の第3のタイミングにおいて、前記第3の処理要素における前記第1の回路の電源を切断する、
情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算器及び情報処理装置に関する。
【背景技術】
【0002】
高性能コンピューティングにおいては、消費電力が高くなることがある。電力の供給量は有限であり、消費電力により性能が制約されることがある。
【0003】
高性能コンピューティングでは、シストリックアレイ構成により、高密度に演算器を配置し行列積の演算が高速化されることがある。
【0004】
また、Artificial Intelligence(AI)や機械学習の分野では、低精度演算を利用して演算効率を向上させており、高性能コンピューティングにも取り入れる動きがある。低精度演算器の消費電力は、高精度演算器よりも大幅に削減できる。
【0005】
低消費電力化技術としてPower Gating手法が知られている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】国際公開第2020/008643号
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、Power Gatingでは、使用していないブロックの電力が遮断され、再開時には電源安定化までに待ち時間が必要となるおそれがある。
【0008】
1つの側面では、細粒度でPower Gatingを行なうことで低消費電力化を達成することを目的とする。
【課題を解決するための手段】
【0009】
1つの側面では、演算器は、第1の処理要素と第2の処理要素と第3の処理要素とを含む複数の処理要素を有し、シストリックアレイ型行列演算を実行する演算器であって、第1のタイミングにおいて、前記第3の処理要素から所定のサイクル前にある前記第1の処理要素の第1のデータと前記第2の処理要素の第2のデータとに基づき、前記第3の処理要素における前記所定のサイクル後の第2の演算精度を予測し、前記第1のタイミングにおいて、前記予測の結果に基づき前記第3の処理要素において稼働している第1の回路に対応する第1の演算精度の変更が必要な場合に、前記第3の処理要素において前記第2の演算精度に対応する第2の回路の電源を投入し、前記第1のタイミングから前記所定のサイクル後の第2のタイミングにおいて、前記第3の処理要素の前記第2の回路で前記第2の演算精度の演算を実行し、前記第2のタイミングの後の第3のタイミングにおいて、前記第3の処理要素における前記第1の回路の電源を切断する、制御部を備える。
【発明の効果】
【0010】
1つの側面では、細粒度でPower Gatingを行なうことで低消費電力化を達成することができる。
【図面の簡単な説明】
【0011】
図1】第1実施形態における情報処理装置のハードウェア構成例を模式的に示すブロック図である。
図2図1に示したシストリックアレイ型行列演算のアクセラレータの構成例を模式的に示すブロック図である。
図3図2に示したProcessing Element(PE)の第1の構成例を模式的に示すブロック図である。
図4】(a)~(d)はシストリックアレイ及び行列演算を例示する図である。
図5図2に示したPEの第3の構成例を模式的に示すブロック図である。
図6図2に示したアクセラレータの動作例を説明する図である。
図7】(a)~(c)は図6に示したアクセラレータの動作中の各PEの状態を例示する図である。
図8】第1実施形態における演算精度の推定を説明する図である。
図9】第1実施形態における、使用する演算器の判定処理を説明するフローチャートである。
図10】第1実施形態の変形例におけるPEの構成例を模式的に示すブロック図である。
図11】(a)は図10に示した64ビットから16ビットへのビット幅変換器の詳細を説明する図であり、(b)は図10に示した64ビットから32ビットへのビット幅変換器の詳細を説明する図である。
図12】第2実施形態におけるPEの構成例を模式的に示すブロック図である。
図13】第2実施形態における演算精度の推定を説明する図である。
【発明を実施するための形態】
【0012】
〔A〕実施形態
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0013】
〔A-1〕第1実施形態
図1は、第1実施形態における情報処理装置1のハードウェア構成例を模式的に示すブロック図である。
【0014】
情報処理装置1は、Central Processing Unit(CPU)11、アクセラレータ12、メモリ13、補助記憶装置14、通信インタフェース15及び入出力インタフェース16を備える。
【0015】
CPU11は、例示的に、種々の制御や演算を行なう処理装置であり、メモリ13によって読み出されたOperating System(OS)やプログラムを実行することにより、種々の機能を実現する。
【0016】
なお、種々の機能を実現するためのプログラムは、例えばフレキシブルディスク、CD(CD-ROM、CD-R、CD-RW等)、DVD(DVD-ROM、DVD-RAM、DVD-R、DVD+R、DVD-RW、DVD+RW、HD DVD等)、ブルーレイディスク、磁気ディスク、光ディスク、光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供されてよい。そして、コンピュータ(本実施形態ではCPU11)は上述した記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いてよい。また、プログラムを、例えば磁気ディスク、光ディスク、光磁気ディスク等の記憶装置(記録媒体)に記録しておき、記憶装置から通信経路を介してコンピュータに提供してもよい。
【0017】
種々の機能を実現する際には、内部記憶装置(本実施形態ではメモリ13)に格納されたプログラムがコンピュータ(本実施形態ではCPU11)によって実行されてよい。また、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
【0018】
CPU11は、例示的に、情報処理装置1全体の動作を制御する。情報処理装置1全体の動作を制御するための装置は、CPU11に限定されず、例えば、MPUやDSP、ASIC、PLD、FPGAのいずれか1つであってもよい。また、情報処理装置1全体の動作を制御するための装置は、CPU、MPU、DSP、ASIC、PLD及びFPGAのうちの2種類以上の組み合わせであってもよい。なお、MPUはMicro Processing Unitの略称であり、DSPはDigital Signal Processorの略称であり、ASICはApplication Specific Integrated Circuitの略称である。また、PLDはProgrammable Logic Deviceの略称であり、FPGAはField Programmable Gate Arrayの略称である。
【0019】
アクセラレータ12は、演算器の一例であり、情報処理装置1の処理能力を高めるために、シストリックアレイ型行列演算を行うことでCPU11を補助する。アクセラレータ12についての詳細は、図2以降を用いて後述する。
【0020】
メモリ13は、例示的に、Read Only Memory(ROM)及びRandom Access Memory(RAM)を含む記憶装置である。RAMは、例えばDynamic RAM(DRAM)であってよい。メモリ13のROMには、Basic Input/Output System(BIOS)等のプログラムが書き込まれてよい。メモリ13のソフトウェアプログラムは、CPU11に適宜に読み込まれて実行されてよい。また、メモリ13のRAMは、一次記録メモリあるいはワーキングメモリとして利用されてよい。
【0021】
補助記憶装置14は、例示的に、データを読み書き可能に記憶する装置であり、例えば、Hard Disk Drive(HDD)やSolid State Drive(SSD)、Storage Class Memory(SCM)が用いられてよい。
【0022】
通信インタフェース15は、情報処理装置1をネットワークと接続し、このネットワークを介して図示しない外部装置と通信を行なうためのインタフェース装置である。通信インタフェース15としては、例えば、有線Local Area Network(LAN)や無線LAN、Wireless Wide Area Network(WWAN)のネットワークの規格に対応する各種インタフェースカードを用いることができる。
【0023】
入出力インタフェース16は、記録媒体160が装着可能に構成される。入出力インタフェース16は、記録媒体160が装着された状態において、記録媒体160に記録されている情報を読み取り可能に構成される。本例では、記録媒体160は可搬性を有する。例えば、記録媒体160は、フレキシブルディスク、光ディスク、磁気ディスク、光磁気ディスク、又は、半導体メモリ等である。
【0024】
図2は、図1に示したシストリックアレイ型行列演算のアクセラレータ12の構成例を模式的に示すブロック図である。
【0025】
アクセラレータ12は、複数のPE120、制御部121、3つのRAM122及びDirect Memory Access(DMA)コントローラ124を備える。
【0026】
制御部121は、アクセラレータ12全体の制御を行う。
【0027】
3つのRAM122のうち図2の上側及び左側のRAM122は、複数のPE120に対してデータを入力する。また、3つのRAM122のうち図2の下側のRAM122は、複数のPE120からデータの出力を受け付ける。
【0028】
PE120は、行列積C=A×Bを演算を行う。A、B、CはそれぞれN×N(Nは自然数)の行列である。Nは設計時に決定され、例えば128であってよい。行列のデータ及び部分和を右/下に伝搬させる積和演算結果がPE120内に累積される。N×N個の乗算・加算を同時に実行するので、演算効率が高くなる。
【0029】
DMAコントローラ124は、出力側のRAM122から受け取ったデータをCPU11を介さずに直接メモリ13へ転送する。
【0030】
図3は、図2に示したPE120の第1の構成例を模式的に示すブロック図である。
【0031】
PE120は、入力ブロック21a、21b、出力ブロック21c、21d、乗算器22、加算器23及びアクセラレータブロック(ACC)24を備える。1つのPE120は、1つの積和演算を行い、積和結果を内部に累積する。
【0032】
入力ブロック21a、21bは、RAM122又は前段のPE120からの入力を受け付ける。
【0033】
乗算器22は、入力ブロック21a、21bからの入力データを乗算する。
【0034】
加算器23は、乗算器22からの出力とACC24からの出力とを加算する。
【0035】
ACC24は、加算器23からの出力をRAM122へ出力する。また、ACC24は、RAM122からの入力を受け付ける。
【0036】
出力ブロック21c、21dは、入力ブロック21a、21bのそれぞれから入力されたデータを受け付け、後段のPE120又はRAM122へ出力する。
【0037】
図4の(a)~(d)は、シストリックアレイ及び行列演算を例示する図である。
【0038】
図4の(a)に示すcycle=0では、PE120-1においてa0,0とb0,0が入力され、a0,0とb0,0がACC24に格納される。
【0039】
図4の(b)に示すcycle=1では、PE120-1においてa0,1とb1,0が入力されてa0,0b0,0+a0,1b1,0がACC24に格納されると共に、PE120-2においてa0,0とb0,1が入力されてa0,0b0,1がACC24に格納され、PE120-3においてa1,0とb0,0が入力されてa1,0b0,0がACC24に格納される。
【0040】
図4の(c)に示すcycle=2では、PE120-2においてa0,1とb1,1が入力されてa0,0b0,1+a0,1b1,1がACC24に格納され、PE120-3においてa1,1とb1,0が入力されてa1,0b0,0+a1,1b1,0がACC24に格納されると共に、PE120-4においてa1,0とb0,1が入力されてa1,0b0,1がACC24に格納入力される。
【0041】
図4の(d)に示すcycle=3では、PE120-4においてa1,1とb1,1が入力されa1,0b0,1+a1,1b1,1がACC24に格納される。
【0042】
そして、図4の(a)~(d)における演算内容は、次の行列式のようになる。
【数1】
【0043】
図5は、図2示したPE120の第3の構成例としてのPE123を模式的に示すブロック図である。
【0044】
PE123は、入力ブロック21a、21b、出力ブロック21c、21d及びデータ型毎の例えば3組の演算回路を備える。
【0045】
3組の演算回路は、例えばFP64用、FP32用及びFP16用であり、それぞれ乗算器22、加算器23及びACC24を備える。
【0046】
PE123は、使用していないブロックの電力を遮断して電力削減を行う。例えば、FP32で行列積を実行する場合、FP16,FP64のブロックを遮断する(図5の斜線部を参照)。
【0047】
FP64やFP16にデータ型を変更する際には、安定化させるために数サイクル待つ必要がある。
【0048】
そこで、本実施形態では、シストリックアレイのPE123毎に必要な演算精度が予測され、予測結果に基づいて数サイクル前に演算器の演算精度を選択しPower Gating制御が行われる。
【0049】
シストリックアレイで、a,bの値が伝搬されるのを利用し、数サイクル後に伝搬されるデータの所要演算精度情報から演算精度が予測される。
【0050】
数サイクル後の精度を予測してPower Gatingを制御することで、安定化に必要となるサイクル数を隠蔽できる。データ毎の所要演算精度は、例えば指数部の値の範囲から推定される。
【0051】
図6は、図2に示したアクセラレータ12の動作例を説明する図である。
【0052】
clock=tにおいて、符号A1に示すようにaxxの所要演算精度が算出され、符号A2に示すようにbxxの所要演算精度が算出される。符号A3に示すように、axx, bxxの所要演算精度とAcc24の値から2サイクル後の演算精度が予測され、FP32からFP64に変更が必要と判定されると、FP64ブロックがpower onされる。
【0053】
clock=t+1において、符号A4に示すように、FP32で演算が実行され、FP64ブロックの安定待ちが行われる。
【0054】
clock=t+2において、符号A5に示すように、ACC24の値がFP64に変換され、FP64で積和演算acc+=axx*bxxが行われる。
【0055】
clock=t+3において、符号A6に示すように、FP32回路の電源OFFが行われる。
【0056】
図7の(a)~(c)は、図6に示したアクセラレータ12の動作中の各PE123の状態を例示する図である。
【0057】
図7の(a)に示すclock=t, t+1において、FP32は電源ON状態、FP16は電源OFF状態(斜線部を参照)であり、FP64が電源ONされて安定待ち(網掛け部を参照)となっている。
【0058】
図7の(b)に示すclock=t+2において、FP32に加えてFP64が電源ON状態となり、安定動作する。
【0059】
図7の(c)に示すclock=t+3において、FP32が電源OFF(斜線部を参照)される。
【0060】
図8は、第1実施形態における演算精度の推定を説明する図である。
【0061】
axx,bxxが表現できる範囲、かつ、axx*bxx+accの計算結果がオーバーフロー又はアンダーフローしないものとする。
【0062】
e_aを指数部(axx)、e_bを指数部(bxx)、e_accを指数部(acc)とし、s_aを符号(axx)、 s_bを符号(bxx)、s_accを符号(acc)とし、乗算結果の指数部をe_x、符号をs_xとする。e_x=e_a+e_b またはe_a+e_b+1となる。s_x=xor(s_a,s_b)となる。
【0063】
FP16、FP32の順にデータ型が判定され、符号B1に示す表の全条件を満足する場合は、そのデータ型で演算を行うと判定される。
【0064】
すなわち、入力が表現できる範囲は-emin≦e_a≦emaxかつ-emin≦e_b≦emaxであり、乗算結果が表現できる範囲は-emin ≦e_x≦emaxである。また、加算結果がオーバーフロー又はアンダーフローしない条件は、s_x=s_acc=0のときe_x<emax,e_acc<emaxとなり、s_x=s_acc=1のときemin<e_x, emin<e_accとなり、s_x≠s_accのときe_x≠e_accとなる。
【0065】
隠しビット(hidden bit)の桁上がり発生を考慮すると、桁上がり無しの場合はe_x0=e_a+e_bとなり、桁上がり有りの場合はe_x1=e_a+e_b+1となる。この場合、乗算結果が表現できる範囲は、-emin≦e_x0かつe_x1≦emaxである。また、加算結果がオーバーフロー又はアンダーフローしない条件は、s_x=s_acc=0のときe_x1<emaxとなり、s_x=s_acc=1のときemin<e_x0となり、s_x≠s_accのときe_x0≠e_accまたは e_x1≠e_accとなる。
【0066】
なお、符号B2に示すように、FP16についてemin=-14, emax=15であり、FP32についてemin=-126, emax=127である。
【0067】
第1実施形態における、使用する演算器の判定処理を、図9に示すフローチャート(ステップS1~S5)に従って説明する。
【0068】
図1に示した制御部121は、FP16で表現可能であるかを判定する(ステップS1)。
【0069】
FP16で表現可能である場合には(ステップS1のYesルート参照)、制御部121は、FP16を使用すると判定し(ステップS2)、使用する演算器の判定処理は終了する。
【0070】
一方、FP16で表現可能でない場合には(ステップS1のNoルート参照)、制御部121は、FP32で表現可能であるかを判定する(ステップS3)。
【0071】
FP32で表現可能である場合には(ステップS3のYesルート参照)、制御部121は、FP32を使用すると判定し(ステップS4)、使用する演算器の判定処理は終了する。
【0072】
一方、FP32で表現可能でない場合には(ステップS3のNoルート参照)、制御部121は、FP64を使用すると判定し(ステップS5)、使用する演算器の判定処理は終了する。
【0073】
図10は、第1実施形態の変形例におけるPE123bの構成例を模式的に示すブロック図である。
【0074】
PE123aは、入力ブロック21a、21b、出力ブロック21c、21d、PE制御部2、FP64回路2a、FP32回路2b、FP16回路2c及びRAM122を備える。
【0075】
PE制御部2は、各回路2a~2cのON/OFF及び動作を制御する。
【0076】
FP64回路2aは、乗算器22、加算器23、ACC24、変換器25a(FP64→FP32)及び選択器(SEL)26を備える。
【0077】
FP32回路2bは、乗算器22、加算器23、ACC24、変換器25b(FP32→FP64)、変換器25c(FP32→FP16)、SEL26及びビット幅変換器27a(b_sel32)を備える。
【0078】
FP16回路2cは、乗算器22、加算器23、ACC24、変換器25d(FP16→FP32)、SEL26及びビット幅変換器27a(b_sel16)を備える。
【0079】
FP64回路2aにおいて、乗算器22は、入力ブロック21a、21bからの64ビットの入力を乗算する。加算器23は、乗算器22による乗算結果と、SEL26による出力とを加算する。ACC24は、加算器23による加算結果を格納し、格納結果をPE制御部2、RAM122、SEL26及びFP32回路2bへ出力する。変換器25aは、FP32回路2bのACC24からの出力をFP64回路2a向けに変換する。SEL26は、PE制御部2からの制御に基づき、FP64回路2aのACC24の出力と、変換器25aを介したFP32回路2bのACC24の出力とのいずれかを選択して、加算器23へ入力する。
【0080】
FP32回路2bにおいて、乗算器22は、入力ブロック21a、21bからの64ビットの入力を32ビットに変換して乗算する。加算器23は、乗算器22による乗算結果と、SEL26による出力とを加算する。ACC24は、加算器23による加算結果を格納し、格納結果をPE制御部2、RAM122、SEL26, FP64回路2a及びFP16回路2cへ出力する。変換器25b、25cは、FP64回路2a及びFP16回路2cのACC24からのそれぞれの出力をFP32回路2b向けに変換する。SEL26は、PE制御部2からの制御に基づき、FP32回路2bのACC24の出力と、変換器25bを介したFP64回路2aのACC24の出力と、変換器25cを介したFP16回路2cのACC24の出力とのいずれかを選択して、加算器23へ入力する。
【0081】
FP16回路2cにおいて、乗算器22は、入力ブロック21a、21bからの64ビットの入力を16ビットに変換して乗算する。加算器23は、乗算器22による乗算結果と、SEL26による出力とを加算する。ACC24は、加算器23による加算結果を格納し、格納結果をPE制御部2、RAM122、SEL26及びFP32回路2bへ出力する。変換器25dは、FP32回路2bのACC24からの出力をFP16回路2c向けに変換する。SEL26は、PE制御部2からの制御に基づき、FP16回路2cのACC24の出力と、変換器25dを介したFP32回路2bのACC24の出力とのいずれかを選択して、加算器23へ入力する。
【0082】
図11の(a)は図10に示した64ビットから16ビットへのビット幅変換器27bの詳細を説明する図であり、(b)は図10に示した64ビットから32ビットへのビット幅変換器27aの詳細を説明する図である。
【0083】
図11の(a)に示すように、変換前の64ビットのビット列は、1ビットの符号ビット(s)、11ビットの指数部(e)及び52ビットの仮数部(m)を有する。64ビットから16ビットへ変換されると、符号ビットはそのまま残り、指数部は下位5ビットが残り、仮数部は上位10ビットが残る。
【0084】
図11の(b)に示すように、変換前の64ビットのビット列は、1ビットの符号ビット(s)、11ビットの指数部(e)及び52ビットの仮数部(m)を有する。64ビットから32ビットへ変換されると、符号ビットはそのまま残り、指数部は下位8ビットが残り、仮数部は上位32ビットが残る。
【0085】
〔A-2〕第2実施形態
AIアクセラレータ等では、演算途中の演算精度を確保するため、加算部分では倍の精度を利用することがある。
【0086】
図12は、第2実施形態におけるPE123aの構成例を模式的に示すブロック図である。
【0087】
図12に示すPE123aは、図5に示したPE123と略同様の構成を有するが、FP32用の加算器23及びACC24が倍精度のFP64となっている。また、FP16用の加算器23及びACC24が倍精度のFP64となっている。
【0088】
図13は、第2実施形態における演算精度の推定を説明する図である。
【0089】
axx,bxxが表現できる範囲、かつ、axx*bxx+accの計算結果がオーバーフロー又はアンダーフローしないものとする。
【0090】
e_aを指数部(axx)、e_bを指数部(bxx)、e_accを指数部(acc)とし、s_aを符号(axx)、 s_bを符号(bxx)、s_accを符号(acc)とし、乗算結果の指数部をe_x=e_a+e_b、符号をs_x=xor(s_a, s_b)とする。
【0091】
FP16、FP32の順にデータ型が判定され、符号C1に示す表の全条件を満足する場合は、そのデータ型で演算を行うと判定される。第2実施形態では、第1実施形態とは異なり、乗算器22の入力の範囲と乗算器の出力以降の範囲とで、e1とe2とに分けられる。
【0092】
すなわち、入力が表現できる範囲は-e1min≦e_a≦e1maxかつ-e1min≦e_b≦e1maxであり、乗算結果が表現できる範囲は-e2min ≦e_x≦e2maxである。また、加算結果がオーバーフロー又はアンダーフローしない条件は、s_x=s_acc=0のときe_x<e2max,e_acc<e2maxとなり、s_x=s_acc=1のときe2min<e_x, e2min<e_accとなり、s_x≠s_accのときe_x≠e_accとなる。
【0093】
隠しビット(hidden bit)の桁上がり発生を考慮すると、桁上がり無しの場合はe_x0=e_a+e_bとなり、桁上がり有りの場合はe_x1=e_a+e_b+1となる。この場合、乗算結果が表現できる範囲は、-e2min≦e_x0かつe_x1≦e2maxである。また、加算結果がオーバーフロー又はアンダーフローしない条件は、s_x=s_acc=0のときe_x1<e2maxとなり、s_x=s_acc=1のときe2min<e_x0となり、s_x≠s_accのとき、e_x0≠e_accまたは e_x1≠e_accとなる。
【0094】
なお、符号C2に示すように、FP16についてe1min=-14, e1max=15, e2min=-126, e2max=127であり、FP32についてe1min=-126, e1max=127, e2min=-1022, e2max=1023である。
【0095】
〔B〕効果
上述した実施形態における演算器及び情報処理装置によれば、例えば以下の作用効果を奏することができる。
【0096】
制御部121は、第1のタイミングにおいて、第3のPE123から所定のサイクル前にある第1のPE123の第1のデータと第2のPE123の第2のデータとに基づき、第3のPE123における所定のサイクル後の第2の演算精度を予測する。制御部121は、第1のタイミングにおいて、予測の結果に基づき第3のPE123において稼働している第1の回路に対応する第1の演算精度の変更が必要な場合に、第3のPE123において第2の演算精度に対応する第2の回路の電源を投入する。制御部121は、第1のタイミングから所定のサイクル後の第2のタイミングにおいて、第3のPE123の第2の回路で第2の演算精度の演算を実行し、第2のタイミングの後の第3のタイミングにおいて、第3のPE123における第1の回路の電源を切断する。
【0097】
これにより、細粒度でPower Gatingを行なうことで低消費電力化を達成することができる。なお、消費電力は、高い順にFP64、FP32、FP16となる。また、行列のデータの値に合わせて動的に演算精度を制御することで演算を破綻せずに演算の実行が可能となり、オーバーフロー又はアンダーフロー発生しない。
【0098】
制御部121は、第1のデータ若しくは第2のデータが表現できる範囲でなく、又は、第1のデータと第2のデータとの積に対して第3のPE123で稼働している回路におけるACC24の出力データを加算した値がオーバーフロー若しくはアンダーフローする場合に、第2の回路の電源を投入する。
【0099】
これにより、正常な演算結果を出力可能な演算精度を有する回路を適切に選択できる。
【0100】
制御部121は、第3のPE123の第2の回路における加算演算について、第2の演算精度の倍精度で演算する。
【0101】
これにより、乗算器22における演算精度は下げて消費電力を低減させた上で、加算器23の演算精度を上げることで、低消費電力で演算精度を向上させることができる。
【0102】
〔C〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0103】
〔D〕付記
以上の実施形態に関し、更に以下の付記を開示する。
【0104】
(付記1)
第1の処理要素と第2の処理要素と第3の処理要素とを含む複数の処理要素を有し、シストリックアレイ型行列演算を実行する演算器であって、
第1のタイミングにおいて、前記第3の処理要素から所定のサイクル前にある前記第1の処理要素の第1のデータと前記第2の処理要素の第2のデータとに基づき、前記第3の処理要素における前記所定のサイクル後の第2の演算精度を予測し、
前記第1のタイミングにおいて、前記予測の結果に基づき前記第3の処理要素において稼働している第1の回路に対応する第1の演算精度の変更が必要な場合に、前記第3の処理要素において前記第2の演算精度に対応する第2の回路の電源を投入し、
前記第1のタイミングから前記所定のサイクル後の第2のタイミングにおいて、前記第3の処理要素の前記第2の回路で前記第2の演算精度の演算を実行し、
前記第2のタイミングの後の第3のタイミングにおいて、前記第3の処理要素における前記第1の回路の電源を切断する、
制御部を備える、演算器。
【0105】
(付記2)
前記制御部は、前記第1のデータ若しくは前記第2のデータが表現できる範囲でなく、又は、前記第1のデータと前記第2のデータとの積に対して前記第3の処理要素で稼働している回路におけるアクセラレータの出力データを加算した値がオーバーフロー若しくはアンダーフローする場合に、前記第2の回路の電源を投入する、
付記1に記載の演算器。
【0106】
(付記3)
前記制御部は、前記第3の処理要素の前記第2の回路における加算演算について、前記第2の演算精度の倍精度で演算する、
付記1又は2に記載の演算器。
【0107】
(付記4)
プロセッサと、
第1の処理要素と第2の処理要素と第3の処理要素とを含む複数の処理要素を有し、シストリックアレイ型行列演算を実行することで前記プロセッサを補助する演算器と、
を備え、
前記演算器は、
第1のタイミングにおいて、前記第3の処理要素から所定のサイクル前にある前記第1の処理要素の第1のデータと前記第2の処理要素の第2のデータとに基づき、前記第3の処理要素における前記所定のサイクル後の第2の演算精度を予測し、
前記第1のタイミングにおいて、前記予測の結果に基づき前記第3の処理要素において稼働している第1の回路に対応する第1の演算精度の変更が必要な場合に、前記第3の処理要素において前記第2の演算精度に対応する第2の回路の電源を投入し、
前記第1のタイミングから前記所定のサイクル後の第2のタイミングにおいて、前記第3の処理要素の前記第2の回路で前記第2の演算精度の演算を実行し、
前記第2のタイミングの後の第3のタイミングにおいて、前記第3の処理要素における前記第1の回路の電源を切断する、
情報処理装置。
【0108】
(付記5)
前記演算器は、前記第1のデータ若しくは前記第2のデータが表現できる範囲でなく、又は、前記第1のデータと前記第2のデータとの積に対して前記第3の処理要素で稼働している回路におけるアクセラレータの出力データを加算した値がオーバーフロー若しくはアンダーフローする場合に、前記第2の回路の電源を投入する、
付記4に記載の情報処理装置。
【0109】
(付記6)
前記演算器は、前記第3の処理要素の前記第2の回路における加算演算について、前記第2の演算精度の倍精度で演算する、
付記4又は5に記載の情報処理装置。
【符号の説明】
【0110】
1 :情報処理装置
2 :PE制御部
2a :FP64回路
2b :FP32回路
2c :FP16回路
11 :CPU
12 :アクセラレータ
13 :メモリ
14 :補助記憶装置
15 :通信インタフェース
16 :入出力インタフェース
21a、21b :入力ブロック
21c、21d :出力ブロック
22 :乗算器
23 :加算器
24 :ACC
24a :多重器
25a~25d :変換器
26 :SEL
27a、27b :ビット幅変換器
120、120a、123、123a:PE
121 :制御部
122 :RAM
124 :DMAコントローラ
160 :記録媒体
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13