• ポートフォリオ機能


ポートフォリオを新規に作成して保存
既存のポートフォリオに追加保存

  • この表をプリントする
PDF PDFをダウンロード
審決分類 審判 査定不服 2項進歩性 取り消して特許、登録 G06N
管理番号 1377366
審判番号 不服2021-2284  
総通号数 262 
発行国 日本国特許庁(JP) 
公報種別 特許審決公報 
発行日 2021-10-29 
種別 拒絶査定不服の審決 
審判請求日 2021-02-22 
確定日 2021-09-21 
事件の表示 特願2016-193553「演算処理装置、演算処理方法及びプログラム」拒絶査定不服審判事件〔平成30年 4月 5日出願公開、特開2018- 55570、請求項の数(13)〕について、次のとおり審決する。 
結論 原査定を取り消す。 本願の発明は、特許すべきものとする。 
理由 第1 手続の経緯
本願は,平成28年9月30日の出願であって,令和2年7月13日付けで拒絶理由が通知され,令和2年9月9日付けで手続補正がされ,令和2年11月16日付けで拒絶査定(原査定)がされ,これに対し,令和3年2月22日に拒絶査定不服審判の請求がされると同時に手続補正がされ,令和3年3月23日に前置報告がされたものである。

第2 原査定の概要
原査定(令和2年11月16日付け拒絶査定)の概要は次のとおりである。

1.本願請求項1?3,5?9,12?13に係る発明は,以下の引用文献1?3に基づいて,その発明の属する技術の分野における通常の知識を有する者(以下,「当業者」という。)が容易に発明できたものであるから,特許法第29条第2項の規定により特許を受けることができない。

引用文献等一覧
1.特開2001-188767号公報
2.特開2013-114538号公報
3.特開2010-211496号公報(周知技術を示す文献)

第3 審判請求時の補正について
審判請求時の補正は,特許法第17条の2第3項から第6項までの要件に違反しているものとはいえない。
審判請求時の補正によって,請求項1において,「前記割当て手段は,
演算する際に参照する前記所定の階層より前の階層における演算結果に係る前記複数の演算回路間での重複するデータ量に応じた評価値を割当て候補に対して算出し,
前記評価値が所定の基準を満たす割当て候補であって,演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が少なくとも第1の割当て候補より少ない第2の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定する」とする補正及び,
請求項12において,「割当てにおいて,
演算する際に参照する前記所定の階層より前の階層における演算結果に係る前記複数の演算回路間での重複するデータ量に応じた評価値を割当て候補に対して算出し,
前記評価値が所定の基準を満たす割当て候補であって,演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が少なくとも第1の割当て候補より少ない第2の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定する」とする補正は,それぞれ,補正前の請求項1の発明特定事項である「割当て手段」及び補正前の請求項12の発明特定事項である「割当て」の内容を限定的に減縮するものであるから,特許請求の範囲の減縮を目的とするものであり,また,当該補正の内容は,当初明細書の段落0054?0069に記載されているから,当該補正は新規事項を追加するものではない。
また,審判請求時の補正によって請求項10において,「前記割当て手段は,前記第2の割当て候補の前記評価値が前記複数の演算回路間で重複して保持するデータが所定数以下になることを示す場合,または,前記第1の割当て候補における前記複数の演算回路間で重複して保持するデータ量に対する,前記第2の割当て候補における前記複数の演算回路間で重複して保持するデータ量の削減率が所定値以上となることを前記第2の割当て候補の前記評価値が示す場合,前記第2の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定する」とする補正は,補正前の請求項10の発明特定事項である「割当て手段」の内容を限定的に減縮するものであるから,特許請求の範囲の減縮を目的とするものであり,また,当該補正の内容は,当初明細書の段落0069に記載されているから,当該補正は新規事項を追加するものではない。
そして,「第4 本願発明」から「第6 対比・判断」までに示すように,補正後の請求項1?13に係る発明は,独立特許要件を満たすものである。

第4 本願発明
本願の請求項1?13に係る発明(以下,それぞれ「本願発明1」?「本願発明13」という。)は,令和3年2月22日付けの手続補正で補正された特許請求の範囲の請求項1?13に記載された事項により特定される発明であり,以下のとおりの発明である。

