(57)【特許請求の範囲】
【請求項１】
データ前処理方法であって、
第１のメモリの使用可能な記憶容量及び目標演算操作を取得するステップと、
前記目標演算操作及び前記第１のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データを決定するステップと、
前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作の目標出力データを決定するステップと、
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標演算操作の目標出力データをプロセッサに近接して配置された前記第１のメモリに記憶するステップと、を含むことを特徴とするデータ前処理方法。
【請求項２】
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標演算操作の目標出力データを前記第１のメモリと第２のメモリに記憶するステップを含み、
前記第２のメモリは、前記プロセッサから離れて配置され、前記第１のメモリの記憶容量は、前記第２のメモリの記憶容量より小さいことを特徴とする請求項１に記載のデータ前処理方法。
【請求項３】
前記目標演算操作は、１つ以上の演算操作を含み、各前記演算操作には、それぞれサブ目標入力データが対応され、前記目標演算操作及び第１のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データを決定するステップは、更に、
前記第１のメモリの使用可能な記憶容量及び処理されるべき演算の各演算操作の融合属性に基づいて、融合可能な演算操作の数を決定し、融合数閾値を得ることと、
前記融合数閾値より大きくない選択された数の前記融合可能な演算操作の組み合わせを、前記目標演算操作とすることと、
前記選択された数の各融合可能な演算操作に対応するサブ目標入力データを、前記目標演算操作に対応する目標入力データとすることと、を含むことを特徴とする請求項１に記載のデータ前処理方法。
【請求項４】
前記処理されるべき演算は、複数の演算層を含むニューラルネットワーク演算であり、各前記演算層それぞれは、１つの前記演算操作を表し、前記データ前処理方法は、更に、
前記ニューラルネットワーク演算の各演算層の間の接続関係に基づいて、各前記演算操作の融合属性を決定するステップを含むことを特徴とする請求項３に記載のデータ前処理方法。
【請求項５】
前記目標演算操作の現在の演算操作によって出力された中間計算結果が前記目標演算操作の他の演算操作の入力データとされる必要がある場合、或いは、前記現在の演算操作によって出力された中間計算結果が他の目標演算操作の入力データとされる必要がある場合、前記現在の演算操作によって出力された中間計算結果を第１のメモリに記憶し、或いは、前記現在の演算操作によって出力された中間計算結果を第１のメモリと第２のメモリとに記憶するステップを更に含むことを特徴とする請求項３に記載のデータ前処理方法。
【請求項６】
前記目標演算操作に対応する入力データは、複数の入力データブロックを含み、各前記目標入力データそれぞれは、１つ以上の前記入力データブロックを含み、前記目標演算操作に対応する目標入力データの数は、１つ以上であることを特徴とする請求項１乃至５の何れか１項に記載のデータ前処理方法。
【請求項７】
前記目標演算操作は、１つ以上のサブ目標演算操作を含み、各前記サブ目標演算操作は、それぞれ１つの前記目標入力データに対応し、前記データ前処理方法は、更に、
各前記サブ目標演算操作の目標入力データのデータ容量及び目標出力データのデータ容量に応じて、各前記サブ目標演算操作に必要とされる目標記憶容量をそれぞれ決定するステップと、
前記第１のメモリの使用可能な記憶容量及び現在のサブ目標演算操作に必要とされる目標記憶容量に基づいて、前記第１のメモリの残り記憶容量を決定するステップと、
前記第１のメモリの残り記憶容量及び前記現在のサブ目標演算操作以外の他のサブ目標演算操作に必要とされる目標記憶容量に応じて、前記サブ目標演算操作の数を決定するステップと、を含むことを特徴とする請求項６に記載のデータ前処理方法。
【請求項８】
前記目標演算操作以降の他の全ての演算操作に前記目標演算操作の目標入力データを使用する必要がない場合、前記目標演算操作を完了させた後、前記目標演算操作に対応する目標入力データの記憶アドレスの一部又は全部を、前記目標演算操作の目標出力データに割り当てるステップを更に含むことを特徴とする請求項１乃至５の何れか１項に記載のデータ前処理方法。
【請求項９】
コンピュータ機器であって、第１のメモリと、第２のメモリと、プロセッサと、を含み、前記第１のメモリは、前記プロセッサに近接して配置され、前記第１のメモリと前記第２のメモリは、データの読み書きを行うことができ、前記第１のメモリ又は第２のメモリには、コンピュータプログラムが記憶されており、前記プロセッサは前記コンピュータプログラムを実行すると、請求項１乃至８の何れか１項に記載の方法のステップを実現することを特徴とするコンピュータ機器。
【請求項１０】
コンピュータ可読記憶媒体であって、プロセッサによって実行されると、請求項１乃至８の何れか１項に記載の方法のステップを実現するコンピュータプログラムが記憶されていることを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、２０１８年８月２８日に出願された「データ前処理方法、装置、コンピュータ機器及び記憶媒体」という名称の中国特許出願第２０１８１０９８７２９３５号を優先権の基礎とし、その全体を参照することで本出願に組み込む。
【０００２】
本出願は、２０１８年８月２８日に出願された「データ前処理方法、装置、コンピュータ機器及び記憶媒体」という名称の中国特許出願第２０１８１０９８７３４３Ｘ号を優先権の基礎とし、その全体を参照することで本出願に組み込む。
【技術分野】
【０００３】
本発明は、コンピュータ技術の分野に関し、特に、データ前処理方法、装置、コンピュータ機器及び記憶媒体に関する。
【背景技術】
【０００４】
データ量の爆発的な増加に伴い、機械学習などの人工知能アルゴリズムがますます応用されている。機械は大量のデータを分析することによって学習するため、機械学習などのビッグデータの演算は、メモリのアクセス量などに対する要求が急激に高まっている。
【０００５】
メモリのアクセス量などの要求を満たすために、現在、多値メモリアーキテクチャ、即ち、キャッシュメモリ、メインメモリ、及び外部メモリを用いるアーキテクチャが使用されている。キャッシュメモリ（Ｃａｃｈｅ）、メインメモリ、及び外部メモリは、アクセス速度が順次遅くなり、記憶容量が順次大きくなる。しかしながら、コンピュータ機器のＩ／Ｏの帯域幅は、超大量データの要求を満たすことができないため、プロセッサが機械学習演算を実行する過程では、キャッシュメモリとメインメモリとの間に、及び／又はメインメモリと外部メモリとの間に、データの読み取り操作を頻繁に行う必要がある。例えば、プロセッサが演算を実行する過程では、プロセッサは、まず、外部メモリから入力データを読み取り、演算が終了した後、演算結果を外部メモリに記憶し、その後、また外部メモリから次の演算に必要とされる入力データを読み取り続ける必要がある。Ｉ／Ｏ帯域幅の制限のため、１つの演算過程では、少なくとも２回のＩ／Ｏ読み書き操作に関与し、頻繁なＩ／Ｏ読み書き操作は長い時間がかかり、その結果、プロセッサの処理効率が低くなる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
そこで、上記の技術的な問題点に対して、演算中のＩ／Ｏ読み書きの操作回数を減らし、プロセッサの処理効率を向上させることができるデータ前処理方法、装置、コンピュータ機器及び記憶媒体を提供する必要がある。
【課題を解決するための手段】
【０００７】
データ前処理方法であって、
第１のメモリの使用可能な記憶容量及び目標演算操作を取得するステップと、
目標演算操作及び第１のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データ、即ち、前記目標演算操作に対応する全入力データの一部又は全部である目標入力データを決定するステップと、
前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作の目標出力データを決定するステップと、
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標演算操作の目標出力データをプロセッサに近接して配置された前記第１のメモリに記憶するステップと、を含むデータ前処理方法である。
【０００８】
データ前処理装置であって、
第１のメモリの使用可能な記憶容量及び目標演算操作を取得するように構成される取得モジュールと、
前記目標演算操作及び前記第１のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データを決定するように構成される入力決定モジュールと、
前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作の目標出力データを決定するように構成される出力決定モジュールと、
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標演算操作の目標出力データをプロセッサに近接して配置された前記第１のメモリに記憶するように構成される記憶割当モジュールと、を含むデータ前処理装置である。
【０００９】
コンピュータ機器であって、第１のメモリと、第２のメモリと、プロセッサと、を含み、前記第１のメモリは、前記プロセッサに近接して配置され、前記第１のメモリと前記第２のメモリは、データの読み書きを行うことができ、前記第２のメモリには、コンピュータプログラムが記憶されており、前記プロセッサは前記コンピュータプログラムを実行すると、上記の方法のステップが実現される、ことを特徴とするコンピュータ機器である。
【００１０】
プロセッサによって実行されると、上記の方法のステップが実現されるコンピュータプログラムが記憶されているコンピュータ可読記憶媒体である。
【００１１】
上記のデータ前処理方法、装置、コンピュータ機器及び記憶媒体によれば、目標演算操作の目標出力データがそれ以降の他の演算操作の入力データである場合、目標演算操作に対応する目標出力データをプロセッサに近接した第１のメモリに記憶することができるため、目標出力データの読み取りの回数を減らすことによって、演算中のＩ／Ｏ読み書き操作がかかる時間を減らし、プロセッサの速度及び効率を向上させることができる。
【００１２】
データ前処理方法であって、
メインメモリの使用可能な記憶容量、スレーブメモリの使用可能な記憶容量、及び目標演算操作を取得するステップと、
前記メインメモリの使用可能な記憶容量、前記スレーブメモリの使用可能な記憶容量、及び前記目標演算操作に基づいて、前記目標演算操作に対応する目標入力データを決定するステップと、
前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作に対応する目標出力データを決定するステップと、
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標出力データを前記メインメモリに対応して記憶するステップと、を含むデータ前処理方法である。
【００１３】
一実施例において、前記メインメモリの使用可能な記憶容量、前記スレーブメモリの使用可能な記憶容量、及び前記目標演算操作に基づいて、前記目標演算操作に対応する目標入力データを決定するステップは、更に、
前記メインメモリの使用可能な記憶容量と各前記スレーブメモリの使用可能な記憶容量とを比較し、最も小さい使用可能な記憶容量を第１のメモリの使用可能な記憶容量とすることと、
前記第１のメモリの使用可能な記憶容量及び目標演算操作に基づいて、目標演算操作に対応する目標入力データを決定することと、を含む。
【００１４】
一実施例において、前記目標演算操作は、１つ以上の演算操作を含み、各前記演算操作には、それぞれサブ目標入力データが対応され、前記目標演算操作及び第１のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データを決定するステップは、更に、
前記第１のメモリの使用可能な記憶容量及び処理されるべき演算の各演算操作の融合属性に基づいて、融合可能な演算操作の数を決定し、融合数閾値を得ることと、
前記融合数閾値より大きくない選択された数の前記融合可能な演算操作の組み合わせを、前記目標演算操作とすることと、
前記選択された数の各融合可能な演算操作に対応するサブ目標入力データを、前記目標演算操作に対応する目標入力データとすることと、を含む。
【００１５】
一実施例において、前記処理されるべき演算は、複数の演算層を含むニューラルネットワーク演算であり、各前記演算層それぞれは、１つの前記演算操作を表し、前記方法は、更に、
前記ニューラルネットワーク演算の各演算層の間の接続関係に基づいて、各前記演算操作の融合属性を決定するステップを含む。
【００１６】
一実施例において、前記目標演算操作に対応する入力データは、複数の入力データブロックを含み、各前記目標入力データそれぞれは、１つ以上の前記入力データブロックを含み、前記目標演算操作に対応する目標入力データの数は、１つ以上である。
【００１７】
一実施例において、前記目標演算操作は、１つ以上のサブ目標演算操作を含み、各前記サブ目標演算操作は、それぞれ１つの前記目標入力データに対応し、前記方法は、更に、
各前記サブ目標演算操作の目標入力データのデータ容量及び目標出力データのデータ容量に応じて、各前記サブ目標演算操作に必要とされる目標記憶容量をそれぞれ決定するステップと、
前記第１のメモリの使用可能な記憶容量及び現在のサブ目標演算操作に必要とされる目標記憶容量に基づいて、前記第１のメモリの残り記憶容量を決定するステップと、
前記第１のメモリの残り記憶容量及び前記現在のサブ目標演算操作以外の他のサブ目標演算操作に必要とされる目標記憶容量に応じて、前記サブ目標演算操作の数を決定するステップと、を含む。
【００１８】
一実施例において、前記目標入力データは、第１の目標入力データと、第２の目標入力データとを含み、前記方法は、更に、
予め設定された演算割当規則に基づいて、前記メインメモリに対応する第１の目標入力データ、及び各前記スレーブメモリに対応する第２の目標入力データを決定するステップを含む。
【００１９】
一実施例において、前記方法は、
前記メインメモリの使用可能な記憶容量及び前記第１の目標入力データのデータ容量に基づいて、前記第１の目標入力データの、前記メインメモリにおける記憶アドレスを決定するステップと、
各前記スレーブメモリの使用可能な記憶容量及び対応する前記第２の目標入力データのデータ容量に基づいて、各前記第２の目標入力データの、前記スレーブメモリにおける記憶アドレスをそれぞれ決定するステップと、を含む。
【００２０】
一実施例において、前記目標出力データは、第１の目標出力データ及び第２の目標出力データを含み、前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作に対応する目標出力データを決定する前記ステップは、更に、
前記目標演算操作及び前記第１の目標入力データに基づいて、前記第１の目標出力データ、及び前記第１の目標出力データの、前記メインメモリにおける記憶アドレスを決定することと、
前記目標演算操作及び各前記第２の目標入力データに基づいて、各前記第２の目標出力データ、及び各前記第２の目標出力データの、対応する前記スレーブメモリにおける記憶アドレスをそれぞれ決定することと、
各前記第２の目標出力データに基づいて、各前記第２の目標出力データの、前記メインメモリにおける記憶アドレスをそれぞれ決定するステップと、を含む。
【００２１】
一実施例において、前記方法は、更に、
前記スレーブ処理回路で実行された他の目標演算操作に前記第２の目標出力データを使用する必要がある場合、前記第２の目標出力データを前記スレーブ処理回路に対応するスレーブメモリに記憶するステップ、を含む。
【００２２】
一実施例において、前記方法は、更に、
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標出力データを前記メインメモリ及び前記第２のメモリに対応して記憶するステップ、を含む。
【００２３】
データ前処理装置であって、
メインメモリの使用可能な記憶容量、スレーブメモリの使用可能な記憶容量、及び目標演算操作を取得するように構成される取得モジュールと、
前記メインメモリの使用可能な記憶容量、前記スレーブメモリの使用可能な記憶容量、及び前記目標演算操作に基づいて、前記目標演算操作に対応する目標入力データを決定するように構成される入力決定モジュールと、
前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作に対応する目標出力データを決定するように構成される出力決定モジュールと、
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標出力データを前記メインメモリに対応して記憶するように構成される記憶割当モジュールと、を含む。
【００２４】
一実施例において、前記データ前処理装置は、更に、前記メインメモリの使用可能な記憶容量と各前記スレーブメモリの使用可能な記憶容量とを比較し、最も小さい使用可能な記憶容量を第１のメモリの使用可能な記憶容量とするように構成される記憶容量決定モジュールを含む。
入力決定モジュールは、具体的には、前記第１のメモリの使用可能な記憶容量及び目標演算操作に基づいて、目標演算操作に対応する目標入力データを決定するように構成される。
【００２５】
一実施例において、前記目標演算操作は、１つ以上の演算操作を含み、各前記演算操作には、それぞれサブ目標入力データが対応され、前記入力決定モジュールは、更に、
前記第１のメモリの使用可能な記憶容量及び前記処理されるべき演算の各演算操作の融合属性に基づいて、融合可能な演算操作の数を決定し、融合数閾値を得るように構成される融合決定ユニットと、
前記融合数閾値より大きくない選択された数の前記融合可能な演算操作の組み合わせを前記目標演算操作とし、前記選択された数の各融合可能な演算操作に対応するサブ目標入力データを前記目標演算操作に対応する目標入力データとするように構成される入力決定ユニットと、を含む。
【００２６】
一実施例において、前記処理されるべき演算は、複数の演算層を含むニューラルネットワーク演算であり、各前記演算層それぞれは、１つの前記演算操作を表し、前記融合決定ユニットは、更に、前記ニューラルネットワーク演算の各演算層の間の接続関係に基づいて、各前記演算操作の融合属性を決定するように構成される。
【００２７】
一実施例において、前記目標演算操作は、１つ以上のサブ目標演算操作を含み、各前記サブ目標演算操作は、それぞれ１つの前記目標入力データに対応し、前記目標演算操作に対応する全入力データは、複数の入力データブロックを含み、各前記目標入力データそれぞれは、１つ以上の前記入力データブロックを含み、前記目標演算操作に対応する目標入力データの数は、１つ以上であり、前記入力決定モジュールは、更に、
各前記サブ目標演算操作の目標入力データのデータ容量及び目標出力データのデータ容量に応じて、各前記サブ目標演算操作に必要とされる目標記憶容量をそれぞれ決定するステップと、
前記第１のメモリの使用可能な記憶容量及び現在のサブ目標演算操作に必要とされる目標記憶容量に基づいて、前記第１のメモリの残り記憶容量を決定するステップと、
前記第１のメモリの残り記憶容量及び前記現在のサブ目標演算操作以外の他のサブ目標演算操作に必要とされる目標記憶容量に応じて、前記サブ目標演算操作の数を決定するステップと、を含む。
【００２８】
一実施例において、前記目標入力データは、第１の目標入力データと、第２の目標入力データとを含み、
前記入力決定モジュールは、更に、予め設定された演算割当規則に基づいて、前記メインメモリに対応する第１の目標入力データ及び各前記スレーブメモリに対応する第２の目標入力データを決定するように構成され、
前記記憶割当モジュールは、更に、前記メインメモリの使用可能な記憶容量及び前記第１の目標入力データのデータ容量に応じて、前記第１の目標入力データの前記メインメモリにおける記憶アドレスを決定し、それぞれ各前記スレーブメモリの使用可能な記憶容量及び対応する前記第２の目標入力データのデータ容量に基づいて、各前記第２の目標入力データの前記スレーブメモリにおける記憶アドレスを決定するステップと、を含む。
【００２９】
一実施例において、前記目標出力データは、第１の目標出力データと第２の目標出力データを含み、前記出力決定モジュールは、更に、
前記目標演算操作及び前記第１の目標入力データに基づいて、前記第１の目標出力データ及び前記第１の目標出力データの前記メインメモリにおける記憶アドレスを決定することと、
前記目標演算操作及び各前記第２の目標入力データに基づいて、各前記第２の目標出力データ及び各前記第２の目標出力データの対応する前記スレーブメモリにおける記憶アドレスをそれぞれ決定することと、
各前記第２の目標出力データに基づいて、各前記第２の目標出力データの前記メインメモリにおける記憶アドレスをそれぞれ決定するステップと、を含む。
【００３０】
一実施例において、前記記憶割当モジュールは、更に、前記スレーブ処理回路で実行された他の目標演算操作に前記第２の目標出力データを使用する必要がある場合、前記第２の目標出力データを、前記スレーブ処理回路に対応するスレーブメモリに記憶するように構成される。
【００３１】
コンピュータ機器であって、
コントローラユニットと演算ユニットを含み、前記コントローラユニットが演算ユニットに接続され、前記演算ユニットが１つのメイン処理回路及び複数のスレーブ処理回路を含むプロセッサと、
前記メインプロセッサに近接して配置されたメインメモリと、複数の前記スレーブ処理回路に対応して配置された複数のスレーブメモリと、を含み、各前記スレーブプロセッサは、対応する前記スレーブ処理回路にそれぞれ近接して配置される複数の第１のメモリと、
第２のメモリと、を含み、前記第１のメモリ及び前記第２のメモリは、データの読み書きを行うことができ、
前記第１のメモリ又は第２のメモリには、前記プロセッサによって実行される際に本発明の実施例における方法のステップを実現するコンピュータプログラムが記憶されている。
【００３２】
プロセッサによって実行される際に本発明の実施例における方法のステップを実現するコンピュータプログラムが記憶されているコンピュータ可読記憶媒体である。
【００３３】
上記のデータ前処理方法、装置、コンピュータ機器及び記憶媒体によれば、当該目標演算操作の目標出力データがそれ以降の他の演算操作の入力データである場合には、目標演算操作に対応する目標出力データをメインメモリに記憶することができるため、メインメモリと第２のメモリとの間のデータのやり取りを減らすことで、目標出力データの読み取りの回数を減らし、それにより、演算中のＩ／Ｏ読み取り操作がかかる時間を減らし、プロセッサの速度及び効率を向上させることができる。また、当該データ前処理方法は、メインメモリとスレーブメモリとの間のデータのやり取りを減らし、演算中のＩ／Ｏ読み取り操作がかかる時間を更に減らし、プロセッサの速度及び効率を向上させることができる。
【図面の簡単な説明】
【００３４】
本稿の添付図面は、本明細書に組み込まれてその一部を構成し、本発明と一致する実施例を示して、本明細書と共に、本発明の原理を説明する。
【図１】一実施例に係るコンピュータ機器を模式的に示す構造図である。
【図２】一実施例に係るコンピュータ機器のプロセッサを模式的に示す構造図である。
【図３】一実施例に係るコンピュータ機器のプロセッサを模式的に示す構造図である。
【図４】一実施例に係るコンピュータ機器のプロセッサを模式的に示す構造図である。
【図５】一実施例に係るデータ前処理方法を模式的に示すフローチャートである。
【図６】一実施例に係る図５において目標入力データを決定するステップを模式的に示すフローチャートである。
【図７】一実施例に係る図５に示されるデータ前処理方法において目標演算操作の数を決定するステップを模式的に示すフローチャートである。
【図８】一実施例に係る処理されるべき演算を模式的に示す図である。
【図９】他の実施例に係る処理されるべき演算を模式的に示す図である。
【図１０】他の実施例に係るデータ前処理方法を模式的に示すフローチャートである。
【図１１】一実施例に係る図１０において目標入力データを決定するステップを模式的に示すフローチャートである。
【図１２】一実施例に係るデータ前処理装置の構造を示すブロック図である。
【図１３】一実施例に係るデータ前処理装置の構造を示すブロック図である。
【図１４】他の実施例に係るデータ前処理装置の構造を示すブロック図である。
【発明を実施するための形態】
【００３５】
本発明の目的、技術案及び利点をより明確にするために、以下、添付図面及び実施例を参照して本発明をより詳細に説明する。なお、本稿で説明される具体的な実施例は、本発明を説明するためのものであり、本発明を限定するものではない。
【００３６】
また、本発明の特許請求の範囲、明細書及び添付図面における用語「第１」、「第２」、「第３」、及び「第４」などは、異なる対象を区別するためのものであり、特定の順序を説明するものではない  。本発明の明細書及び特許請求の範囲で使用される用語「含む」及び「含み」は、説明される特徴、全体、ステップ、操作、要素及び／又は部品の存在を意味するが、１つ又は複数の他の特徴、全体、ステップ、操作、要素、部品及び／又はそれらの組み合わせの存在又は追加を排除しない。
【００３７】
なお、本発明の明細書で使用される用語は、特定の実施例を説明するためのものであり、本発明を限定することを意図しない  。本発明の明細書及び特許請求の範囲で使用されるように、本稿で他の状況が明記されない限り、単数形の「一」、「１つ」及び「当該」は、複数形を含むことを意図する。また、本発明の明細書及び特許請求の範囲で使用される用語「及び／又は」は、挙げられた関連項目のうちの１つ又は複数の任意な組み合わせ及びあらゆる可能な組み合わせを指し、且つ、それらの組み合わせを含む。
【００３８】
本明細書及び特許請求の範囲で使用されるように、用語「…場合」は、文脈に応じて、「…ときに」又は「一度…」又は「…に応じて決定したら」又は「…に応じて検出したら」と解釈されてもよい。同様に、「…決定した場合」又は「［上述した条件又はイベントた］を検出した場合」というフレーズは、文脈に応じて、「一度決定したら」又は「…に応じて決定したら」又は「一度［上述した条件又はイベントた］を検出したら」又は「…に応じて［上述した条件又はイベントた］を検出したら」と解釈されてもよい。
【００３９】
図１に示すように、本発明の一実施例に係るコンピュータ機器は、プロセッサ１００と、第１のメモリ２００と、第２のメモリ３００とを含んでもよい。第１のメモリ２００は、プロセッサ１００の近くに配置されてもよい。プロセッサ１００は、第１のメモリ２００と直接データを交換することができ、即ち、プロセッサ１００は、第１のメモリ２００から入力データを直接読み取って、上記の入力データから得られた出力データを当該第１のメモリ２００に書き込むことができる。当該第１のメモリ２００は、当該第２のメモリ３００と直接データを交換することができ、即ち、当該第１のメモリ２００は、第２のメモリ３００からデータを読み取ったり、当該第２のメモリにデータを書き込んだりすることができる。また、当該第１のメモリ２００のアクセス速度は第２のメモリ３００のアクセス速度より大きく、当該第１のメモリ２００の記憶容量は第２のメモリ３００の記憶容量より小さい。
【００４０】
好ましくは、当該コンピュータ機器は、スマートフォン又はタブレットＰＣなどのモバイル端末、或いは、デスクトップＰＣ、ボード又はクラウドサーバなどの端末であってもよい。もちろん、当該コンピュータ機器は、クラウドサーバとスマートフォンやＰＣなどの端末とによって形成されるコンピュータシステムであってもよい。当該コンピュータ機器は、ロボット、プリンター、スキャナー、ドライブレコーダー、ナビゲーター、カメラ、ビデオカメラ、プロジェクター、時計、モバイルストレージ、ウェアラブル機器、乗り物、家電製品、及び／又は医療機器に適用することができる。乗り物は、飛行機、船及び／又は車両を含んでもよい。家電製品は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、レンジフードを含んでもよい。医療機器は、核磁気共鳴装置、超音波診断装置（Ｂモード）及び／又は心電計などを含んでもよい。
【００４１】
好ましくは、当該第１のメモリ２００は、内蔵メモリであり、当該第２のメモリ３００は、ハードディスクなどの外部メモリであってもよい。例えば、当該第１のメモリ２００は、ＲＡＭ（Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ランダムアクセス第１のメモリ２００）などであり、第２のメモリ３００は、ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ、データ倍速同期動的ランダムアクセス第１のメモリ２００）などであってもよい。好ましくは、当該第１のメモリ２００は、当該プロセッサ１００と統合されてもよく、即ち、当該第１のメモリ２００は、例えば、キャッシュ（Ｃａｃｈｅ）であるオンチップメモリであり、当該第２のメモリ３００は、例えば、ＲＡＭなどの内蔵メモリであるオフチップメモリであってもよい。
【００４２】
好ましくは、第２のメモリ３００は、特定の演算を実行するためにコンピュータ機器に必要とされるデータやコンピュータプログラムなどを記憶するように構成されてもよい。また、当該データは、例えば、ニューラルネットワークデータなどの機械学習データであってもよい。第１のメモリ２００の記憶容量はより小さいので、プロセッサ１００は、特定の演算を実行しようとする場合、第２のメモリ３００に記憶された特定の演算を完成するのに必要なデータを第１のメモリ２００に書き込んでもよい。それにより、プロセッサ１００は、特定の演算に必要とされる入力データを第１のメモリ２００から読み取って演算を行い、演算結果を第１のメモリ２００に書き込むことができる。
【００４３】
一実施例において、図２に示すように、プロセッサ１００は、コントローラユニット１１０と演算ユニット１２０とを含み、コントローラユニット１１０は演算ユニット１２０に接続され、当該演算ユニット１２０は、１つのメイン処理回路１２１及び複数のスレーブ処理回路１２２を含んでもよく、当該メイン処理回路１２１とスレーブ処理回路１２２とによって、メインスレーブ構造が形成される。これに対応して、第１のメモリ２００の数は複数であってもよく、複数の第１のメモリ２００によってメインスレーブ構造の記憶システムが形成できる。例えば、複数の第１のメモリ２００は、１つのメインメモリと複数のスレーブメモリとを含み、当該メインメモリはメイン処理回路に近接して配置され、当該スレーブメモリはスレーブ処理回路に近接して配置されてもよい。好ましくは、当該メインメモリは、メイン処理回路のオンチップメモリであり、当該スレーブメモリは、スレーブ処理回路のオンチップメモリであってもよい。また、当該メインメモリの記憶容量は、各スレーブメモリの記憶容量より小さい。更に、各スレーブプロセッサには、１つ以上のスレーブメモリが対応して配置されてもよく、本明細書では特に限定されない。
【００４４】
好ましくは、上記のコントローラユニット１１０は、データ及び計算命令を取得するように構成される。当該データは、具体的には、機械学習データを含んでもよい。好ましくは、当該機械学習データは、ニューラルネットワークデータであってもよい。コントローラユニット１１０は、更に、取得された計算命令を解析して演算命令を得て、複数の演算命令及びデータをメイン処理回路に送信するように構成される。メイン処理回路１２１は、データ及びメイン処理回路１２１と複数のスレーブ処理回路１２２との間で伝送されたデータ及び演算命令に対して事前処理を実行するように構成される。複数のスレーブ処理回路１２２は、メイン処理回路１２１から伝送されたデータ及び演算命令に応じて中間演算を並列に実行して複数の中間結果を得て、複数の中間結果をメイン処理回路１２１に伝送するように構成される。メイン処理回路１２１は、更に、複数の中間結果に対して後続処理を実行して計算命令の計算結果を得るように構成される。当該メイン処理回路１２１及び各スレーブ処理回路１２２両方には、第１のメモリが統合されており、即ち、複数の第１のメモリはメイン処理回路及びスレーブ処理回路のオンチップメモリであり、第２のメモリはプロセッサのオフチップメモリであってもよい。
【００４５】
好ましくは、当該コントローラユニット１１０は、機械学習データに関連する計算命令を記憶するように構成される命令キャッシュユニット１１１と、計算命令を解析して複数の演算命令を得るように構成される命令処理ユニット１１２と、キューの順序で実行されるべき複数の演算命令又は計算命令を含む命令キューを記憶するように構成される記憶キューユニット１１４と、を含んでもよい。好ましくは、コントローラユニット１１０は、複数の演算命令がある場合には、第１の演算命令と第１の演算命令の前の第０の演算命令との間に関連関係があるかどうかを判定し、第１の演算命令と第０の演算命令との間に関連関係があれば、第１の演算命令を命令記憶ユニットにキャッシュし、第０の演算命令の実行が終了した後、第１の演算命令を命令記憶ユニットから抽出して演算ユニットに伝送するように構成される依存関係処理ユニット１１３を更に含んでもよい。具体的には、依存関係処理ユニット１１３は、第１の演算命令に応じて第１の演算命令に必要とされるデータ（例えば、行列）の第１の記憶アドレス区間を抽出し、第０の演算命令に応じて第０の演算命令に必要とされる行列の第０の記憶アドレス区間を抽出する場合に、第１の記憶アドレス区間と第０の記憶アドレス区間との間に重なる領域があれば、第１の演算命令と第０の演算命令との間に関連関係があると判定し、第１の記憶アドレス区間と第０の記憶アドレス区間との間に重なる領域がなければ、第１の演算命令と第０の演算命令との間に関連関係がないと判定する。
【００４６】
一実施例において、図３に示すように、演算ユニット１２０は、分岐処理回路１２３を更に含んでもよく、メイン処理回路１２１は分岐処理回路１２３に接続され、分岐処理回路１２３は複数のスレーブ処理回路１２２に接続され、分岐処理回路１２３は、メイン処理回路１２１とスレーブ処理回路１２２との間のデータ又は命令の転送を実行するように構成される。本実施例において、メイン処理回路１２１は、具体的には、１つの入力ニューロンを複数のデータブロックに割り当て、複数のデータブロックのうちの少なくとも１つのデータブロック、重み値、及び複数の演算命令のうちの少なくとも１つの演算命令を分岐処理回路に送信するように構成され、分岐処理回路１２３は、メイン処理回路１２１と複数のスレーブ処理回路１２２との間のデータブロック、重み値、及び演算命令を転送するように構成され、複数のスレーブ処理回路１２２は、受信されたデータブロック及び重み値に対して当該演算命令に応じて演算を実行して中間結果を得て、中間結果を分岐処理回路１２３に伝送するように構成され、メイン処理回路１２１は、更に、分岐処理回路によって送信された中間結果に対して後続処理を行って計算命令の結果を得て、当該計算命令の結果を前記コントローラユニットに送信するように構成される。好ましくは、各分岐処理回路１２３にも第１のメモリが統合されている。
【００４７】
他の実施例において、図４に示すように、演算ユニット１２０は、１つのメイン処理回路１２１と複数のスレーブ処理回路１２２を含んでもよい。複数のスレーブ処理回路はアレイ状に配列され、各スレーブ処理回路は、隣接する他のスレーブ処理回路に接続され、メイン処理回路は、複数のスレーブ処理回路のうちのｋ個のスレーブ処理回路に接続され、ｋ個のスレーブ処理回路は、１行目にあるｎ個のスレーブ処理回路、ｍ行目にあるｎ個のスレーブ処理回路、及び１列目にあるｍ個のスレーブ処理回路である。  なお、図１Ｃに示されるＫ個のスレーブ処理回路は、１行目にあるｎ個のスレーブ処理回路、ｍ行目にあるｎ個のスレーブ処理回路、及び１列目にあるｍ個のスレーブ処理回路のみを含み、即ち、当該ｋ個のスレーブ処理回路は、複数のスレーブ処理回路のうちの、メイン処理回路に直接接続されたスレーブ処理回路である。Ｋ個のスレーブ処理回路は、メイン処理回路と複数のスレーブ処理回路との間のデータ及び命令を転送するように構成される。
【００４８】
本発明によって提供されたプロセッサにより、演算ユニットは、シングルマスタ・マルチスレーブの構造と配置され、フォワード演算の計算命令に対しては、フォワード演算の計算命令に応じてデータが分割され、複数のスレーブ処理回路により計算量の多い部分に対して並列演算を行うことができるため、演算速度が向上し、演算時間が短縮され、消費電力が低減される。
【００４９】
好ましくは、上記の機械学習計算は、具体的には、人工ニューラルネットワーク演算を含み、上記の入力データは、具体的には、入力ニューロンデータ及び重み値データを含んでもよい。上記の計算結果は、具体的には、人工ニューラルネットワーク演算の結果、即ち、出力ニューロンデータであってもよい。
【００５０】
ニューラルネットワークにおける演算は、ニューラルネットワークにおける１層の演算であってもよく、多層ニューラルネットワークの実現プロセスは、次の通りである。順演算において、前の層の人工ニューラルネットワークの実行が完了した後、次の層の演算命令は、演算ユニットで算出された出力ニューロンを次の層の入力ニューロンとして演算し（或いは、当該出力ニューロンに対していくつかの操作を実行して、また次の層の入力ニューロンとし）、それとともに、重み値も次の層の重み値に置き換える。逆演算において、前の層の人工ニューラルネットワークの逆演算が完了した後、次の演算命令は、演算ユニットで算出された入力ニューロンの勾配を次の層の出力ニューロンの勾配として演算し（或いは、当該入力ニューロンの勾配に対していくつかの操作を実行して、また次の層の出力ニューロンの勾配とし）、それとともに、重み値を次の層の重み値に置き換える。
【００５１】
上記の機械学習計算は、サポートベクターマシン演算、ｋ最近傍（ｋ−ｎｎ）演算、ｋ平均（ｋ−ｍｅａｎｓ）演算、主成分分析演算などを更に含んでもよい。以下、説明の便宜上、人工ニューラルネットワーク演算を例として機械学習計算の具体的なスキームを説明する。
【００５２】
人工ニューラルネットワーク演算については、人工ニューラルネットワーク演算が多層演算を備える場合、多層演算の入力ニューロン及び出力ニューロンは、ニューラルネットワーク全体における入力層内のニューロン及び出力層内のニューロンを指すことではなく、ネットワークにおける任意の２つの隣接層に対して、ネットワークの順演算における下層にあるニューロンは入力ニューロンであり、ネットワークの順演算における上層にあるニューロンは出力ニューロンである。畳み込みニューラルネットワークを例として、畳み込みニューラルネットワークはＬ層を備え、Ｋ＝１,２,...,Ｌ−１であるとすると、第Ｋ層及び第Ｋ＋１層について、第Ｋ層を入力層と呼び、その中のニューロンは前記入力ニューロンであり、第Ｋ＋１層を出力層と呼び、その中のニューロンは前記出力ニューロンである。つまり、最上層を除いて、各層は入力層とされることができ、次の層は対応する出力層である。
【００５３】
一実施例において、当該第２のメモリは、コンピュータプログラムを記憶するように構成され、当該プロセッサによって上記のコンピュータプログラムが実行されると、本発明の実施例に係るデータ前処理方法が実現され、それにより、処理されるべき演算の実行中の様々なデータの記憶域スペース割当規則が得られる。具体的には、上記のコンピュータ機器は、以下のデータ前処理方法を実行し、処理されるべき演算（例えば、ニューラルネットワーク演算など）に対して前処理を実行し、当該処理されるべき演算の入力データ、出力データ、及び中間計算結果などのデータの第１のメモリにおける記憶域スペース割当規則を得るように構成されてもよい。このように、プロセッサによって当該処理されるべき演算が実行されると、当該処理されるべき演算に係るデータ（入力データ、出力データ、中間計算結果など）は、上記の記憶域スペース割当規則に基づいて第１のメモリに記憶されることができる。このように、演算過程における記憶資源を事前に割り当てることで、第１のメモリの記憶域スペースを合理的に利用できるだけでなく、処理の演算速度及び精度を向上させることもできる。当該記憶域スペース割当規則は、処理されるべき演算の実行中の入力データの記憶アドレス、出力データの記憶アドレス、中間計算結果の記憶アドレス、および各記憶域スペースにデータを記憶するための更新規則を含んでもよい。具体的には、以下の説明を参照する。
【００５４】
本発明の実施例において、演算過程におけるデータの読み書き操作を減らす（即ち、Ｉ／Ｏ操作の回数を減らす）ために、上記のコンピュータ機器に適用できるデータ前処理方法が提供される。具体的には、図５に示すように、当該データ前処理方法は以下のステップを含んでもよい。
【００５５】
Ｓ１００：第１のメモリの使用可能な記憶容量及び目標演算操作を取得する。
【００５６】
具体的には、プロセッサは、当該第１のメモリの構成情報（例えば、当該第１のメモリのモデルなどの情報）に応じて、当該第１のメモリの総記憶容量を取得してもよい。また、プロセッサは、当該第１のメモリの総記憶容量及び当該第１のメモリの占められた記憶容量に応じて、当該第１のメモリの使用可能な記憶容量を取得してもよい。
【００５７】
本発明の実施例において、プロセッサは、処理されるべき演算を取得して、当該処理されるべき演算及び第１のメモリの使用可能な記憶容量に応じて目標演算操作を決定してもよい。当該処理されるべき演算は、１つ又は複数の演算操作を含んでもよく、当該処理されるべき演算は、ニューラルネットワークなどの演算であってもよい。例えば、当該処理されるべき演算に含まれた演算操作は、加算、減算、乗算、除算、畳み込み、プーリング（Ｐｏｏｌｉｎｇ）、及び活性化（例えば、Ｒｅｌｕ）などの演算であってもよい。当該目標演算操作は、処理されるべき演算のうちの１つ又は複数の演算操作の組み合わせであってもよい。
【００５８】
Ｓ２００：目標演算操作及び第１のメモリの使用可能な記憶容量に応じて、目標演算操作に対応する目標入力データを決定し、目標入力データは、目標演算操作に対応する全入力データの一部又は全部である。
【００５９】
具体的には、プロセッサは、当該目標演算操作に基づいて、当該目標演算操作を完成させるのに必要な全入力データ及び当該全入力データのデータ容量（即ち、当該全入力データに必要とされる記憶域スペースの大きさ）を決定してもよい。更に、プロセッサは、第１のメモリの使用可能な記憶容量及び当該目標演算操作の全入力データのデータ容量に応じて、当該目標演算操作に対応する目標入力データ及びそのデータ容量を決定してもよく、当該目標入力データのデータ容量は、第１のメモリの記憶容量より大きくない。当該目標入力データは、当該目標演算操作に対応する全入力データの一部又は全部であり、即ち、当該目標入力データのデータ容量は、当該目標演算操作に対応する全入力データのデータ容量より大きくない。目標入力データのデータ容量が当該目標演算操作の全入力データのデータ容量より小さい場合、当該目標演算操作の全入力データの一部のみを第１のメモリ上にロードすることで、第１のメモリ上には、当該目標演算操作の目標出力データや中間計算結果などのデータを記憶するための一定の記憶域スペースを確保することができる。目標入力データのデータ容量が当該目標演算操作の全入力データのデータ容量と等しい場合、記憶域スペースの再利用により、当該目標演算操作の目標出力データや中間計算結果などのデータを記憶することが実現できる。
【００６０】
Ｓ３００：目標演算操作と目標入力データに応じて、目標演算操作の目標出力データを決定する。
具体的には、処理されるべき演算の計算量は静的な解析が可能であるため、プロセッサは、当該目標演算操作の目標入力データ及び当該目標演算操作に基づいて、当該目標演算操作の目標出力データや当該目標出力データのデータ容量などの情報を取得することができ、即ち、プロセッサは、当該目標演算操作の目標出力データに必要とされる記憶域スペースを取得することができる。
【００６１】
Ｓ４００：目標演算操作の目標出力データが当該目標演算操作以降の他の演算操作の入力データである場合、当該目標出力データの読み取りの回数を減らすように、目標出力データを第１のメモリに記憶する。
【００６２】
具体的には、当該目標演算操作の目標出力データが当該目標演算操作以降の他の演算操作の入力データである場合には、即ち、当該目標演算操作以降に当該目標出力データを使用し続ける必要がある場合には、当該目標出力データを前記第１のメモリ上に記憶することで、目標出力データの読み取りの回数を減らし、プロセッサの速度及び効率を向上させることができる。
【００６３】
従来技術では、プロセッサは、当該目標演算操作を実行して上記の目標出力データを取得した後、当該目標出力データを第１のメモリから第２のメモリに転送することで、第１のメモリの目標出力データによって占められた記憶域スペースを解放する。当該目標演算操作以降の演算操作は当該目標出力データを使用し続ける必要がある場合、プロセッサは、当該目標出力データを第２のメモリから第１のメモリに再度転送する必要がある。この方法において、目標出力データのＩ  ／Ｏ読み取り操作が複数回実行される必要があるため、演算時間が長く、プロセッサの効率及び速度が低い結果が生じやすい。従来技術と比較して、本発明の実施例に係るデータ前処理方法によれば、目標出力データの読み取りの回数を減らすことで、演算過程におけるＩ／Ｏ読み取り操作がかかる時間を減らし、プロセッサの速度及び効率を向上させることができる。
【００６４】
例えば、図８に示すように、プロセッサは、目標演算操作ＯＰ１を取得してもよく、その目標演算操作ＯＰ１の全入力データは、入力データＸであり、入力データＸは、サブ入力データＸ１１、Ｘ２１、Ｘ１２及びＸ２２を含み、サブ入力データＸ１１とＸ１２によって入力データＸ１が構成され、サブ入力データＸ２１とＸ２２によって入力データＸ２が構成され、当該入力データＸ１とＸ２は、ベクター又は行列データなどであってもよい。プロセッサは、目標演算操作ＯＰ１及び第１のメモリの使用可能な記憶容量に基づいて、サブ入力データＸ１１とＸ２１を当該目標演算操作ＯＰ１の目標入力データとしてもよい。また、当該プロセッサは、目標演算操作ＯＰ１及び目標入力データＸ１１とＸ２１に基づいて、目標出力データＹ１及び目標出力データＹ１のデータ容量を決定してもよい。
【００６５】
更に、プロセッサは、予め設定された演算規則に基づいて、当該標出力データＹ１が目標演算操作ＯＰ１以降の他の演算操作によって使用される必要があるかどうかを判断し、当該目標出力データＹ１が目標演算操作ＯＰ１以降の他の演算操作によって使用される必要がある場合、例えば、当該目標出力データＹ１が目標演算操作ＯＰ１以降の演算操作ＯＰ２の入力データである場合、当該目標出力データＹ１を第１のメモリに一時的に記憶してもよい。このように、演算操作ＯＰ２が次の目標演算操作である場合には、プロセッサは、次の演算操作ＯＰ２を実行する前に、当該演算操作ＯＰ２に必要とされる入力データＹ３を予め設定された規則に基づいて第２のメモリから第１のメモリに移動すればよく、当該目標出力データＹ１の移動ステップを再度実行する必要がない。更に、当該目標出力データＹ１は、目標演算操作ＯＰ１以降の演算操作ＯＰ２の入力データであり、それと同時に、当該目標出力データＹ１は、演算操作ＯＰ３の入力データである。この場合、当該目標出力データＹ１を演算操作ＯＰ２、ＯＰ３が完了するまで第１のメモリに記憶し、その後、第１のメモリの目標出力データＹ１によって占められたた記憶域スペースを解放するように、当該目標出力データＹ１を第１のメモリから削除してもよい。
【００６６】
本発明の一実施例に係るデータ前処理方法によれば、演算操作ＯＰ１が終了した後に目標出力データＹ１を第１のメモリから第２のメモリに移動する過程、及び演算操作ＯＰ２を行う際に目標出力データＹ１を第２のメモリから第１のメモリに移動する過程を削減したので、目標出力データの読み取りの回数を減らすことで、演算過程におけるＩ／Ｏ読み取り操作がかかる時間を減らし、プロセッサの速度及び効率を向上させることができる。
【００６７】
好ましくは、上記の処理されるべき演算は、複数の演算層を含むニューラルネットワーク演算であり、図８に示すように、上記の演算操作ＯＰ１とＯＰ２は、ニューラルネットワーク演算の演算層であってもよい。上記の入力データＸは、入力ニューロンデータや重み値データなどを含み、入力データＸ１とＸ２を含んでもよい。好ましくは、上記の入力データＸ１とＸ２は、それぞれ異なる演算層に属していてもよい。また、プロセッサは、当該目標演算層ＯＰ１及び第１のメモリの使用可能な記憶容量に基づいて、サブ入力データＸ１１とＸ２１を当該目標演算層ＯＰ１の目標入力データとしてもよい。更に、当該プロセッサは、目標演算層ＯＰ１及び目標入力データＸ１１とＸ２１に応じて、演算層ＯＰ１の出力データの一部である目標出力データＹ１及び当該目標出力データＹ１のデータ容量を決定し、当該出力データは、演算層ＯＰ１の出力ニューロンデータや重み値などを含んでもよい。
【００６８】
他の例として、図９に示すように、当該処理されるべき演算は、ニューラルネットワーク演算などの演算であり、畳み込み層、プーリング層、及び活性化層を含み、上記の各演算層の実行順序は、畳み込み演算操作−プーリング演算操作−活性化演算操作である。つまり、畳み込み演算操作の出力データは、プーリング演算操作の入力データであり、プーリング演算操作の出力データは、活性化演算操作の入力データである。各演算層の入力データは、演算層に対応する入力ニューロンデータや重み値などのデータを含んでもよい。
【００６９】
現在の目標演算操作がプーリング演算操作である場合、プロセッサは、第１のメモリの使用可能な記憶容量及び目標演算操作に基づいて、当該プーリング演算操作に対応する目標入力データを取得して、Ｃ１−Ｃ２区間内のデータとしてもよい（Ｃ１−Ｃ２区間内のデータは、畳み込み演算の出力データを表し、畳み込み演算操作に対応する出力ニューロンデータ及び重み値等を含んでもよい）。当該目標入力データＣ１−Ｃ２に対応する目標出力データは、Ｂ１−Ｂ２区間内のデータである（ここで、Ｂ１−Ｂ２区間内の目標出力データは、プーリング演算操作に対応する出力ニューロンデータ及び重み値等を含んでもよい）。また、当該プーリング演算操作の目標出力データＢ１−Ｂ２が活性化演算操作の入力データであるため、当該プーリング演算操作の目標出力データＢ１−Ｂ２を第１のメモリに記憶してもよい。このように、プーリング演算操作が完了した後、目標出力データＢ１−Ｂ２を第１のメモリから第２のメモリに移動して、第１のメモリ上の記憶域スペースを解放する必要がなくなる。そして、活性化演算操作を実行する前に、当該目標出力データＢ１−Ｂ２を第２のメモリから第１のメモリに再度移動する必要がなくなる。
【００７０】
従来技術では、プロセッサは、目標出力データＢ１−Ｂ２を取得した後、まず、当該目標出力データＢ１−Ｂ２を第１のメモリから第２のメモリに移動することで、第１のメモリの記憶域スペースを解放する。活性化演算操作の入力データはプーリング演算操作の出力データに依存するため、プロセッサは、活性化演算操作を実行しようとする前に、当該プーリング演算操作に対応する目標出力データＢ１−Ｂ２であるデータブロックを第２のメモリから第１のメモリに再度移動する。Ｉ／Ｏ帯域幅が限られた場合、このような頻繁なデータの読み取り操作はプロセッサの処理効率に影響を与える。このため、先行技術と比較して、本発明の実施例に係るデータ前処理方法は、目標出力データの読み取りの回数を減らす（即ち、目標出力データのロード及び記憶の操作を減らす）ことで、Ｉ／Ｏ読み取り操作がかかる時間を減少し、プロセッサの速度及び効率を向上させることができる。
【００７１】
一実施例において、前記方法は、更に、以下のステップを含む。
【００７２】
目標演算操作の目標出力データは目標演算操作以降の他の演算操作の入力データである（即ち、当該目標演算操作の出力データは当該処理されるべき演算の中間結果データである）場合には、当該目標演算操作の目標出力データを第１のメモリ又は第１のメモリと第２のメモリ両方に記憶する。具体的には、目標演算操作の目標出力データは目標演算操作以降の他の演算操作の入力データである場合には、当該目標出力データを第１のメモリに記憶することで、目標出力データの繰り返しロード操作を減らす（目標出力データのロード操作を減らす）ことができる。同時に、第１のメモリにおけるデータと第２のメモリにおけるデータとの間の一貫性を保証するように、当該目標出力データを第１のメモリから第２のメモリにコピーしてもよい。好ましくは、当該目標演算操作に対応する目標出力データを第２のメモリに同期に記憶する必要があるかどうかは、具体的な演算要求に応じて決定されてもよい。
【００７３】
当該目標出力データを第２のメモリに同期に記憶する必要がない場合、当該目標出力データを第１のメモリのみに記憶することで、目標出力データのロード及び記憶の操作を同時に減らすことができる。当該目標出力データを第２のメモリに同期に記憶する必要がある場合、目標出力データを第１のメモリと第２のメモリ両方に同期に記憶することで、当該目標出力データのロード操作を減らし、それにより、データの読み取り操作が過剰にＩ／Ｏ帯域幅を占めてプロセッサの処理速度に影響することを避けることができる。
【００７４】
図８に示すように、当該目標出力データＹ１が目標演算操作ＯＰ１以降の他の演算操作によって使用される必要がある場合、例えば、当該標出力データＹ１は目標演算操作ＯＰ１以降の演算操作ＯＰ２の入力データである場合、当該目標出力データＹ１を第１のメモリに一時的に記憶してもよい。このように、演算操作ＯＰ２が次の目標演算操作である場合には、プロセッサは、次の演算操作ＯＰ２を実行する前に、当該演算操作ＯＰ２に必要とされる入力データＹ３を予め設定された規則に基づいて第２のメモリから第１のメモリに移動すればよく、当該目標出力データＹ１の移動ステップを再度実行する必要がない。更に、プロセッサは、第１のメモリにおけるデータと第２のメモリにおけるデータとの間に一貫性があるように、目標出力データＹ１を第１のメモリから第２のメモリにコピーしてもよい。このように、本発明の一実施例に係るデータ前処理方法は、演算操作ＯＰ１の計算が終了した後に目標出力データＹ１を第１のメモリから第２のメモリに移動する過程を削減したので、目標出力データの読み取りの回数を減らすことで、演算過程におけるＩ／Ｏ読み取り操作がかかる時間を減らし、プロセッサの速度及び効率を向上させることができる。
【００７５】
図９に示すように、当該プーリング演算操作の目標出力データＢ１−Ｂ２が活性化演算操作の入力データであるため、当該プーリング演算操作の目標出力データＢ１−Ｂ２を第１のメモリと第２のメモリ両方に同時に記憶してもよい。このように、活性化演算操作を実行する前に、当該目標出力データＢ１−Ｂ２を第２のメモリから第１のメモリに再度移動する必要がなくなる。それとともに、プーリング演算操作が完了した後、目標出力データＢ１−Ｂ２を第１のメモリから第２のメモリにコピーすることで、第１のメモリにおけるデータと第２のメモリにおけるデータとの間の一貫性を保証することができる。先行技術と比較して、本発明の実施例に係るデータ前処理方法は、目標出力データＢ１−Ｂ２を第２のメモリから第１のメモリに再度移動する過程を削減したので、目標出力データの読み取りの回数を減らすことによって、演算過程におけるＩ／Ｏ読み取り操作がかかる時間を減らし、プロセッサの速度及び効率を向上させることができる。
【００７６】
一実施例において、処理されるべき演算の各目標演算操作に必要とされる全入力データのデータ容量が大きいので、プロセッサは、各目標演算操作に係る全入力データを分割し、即ち、第１のメモリの使用可能な記憶容量に基づいて、各目標演算操作に係る全入力データ（入力ニューロンデータ及び重み値等を含み）を複数の入力データブロックに分割し、目標演算操作の計算結果を得るように各入力データブロックに対してそれぞれ目標演算操作を実行してもよい。最後に、各入力データブロックに対応する計算結果を融合することで、当該目標演算操作に対応する出力データを得ることができる。当該入力データブロックは、上記の目標入力データであり、各入力データブロックに対応する出力データは、上記の目標出力データである。好ましくは、上記のステップＳ２００は、具体的には、
【００７７】
プロセッサは、第１のメモリの使用可能な記憶容量及び当該目標演算操作に必要とされる入力データのデータ容量に基づいて、当該目標演算操作に対応する入力データブロックを決定して、当該入力データブロックを当該目標演算操作に対応する目標入力データとすることを含む。具体的には、当該目標演算操作に必要とされる全入力データのデータ容量が第１のメモリの使用可能記憶容量より大きい場合、プロセッサは、第１のメモリの使用可能な記憶容量に基づいて、当該目標演算操作の全入力データの一部である、目標演算操作に対応する入力データブロックを決定してもよい。当該目標演算操作に必要とされる全入力データのデータ容量が第１のメモリの使用可能な記憶容量より大きくない場合、当該目標演算操作の全入力データを１つの入力データブロック、即ち、その目標入力データとしてもよい。
【００７８】
例えば、図８に示すように、プロセッサは、現在の目標演算操作ＯＰ１を取得してもよく、当該目標演算操作ＯＰ１の全入力データは、入力データＸ１およびＸ２を含む全入力データＸである。プロセッサは、当該目標演算操作ＯＰ１及び第１のメモリの使用可能なメモリ容量に基づいて、サブ入力データＸ２１及び入力データのサブ入力データＸ２１を、当該目標演算操作ＯＰ１の目標入力データとしてもよく、当該サブ入力データＸ２１のデータ容量とサブ入力データＸ１１のデータ容量との和は、第１のメモリの使用可能な記憶容量より小さい。もちろん、他の実施例において、当該目標演算操作に対応する全入力データＸのデータ容量が第１のメモリの使用可能な記憶容量より小さい場合、当該目標演算操作に対応する全入力データをすべて第１のメモリにロードしてもよい。
【００７９】
他の例として、図９に示すように、現在の目標演算操作がプーリング演算操作である場合、プロセッサは、第１のメモリの使用可能な記憶容量及び目標演算操作に基づいて、Ｃ１−Ｃ２区間内のデータ（Ｃ１−Ｃ２区間内のデータは、畳み込み演算の出力データを表し）を１つの入力データブロックとし、当該入力データブロックを当該プーリング演算操作に対応する目標入力データとしてもよい。現在の目標演算操作が活性化演算操作である場合、プロセッサは、第１のメモリの使用可能な記憶容量に基づいて、Ｂ１−Ｂ２区間内のデータを活性化演算操作の１つの入力データブロックとし、当該入力データブロックを当該活性化演算操作の目標入力データをとしてもよい。
【００８０】
一実施例において、各目標演算操作に係る全入力データが複数の入力データブロックに分割された場合、各入力データブロックのデータ容量は第１のメモリの記憶容量より小さいため、当該目標演算操作は、処理されるべき演算の複数の演算操作と融合することができ、それにより、第１のメモリの記憶域スペースを最大化させて演算の効率を向上させることができる。好ましくは、上記の目標演算操作は１つ以上の演算操作を含み、即ち、当該目標演算操作は、１つ以上の演算操作の組み合わせである。一般に、当該目標演算操作に含まれる各演算操作は、異なる演算を実現するための異なる演算操作である。この場合、プロセッサは、第１のメモリの使用可能な記憶容量に基づいて各演算操作に対応するサブ目標入力データを決定して、各演算操作に対応するサブ目標入力データに基づいて当該目標演算操作に対応する目標入力データを決定してもよい。具体的には、図６に示すように、上記のステップＳ２００において目標演算操作に対応する入力データブロックを決定するステップは、更に、以下のステップを含む。
【００８１】
Ｓ２１０：第１のメモリの使用可能な記憶容量及び各演算操作の融合属性に応じて、融合可能な演算操作の数を決定し、融合数閾値を得る。各演算操作の融合属性は、各演算操作に係る入力データ及び／又は出力データの間のデータ依存関係などを含んでもよい。
【００８２】
なお、１つ又は複数の演算操作はプロセッサによって一緒に実行されることができる場合、当該１つ又は複数の演算操作は融合されることができ、即ち、融合度が高いと見なしてもよい。１つ又は複数の演算操作はプロセッサによって一緒に実行されることができない場合、当該１つ又は複数の演算操作は融合されることができなく、即ち、融合度が低いと見なしてもよい。各演算操作の間の融合度は、予め設定された演算規則によって決定されてもよく、本明細書では特に限定されない。
【００８３】
Ｓ２２０：融合数閾値より大きくない選択された数の融合可能な１つ以上の演算操作の組み合わせを、１つの目標演算操作とする。
【００８４】
例えば、選択された数は、融合数閾値に等しく、即ち、第１のメモリの記憶容量によって決定された融合可能な複数の演算操作を、１つの目標演算操作に相当する。
【００８５】
Ｓ２３０：選択された数の各演算操作に対応するサブ目標入力データを、当該目標演算操作に対応する目標入力データとする。
【００８６】
例えば、図８に示すように、処理されるべき演算は、２つの演算操作の融合属性に基づいてプロセッサによって一緒に実行されることができる演算操作ＯＰ１及びＯＰ２を含んでもよく、第１のメモリの使用可能な記憶容量は  演算操作ＯＰ１の目標入力データと目標出力データ、及び演算ＯＰ２の目標入力データと目標出力データを収容できる場合、当該目標演算操作によって融合可能な演算操作の数は２つであると見なし、当該演算操作ＯＰ１とＯＰ２を１つの目標演算操作としてもよい。それとともに、演算操作ＯＰ１とＯＰ２とに対応するサブ目標入力データＸ１１、Ｘ２１、及びＹ３を当該目標演算操作の目標入力データとする。
【００８７】
演算操作ＯＰ１とＯＰ２とがお互いに融合できるが、第１のメモリの使用可能な記憶容量は、演算操作ＯＰ１の目標入力データと目標出力データのみを収容でき、演算操作ＯＰ２の目標入力データと目標出力データを完全に収容できない場合、当該目標演算操作によって融合可能な演算操作の数は１つであると見なし、当該演算操作ＯＰ１を１つの目標演算操作としてもよい。それとともに、当該演算操作ＯＰ１に対応するサブ目標入力データＸ１１、Ｘ２１を当該目標演算操作の目標入力データとする。
【００８８】
当然、他の実施例において、当該目標演算操作に含まれる演算操作の数は、２つ以上であってもよい。例えば、当該処理されるべき演算の深さ方向には、演算操作ＯＰ２以降に他の融合可能な演算操作が存在し、且つ、上記の融合可能な演算操作に対応する目標入力データ及び目標出力データのデータ容量は、当該第１のメモリの使用可能な記憶容量を満たすことができる場合、当該目標演算操作に含まれる演算操作の数は、ＯＰ１、ＯＰ２、ＯＰｎ（ｎは、２より大きい正の整数である）であってもよい。ＯＰ１、ＯＰ２、ＯＰｎに対応する目標入力データのデータ容量と目標出力データのデータ容量との和は、当該第１のメモリの使用可能な記憶容量より大きくない。
【００８９】
また、当該処理されるべき演算は、ニューラルネットワークなどの演算であり、当該ニューラルネットワーク演算は、複数の演算層を含み、各演算層は、１つの演算操作を表してもよい。例えば、プロセッサは、ニューラルネットワーク等に対して演算を行う必要がある場合、ニューラルネットワークの各演算層が１つの演算操作とされることができ、ニューラルネットワークの各演算層の接続関係に基づいて、各演算操作の融合属性を決定することができ、即ち、  ニューラルネットワークの各演算層の間の接続関係に基づいて、どの演算層が融合できるか及び融合可能な演算層の数を決定して、１つ以上の融合可能な演算層の組み合わせを１つの目標演算操作とすることができる。このように、ニューラルネットワークの深さ方向に複数の演算層を融合させて１つの目標演算操作とすることにより、演算の回数及びデータの読み取りの回数を減らし、プロセッサの処理効率を更に向上させることができる。
【００９０】
例えば、図９に示すように、当該ニューラルネットワークの各演算層の接続関係に基づいて、ニューラルネットワークの深さ方向に畳み込み演算操作、プーリング演算操作、及び活性化演算操作は、お互いに融合できると決定することができる。この場合、プロセッサは、第１のメモリの使用可能な記憶容量、及び各演算操作の目標入力データ容量等に基づいて、融合数閾値を決定することができる。具体的には、第１のメモリの使用可能な記憶容量は、プーリング演算操作の目標入力データＣ１−Ｃ２及び活性化演算操作の目標入力データＢ１−Ｂ２を収容できる場合、融合数閾値は２つであると決定し、プーリング演算操作と活性化演算操作を、１つの目標演算操作に相当させることができる。この場合、当該目標演算操作の目標入力データは、Ｃ１−Ｃ２区間内にあるデータであってもよい。他の実施例において、当該目標演算操作は、畳み込み演算操作、プーリング演算操作、及び活性化演算操作３つの融合であってもよい。
【００９１】
あるいは、当該活性化演算操作以降に他の演算操作を実行する必要がある場合、当該目標演算操作は、第１のメモリの使用可能な記憶容量に基づいて、より多くの演算操作を融合し続けてもよい。例えば、当該ニューラルネットワークは、Ｎ個の演算層を含み、プロセッサは、第１のメモリの使用可能な記憶容量に基づいて、融合閾値がｎ個（ｎは、１より小さくなくてＮより大きくない）であると決定して、ｎ個の演算層を１つの目標演算操作としてもよい。これは例として説明するためのものだけであり、限定するものではない。
【００９２】
更に、当該目標演算操作が複数の演算操作を含む場合には、当該目標演算操作の実行過程の中間計算結果を第１のメモリに記憶してもよい。具体的には、上記の方法は、以下のステップを更に含む。
【００９３】
当該目標演算操作において、現在の演算操作によって出力された中間演算結果をそれ以降の他の演算操作の入力データとし、或いは、現在の演算操作によって出力された中間演算結果を他の目標演算操作の入力データとする必要がある場合、プロセッサは、現在の演算操作によって出力された中間演算結果を第１のメモリに一時的に記憶してもよい。具体的には、プロセッサは、現在の演算操作によって出力された中間結果のデータ容量に基づいて、第１のメモリにおいて現在の演算操作によって出力された中間結果に記憶アドレスを割り当ててもよい。
【００９４】
現在の演算操作以降の他の演算操作又は他の目標演算操作は、当該現在の演算操作によって出力された中間計算結果を使用する必要がない場合、当該現在の演算操作によって出力された中間結果によって占められた記憶域スペースを割り当て直し、即ち、当該現在の演算操作の中間結果によって占められた記憶アドレスを他のデータに割り当ててもよい。
【００９５】
例えば、図８に示すように、現在の演算操作ＯＰ１によって出力された中間計算結果Ｙ１が次の演算操作ＯＰ２の入力データである場合、プロセッサは、現在の演算操作によって出力された中間結果Ｙ１を一時的に第１のメモリに記憶してもよい。これにより、中間計算結果Ｙ１の読み取りの回数を減らし、プロセッサの処理効率及び処理速度を向上させることができる。当該演算操作ＯＰ２が当該中間計算結果を使用し続ける必要がなく、且つ、目標演算操作以降の他の目標演算操作が当該中間計算結果Ｙ１を再利用する必要がない場合、第１のメモリ上の記憶域スペースの再利用を実現するように、当該中間計算結果Ｙ１によって占められた記憶域スペースを解放して、当該中間計算結果Ｙ１によって占められた記憶アドレスを他のデータに割り当て、例えば、現在の目標演算操作以降の他の目標演算操作の目標出力データを中間計算結果によって占められた記憶域スペースに記憶してもよい。
【００９６】
他の例として、図９に示すように、プーリング演算操作の目標入力データはＣ１−Ｃ２区間内にあるデータであり、当該目標入力データに対応する目標出力データはＢ１−Ｂ２区間内にあるデータである。そして、目標出力データＢ１−Ｂ２は活性化演算操作の目標入力データである場合、プロセッサは、当該中間計算結果Ｂ１−Ｂ２を第１のメモリに一時的に記憶してもよい。これにより、中間計算結果Ｂ１−Ｂ２の読み取りの回数を減らし、プロセッサの処理効率及び処理速度を向上させることができる。活性化演算操作は当該目標出力データＢ１−Ｂ２を使用する必要がない場合、第１のメモリ上の記憶域スペースの再利用を実現するように、目標出力データＢ１−Ｂ２によって占められた記憶域スペースを他のデータに割り当ててもよい。
【００９７】
一実施例において、目標演算操作の目標入力データは当該目標演算操作に対応する全入力データの一部のみである場合、当該目標演算操作の各目標入力データは、当該目標演算操作の一部の演算を完成するためにのみ使用される。当該目標演算操作の処理速度を向上させ、第１のメモリの記憶域スペースを十分に利用するために、当該目標演算操作に対応する目標入力データの数は１つ以上であり、各目標入力データは全入力データの一部であり、即ち、各目標入力データは、全入力データの１つ以上の入力データブロックを含んでもよい。つまり、１つ以上の目標入力データを同時に第１のメモリにロードしてもよい。更に、当該目標入力データの数に応じて、当該目標演算操作を複数のサブ目標演算操作に分割してもよい。好ましくは、各サブ目標演算操作は、同じ演算を実現することができる。具体的には、図７に示すように、上記の方法は、以下のステップを更に含む。
【００９８】
Ｓ５００：各前記サブ目標演算操作に対応する目標入力データの容量及び目標出力データのデータ容量に応じて、等しくても等しくなくてもよい、各サブ目標演算操作に必要とされる目標記憶容量をそれぞれ決定する。
【００９９】
Ｓ５１０：第１のメモリの使用可能な記憶容量及び現在のサブ目標演算操作に必要とされる目標記憶容量に基づいて、第１のメモリの残り記憶容量を決定する。
【０１００】
Ｓ５２０：第１のメモリの残り記憶容量及び各サブ目標演算操作に必要とされる目標記憶容量に応じて、前記サブ目標演算操作の数を決定する。
【０１０１】
好ましくは、当該第１のメモリの残り記憶容量及び現在のサブ目標演算操作以外の他のサブ目標演算操作の目標記憶容量に応じて、第１のメモリ上にいくつのサブ目標演算操作を収容できるかと決定してもよい。そして、現在のサブ目標演算操作及びそれ以外の他のサブ目標演算操作の数に基づいて、サブ目標演算操作の総数を決定してもよい。
【０１０２】
具体的には、現在のサブ目標演算操作の目標入力データのデータ容量と目標出力データのデータ容量との和が第１のメモリの使用可能な記憶容量より小さい場合、第１のメモリの残り記憶容量に応じて、１つ以上のサブ目標演算操作を実行できるかどうかを判断してもよい。ＹＥＳであれば、プロセッサは、１つ以上のサブ目標演算操作に対応する目標入力データを同時に処理することができる。このように、複数の目標入力データを同時に処理することで、プロセッサの処理速度及び効率を更に向上させることができる。
【０１０３】
図８に示すように、目標演算操作（図の左側の演算操作）は、演算操作ＯＰ１、ＯＰ２を含み、プロセッサは、当該目標演算操作を決定するための現在のサブ目標演算操作の目標入力データＸ１１、Ｘ２１及びＹ３のデータ容量に基づいて、現在のサブ目標演算操作の目標出力データＹ１及びＺ１のデータ容量を決定し、現在のサブ目標演算操作の目標入力データのデータ容量と目標出力データのデータ容量との和に基づいて、現在のサブ目標演算操作に必要とされる目標記憶容量を決定してもよい。現在のサブ目標演算操作の目標記憶容量が第１のメモリの使用可能な記憶容量より小さい場合、第１のメモリの残り記憶容量を計算してもよい。第１のメモリの残り記憶容量は、第１のメモリの使用可能な記憶容量から現在のサブ目標演算操作の目標記憶容量を引いたものに等しい。その後、プロセッサは、第１のメモリの残り記憶容量に応じてサブ目標演算操作の数を決定してもよい。
【０１０４】
具体的には、第１のメモリの残り記憶容量は、他のサブ目標演算操作の目標入力データＸ１２、Ｘ２２、及びＹ４、演算操作ＯＰ１によって出力された中間計算結果Ｙ２、及び演算操作ＯＰ２によって出力された目標出力データＺ２を更に収容できる場合には、目標演算操作の数が２つであると決定して、サブ入力データＸ２１、Ｘ２２、及びＹ４をそのうちの１つの目標演算操作の目標入力データとしてもよい。このように、処理されるべき演算の横方向に同一の目標演算操作の複数の目標入力データを同時にロードすることで、プロセッサは、複数の目標入力データを並列に処理し、プロセッサの処理速度及び効率を更に向上させることができる。
【０１０５】
また、第１のメモリの残り記憶容量は、他のサブ目標演算操作の目標入力データＸ１２、Ｘ２２、及びＹ４、演算操作ＯＰ１によって出力された中間計算結果Ｙ２、及び演算操作ＯＰ２によって出力された目標出力データＺ２だけでなく、演算操作ＯＰ３の出力データＹを更に収容できる場合には、演算を１回実行することで計算結果Ｙを得るように、演算操作ＯＰ１、ＯＰ２、ＯＰ３を融合させてもよい。
【０１０６】
他の例として、図９に示すように、当該処理されるべき演算は、ニューラルネットワークなどの演算であり、畳み込み層、プーリング層、及び活性化層を含み、上記の各演算層の実行順序は、畳み込み演算操作−プーリング演算操作−活性化演算操作である。目標演算操作が活性化演算操作である場合、プロセッサは、第１のメモリの記憶容量に基づいて現在のサブ目標演算操作の目標入力データを取得し、現在のサブ目標演算操作の目標入力データはプーリング層のＢ１−Ｂ２区間内の入力データであってもよい。現在のサブ目標演算操作の目標出力データは、Ａ１である。現在のサブ目標演算操作の目標入力データのデータ容量Ｂ１−Ｂ２とそれに対応する目標出力データのデータ容量との和が第１のメモリの記憶容量より小さい場合、即ち、現在のサブ目標演算操作に必要とされる目標記憶容量が第１のメモリの記憶容量より小さい場合、プロセッサは、更に、第１のメモリの残り記憶容量に基づいて当該サブ目標演算操作の数を決定してもよい。例えば、プロセッサは、第１のメモリの残り記憶容量に基づいて、第１のメモリの残り記憶容量が活性化演算Ａ１−Ａ２の空間の演算量を満たすことができると決定した場合、サブ目標演算操作の数は２つであると決定して、目標入力データＢ２−Ｂ３区間内のデータを、活性化演算操作の１つの目標演算操作に対応する目標入力データとしてもよい。
【０１０７】
また、１つ以上のサブ目標演算操作の目標入力データがお互いに交差する場合、現在のサブ目標演算操作の目標入力データと他のサブ目標演算操作の目標入力データとの間の交差部分を決定し、その交差部分を第１のメモリに一時的に記憶する。即ち、現在のサブ目標演算操作の目標入力データの一部又は全部を他の演算操作の目標入力データとする必要がある場合には、この一部のデータの複数回の読み取り操作を避けるように、当該交差部分を第１のメモリに一時的に記憶し、それにより、プロセッサの処理効率及び処理速度を向上させることができる。
【０１０８】
例えば、図９に示すように、目標演算操作がプーリング演算操作であり、かつ、当該目標演算操作のサブ目標演算操作の数が２つである場合、それに対応して、プーリング演算操作に対応する目標入力データの数は、２つであり、１つはＣ１−Ｃ２であり、もう１つはＣ３−Ｃ４であってもよい。目標入力データＣ１−Ｃ２に対応する目標出力データはＢ１−Ｂ２であり、目標入力データＣ３−Ｃ４に対応する目標出力データはＢ２−Ｂ３である。添付図面から分かるように、入力データＣ３−Ｃ２区間のデータは、目標入力データＣ１−Ｃ２の一部であり、それと同時に、目標入力データＣ３−Ｃ４の一部でもあり、即ち、２つの目標入力データの間には、交差部分Ｃ３−Ｃ２がある。この場合、データの読み取りの回数を減らすために、目標入力データＣ１〜Ｃ２に対応するプーリング演算操作を終了した後でも、その一部のデータの複数回の読み取り操作を避けるよに、入力データＣ３−Ｃ２を第１のメモリに記憶してもよく、それにより、プロセッサの処理効率及び速度を向上させることができる。
【０１０９】
一実施例において、前記方法は、更に、以下のステップを含む。
【０１１０】
目標演算操作以降の演算操作と目標演算操作との間の演算間隔が予め設定された範囲内にある場合には、目標出力データの読み取りの回数を減らすように、当該目標出力データを第１のメモリに記憶する。
【０１１１】
具体的には、目標演算操作以降の他の演算操作と当該目標演算操作との間の演算間隔が予め設定された範囲内にある場合、例えば、目標演算操作とそれ以降の他の演算操作との間の演算間隔が３〜５つの演算操作である場合には、目標出力データの読み取りの回数を減らすように、当該目標出力データを第１のメモリに記憶してもよい。目標演算操作以降の他の演算操作と目標演算操作との間の間隔が予め設定された範囲を超える場合、第１のメモリの記憶域スペースが目標演算操作の目標出力データによって長時間で占められることを避けるために、当該目標出力データを第１のメモリから第２のメモリに移動してもよい。
【０１１２】
一実施例において、前記方法は、更に、以下のステップを含む。
【０１１３】
プロセッサは、目標演算操作の目標入力データのデータ容量に応じて目標入力データの第１のメモリにおける記憶アドレスを決定し、目標演算操作の目標出力データのデータ容量に応じて目標出力データの第１のメモリにおける記憶アドレスを決定してもよい。
【０１１４】
具体的には、プロセッサは、目標演算操作の目標入力データのデータ容量に応じて、第１のメモリにおいて目標入力データにそのデータ容量と一致する記憶域スペースを割り当て、その記憶域スペースの記憶アドレスを当該標入力データに割り当てる。このように、実際の演算過程では、目標入力データを第１のメモリ上の指定された記憶域スペースにロードすることができる。同様に、プロセッサは、目標演算操作の目標出力データのデータ容量に応じて、第１のメモリにおいて目標入力データにそのデータ容量と一致する記憶域スペースを割り当て、その記憶域スペースの記憶アドレスを当該標出力データに割り当てる。このように、実際の演算過程では、目標出力データを第１のメモリの指定された記憶域スペースに記憶することができる。
【０１１５】
一実施例において、前記方法は、更に、以下のステップを含む。
【０１１６】
目標演算操作の目標入力データを使用し続ける必要がない場合、プロセッサは、目標入力データの記憶アドレスの一部又は全部を目標演算操作の目標出力データに割り当ててもよい。このように、１つの記憶域スペースを複数回再利用することで、第１のメモリのスペースの使用率を向上させることができる。
【０１１７】
好ましくは、プロセッサは、上記の各目標演算操作の目標入力データの記憶アドレス、目標出力データの記憶アドレス、中間計算結果の記憶アドレス、及び第１のメモリ上の各記憶域スペースの更新規則などを記録し、上記のデータに対応する記憶アドレスに基づいて、処理されるべき演算に対応する記憶割当規則を取得してもよい。プロセッサは、当該処理されるべき演算を実行する必要がある場合、当該処理されるべき演算に対応する記憶割当規則を取得し、当該記憶割当規則に基づいて、演算過程の様々なデータの読み書き操作や記憶場所などを決定してもよい。
【０１１８】
一実施例において、上記のデータ前処理方法は、図２−図４に示されるコンピュータ機器にも適用することができる。この場合、予め設定された演算割当規則に基づいて、当該演算操作の一部がメイン処理回路によって実行され、当該演算操作の他の一部がスレーブ処理回路によって実行される必要がある。それに対応して、複数の第１のメモリは、メインメモリとスレーブメモリとを含み、当該メインメモリは、メイン処理回路に近接して配置され、更に、メイン処理回路のオンチップメモリであってもよい。当該スレーブメモリは、スレーブ処理回路に近接して配置され、更に、スレーブ処理回路のオンチップメモリであってもよい。この場合、当該目標演算操作に対応する目標入力データの一部は、メインメモリにロードされてメイン処理回路によって実行され、当該目標演算操作に対応する目標入力データの他の一部は、１つ以上のスレーブメモリにロードされて各スレーブメモリに対応するスレーブ処理回路によって実行される必要がある。
【０１１９】
具体的には、図１０に示すように、図２−図４に示されるコンピュータ機器は上記のデータ前処理方法を実行する場合、以下のステップを含む。
【０１２０】
Ｓ６００：メインメモリの使用可能な記憶容量、スレーブメモリの使用可能な記憶容量、及び目標演算操作を取得する。
【０１２１】
具体的には、プロセッサは、当該メインメモリの構成情報（例えば、当該メインメモリのモデルなどの情報）に応じて、当該メインメモリの総記憶容量を取得してもよい。更に、プロセッサは、当該メインメモリの総記憶容量及び当該メインメモリの占められた記憶容量に基づいて、当該メインメモリの使用可能な記憶容量を取得してもよい。同様に、プロセッサは、当該スレーブメモリの構成情報に基づいて、スレーブメモリの総記憶容量を取得し、当該スレーブメモリの総記憶容量及びスレーブメモリの占められた記憶容量に基づいて、スレーブメモリの使用可能な記憶容量を取得してもよい。好ましくは、プロセッサのメイン処理回路は、メインメモリの使用可能な記憶容量を取得し、各スレーブ処理回路は、対応するスレーブメモリの使用可能な記憶容量を取得し、対応するスレーブメモリの使用可能な記憶容量をメイン処理回路に伝送してもよい。
【０１２２】
それと同時に、プロセッサのコントローラユニットは、処理されるべき演算を取得して、当該処理されるべき演算の解析結果などのデータをメイン処理回路に送信してもよい。メイン処理回路は、処理されるべき演算、メインメモリの使用可能な記憶容量、及びスレーブメモリの使用可能な記憶容量に基づいて、目標演算操作を決定してもよい。好ましくは、当該処理されるべき演算に含まれた演算操作は、加算、減算、乗算、除算、畳み込み、プーリング（Ｐｏｏｌｉｎｇ）、及び活性化（例えば、Ｒｅｌｕ）などの演算であってもよい。当該目標演算操作は、処理されるべき演算のうちの１つ又は複数の演算操作の組み合わせであってもよい。
【０１２３】
Ｓ７００：前記メインメモリの使用可能な記憶容量、前記スレーブメモリの使用可能な記憶容量、及び前記目標演算操作に基づいて、前記目標演算操作に対応する目標入力データを決定し、前記目標入力データは、前記目標演算操作に対応する全入力データの一部又は全部である。
【０１２４】
具体的には、プロセッサのメイン処理回路は、当該目標演算操作に基づいて、当該目標演算操作を完成させるのに必要な全入力データ及び当該全入力データのデータ容量（即ち、当該全入力データに占められる記憶域スペースの大きさ）を決定してもよい。また、メイン処理回路は、メインメモリの使用可能な記憶容量、各スレーブメモリの使用可能な記憶容量、及び当該目標演算操作の全入力データのデータ容量に基づいて、当該目標演算操作に対応する目標入力データ及びそのデータ容量を決定してもよい。
【０１２５】
Ｓ８００：前記目標演算操作と前記目標入力データに基づいて、前記目標演算操作に対応する目標出力データを決定する。
【０１２６】
具体的には、処理されるべき演算の計算量は静的な解析が可能であるため、プロセッサのメイン処理回路は、当該目標演算操作の目標入力データ及び当該目標演算操作に基づいて、当該目標演算操作の目標出力データや当該目標出力データのデータ容量などの情報を取得することができ、即ち、プロセッサのメイン処理回路は、当該目標演算操作の目標出力データに占められる記憶域スペースを取得することができる。
【０１２７】
Ｓ９００：前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合には、前記目標出力データを対応して前記メインメモリに記憶する。
【０１２８】
具体的には、メイン処理回路は、予め設定された演算割当規則に基づいて、当該メイン処理回路に対応する目標入力データをメインメモリ及びスレーブメモリに割り当ててもよく、それにより、メイン処理回路とスレーブ処理回路とは互いに協力して目標演算操作を実行することができる。当該目標演算操作の実行中、スレーブ処理回路は、そのスレーブメモリ上の目標入力データを処理して中間計算結果を得てもよい。スレーブ処理回路は、当該中間計算結果をメイン処理回路に伝送してもよい。メイン処理回路は、そのメインメモリ上の目標入力データを処理して、各スレーブ処理回路によって伝送された中間計算結果に基づいて、当該目標演算操作の目標出力データを得てもよい。当該目標演算操作に対応する目標出力データはそれ以降の他の演算操作の入力データである場合には、当該目標出力データをメインメモリに記憶してもよく、それにより、データの読み取りの回数を減らし、プロセッサの演算速度を向上させることができる。
【０１２９】
一実施例において、図１１に示すように、上記のステップＳ７００は、更に、
前記メインメモリの使用可能な記憶容量と各前記スレーブメモリの使用可能な記憶容量とを比較し、最も小さい使用可能な記憶容量を第１のメモリの使用可能な記憶容量とするステップＳ７１０と、
当該第１のメモリの使用可能な記憶容量及び目標演算操作に基づいて、目標演算操作に対応する目標入力データを決定するステップＳ７２０と、を含んでよい。
【０１３０】
具体的には、当該目標演算操作を実行するためには、マスタ処理回路とスレーブ処理回路とがお互いに協力する必要があるので、メインメモリとスレーブメモリとが目標演算操作の目標入力データに占められるスペースを同時に満たすことを確保しなければならない。即ち、当該目標入力データのデータ容量は、メインメモリの使用可能な記憶容量より小さく、且つ、当該目標入力データのデータ容量は、スレーブメモリの使用可能な記憶容量より小さい。したがって、メインメモリの使用可能な記憶容量と各スレーブメモリの使用可能な記憶容量とを比較して、メインメモリ及び各スレーブメモリの最も小さい使用可能な記憶容量をプロセッサの第１のメモリの使用可能な記憶容量としてもよい。次いて、メイン処理回路は、第１のメモリの使用可能な記憶容量及び目標演算操作に基づいて、当該目標演算操作に対応する目標入力データを決定する。
【０１３１】
一実施例において、メイン処理回路は、予め設定された演算割当規則に基づいて目標入力データを分割し、当該目標入力データを複数のデータブロックに割り当て、各データブロックに対応する処理回路を決定してもよい。目標入力データのうちメイン処理回路によって処理されたデータブロックを第１の目標入力データとして記録してもよい。目標入力データのうちスレーブ処理回路で処理されたデータブロックを第２の目標入力データとして記録してもよい。更に、各スレーブ処理回路に対応する第２の目標入力データのデータ容量は等しくなくてもよく、具体的には、演算割当規則によって決定される。具体的には、前記方法は、以下のステップを更に含む。
【０１３２】
予め設定された演算割当規則に基づいて、前記メインメモリに対応する第１の目標入力データ、及び各前記スレーブメモリに対応する第２の目標入力データを決定する。具体的には、メイン処理回路は、予め設定された演算割当規則に基づいて、目標演算操作のどの目標入力データがメイン処理回路によって処理されるか、目標演算操作のどの目標入力データが各スレーブ処理回路によって処理されるかを決定してもよい。
【０１３３】
例えば、図９に示すように、現在の目標演算操作は、プーリング演算操作であり、プーリング層のＢ１−Ｂ２区間の演算を完了しようとする場合には、当該目標演算操作に必要とされる目標入力データはＣ１−Ｃ２である。メインプロセッサは、予め設定された演算割当規則に基づいて、入力データＣ１−Ｃ３を第２の目標入力データとして、当該第２の目標入力データＣ１−Ｃ３をスレーブメモリに記憶してもよい。入力データＣ３−Ｃ２を第１の目標入力データとして、当該第１の目標入力データＣ３−Ｃ２をメインメモリに記憶する。
【０１３４】
更に、上記の方法は、以下のステップを更に含む。
【０１３５】
プロセッサは、更に、メインメモリの使用可能な記憶容量及び前記第１の目標入力データのデータ容量に基づいて、第１の目標入力データのメインメモリにおける記憶アドレスを決定してもよい。具体的には、メイン処理回路は、メインメモリの使用可能な記憶容量及び第１の目標入力データのデータ容量に基づいて、当該第１の目標入力データのメインメモリにおける記憶アドレスを決定してもよい。また、メイン処理回路は、更に、第１の目標入力データのデータ容量及び目標演算操作に基づいて、第１の目標入力データに対応する第１の目標出力データ及びそのデータ容量を決定し、第１の目標出力データのメインメモリにおける記憶アドレスを決定してもよい。
【０１３６】
プロセッサは、更に、スレーブメモリの使用可能な記憶容量及び前記第２の目標入力データのデータ容量に基づいて、第２の目標入力データのスレーブメモリにおける記憶アドレスを決定してもよい。具体的には、メイン処理回路は、各スレーブメモリの使用可能な記憶容量及びそれに対応する第２の目標入力データのデータ容量に基づいて、各第２の目標入力データのそれに対応するスレーブメモリにおける記憶アドレスを決定してもよい。また、メイン処理回路は、更に、各第２の目標入力データのデータ容量及び目標演算操作に基づいて、各第２の目標入力データに対応する第２の目標出力データ及びそのデータ容量を決定し、各第２の目標出力データのそれに対応するスレーブメモリにおける記憶アドレスを決定してもよい。
【０１３７】
更に、各スレーブ処理回路は、計算で得られた第２の目標出力データをメイン処理回路に伝送し、メイン処理回路は、各第２の目標出力データのメインメモリにおける記憶アドレスを更に決定してもよい。
【０１３８】
一実施例において、当該スレーブ処理回路で実行された他の目標演算操作はそれに対応する第２の目標出力データを使用し続ける必要がある場合には、当該第２の目標出力データを、スレーブ処理回路に対応するスレーブメモリに一時的に記憶してもよい。これにより、メインメモリとスレーブメモリとの間のデータの読み取り操作を減らし、プロセッサの演算速度を更に向上させることができる。
【０１３９】
一実施例において、上記の目標演算操作は１つ以上の演算操作を含み、即ち、当該目標演算操作は、１つ以上の演算操作の組み合わせである。一般に、当該目標演算操作に含まれる各演算操作は、異なる演算を実現するための異なる演算操作である。この場合、プロセッサのメイン処理回路は、第１のメモリの使用可能な記憶容量に基づいて各演算操作に対応するサブ目標入力データを決定して、各演算操作に対応するサブ目標入力データに基づいて当該目標演算操作に対応する目標入力データを決定してもよい。具体的には、当該目標入力データを決定する過程は、上記の方法のステップＳ２１０〜Ｓ２３０と一致し、詳細については、上記の説明を参照し、ここでは再度説明しない。
【０１４０】
また、当該目標演算操作は１つ以上の演算操作を含む場合、その１つ以上の演算操作は、第１の目標演算操作と第２の目標演算操作とに分けられてもよい。メイン処理回路は、予め設定された演算割当規則に基づいて、目標演算操作の第１の目標演算操作をメイン処理回路に割り当て、目標演算操作の第２の目標演算操作をスレーブ処理回路に割り当ててもよい。これに対応して、メイン処理回路は、第１の目標演算操作に必要とされる入力データをメインメモリに記憶し、第２の目標演算操作に必要とされる入力データを対応するスレーブメモリに記憶してもよい。
【０１４１】
例えば、図９に示すように、第１のメモリの使用可能な記憶容量はプーリング演算操作の目標入力データＣ１−Ｃ２及び活性化演算操作の目標入力データＢ１−Ｂ２を収容できる場合、当該プーリング演算操作と活性化演算操作を、１つの目標演算操作に相当させてもよい。この場合、当該目標演算操作の目標入力データは、Ｃ１−Ｃ２区間内にあるデータであってもよい。この場合、メイン処理回路は、予め設定された演算規則に基づいて、活性化演算操作を第１の目標演算操作としてメイン処理回路自体に割り当て、プーリング演算操作を第２の目標演算操作としてスレーブ処理回路に割り当ててもよい。これに対応して、プーリング演算操作に必要とされる入力データＣ１−Ｃ２をスレーブメモリにロードし、活性化演算操作に必要とされる入力データＢ１−Ｂ２をメインメモリにロードしてもよい。プーリング演算操作と活性化演算操作との間には依存関係があるため、プーリング演算操作を完成させた後、活性化演算操作に必要とされる入力データＢ１−Ｂ２をメインメモリにロードしてもよい。
【０１４２】
一実施例において、目標演算操作の目標入力データは当該目標演算操作に対応する全入力データの一部のみである場合、当該目標演算操作の各目標入力データは、当該目標演算操作の一部の演算を完成させるためにのみ使用される。当該目標演算操作の処理速度を向上させ、第１のメモリの記憶域スペースを十分に利用するために、当該目標演算操作に対応する目標入力データの数は１つ以上であり、各目標入力データは全入力データの一部であり、即ち、各目標入力データは、全入力データの１つ以上の入力データブロックを含んでもよい。つまり、１つ以上の目標入力データを同時に第１のメモリにロードしてもよい。更に、当該目標入力データの数に応じて、当該目標演算操作を複数のサブ目標演算操作に分割してもよい。好ましくは、各サブ目標演算操作は、同じ演算を実現することができる。
【０１４３】
メイン処理回路は、第１のメモリの使用可能な記憶容量及び各目標演算操作に必要とされる目標記憶容量の大きさに基づいて、目標演算操作の数を決定してもよく、それにより、１つ以上の目標演算操作の目標入力データを第１のメモリに同時にロードすることができる。具体的には、目標演算操作の数を決定する過程は、上記の方法のステップＳ５００〜Ｓ５２０と一致し、詳細については、上記の説明を参照し、ここでは再度説明しない。
【０１４４】
当業者であれば分かるように、図５−図７のフローチャート及び図１０−図１１の各ステップは矢印のように順番に示されるが、必ずしも矢印のように順番に実行される必要はない。本明細書で特に説明しない限り、上記ステップの実行順番は厳密には限定されず、他の順番で実行されてもよい。更に、図５−図７及び図１０−図１１のステップの少なくとも一部は、複数のサブステップ又は複数の段階を含んでもよい。当該サブステップ又は段階は、必ずしも同じタイミングで実行される必要はなく、異なるタイミングで実行されてもよい。更に、当該サブステップ又は段階の実行も、必ずしも順次行われる必要はなく、他のステップ又は他のステップにおけるサブステップ又は段階の少なくとも一部と順番に又は交互に実行されてもよい。
【０１４５】
当業者であれば分かるように、図５−図７のフローチャート及び図１０−図１１の各ステップは矢印のように順番に示されるが、必ずしも矢印のように順番に実行される必要はない。本明細書で特に説明しない限り、上記ステップの実行順番は厳密には限定されず、他の順番で実行されてもよい。更に、図５−図７及び図１０−図１１のステップの少なくとも一部は、複数のサブステップ又は複数の段階を含んでもよい。当該サブステップ又は段階は、必ずしも同じタイミングで実行される必要はなく、異なるタイミングで実行されてもよい。更に、当該サブステップ又は段階の実行も、必ずしも順次行われる必要はなく、他のステップ又は他のステップにおけるサブステップ又は段階の少なくとも一部と順番に又は交互に実行されてもよい。
【０１４６】
当業者であれば分かるように、上記の実施例に係る方法のフローの全部又は一部は、コンピュータプログラムにより関連するハードウェアを指示することで実現されてもよい。前記コンピュータプログラムは、不揮発性コンピュータ可読記憶媒体に記憶されてもよく、当該コンピュータプログラムが実行されると、上記の方法の実施例のフローを実現することができる。本明細書で提供される各実施例で用いられるメモリ、記憶装置、データベース、又は他の媒体への任意の言及は、不揮発性及び／又は揮発性メモリを含んでもよい。不揮発性メモリとして、読み出し専用メモリ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＲＯＭ）、プログラマブルＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＰＲＯＭ）、電気的にプログラマブルＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＥＰＲＯＭ）、電気的に消去可能なプログラマブルＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ、ＥＥＰＲＯＭ）、又はフラッシュメモリが挙げられる。揮発性メモリは、ランダムアクセスメモリ（ＲＡＭ）又は外部キャッシュメモリであってもよい。限定ではなく説明するためのＲＡＭとして、スタティックＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ、ＳＲＡＭ）、ダイナミックＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ、ＤＲＡＭ）、シンクロナスＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ、ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（Ｄｏｕｂｌｅ−Ｄａｔａ−Ｒａｔｅ  ＳＤＲＡＭ、ＤＤＲＳＤＲＡＭ）、エンハンストＳＤＲＡＭ（Ｅｎｈａｎｃｅｄ  ＳＤＲＡＭ、ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（Ｓｙｎｃｈｌｉｎｋ  ＤＲＡＭ、ＳＬＤＲＡＭ）、ラムバスダイレクトＲＡＭ（Ｒａｍｂｕｓ  Ｄｉｒｅｃｔ  ＲＡＭ、ＲＤＲＡＭ）、ダイレクトラムバスダイナミックＲＡＭ（Ｄｉｒｅｃｔ  Ｒａｍｂｕｓ  Ｄｙｎａｍｉｃ  ＲＡＭ、ＤＲＤＲＡＭ）、及びラムバスダイナミックＲＡＭ（Ｒａｍｂｕｓ  Ｄｙｎａｍｉｃ  ＲＡＭ、ＲＤＲＡＭ）等が挙げられる。
【０１４７】
一実施例において、図１２に示すように、本発明の実施例により、取得モジュール４１０、入力決定モジュール４２０、出力決定モジュール４３０、及び記憶割当モジュール４４０を含むデータ前処理装置が提供される。取得モジュール４１０は、第１のメモリの使用可能な記憶容量及び目標演算操作を取得するように構成され、入力決定モジュール４２０は、前記目標演算操作及び前記第１のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データを決定するように構成され、出力決定モジュール４３０は、前記目標演算操作と前記目標入力データに基づいて、前記目標演算操作の目標出力データを決定するように構成され、記憶割当モジュール４４０は、前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合には、前記目標演算操作の目標出力データをプロセッサに近接して配置された前記第１のメモリに記憶するように構成される。
【０１４８】
好ましくは、前記目標演算操作は、１つ以上の演算操作を含み、各前記演算操作は、それぞれサブ目標入力データに対応する。図１３に示すように、前記入力決定モジュール４２０は、融合決定ユニット４２１と入力決定ユニット４２２とを更に含む。融合決定ユニット４２１は、前記第１のメモリの使用可能な記憶容量及び前記処理されるべき演算のうちの各演算操作の融合属性に基づいて、融合可能な演算操作の数を決定し、融合数閾値を得るように構成される。入力決定ユニット４２２は、前記融合数閾値より大きくない選択された数の前記融合可能な演算操作の組み合わせを前記目標演算操作とし、前記選択された数の融合可能な演算操作に対応するサブ目標入力データを前記目標演算操作に対応する目標入力データとするように構成される。
【０１４９】
好ましくは、前記処理されるべき演算は、複数の演算層を含むニューラルネットワーク演算であり、各前記演算層は、１つの前記演算操作を表し、前記融合決定ユニット４２１は、更に、前記ニューラルネットワーク演算の各演算層の間の接続関係に応じて、各前記演算操作の融合属性を決定するように構成される。
【０１５０】
好ましくは、記憶割当モジュール４４０は、更に、前記目標演算操作のうちの現在の演算操作によって出力された中間計算結果が前記目標演算操作のうちの他の演算操作の入力データとされる必要がある場合、或いは、前記現在の演算操作によって出力された中間計算結果が他の演算操作の入力データとされる必要がある場合、前記現在の演算操作によって出力された中間計算結果を第１のメモリに記憶し、或いは、前記現在の演算操作によって出力された中間計算結果を第１のメモリと第２のメモリとに記憶するように構成される。
【０１５１】
好ましくは、前記目標演算操作は、１つ以上のサブ目標演算操作を含み、各前記サブ目標演算操作は、それぞれ１つの前記目標入力データに対応し、前記目標演算操作に対応する全入力データは、複数の入力データブロックを含み、前記目標演算操作に対応する目標入力データの数は、１つ以上であり、各前記目標入力データは、それぞれ１つ以上の前記入力データブロックを含む。入力決定モジュール４２０は、各前記サブ目標演算操作の目標入力データのデータ容量及び目標出力データのデータ容量に応じて、それぞれ各前記サブ目標演算操作に必要とされる目標記憶容量を決定し、前記第１のメモリの使用可能な記憶容量及び現在のサブ目標演算操作に必要とされる目標記憶容量に基づいて、前記第１のメモリの残り記憶容量を決定し、前記第１のメモリの残り記憶容量及び前記現在のサブ目標演算操作以外の他のサブ目標演算操作に必要とされる目標記憶容量に応じて、前記サブ目標演算操作の数を決定するように構成される。
【０１５２】
好ましくは、前記記憶割当モジュール４４０は、更に、１つ以上の前記サブ目標演算操作の目標入力データの間に交差部分がある場合、前記１つ以上のサブ目標演算操作の目標入力データの間の交差部分を前記第１のメモリに記憶するように構成される。
【０１５３】
好ましくは、前記記憶割当モジュール４４０は、更に、前記目標演算操作の目標入力データのデータ容量に応じて、前記目標入力データの前記第１のメモリにおける記憶アドレスを決定し、前記目標演算操作の目標出力データのデータ容量に応じて、前記目標出力データの前記第１のメモリにおける記憶アドレスを決定し、前記目標演算操作以降の他の演算操作が前記目標演算操作の目標入力データを使用する必要がない場合、前記目標演算操作を完了させた後、前記目標演算操作に対応する目標入力データの記憶アドレスの一部又は全部を、前記目標演算操作の目標出力データに割り当てるように構成される。
【０１５４】
他の実施例において、図１２に示すように、取得モジュール４１０は、メインメモリの使用可能な記憶容量、スレーブメモリの使用可能な記憶容量、及び目標演算操作を取得するように構成され、入力決定モジュール４２０は、前記メインメモリの使用可能な記憶容量、前記スレーブメモリの使用可能な記憶容量、及び前記目標演算操作に基づいて、前記目標演算操作に対応する目標入力データを決定するように構成され、出力決定モジュール４３０は、前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作に対応する目標出力データを決定するように構成され、記憶割当モジュール４４０は、前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合には、前記目標出力データを対応して前記メインメモリに記憶するように構成される。
【０１５５】
好ましくは、図１４に示すように、前記データ前処理装置は、前記メインメモリの使用可能な記憶容量と各前記スレーブメモリの使用可能な記憶容量とを比較し、最も小さい使用可能な記憶容量を第１のメモリの使用可能な記憶容量とするように構成される記憶容量決定モジュール４５０を更に含む。入力決定モジュール４２０は、具体的には、前記第１のメモリの使用可能な記憶容量及び目標演算操作に基づいて、目標演算操作に対応する目標入力データを決定するように構成される。
【０１５６】
好ましくは、前記目標演算操作は、１つ以上の演算操作を含み、各前記演算操作は、それぞれサブ目標入力データに対応し、前記入力決定モジュール４２０は、融合決定ユニット４２１と入力決定ユニット４２２を更に含む。融合決定ユニット４２１は、前記第１のメモリの使用可能な記憶容量及び前記処理されるべき演算の各演算操作の融合属性に基づいて、融合可能な演算操作の数を決定し、融合数閾値を得るように構成される。入力決定ユニット４２２は、前記融合数閾値より大きくない選択された数の前記融合可能な演算操作の組み合わせを前記目標演算操作とし、前記選択された数の各融合可能な演算操作に対応するサブ目標入力データを、前記目標演算操作に対応する目標入力データとするように構成される。
【０１５７】
好ましくは、前記処理されるべき演算は、複数の演算層を含むニューラルネットワーク演算であり、各前記演算層は、１つの前記演算操作を表し、前記融合決定ユニット４２１は、更に、前記ニューラルネットワーク演算の各演算層の間の接続関係に応じて、各前記演算操作の融合属性を決定するように構成される。
【０１５８】
好ましくは、前記目標演算操作は、１つ以上のサブ目標演算操作を含み、各前記サブ目標演算操作は、それぞれ１つの前記目標入力データに対応し、前記目標演算操作に対応する全入力データは複数の入力データブロックを含み、前記目標演算操作に対応する目標入力データの数は１つ以上であり、各前記目標入力データは、それぞれ１つ以上の前記入力データブロックを含む。前記入力決定モジュールは、更に、各前記サブ目標演算操作の目標入力データのデータ容量及び目標出力データのデータ容量に応じて、それぞれ各前記サブ目標演算操作に必要とされる目標記憶容量を決定し、前記第１のメモリの使用可能な記憶容量及び現在のサブ目標演算操作に必要とされる目標記憶容量に基づいて、前記第１のメモリの残り記憶容量を決定し、前記第１のメモリの残り記憶容量及び前記現在のサブ目標演算操作以外の他のサブ目標演算操作に必要とされる目標記憶容量に応じて、前記サブ目標演算操作の数を決定するように構成される。
【０１５９】
好ましくは、前記目標入力データは、第１の目標入力データと、第２の目標入力データとを含み、前記入力決定モジュール４２０は、更に、予め設定された演算割当規則に基づいて、前記メインメモリに対応する第１の目標入力データ及び各前記スレーブメモリに対応する第２の目標入力データを決定するように構成され、前記記憶割当モジュール４４０は、更に、前記メインメモリの使用可能な記憶容量及び前記第１の目標入力データのデータ容量に応じて、前記第１の目標入力データの前記メインメモリにおける記憶アドレスを決定し、各前記スレーブメモリの利用可能な記憶容量および対応する前記第２の目標入力データのデータ容量に応じて、それぞれ各前記第２の目標入力データの前記スレーブメモリにおける記憶アドレスを決定するように構成される。
【０１６０】
好ましくは、前記目標出力データは、第１の目標出力データと、第２の目標出力データとを含み、前記出力決定モジュール４３０は、更に、前記目標演算操作及び前記第１の目標入力データに基づいて、前記第１の目標出力データ及び前記第１の目標出力データの前記メインメモリにおける記憶アドレスを決定し、前記目標演算操作及び各前記第２の目標入力データに基づいて、各前記第２の目標出力データ及び各前記第２の目標出力データの対応する前記スレーブメモリにおける記憶アドレスをそれぞれ決定し、各前記第２の目標出力データに基づいて、各前記第２の目標出力データの前記メインメモリにおける記憶アドレスをそれぞれ決定するように構成される。
【０１６１】
好ましくは、前記記憶割当モジュール４４０は、更に、前記スレーブ処理回路で実行された他の目標演算操作は前記第２の目標出力データを使用する必要がある場合には、前記第２の目標出力データを、前記スレーブ処理回路に対応するスレーブメモリに記憶するように構成される。また、前記記憶割当モジュール４４０は、更に、前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合には、前記目標出力データを対応して前記メインメモリと前記第２のメモリに記憶するように構成される。
【０１６２】
当業者であれば分かるように、当該装置の動作原理は上記の方法の各ステップの実行過程と一致し、詳細については、上記の説明を参照し、ここでは再度説明しない。
【０１６３】
一実施例において、本発明は、プロセッサによって実行されると、上記の実施例何れか一項に記載の方法のステップを実現するコンピュータプログラムが記憶されているコンピュータ可読記憶媒体を提供する。具体的には、当該コンピュータープログラムがプロセッサによって実行される際に、
第１のメモリの使用可能な記憶容量及び目標演算操作を取得するステップと、
目標演算操作及び第１のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データ、即ち、前記目標演算操作に対応する全入力データの一部又は全部である目標入力データを決定するステップと、
前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作の目標出力データを決定するステップと、
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標演算操作の目標出力データをプロセッサに近接して配置された前記第１のメモリに記憶するステップと、を実現する。
【０１６４】
また、プロセッサは、メイン処理回路とスレーブ処理回路を含むマスタスレーブ構造であってもよく、この場合、プロセッサは上記のコンピュータプログラムを実行すると、具体的には、
メインメモリの使用可能な記憶容量、スレーブメモリの使用可能な記憶容量、及び目標演算操作を取得するステップと、
目標演算操作及び第１のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データ、即ち、前記目標演算操作に対応する全部の入力データの一部又は全部である目標入力データを決定するステップと、
前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作に対応する目標出力データを決定するステップと、
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標出力データを対応して前記メインメモリに記憶するステップと、を実現する。
【０１６５】
当業者であれば分かるように、プロセッサによってコンピュータプログラムを実行するプロセスは、上記の方法の各ステップの実行プロセスと一致し、詳細については、上記の説明を参照し、ここでは再度説明しない。
【０１６６】
前記実施例の各技術特徴は任意に組み合わせることができ、説明の便宜上、前記実施例の各技術特徴の全ての組合せを説明していないが、これらの技術特徴の組合せは矛盾しなければ、本明細書に記載範囲に含まれると理解されるのが当然である。
【０１６７】
以上、前記実施例により本発明のいくつかの実施形態を具体的に説明したが、本発明はこれらに限定されていない。当業者にとっては、本発明の精神を逸脱しないかぎり、様々の変形や改良も本発明の保護範囲に含まれる。よって、本発明の保護範囲は特許請求の範囲によるものである。
【図１】
0006867518.tif 000002
【図２】
0006867518.tif 000003
【図３】
0006867518.tif 000004
【図４】
0006867518.tif 000005
【図５】
0006867518.tif 000006
【図６】
0006867518.tif 000007
【図７】
0006867518.tif 000008
【図８】
0006867518.tif 000009
【図９】
0006867518.tif 000010
【図１０】
0006867518.tif 000011
【図１１】
0006867518.tif 000012
【図１２】
0006867518.tif 000013
【図１３】
0006867518.tif 000014
【図１４】
0006867518.tif 000015