「 【請求項1】
階層的な演算処理を並列に行う複数の演算回路と,
前記演算処理における所定の階層における複数の演算であって,前記所定の階層より前の階層における複数の演算結果のうちの少なくとも一部を参照する前記複数の演算それぞれを前記複数の演算回路に割当てる割当て手段とを有し,
前記割当て手段は,
演算する際に参照する前記所定の階層より前の階層における演算結果に係る前記複数の演算回路間での重複するデータ量に応じた評価値を割当て候補に対して算出し,
前記評価値が所定の基準を満たす割当て候補であって,演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が少なくとも第1の割当て候補より少ない第2の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定することを特徴とする演算処理装置。
【請求項2】
前記複数の演算回路のそれぞれは,演算する際に参照する前記所定の階層より前の階層における演算結果を記憶する記憶手段を有することを特徴とする請求項1に記載の演算処理装置。
【請求項3】
前記演算処理は,Convolutional Neural Networkによる演算処理であるであることを特徴とする請求項1又は2に記載の演算処理装置。
【請求項4】
前記割当て手段は,シミュレーテッド アニーリング法に基づいて,前記複数の演算それぞれを前記複数の演算回路に割当てることを特徴とする請求項1乃至3の何れか1項に記載の演算処理装置。
【請求項5】
前記割当て手段は,前記複数の演算回路間の演算量の差が少なくなるように,前記複数の演算それぞれを前記複数の演算回路に割当てることを特徴とする請求項1乃至4の何れか1項に記載の演算処理装置。
【請求項6】
前記割当て手段は,前記記憶手段に記憶されるデータの量が所定値を超えないように,前記複数の演算それぞれを前記複数の演算回路に割り当てることを特徴とする請求項2に記載の演算処理装置。
【請求項7】
前記割当て手段は,演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が所定数より少なくなるように,前記複数の演算それぞれを前記複数の演算回路に割当てることを特徴とする請求項1乃至6の何れか1項に記載の演算処理装置。
【請求項8】
前記複数の演算回路の稼働状態を確認する第1確認手段をさらに有し,
前記割当て手段は,前記第1確認手段によって確認された前記稼働状態に基づいて,前記複数の演算の前記複数の演算回路への割当てを変更することを特徴とする請求項1乃至7の何れか1項に記載の演算処理装置。
【請求項9】
前記演算回路は,前記所定の階層より前の階層における演算結果とフィルタカーネルとの畳込み演算を行うことを特徴とする請求項1乃至8の何れか1項に記載の演算処理装置。
【請求項10】
前記割当て手段は,前記第2の割当て候補の前記評価値が前記複数の演算回路間で重複して保持するデータが所定数以下になることを示す場合,または,前記第1の割当て候補における前記複数の演算回路間で重複して保持するデータ量に対する,前記第2の割当て候補における前記複数の演算回路間で重複して保持するデータ量の削減率が所定値以上となることを前記第2の割当て候補の前記評価値が示す場合,前記第2の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定することを特徴とする請求項1乃至9の何れか1項に記載の演算処理装置。
【請求項11】
前記評価値は,前記複数の演算回路の個数および前記複数の演算回路に割当て可能な演算処理量に応じたペナルティ値を有することを特徴とする請求項1乃至10の何れか1項に記載の演算処理装置。
【請求項12】
階層的な演算処理を並列に行う複数の演算回路への,前記演算処理における所定の階層における複数の演算であって,前記所定の階層より前の階層における複数の演算結果のうちの少なくとも一部を参照する前記複数の演算それぞれの割当てにおいて,
演算する際に参照する前記所定の階層より前の階層における演算結果に係る前記複数の演算回路間での重複するデータ量に応じた評価値を割当て候補に対して算出し,
前記評価値が所定の基準を満たす割当て候補であって,演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が少なくとも第1の割当て候補より少ない第2の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定することを特徴とする演算処理方法。
【請求項13】
請求項1から11の何れか1項に記載の演算処理装置としてコンピュータを機能させるためのプログラム。」

第5 引用文献,引用発明等
1.引用文献1について
原査定の拒絶の理由に引用された引用文献1(特開2001-188767号公報)には,図面とともに次の事項が記載されている。(下線は当審で付したものである。)

「【0044】【発明の実施の形態】(第1実施の形態)本第1の実施の形態のニューラルネットワーク演算装置は,図1に示すように,大別して,複数の演算ユニット10_(1)?10_(x)(1<x;但し,xは正の整数,Hは1≦H≦xの正の整数,),マスターノード12,プログラムメモリ14,ホストコンピュータ16とから構成され,図3に示す入力層,隠れ層,及び出力層からなる3層のパーセプトロンのニューラルネットワークにおけるニューロン演算及びヘッブ則による学習を行う。」

「【0051】演算ユニット10_(1)?10_(x)は,各々独立した1つの半導体素子に形成され,マスターノード12からの制御データに基いてニューロン演算値の部分和yα_(j)の演算(詳細は後述)と,シナプス接続重みの更新の2種類の動作を各々並列して行う。」

【0052】すなわち,演算ユニット10_(1)?10_(x)は,ニューロン演算時には,特定のニューロンの持つ全シナプスのうちから割り当てられたシナプス(ここではN個のシナプス)のそれぞれとシナプス接続する前段のニューロン出力値と,シナプスの接続重みとを乗算して,乗算結果をN個のシナプスに亙って累積加算し,得られた結果を出力する。この演算を指定されたニューロンから順番に,割り当てられた全てのニューロン(ここではM個のニューロン)に対して行う。」

「【0093】次に,上記構成のニューラルネットワーク演算装置に,図3に示した,入力層,隠れ層及び出力層からなる3層のパーセプトロン型のニューラルネットワークの演算を,第1演算ユニット10_(1)から第x演算ユニット10_(x)のx個の演算ユニットに割り当てる方法について説明する。ここでは,説明を簡略にするため,ニューラルネットワークの演算を第1演算ユニット10_(1)から第6演算ユニット10_(6)の6個の演算ユニットに割り当てる場合について説明する。
【0094】また,図3に示した全てのニューロン1?n+m+pのニューロン出力値をそれぞれY_(1)?Y_(n+m+p),ニューロンiからニューロンjへのシナプス接続の重みをW_(ji)と書き表すと,3層のパーセプトロン型のニューラルネットワークの演算は,W_(ji)を用いて,図9(A)に示すような3×3のブロックからなる行列で表すことができる。
【0095】図9(A)中のIの領域は入力層から隠れ層への接続(すなわち,1≦i≦n,n+1≦j≦n+m)を表し,図9(A)中のIIの領域は隠れ層から出力層への接続(すなわち,n+1≦i≦n+m,n+m+1≦j≦n+m+p)を表しており,他の領域は接続が無く(W_(ji)=0),計算する必要の無い領域である。
【0096】本第1の実施の形態におけるニューラルネットワークの計算方法では,I及びIIの領域で表された計算すべき接続を,少なくとも横方向に複数分割してx個の演算ユニットの全部又は1部に割り当て,分散処理させる。
【0097】ここでは,一例として,図9(B)及び図9(C)に示すように,I及びIIの領域で表された計算すべき接続を,それぞれ横方向に3分割,縦方向に2分割して6つの演算ユニット10_(1)?10_(6)に均等に割り当て,分散処理させるように構成する。
【0098】6つの演算ユニット10_(1)?10_(6)のうち,第1演算ユニット10_(1)?第3演算ユニット10_(3)を第1グループG1としてグループレジスタ54に「1」を設定し,第4演算ユニット10_(4)?第6演算ユニット10_(6)を第2グループG2としてグループレジスタ54に「2」を設定し,1つの演算層を構成する複数のニューロンを2つのグループ(ここでは,隠れ層を,ニューロンn+1?ニューロンn+L1のグループとニューロンn+L1+1?ニューロンn+mのグループとし,出力層をニューロンn+m+1?ニューロンn+m+L2のグループとニューロンn+m+L2+1?ニューロンn+m+pのグループに分割する。)に分割して前記2つのグループG1,G2のそれぞれに割り当てると共に,1つのニューロンが行うニューロン演算を3分割して1グループを構成する3つの演算ユニットに均等に割り当てている。」

「【0103】上記のようにニューロン演算が割り当てられた各演算ユニット10_(1)?10_(6)を制御するマスターノード12の制御ルーチンについて,図10のフローチャートを参照しながら説明する。なお,マスターノード12は,ホストコンピュータ16がプログラムメモリ14に書き込んだマスターノード12の動作を記述するプログラムを読み込み,このプログラムにより動作を開始する。ホストコンピュータ16は,マスターノード12の動作を記述するプログラムをプログラムメモリ14に書き込むと共に,各演算ユニット10_(1)?10_(6)に対して初期設定を行っている。この初期設定では,シナプス接続重みメモリ26への初期データの書き込み,及びグループレジスタ54の設定を行う。これらのデータの値はニューラルネットワークの構成に従い,前記演算の割り当て方法の説明に示したように設定し,さらにプログラムメモリ14に入力層への入力値Y_(1)?Y_(n)を書き込む。
【0104】まず,ステップ300では,ホストコンピュータ16からニューロン演算開始命令が出力されたかを判断し,ニューロン演算開始命令が出力されたと判断すると,プログラムメモリ14からマスターノード12の制御プログラムを読み込み,次のステップ302に移行する。ステップ302では,隠れ層のニューロン演算を行うために必要な各種データを書き込み指示とともに出力する。
【0105】まず,マスターノード12は,グループレジスタ54に「1」が設定された演算ユニット,すなわち,第1グループG1に属する演算ユニット10_(1),10_(2),10_(3)のそれぞれに対し,以下の設定を行う。すなわち,第1演算ユニット10_(1)の最小ニューロンレジスタ50には1を設定し,第2演算ユニット10_(2)の最小ニューロンレジスタ50にはN1+1を設定し,第3演算ユニット10_(3)の最小ニューロンレジスタ50にはN2+1を設定すると共に,第1演算ユニット10_(1)の最大ニューロンレジスタ52にはN1を設定し,第2演算ユニット10_(2)の最大ニューロンレジスタ52にはN2を設定し,第3演算ユニット10_(3)の最大ニューロンレジスタ52にはnを設定する。
【0106】同様に,マスターノード12は,グループレジスタ54に「2」が設定された演算ユニット,すなわち,第2グループG2に属する演算ユニット10_(4),10_(5),10_(6)の最小ニューロンレジスタ50に対しても,第4演算ユニット10_(4)には1を設定し,第5演算ユニット10_(5)にはN1+1を設定し,第5演算ユニット10_(5)にはN2+1を設定すると共に,最大ニューロンレジスタ52に対し,第4演算ユニット10_(4)にはN1を設定し,第5演算ユニット10_(5)にはN2を設定し,第5演算ユニット10_(5)にはnを設定する。
【0107】また,マスターノード12は,ホストコンピュータ16がプログラムメモリ14に書き込んだ入力層のニューロン出力値Y_(1)?Y_(n)をプログラムメモリ14から読み出し,読み出したニューロン出力値Y_(1)?Y_(n)をニューロン番号i,及び書き込み制御信号と共にローカルバス18に出力する。
【0108】演算ユニット10_(1)?10_(6)に対する書き込みは前述の方法によって行われる。すなわち,演算ユニット10_(1)?10_(6)は,それぞれ最小ニューロンレジスタ50に設定された値と最大ニューロンレジスタ52に設定された値の間のニューロン番号iのニューロン出力値Yiを受取るため,ニューロン出力値Y_(1)?Y_(N1)は第1演算ユニット10_(1)及び第4演算ユニット10_(4)のニューロン出力値メモリ24のアドレス0からアドレスN-1に順に保存され,ニューロン出力値Y_(N1+1)?Y_(N2)は第2演算ユニット10_(2)及び第5演算ユニット10_(5)のニューロン出力値メモリ24のアドレス0からアドレスN-1に順に保存され,ニューロン出力値Y_(N2+1)?Y_(n)は第3演算ユニット10_(3)及び第6演算ユニット10_(6)のニューロン出力値メモリ24のアドレス0からアドレスN-1に順に保存される。
【0109】また,マスターノード12は,第1グループG1に属する演算ユニット10_(1),10_(2),10_(3)のそれぞれの演算開始ニューロンレジスタ42及び演算シナプス数レジスタ40を設定する。すなわち,3つの演算ユニット10_(1),10_(2),10_(3)の全てについて演算開始ニューロンレジスタ42に0を設定し,第1演算ユニット10_(1)の演算シナプス数レジスタ40にはN1,第2演算ユニット10_(2)の演算シナプス数レジスタ40にはN2-N1,及び第3演算ユニット10_(3)の演算シナプス数レジスタ40にはn-N2を設定する。この時グループ内のレジスタに同じ値を設定する場合は,グループ番号を指定することにより同時に行うことができる。
【0110】第2グループG2に属する演算ユニット10_(4),10_(5),10_(6)に対しても同様に,それぞれの演算開始ニューロンレジスタ42及び演算シナプス数レジスタ40を設定する。すなわち,3つの演算ユニット10_(4),10_(5),10_(6)の全てについて演算開始ニューロンレジスタ42に0を設定し,第4演算ユニット10_(4)の演算シナプス数レジスタ40にはN1,第5演算ユニット10_(5)の演算シナプス数レジスタ40にはN2-N1,及び第6演算ユニット10_(6)の演算シナプス数レジスタ40にはn-N2を設定する。
【0111】全ての設定が終了したら次のステップ304に移行して,ローカルバス18にニューロン演算値の部分和演算の開始信号を出力して,ステップ306に移行し,隠れ層のニューロン(すなわち,ニューロン番号n+1?ニューロン番号n+m)に関するニューロン演算値の部分和演算処理を開始させる。」


「図1



「図2



「図3



上記段落0105?0110の記載及び図2の記載から,引用文献1には,「マスターノード12は,グループレジスタ54の設定に応じて,最小ニューロンレジスタ50,最大ニューロンレジスタ52,演算開始ニューロンレジスタ42及び演算シナプス数レジスタ40を設定するとともに,ホストコンピュータ16がプログラムメモリ14に書き込んだ入力層のニューロン出力値Y_(1)?Y_(n)を演算ユニット10_(1)?10_(6)に書き込」むことが記載されていると認められる。

したがって,上記引用文献1には次の発明(以下,「引用発明」という。)が記載されていると認められる。

「複数の演算ユニット10_(1)?10_(x),マスターノード12,プログラムメモリ14,ホストコンピュータ16とから構成され,入力層,隠れ層,及び出力層からなる3層のパーセプトロンのニューラルネットワークにおけるニューロン演算を行うニューラルネットワーク演算装置であって,(段落0044,図1,図3)
演算ユニット10_(1)?10_(x)は,ニューロン演算値の部分和yα_(j)の演算を並列して行う,すなわち,ニューロン演算時には,特定のニューロンの持つ全シナプスのうちから割り当てられたシナプスのそれぞれとシナプス接続する前段のニューロン出力値と,シナプスの接続重みとを乗算して,乗算結果をN個のシナプスに亙って累積加算し,得られた結果を出力するものであり,(段落0051,0052)
入力層,隠れ層及び出力層からなる3層のパーセプトロン型のニューラルネットワークの演算を第1演算ユニット10_(1)から第6演算ユニット10_(6)の6個の演算ユニットに割り当てる場合に,6つの演算ユニット10_(1)?10_(6)のうち,第1演算ユニット10_(1)?第3演算ユニット10_(3)を第1グループG1としてグループレジスタ54に「1」を設定し,第4演算ユニット10_(4)?第6演算ユニット10_(6)を第2グループG2としてグループレジスタ54に「2」を設定し,1つの演算層を構成する複数のニューロンを2つのグループに分割して前記2つのグループG1,G2のそれぞれに割り当てると共に,1つのニューロンが行うニューロン演算を3分割して1グループを構成する3つの演算ユニットに均等に割り当て,(段落0093,0098)
ホストコンピュータ16は,各演算ユニット10_(1)?10_(6)に対してシナプス接続重みメモリ26への初期データの書き込み,及びグループレジスタ54の設定を行い,(段落0103,図2)
マスターノード12は,グループレジスタ54の設定に応じて,最小ニューロンレジスタ50,最大ニューロンレジスタ52,演算開始ニューロンレジスタ42及び演算シナプス数レジスタ40を設定するとともに,ホストコンピュータ16がプログラムメモリ14に書き込んだ入力層のニューロン出力値Y_(1)?Y_(n)を演算ユニット10_(1)?10_(6)に書き込み,(段落0105?0110,図2)
全ての設定が終了したら,隠れ層のニューロンに関するニューロン演算値の部分和演算処理を開始させる,(段落0111)
ニューラルネットワーク演算装置。」

2.引用文献2について
原査定の拒絶の理由に引用された引用文献2(特開2013-114538号公報)には,図面とともに次の事項が記載されている。(下線は当審で付したものである。)

「【0010】
ここで,図2を参照してGPU12について詳細に説明する。
図2は,GPUの概要構成説明図である。
GPU12は,複数の演算ユニット31と,これら複数の演算ユニット31上におけるスレッドの実行制御を行うコントローラ32を備えている。各演算ユニット31は,例えば,PCI Express2.0規格に則った高速グラフィックバス33を介して,キャッシュ21に接続されている。さらにこのキャッシュ21を介して,複数の演算ユニット31により共用されるVRAM22が接続されている。
VRAM22は,大別すると,汎用メモリエリア34及び各種定数を格納する定数メモリエリア35を備えている。
【0011】
図3は,演算ユニットの詳細構成説明図である。
GPU12を構成している各演算ユニット31は,複数の演算エレメント41と,全演算エレメント41により共有されるメモリエリアを構成するローカルメモリ42と,各演算エレメント41に対応づけられ,当該対応する演算エレメント41により占有されるメモリエリアを構成するプライベートメモリ43と,各演算エレメント41とローカルメモリ42とを相互に接続するバス44と,を備えている。ここで,バス44と,高速グラフィックバス33とは,相互に接続されている。
【0012】
次に再び情報処理装置の構成について説明する。
ノースブリッジ13は,比較的広帯域で高速なバスの通信インタフェース動作を行っている。
ROM15は,制御プログラム等の不揮発的に記憶する必要があるデータを格納している。
RAM16は,いわゆるメインメモリを構成しており,各種のデータを一時的に格納する。
サウスブリッジ17は,機械的な駆動部を有するHDD,光ディスクドライブ等の比較的狭帯域で低速なバスに接続される装置との間の通信インタフェース動作を行う。
HDD18は,低速動作ではあるが,大容量のデータを記憶する。
通信インタフェース(IF)部20は,図示しないイーサネット(登録商標)規格に準拠した通信ネットワークを介して他の情報処理装置等との間でデータ通信を行う際の通信インタフェース動作を行う。
【0013】
ここで,実施形態の動作説明に先立ち,処理対象のデータについて説明する。
本実施形態においては,スレッドを実行する演算ユニット31は,可能な場合には,メモリアクセス領域(メモリアクセス範囲)が近いスレッド群(≒タスク)を近い時間に実行するようにされている。
GPU12においては,一つのアプリケーションプログラムが複数のデータに対して実行されるSPMD(Single Program Multiple Data)という実行モデルが適用されることが多い。
【0014】
ところで,一つのアプリケーションプログラムは,並列に実行されるスレッド(ワークアイテム)と呼ばれる小さなプログラムで構成されている。そして,スレッドを実行するに際しては,複数のスレッドが,一つのワークグループとしてグルーピングされてワークグループ単位で実行される。したがって,一つのアプリケーションプログラムを実行することで複数のワークグループが並列に実行されることとなる。
【0015】
そして,各演算ユニット31には,ワークグループ単位で割り当てがなされる。演算ユニット31に割り当てられたワークグループを構成する複数のスレッドには,割り当てがなされた演算ユニット31に対応するローカルメモリ42が共有可能とされている。すなわち,同一の演算ユニット31に割り当てられた複数のワークグループは,ローカルメモリ42を共有する。
さらにワークグループを構成する各スレッドは,それぞれ演算エレメント41に割り当てられ,各演算エレメント41に割り当てられたスレッドは,当該演算エレメント41に割り当てられたスレッドのみが参照可能なプライベートメモリ43を利用可能な状態となっている。
【0016】
図4は,GPUにおけるアプリケーションプログラムの実行モデルの概念説明図である。
図4に示すように,アプリケーションプログラムAPLは,概念上,2次元のインデックス=(Wx,Wy)で識別され,それぞれ並列に実行可能とされた複数のワークグループWGにより構成されている。各ワークグループWGは,同様にそれぞれ並列に実行可能とされた複数のスレッドTHにより構成されている。
【0017】
図5は,各ワークグループのVRAMの利用状況の説明図である。
図5においては,3つのワークグループがメモリを参照している場合の説明図である。
図5に示すように,グループID=100が割り当てられているワークグループWG1のVRAM22の汎用メモリエリア34の参照エリアと,グループID=300が割り当てられているワークグループWG3のVRAM22の汎用メモリエリア34の参照エリアと,は一部重なる領域がある。
【0018】
これに対し,グループID=200が割り当てられているワークグループWG2の参照エリアは,いずれのワークグループWG1,WG3が参照しているエリアとは重なりがなく,異なる領域となっている。
上述したようにグループID=100が割り当てられているワークグループWG1のVRAM22の汎用メモリエリア34の参照エリアと,グループID=300が割り当てられているワークグループWG3のVRAM22の汎用メモリエリア34の参照エリアと,は一部重なりがある。したがって,このまま,ワークグループWG1と,ワークグループWG3と,を並列動作可能な別の演算ユニット31にそれぞれ割り当てたとしても,ワークグループWG1及びワークグループWG3が同時に並列して実行された場合には,同一のメモリアドレスにアクセスすることはできない。すなわち,同一データのフェッチは排他制御により異なる演算ユニット31で同時に行うことはできないため,実質的な実行効率が低下することとなる。
【0019】
したがって,このような場合には,ワークグループWG1及びワークグループWG3を同一の演算ユニット31に割り当てることで,メモリアクセス空間における最適な割り当て(空間方向のアクセス最適化)を行うことが可能となる。
【0020】
一方,グループID=100が割り当てられているワークグループWG1のVRAM22の汎用メモリエリア34の参照エリアと,グループID=200が割り当てられているワークグループWG2のVRAM22の汎用メモリエリア34の参照エリアと,は,重なりがない。
このため,このままワークグループWG1と,ワークグループWG2と,を同一の演算ユニット31に割り当てたとしても,例えば,ワークグループWG1の次にワークグループWG2を同一の演算ユニット31に割り当てて実行した場合には,演算ユニット31は,ワークグループWG1の処理終了後,ワークグループWG2の処理を行う前にデータの再読込を行う必要があり,キャッシュ21の利用効率が低下する。
【0021】
したがって,このような場合には,ワークグループWG1と,ワークグループWG2を同時並行して処理が可能な別の演算ユニット31にそれぞれ割り当てることで,時間軸方向における最適な割り当て(時間方向のアクセス最適化)を行うことが可能となる。
これらのため,本実施形態においては,ワークグループについて空間方向及び時間方向のアクセス最適化を行うために,ランタイムモジュールに各ワークグループの参照エリア(メモリアクセス範囲)を通知する構成を採っている。
【0022】
この場合に,各ワークグループWG1?WG3に参照エリアが割り当てられる態様としては,アドレスが連続したメモリエリアが参照エリアとして割り当てられるラスター形式の割り当て態様と,アドレスは不連続であるが,概念的に2次元のメモリ空間上でタイル形状(矩形形状)のメモリエリアが参照エリアとして割り当てられるタイル形式の割り当て態様(連続したメモリ空間では,所定アドレスずつ離れて,複数の同一容量のメモリ空間が配置される態様となる),が存在する。
そこで,本実施形態においては,APIの仕様として,参照エリアがラスター形式で割り当てられる場合と,タイル形式で割り当てられる場合との,双方に対応可能な仕様を採用した。」

「【0027】
次に実施形態の動作を説明する。
図7は,実施形態の処理フローチャートである。
まず,コントローラ32は,キューの先頭にあるタスクのグループのメモリアクセス領域を取得する(ステップS10)。
【0028】
次にコントローラ32は,キューがいっぱいであるか否かを判別する(ステップS11)。
ステップS11の判別において,キューがいっぱいである場合には(ステップS11;Yes),再び処理をステップS10に移行して待機状態となる。
ステップS11の判別において,キューがいっぱいではない,すなわち,キューに余裕がある場合には(ステップS11;No),スケジュール待ちをしているタスクのグループがあり,他のタスクのグループをキューに積むことが可能であるか否かを判別する(ステップS12)。
【0029】
ステップS12の判別において,スケジュール待ちをしているタスクのグループがない場合には(ステップS12;No),再び処理をステップS10に移行して待機状態となる。
ステップS12の判別において,スケジュール待ちをしているタスクのグループがあり,他のタスクのグループをキューに積むことが可能である場合には(ステップS12;Yes),当該スケジュール待ちをしているタスクのグループのメモリアクセス領域を計算により算出する(ステップS13)。
【0030】
次にコントローラ32は,算出したメモリアクセス領域がキューの先頭にあるグループのメモリアクセス領域と重なっているか否かを判別する(ステップS14)。
ステップS14の判別において,算出したタスクのグループのメモリアクセス領域がキューの先頭にあるグループのメモリアクセス領域と重なっている場合には(ステップS14;Yes),当該タスクのグループをメモリアクセス領域が重なるグループのリストに追加し(ステップS15),処理をステップS17に移行する。
【0031】
一方,ステップS14の判別において,算出したタスクのグループのメモリアクセス領域がキューの先頭にあるグループのメモリアクセス領域と重なっていない場合には(ステップS14;No),当該タスクのグループをメモリアクセス領域が重ならないグループのリストに追加する(ステップS16)。
続いてコントローラ32は,メモリアクセス領域が重なるグループのリスト及びメモリアクセス領域が重ならないグループのリストに含まれるタスクのグループの数がキューにタスクのグループを積むか否かを判定するための所定の閾値を超えたか否かを判別する(ステップS17)。
【0032】
ステップS17の判別において,両リストに含まれる全タスクのグループの数が所定の閾値を超えていない場合には(ステップS17;No),コントローラ32は,スケジュール待ちをしているタスクのグループがあり,他のタスクのグループをキューに積むことが可能であるか否かを再び判別する(ステップS18)。
ステップS18の判別において,スケジュール待ちしているタスクのグループがある場合には(ステップS18;Yes),処理を再びステップS13に移行し,以下,同様の処理を行う。
【0033】
ステップS18の判別において,スケジュール待ちしているタスクのグループがない場合には(ステップS18;No),コントローラ32は,メモリアクセス領域が重なるグループのリストに含まれるタスクのグループのうち,最も重なる領域が多いタスクのグループを時間方向にキューに積む(ステップS19)。すなわち,キューの先頭にあるワークグループの処理後に同一の演算ユニット3(あるいは,演算エレメント41)において,処理がなされるようにキューに積まれることとなる。
【0034】
また,コントローラ32は,メモリアクセス領域が重ならないグループのリストに含まれるタスクのグループのうち,最もアドレスが近いタスクのグループを空間方向にキューに積む(ステップS20)。すなわち,キューの先頭にあるタスクのグループとは,別の演算ユニット31(あるいは演算エレメント41)において,処理がなされるようにキューに積まれることとなる。」

3.引用文献3について
原査定の拒絶の理由に引用された引用文献3(特開2010-211496号公報)には,図面とともに次の事項が記載されている。(下線は当審で付したものである。)

「【0016】
次に動作について説明する。
図4はこの発明の実施の形態1による動的再構成装置の処理内容を示すフローチャートである。
動的再構成回路2を構成している各PE3のマッピング判定部11は,マッピング制御部8からマッピング情報S3の出力を受けて,現在,演算処理部12が演算処理を実施していれば,現在処理中である旨(空き領域でない旨)を示す領域情報S1を構成情報生成部4に出力する。
一方,マッピング制御部8からマッピング情報S3の出力を受けていない場合,あるいは,マッピング制御部8からマッピング情報S3の出力を受けていても,既に演算処理部12の演算処理が終了している場合,現在処理を実行していない旨(空き領域である旨)を示す領域情報S1を構成情報生成部4に出力する。
【0017】
構成情報生成部4の空き領域検出部6は,動的再構成回路2を構成している全てのPE3のマッピング判定部11から領域情報S1を収集する。
空き領域検出部6は,全てのPE3のマッピング判定部11から領域情報S1を収集すると,その領域情報S1の内容を参照することで,動的再構成回路1を構成しているPE3の中で,現在処理を実行していない(空き領域である)PE3を検出し,そのPE3を示す空き領域情報を回路構成生成部7に出力する(ステップST1)。
【0018】
構成情報生成部4の回路構成生成部7は,空き領域検出部6から空き領域情報を受けると,その空き領域情報を参照して,現在処理を実行していないPE3を認識する。
また,回路構成生成部7は,処理基幹メモリ5に記憶されている演算内容と,その演算内容に係る処理を実行する際に必要なPE3の個数Nを取得する。
回路構成生成部7は,例えば,現在処理を実行していないPE3の個数がMであり,その個数Mが,処理を実行する際に必要なPE3の個数Nより大きければ,現在処理を実行していないM個のPE3の中から,N個のPE3を選択する。
動的再構成回路2を構成しているPE3はどれも同じ処理能力を有し,どのPE3でも,割り当てられた演算内容を同じように処理する論理セルであるため,選択するPE3は任意でよく,PE3の選択方法を特に限定するものではない。
【0019】
回路構成生成部7は,N個のPE3を選択すると,N個のPE3を示す選択情報と,N個のPE3が処理する演算内容とを含む構成情報S2をマッピング制御部8に出力する(ステップST2)。
例えば,処理基幹メモリ5に記憶されている演算内容が,下記に示すような3つの演算ステップをシリアルに実行するものであり,処理を実行する際に必要なPE3の個数が3個である場合,3個のPE3を直列に接続して,先頭のPE3に(ステップ1)の演算内容,次のPE3に(ステップ2)の演算内容,最後のPE3に(ステップ3)の演算内容を割り当てる必要がある。
(ステップ1) aとbを加算
(ステップ2) ステップ1の演算結果にcを乗算
(ステップ3) ステップ1の演算結果をdで除算
したがって,構成情報S2に含まれる選択情報は,単に選択したPE3を示す情報だけでなく,選択した複数のPE3間の接続情報を含む情報である。
ここでは,説明の簡単化のため,各ステップの演算内容が極めて簡単な四則演算の例を示しているが,実際には,もっと複雑な演算の場合が多い。
【0020】
マッピング制御部8は,構成情報生成部4の回路構成生成部7から構成情報S2を受けると,その構成情報S2に含まれている選択情報が示すPE3に対して,その構成情報S2に含まれている演算内容を割り当てる旨を示すマッピング情報S3を動的再構成回路2に出力する。
【0021】
動的再構成回路2を構成しているPE3のマッピング判定部11は,マッピング制御部8からマッピング情報S3を受けると,そのマッピング情報S3に含まれている演算内容を演算処理部12に割り当てる処理を行う(ステップST3)。
上記の例では,N個のPE3を選択しているので,N個のPE3がマッピング制御部8からマッピング情報S3を受けて,そのマッピング情報S3に含まれている演算内容を演算処理部12に割り当てることになる。
マッピング判定部11は,上述したように,そのマッピング情報S3に含まれている演算内容を演算処理部12に割り当てると,当該PE3が現在処理中である旨(空き領域でない旨)を示す領域情報S1を構成情報生成部4に出力する。
【0022】
PE3の演算処理部12は,マッピング判定部11から演算内容が割り当てられると,その演算内容に係る処理を実行する(ステップST4)。
なお,マッピング判定部11により演算内容が割り当てられた演算処理部12は,既に演算内容が割り当てられて処理を実行している他のPE3の演算処理部12とは独立しているので,他のPE3の演算処理部12と並行して処理を実行することになる。
図1の動的再構成装置は,次に実行する処理があれば,ステップST1?ST4を繰り返し実行し,次に実行する処理がなければ,一連の処理を終了する(ステップST5)。」

第6 対比・判断
1.本願発明1について
(1)対比
本願発明1と引用発明とを対比すると,次のことがいえる。

ア 引用発明の「入力層,隠れ層,及び出力層からなる3層のパーセプトロンのニューラルネットワークにおけるニューロン演算」は,本願発明1の「階層的な演算処理」に相当する。
そして,引用発明の「演算ユニット10_(1)?10_(x)」は,「ニューロン演算値の部分和yα_(j)の演算を並列して行う」ものである。
そうすると,引用発明の「ニューロン演算値の部分和yα_(j)の演算を並列して行う」「演算ユニット10_(1)?10_(x)」は,本願発明1の「階層的な演算処理を並列に行う複数の演算回路」に相当する。

イ(ア)引用発明は,「入力層,隠れ層及び出力層からなる3層のパーセプトロン型のニューラルネットワークの演算を第1演算ユニット10_(1)から第6演算ユニット10_(6)の6個の演算ユニットに割り当てる場合に」,「1つの演算層を構成する複数のニューロンを2つのグループに分割して前記2つのグループG1,G2のそれぞれに割り当てると共に,1つのニューロンが行うニューロン演算を3分割して1グループを構成する3つの演算ユニットに均等に割り当て」ているところ,「第1演算ユニット10_(1)から第6演算ユニット10_(6)の6個の演算ユニット」に割り当てられる“6個の演算”は,「3層のパーセプトロン型のニューラルネットワーク」における“複数の演算”であるといえるから,本願発明1の「所定の階層における複数の演算」に相当する。
また,上記アの検討から,上記“6個の演算”は,「階層的な演算処理」における「演算」である。
したがって,引用発明の「第1演算ユニット10_(1)から第6演算ユニット10_(6)の6個の演算ユニットに割り当て」られる“6個の演算”は,本願発明1の「前記演算処理における所定の階層における複数の演算」に相当する。

(イ)引用発明の「演算ユニット10_(1)?10_(x)」は,「ニューロン演算時には,特定のニューロンの持つ全シナプスのうちから割り当てられたシナプスのそれぞれとシナプス接続する前段のニューロン出力値と,シナプスの接続重みとを乗算して,乗算結果をN個のシナプスに亙って累積加算」するものであるところ,引用発明の「前段のニューロン出力値」は,本願発明1の「前記所定の階層より前の階層における複数の演算結果」に相当し,当該「前段のニューロン出力値」と「シナプスの接続重み」とを乗算する際には,「前段のニューロン出力値」のうちの“少なくとも一部”を“参照して”「シナプスの接続重み」と乗算しているから,引用発明の“6個の演算”は,「前段のニューロン出力値」“のうちの少なくとも一部を参照”しているといえる。
したがって,引用発明の「第1演算ユニット10_(1)から第6演算ユニット10_(6)の6個の演算ユニット」に割り当てられる“6個の演算”と本願発明の「複数の演算」とは,「所定の階層より前の階層における複数の演算結果のうちの少なくとも一部を参照する複数の演算」である点で一致する。

(ウ)引用発明の「ホストコンピュータ16」は,「各演算ユニット10_(1)?10_(6)に対してシナプス接続重みメモリ26への初期データの書き込み,及びグループレジスタ54の設定を行」うものであり,また,「マスターノード12」は,「グループレジスタ54の設定に応じて,最小ニューロンレジスタ50,最大ニューロンレジスタ52,演算開始ニューロンレジスタ42及び演算シナプス数レジスタ40を設定するとともに,ホストコンピュータ16がプログラムメモリ14に書き込んだ入力層のニューロン出力値Y_(1)?Y_(n)を演算ユニット10_(1)?10_(6)に書き込」むものである。
そして,引用発明は,これらの「設定」や「書き込み」を行うことで,「入力層,隠れ層及び出力層からなる3層のパーセプトロン型のニューラルネットワークの演算」を分割した“6個の演算”を「第1演算ユニット10_(1)から第6演算ユニット10_(6)の6個の演算ユニット」に「割り当てる」ものである。
したがって,引用発明の上記「設定」や「書き込み」を行う主体である「ホストコンピュータ16」及び「マスターノード12」は,本願発明1の「複数の演算それぞれを前記複数の演算回路に割当てる割当て手段」に相当する。

(エ)上記(ア)?(ウ)の検討から,引用発明の「ホストコンピュータ16」及び「マスターノード12」と本願発明1の「割当て手段」とは,“前記演算処理における所定の階層における複数の演算であって,前記所定の階層より前の階層における複数の演算結果のうちの少なくとも一部を参照する前記複数の演算それぞれを前記複数の演算回路に割当てる割当て手段”である点で共通する。

ウ 引用発明の「ニューラルネットワーク演算装置」は,上記ア,イで検討した「複数の演算回路」及び「割当て手段」を備えている点で,本願発明1の「演算処理装置」に対応するものといえる。

エ したがって,本願発明1と引用発明との間には,次の一致点,相違点があるといえる。

(一致点)
「階層的な演算処理を並列に行う複数の演算回路と,
前記演算処理における所定の階層における複数の演算であって,前記所定の階層より前の階層における複数の演算結果のうちの少なくとも一部を参照する前記複数の演算それぞれを前記複数の演算回路に割当てる割当て手段と
を有する演算処理装置。」

(相違点)
本願発明1では,割当て手段が,「演算する際に参照する前記所定の階層より前の階層における演算結果に係る前記複数の演算回路間での重複するデータ量に応じた評価値を割当て候補に対して算出し」,「前記評価値が所定の基準を満たす割当て候補であって,演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が少なくとも第1の割当て候補より少ない第2の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定する」ものであるのに対して,引用発明のホストコンピュータ16及びマスターノード12は,そのように動作するものではない点。

(2)相違点についての判断
ア 引用発明は,ホストコンピュータ16がグループレジスタ54の設定を行うと,マスターノード12は,グループレジスタ54の設定に応じて,演算ユニット内の各種レジスタの設定を行い,これにより,6個の演算ユニットに,3層のパーセプトロン型のニューラルネットワークの演算を割り当てるものであり,具体的には,1つの演算層を構成する複数のニューロンを2つのグループに分割して前記2つのグループG1,G2のそれぞれに割り当てると共に,1つのニューロンが行うニューロン演算を3分割して1グループを構成する3つの演算ユニットに均等に割り当てるというものである。
そうすると,引用発明は,単に,3層のパーセプトロン型のニューラルネットワークの演算を6個の演算ユニットに均等に分割して割り当てることが記載されているだけであって,「割当て手段」が,「演算する際に参照する前記所定の階層より前の階層における演算結果に係る前記複数の演算回路間での重複するデータ量に応じた評価値を割当て候補に対して算出し」,「前記評価値が所定の基準を満たす割当て候補であって,演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が少なくとも第1の割当て候補より少ない第2の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定する」こと(以下,「相違点に係る構成」という。)は想定されておらず,そのようなことについて,記載も示唆もされていない。
また,引用文献2?3にも,上記相違点に係る構成については記載がなく,また,上記相違点に係る構成が,本願出願前に当該技術分野における周知技術であったともいえない。
そうすると,引用発明において,「割当て手段」が,「演算する際に参照する前記所定の階層より前の階層における演算結果に係る前記複数の演算回路間での重複するデータ量に応じた評価値を割当て候補に対して算出し」,「前記評価値が所定の基準を満たす割当て候補であって,演算する際に参照する前記所定の階層より前の階層における演算結果の前記複数の演算回路間での重複が少なくとも第1の割当て候補より少ない第2の割当て候補を前記複数の演算の前記複数の演算回路への割当てとして決定する」ことは,当業者であっても,容易に想到し得たことであるとはいえない。

イ よって,本願発明1は,当業者であっても引用発明及び引用文献2?3に記載の技術的事項に基づいて容易に発明できたものであるとはいえない。

2.本願発明2?13について
本願発明2?11,13は,本願発明1を直接・間接に引用するものであって,本願発明1と同一の構成を備えるものであるから,本願発明1と同じ理由により,当業者であっても引用発明及び引用文献2?3に記載の技術的事項に基づいて容易に発明できたものとはいえない。
また,本願発明12は,本願発明1に対応する演算処理方法の発明であって,本願発明1とカテゴリ表現が異なるだけの発明であるから,本願発明1と同じ理由により,当業者であっても引用発明及び引用文献2?3に記載の技術的事項に基づいて容易に発明できたものとはいえない。

第7 むすび
以上のとおり,本願発明1?13は,当業者が引用発明及び引用文献2?3に記載の技術的事項に基づいて容易に発明をすることができたものではない。したがって,原査定の理由によっては,本願を拒絶することはできない。
また,他に本願を拒絶すべき理由を発見しない。
よって,結論のとおり審決する。

 
審決日 2021-08-31 
出願番号 特願2016-193553(P2016-193553)
審決分類 P 1 8・ 121- WY (G06N)
最終処分 成立  
前審関与審査官 渡部 博樹  
特許庁審判長 田中 秀人
特許庁審判官 須田 勝巳
山澤 宏
発明の名称 演算処理装置、演算処理方法及びプログラム  
代理人 黒岩 創吾  
代理人 阿部 琢磨  

プライバシーポリシー   セキュリティーポリシー   運営会社概要   サービスに関しての問い合わせ