(57)【要約】  本発明は、タスク並列処理方法、装置、システム、記憶媒体およびコンピュータ機器を提供しており、タスク有向非巡回グラフＤＡＧに応じて実行すべきタスクの割り当ておよび制御を行い、マルチコアプロセッサのタスク並列を実現して、データ処理効率を向上させることができる。【選択図】図３
2020522824.tif 000002
【特許請求の範囲】
【請求項１】
タスク並列処理方法であって、
実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築し、
前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクをプロセッサの複数のワークキューに割り当て、
前記タスク有向非巡回グラフＤＡＧにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御することを含むことを特徴とする、タスク並列処理方法。
【請求項２】
前記した、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築するステップの前に、
プログラムにおける操作ノードおよび／またはデータノードに応じてプログラムを分割して前記実行すべきタスクを取得することを含むことを特徴とする、請求項１に記載の方法。
【請求項３】
前記した、プログラムにおける操作ノードに応じてプログラムを分割して前記実行すべきタスクを取得するステップは、
前記プログラムがモデル有りの操作要求を含む場合、前記モデル有りの操作要求のモデルを分割するか、および／または前記モデルの入力データを分割して実行すべきタスクを取得することを含むことを特徴とする、請求項２に記載の方法。
【請求項４】
前記した、前記モデル有りの操作要求のモデルを分割して実行すべきタスクを取得するステップは、
モデルを分割して取得する各前記実行すべきタスクに対応する重みを設定し、
各前記重みを用いて前記実行すべきタスクの入力データと出力データとの対応関係を設定することを含むことを含むことを特徴とする、請求項３に記載の方法。
【請求項５】
前記した、前記モデル有りの操作要求のモデルを分割して実行すべきタスクを取得するステップは、
予め設定されたルールに従ってモデルのウィンドウ方向および／またはチャンネル方向において前記モデル有りの操作のモデルを分割して実行すべきタスクを取得することを含むことを特徴とする、請求項３に記載の方法。
【請求項６】
前記した、前記モデル有りの操作要求の入力データを分割して実行すべきタスクを取得するステップは、
予め設定されたルールに従ってデータのウィンドウ方向において前記モデル有りの操作の入力データを分割して実行すべきタスクを取得することを含むことを特徴とする、請求項３に記載の方法。
【請求項７】
前記した、プログラムにおける操作ノードに応じてプログラムを分割して前記実行すべきタスクを取得するステップは、
前記プログラムがモデル無しの操作要求を含む場合、前記モデル無しの操作要求の入力データおよび／または出力データを分割して実行すべきタスクを取得することを含むことを特徴とする、請求項２に記載の方法。
【請求項８】
前記した、前記モデル無しの操作要求の入力データおよび／または出力データを分割して実行すべきタスクを取得するステップは、
予め設定されたルールに従ってデータのウィンドウ方向において前記入力データおよび／または出力データを分割して実行すべきタスクを取得することを含むことを特徴とする、請求項７に記載の方法。
【請求項９】
前記した、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築するステップは、
取得した各前記実行すべきタスク間の依存関係に応じて、前記タスク有向非巡回グラフＤＡＧにおける並列ノードと順序ノードを決定し、
前記並列ノードと順序ノードに応じて、タスク有向非巡回グラフＤＡＧを構築することを含むことを特徴とする、請求項１に記載の方法。
【請求項１０】
前記した、前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクを前記プロセッサの複数のワークキューに割り当てるステップは、
前記タスク有向非巡回グラフＤＡＧをトポロジカルソートし、タスクのトポロジカルソートシーケンスを取得し、
各前記実行すべきタスクの予め設定された実行時間に応じて、取得した前記トポロジカルソートシーケンスをソートし、最長のトポロジカルソートシーケンスを取得し、
前記最長のトポロジカルソートシーケンスおよび各前記実行すべきタスク間の依存関係に応じて、各前記実行すべきタスクを前記ワークキューに割り当てることを含むことを特徴とする、請求項１〜９のいずれか１項に記載の方法。
【請求項１１】
前記した、前記タスク有向非巡回グラフＤＡＧにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御するステップは、
前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクに対して参照カウントを設定し、
依存される側の実行すべきタスクが実行された場合、依存する側の実行すべきタスクの参照カウントを変更し、
前記実行すべきタスクの参照カウントが予め設定された値に達すると、各前記ワークキューにおける参照カウントが予め設定された値に達した実行すべきタスクの実行を開始するように制御することを含むことを特徴とする、請求項１〜９のいずれか１項に記載の方法。
【請求項１２】
プロセッサによって実行されると請求項１〜１１のいずれか１項に記載の方法のステップを実現するコンピュータプログラムを記憶したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【請求項１３】
タスク並列処理システムであって、
メモリと、マルチコアプロセッサと、メモリに記憶され、プロセッサ上で実行可能なコンピュータプログラムとを含み、
前記マルチコアプロセッサは、分割アルゴリズムを実行可能で、
前記マルチコアプロセッサが前記コンピュータプログラムを実行すると、請求項１〜１１のいずれか１項に記載の方法のステップが実現されることを特徴とする、タスク並列処理システム。
【請求項１４】
タスク並列処理システムであって、
メモリと、第１プロセッサと、第２プロセッサとを含み、
前記第１プロセッサは、分割アルゴリズムを実行可能で、
第２プロセッサは、マルチコアプロセッサであり、
前記第１プロセッサと第２プロセッサが前記コンピュータプログラムを実行すると、請求項１〜１１のいずれか１項に記載の方法のステップが実現されることを特徴とする、タスク並列処理システム。
【請求項１５】
タスク並列処理装置であって、
実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築するＤＡＧグラフ構築ユニットと、
前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクをプロセッサの複数のワークキューに割り当てるタスク割り当てユニットと、
前記タスク有向非巡回グラフＤＡＧにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御するスケジューリング制御ユニットとを含むことを特徴とする、タスク並列処理装置。
【発明の詳細な説明】
【関連出願】
【０００１】
本願は、２０１７年１１月２０日に出願された出願番号が２０１７１１１５７３４１．Ｘで、名称が「タスク並列処理方法、記憶媒体、コンピュータ機器、装置およびシステム」である中国特許出願と、２０１７年１２月２９日に出願された出願番号が２０１７１１４８４４１０．８で、名称が「命令リストスケジューリング方法、装置、コンピュータ機器および記憶媒体」である中国特許出願と、２０１８年１月２９日に出願された出願番号が２０１８１００８４０７７．Ｘで、名称が「コンピュータ機器、データ処理方法および記憶媒体」である中国特許出願と、２０１８年１月２９日に出願された出願番号が２０１８１００８３５７７．１で、名称が「コンピュータ機器、データ処理方法および記憶媒体」である中国特許出願に基づく優先権を主張するものであり、これらの出願の全内容は参照により本明細書に組み込まれる。
【技術分野】
【０００２】
本願は、コンピュータの技術分野に関し、特にタスク並列処理方法、装置、システム、記憶媒体およびコンピュータ機器に関する。
【背景技術】
【０００３】
従来技術では、ＣＵＤＡ（Ｃｏｍｐｕｔｅ  Ｕｎｉｆｉｅｄ  Ｄｅｖｉｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ：ビデオカードメーカーであるＮＶＩＤＩＡが提供しているコンピューティングプラットフォーム）、Ｃｕｄｎｎ（ＣＵＤＡ  Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ  ｌｉｂｒａｒｙ：ＮＶＩＤＩＡが提供しているディープニューラルネットワークアクセラレーションライブラリ）、Ｃｕｂｌａｓ（ＣＵＤＡ  Ｂａｓｉｃ  Ｌｉｎｅａｒ  Ａｌｇｅｂｒａ  Ｓｕｂｐｒｏｇｒａｍｓ：ＮＶＩＤＩＡが提供しているマトリクスコンピューティングアクセラレーションライブラリ）などのアクセラレーターＡＰＩを介してプログラミングして、畳み込みニューラルネットワークのプログラム命令を実現することができる。しかし、ＣＵＤＡ、Ｃｕｄｎｎ、ＣｕｂｌａｓなどのアクセラレーターＡＰＩを介してプログラミングして実現する畳み込みニューラルネットワークの各命令間には相互依存関係が無く、プログラミング命令を順次実行することしかできない。
【０００４】
ニューラルネットワークは、実際には一連のキュー関数であり、グラフ構造である。畳み込みニューラルネットワークのプログラム命令を実現する際に、タスクブランチが存在する。現在、ｔｅｎｓｏｒｆｌｏｗ（ＧｏｏｇｌｅがＤｉｓｔＢｅｌｉｅｆに基づいて開発した第２世代の人工知能学習システム）またはＣａｆｆｅ（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｆａｓｔ  Ｆｅａｔｕｒｅ  Ｅｍｂｅｄｄｉｎｇ、畳み込みニューラルネットワークフレームワーク）などのフレームワークアプリケーションにより畳み込みニューラルネットワークのプログラムのタスク並列を実現することができる。しかし、上記フレームワークプログラムによりタスク並列を実現する場合、ソフトウェアの追加インストールが必要となるだけでなく、プログラムインタフェースの非互換性の問題も生じ、使い勝手が悪い。
【発明の概要】
【０００５】
以上に鑑みて、ｔｅｎｓｏｒｆｌｏｗまたはＣａｆｆｅなどのフレームワークアプリケーションでタスク並列を実現することによる使い勝手の悪さの問題に対して、タスク並列処理方法、記憶媒体、コンピュータ機器、装置およびシステムを提供する必要がある。
【０００６】
本願は、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築し、
前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクをプロセッサの複数のワークキューに割り当て、
前記タスク有向非巡回グラフＤＡＧにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御することを含むタスク並列処理方法を提供している。
【０００７】
一実施例において、前記した、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築するステップの前に、
プログラムにおける操作ノードおよび／またはデータノードに応じてプログラムを分割して前記実行すべきタスクを取得することを含む。
【０００８】
一実施例において、前記した、プログラムにおける操作ノードに応じてプログラムを分割して前記実行すべきタスクを取得するステップは、
前記プログラムがモデル有りの操作要求を含む場合、前記モデル有りの操作要求のモデルを分割するか、および／または前記モデルの入力データを分割して実行すべきタスクを取得することを含む。
【０００９】
一実施例において、前記した、前記モデル有りの操作要求のモデルを分割して実行すべきタスクを取得するステップは、
モデルを分割して取得する各前記実行すべきタスクに対応する重みを設定し、
各前記重みを用いて前記実行すべきタスクの入力データと出力データとの対応関係を設定することを含む。
【００１０】
一実施例において、前記した、前記モデル有りの操作要求のモデルを分割して実行すべきタスクを取得するステップは、
予め設定されたルールに従ってモデルのウィンドウ方向および／またはチャンネル方向において前記モデル有りの操作のモデルを分割して実行すべきタスクを取得することを含む。
【００１１】
一実施例において、前記した、前記モデル有りの操作要求の入力データを分割して実行すべきタスクを取得するステップは、
予め設定されたルールに従ってデータのウィンドウ方向において前記モデル有りの操作の入力データを分割して実行すべきタスクを取得することを含む。
【００１２】
一実施例において、前記した、プログラムにおける操作ノードに応じてプログラムを分割して前記実行すべきタスクを取得するステップは、
前記プログラムがモデル無しの操作要求を含む場合、前記モデル無しの操作要求の入力データおよび／または出力データを分割して実行すべきタスクを取得することを含む。
【００１３】
一実施例において、前記した、前記モデル無しの操作要求の入力データおよび／または出力データを分割して実行すべきタスクを取得するステップは、
予め設定されたルールに従ってデータのウィンドウ方向において前記入力データおよび／または出力データを分割して実行すべきタスクを取得することを含む。
【００１４】
一実施例において、前記した、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築するステップは、
取得した各前記実行すべきタスク間の依存関係に応じて、前記タスク有向非巡回グラフＤＡＧにおける並列ノードと順序ノードを決定し、
前記並列ノードと順序ノードに応じて、タスク有向非巡回グラフＤＡＧを構築することを含む。
【００１５】
一実施例において、前記した、前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクを前記プロセッサの複数のワークキューに割り当てるステップは、
前記タスク有向非巡回グラフＤＡＧをトポロジカルソートし、タスクのトポロジカルソートシーケンスを取得し、
各前記実行すべきタスクの予め設定された実行時間に応じて、取得した前記トポロジカルソートシーケンスをソートし、最長のトポロジカルソートシーケンスを取得し、
前記最長のトポロジカルソートシーケンスおよび各前記実行すべきタスク間の依存関係に応じて、各前記実行すべきタスクを前記ワークキューに割り当てることを含む。
【００１６】
一実施例において、前記した、前記タスク有向非巡回グラフＤＡＧにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御するステップは、
前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクに対して参照カウントを設定し、
依存される側の実行すべきタスクが実行された場合、依存する側の実行すべきタスクの参照カウントを変更し、
前記実行すべきタスクの参照カウントが予め設定された値に達すると、各前記ワークキューにおける参照カウントが予め設定された値に達した実行すべきタスクの実行を開始するように制御することを含む。
【００１７】
本願は、プロセッサによって実行されると上記方法に記載のステップを実現するコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体を提供している。
【００１８】
本願は、メモリと、マルチコアプロセッサと、メモリに記憶され、プロセッサ上で実行可能なコンピュータプログラムとを含み、前記マルチコアプロセッサは、分割アルゴリズムを実行可能で、前記マルチコアプロセッサが前記コンピュータプログラムを実行すると、上記方法に記載のステップが実現されるタスク並列処理システムを提供している。
【００１９】
本願は、メモリと、第１プロセッサと、第２プロセッサとを含み、前記第１プロセッサは、分割アルゴリズムを実行可能で、第２プロセッサは、マルチコアプロセッサであり、前記第１プロセッサと第２プロセッサが前記コンピュータプログラムを実行すると、上記方法に記載のステップが実現されるタスク並列処理システムをさらに提供している。
【００２０】
これに対応して、本願は、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築するＤＡＧグラフ構築ユニットと、
前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクをプロセッサの複数のワークキューに割り当てるタスク割り当てユニットと、
前記タスク有向非巡回グラフＤＡＧにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御するスケジューリング制御ユニットとを含むタスク並列処理装置をさらに提供している。
【００２１】
従来技術に比べて、本願で提供するタスク並列処理方法、記憶媒体、コンピュータ機器、装置およびシステムは以下の有利な効果を有する。
【００２２】
本願で提供するタスク並列処理方法、記憶媒体、コンピュータ機器、装置およびシステムにおいて、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築し、さらにタスク有向非巡回グラフＤＡＧに応じて、実行すべきタスクの割り当てと制御を行い、ワークキューの再スケジューリングによってマルチコアプロセッサのタスク並列を実現して、データ処理効率を向上させる。本実施例で提供するタスク並列処理方法の実施はｔｅｎｓｏｒｆｌｏｗまたはＣａｆｆｅなどのフレームワークプログラムに依存しないため、プログラムの設計時にインタフェースの互換性などの問題を考慮する必要がない。
【００２３】
本願は、スケジューリング対象の命令リストにおけるスケジューリング対象の命令セットを取得し、前記スケジューリング対象の命令セットに対してデータ依存分析を行い、前記スケジューリング対象の命令セットにおける各命令間のデータ依存関係を取得し、
各命令間の前記データ依存関係に応じて、命令スケジューリング過程において命令選択が行われる全ての選択ノードを取得し、
予め設定されたルールに従って、対応順位の前記選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定することを含む命令リストスケジューリング方法をさらに提供している。
【００２４】
一実施例において、前記した、予め設定されたルールに従って、対応順位の前記選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定するステップは、
前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、
現在アクセスしている前記選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしている選択ノードのソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定することを含み、
初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【００２５】
一実施例において、前記方法は、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、初期実行時間を現在アクセスしている選択ノードに対応する最長実行時間に更新することを含む。
【００２６】
一実施例において、前記した、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは、
予め設定されたアクセス期間内に選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、
現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしているノードに対応するソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定することを含み、
初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【００２７】
一実施例において、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短くなければ、スケジューリング対象の命令リストにおける命令シーケンスをスケジューリング後の命令リストにおける命令シーケンスとする。
【００２８】
一実施例において、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは、
ランダム優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得することを含む。
【００２９】
一実施例において、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは、
幅優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得することを含む。
【００３０】
一実施例において、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは、
深さ優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得することを含む。
【００３１】
一実施例において、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは、
幅優先またはランダム優先のルールに従って予め設定された順位よりも小さい前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得し、
深さ優先のルールに従って予め設定された順位よりも小さくない前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得することを含む。
【００３２】
一実施例において、前記した、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは、
現在アクセスしている選択ノードに対応する最短実行時間を取得し、
現在アクセスしている選択ノードに対応する最短実行時間が初期実行時間よりも長ければ、現在アクセスしている選択ノードに関連付けられた選択ノードへのアクセスを終了することを含み、
初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【００３３】
一実施例において、予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定するステップは、
命令の予め設定された優先度に従って現在順位に対応する全ての選択ノードを評価し、現在順位の各選択ノードの評価結果を取得し、前記評価結果に基づいて現在順位に対応する命令を決定することを含む。
【００３４】
一実施例において、前記方法は、現在選択ノードの具体的な内容および／またはタイプに応じて各命令の優先度を設定することを含む。
【００３５】
一実施例において、予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定するステップは、
現在順位の全ての選択ノードに対応する最短実行時間の長さに応じて、現在順位に対応する命令を決定することを含む。
【００３６】
命令スケジューリング装置であって、
スケジューリング対象の命令リストにおけるスケジューリング対象の命令セットを取得し、各命令間のデータ依存関係に応じて、命令スケジューリング過程における命令選択毎に対応する全ての選択ノードを取得する取得ユニットと、
スケジューリング対象の命令セットに対してデータ依存分析を行い、各命令間のデータ依存関係を取得するデータ依存分析ユニットと、
予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定する評価ユニットとを含む。
【００３７】
メモリと、プロセッサと、メモリに記憶され、プロセッサ上で実行可能なコンピュータプログラムとを含むコンピュータ機器であって、前記プロセッサは、上記方法に記載のステップを実行する。
【００３８】
コンピュータ読み取り可能な記憶媒体であって、プロセッサによって実行されると上記方法に記載のステップを実現するコンピュータプログラムを記憶した。
【００３９】
従来技術に比べて、本願で提供する命令リストスケジューリング方法、装置、コンピュータ機器および記憶媒体は以下の有利な効果を有する。
【００４０】
スケジューリング対象の命令のデータ依存関係を分析し、命令スケジューリング過程において行われる命令選択毎に対応する全ての選択ノードを取得し、さらに各順位に対応する選択ノードに対する評価結果に基づいてスケジューリング後の命令リストにおける各順位の命令を決定する。当該方法によれば、命令選択毎に、選択された命令が現在状態における最適結果であることを確保でき、これらの最適結果を用いて取得したスケジューリング後の命令リストにおいて、各命令間の配置がよりコンパクトになり、元の命令リストにおける命令シーケンスの実行時間の短縮化が図れる。
【００４１】
本願は、第１プロセッサと、第２プロセッサと、複数のオリジナルネットワークに対応するオフラインモデルおよび入力データと前記第１プロセッサ上で実行可能なランタイムシステムとを記憶したメモリと、を含み、
前記ランタイムシステムは、
前記メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得し、前記現在オリジナルネットワークに対応するオフラインモデルは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令およびオリジナルネットワークにおける各計算ノードのインタフェースデータを含むデータ処理装置と、
前記第２プロセッサを起動または停止するように制御する機器管理装置と、
前記現在オリジナルネットワークのオフラインモデルおよび入力データを実行するように前記第２プロセッサを制御するタスク実行装置とを含むコンピュータ機器をさらに提供している。
【００４２】
一実施例において、前記データ処理装置は、
前記メモリから各前記現在オリジナルネットワークに対応するオフラインモデルを取得し、前記現在オリジナルネットワークに対応するオフラインモデルを解析するオフラインモデルロードユニットと、
前記メモリから前記現在オリジナルネットワークに対応する入力データを取得する入力データロードユニットとを含む。
【００４３】
一実施例において、前記データ処理装置は、前記第２プロセッサが前記現在オリジナルネットワークに対応する入力データを実行できるように、前記入力データロードユニットが取得した前記現在オリジナルネットワークに対応する入力データに対して前処理を行い、前記第２プロセッサが取得した出力データを前記メモリに記憶する入力データ前処理ユニットをさらに含む。
【００４４】
一実施例において、前記コンピュータ機器は、前記ランタイムシステム上で実行可能なアプリケーションソフトウェアをさらに含み、
前記データ処理装置は、オフラインモデルＡＰＩおよび入力データＡＰＩを提供可能で、
前記機器管理装置は、第２プロセッサ駆動ＡＰＩを提供可能で、
前記タスク実行装置は、第２プロセッサ実行ＡＰＩを提供可能で、
前記アプリケーションソフトウェアは、前記オフラインモデルＡＰＩおよび入力データＡＰＩ、前記第２プロセッサ駆動ＡＰＩ、および前記第２プロセッサ実行ＡＰＩを呼び出し可能である。
【００４５】
一実施例において、前記第２プロセッサの数は複数であるか、または前記第２プロセッサは複数の処理ユニットを含み、
前記タスク実行装置は、さらにタスク割り当てＡＰＩを提供可能で、前記アプリケーションソフトウェアは、さらに、複数の前記第２プロセッサまたは前記第２プロセッサの複数の処理ユニットを制御するために前記タスク割り当てＡＰＩを呼び出し可能である。
【００４６】
本願は、前記コンピュータ機器に用いられるデータ処理方法であって、
メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得するようにデータ処理装置を制御し、前記現在オリジナルネットワークに対応するオフラインモデルは、前記現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および前記現在オリジナルネットワークにおける各計算ノードのインタフェースデータを含み、
機器管理装置によって、前記コンピュータ機器の第２プロセッサを起動するように制御し、
タスク実行装置によって、前記現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて前記現在オリジナルネットワークを実行して前記現在オリジナルネットワークの出力データを取得するように前記コンピュータ機器の第２プロセッサを制御し、
前記現在オリジナルネットワークの出力データを前記メモリに記憶するように前記データ処理装置を制御することを含むデータ処理方法をさらに提供している。
【００４７】
一実施例において、前記方法は、
前記現在オリジナルネットワークに対応するオフラインモデルのロードの進行状況をリアルタイムに取得し、
前記現在オリジナルネットワークに対応するオフラインモデルのロードの進行状況が第１プリセット割合以上であれば、前記コンピュータ機器の第２プロセッサを起動するように制御する前記ステップを実行することをさらに含む。
【００４８】
一実施例において、前記方法は、前記メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得するステップの前に、
前記現在オリジナルネットワークに対応するオフラインモデルに対して解析および前処理を行い、
前記現在オリジナルネットワークに対応する入力データに対して前処理を行うことをさらに含む。
【００４９】
また、本願は、前記コンピュータ機器に用いられるデータ処理方法であって、
オフラインモデルＡＰＩを呼び出し、現在オリジナルネットワークに対応するオフラインモデルを取得し、前記現在オリジナルネットワークに対応するオフラインモデルは、前記現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および前記現在オリジナルネットワークにおける各計算ノードのインタフェースデータを含み、
入力データＡＰＩを呼び出し、前記現在オリジナルネットワークの入力データを取得し、
第２プロセッサ駆動ＡＰＩを呼び出し、前記コンピュータ機器における第２プロセッサを起動するように制御し、
第２プロセッサ実行ＡＰＩを呼び出し、前記現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて前記現在オリジナルネットワークの出力データを取得するように前記第２プロセッサを制御し、
第２プロセッサ駆動ＡＰＩを呼び出し、第２プロセッサを停止するように制御することを含むデータ処理方法をさらに提供している。
【００５０】
また、本願は、１つまたは複数のプロセッサによって実行されると上記のいずれか１項に記載の方法のステップを実現するコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体をさらに提供している。
【００５１】
上記のコンピュータ機器、データ処理方法および記憶媒体によれば、データ処理装置によって、メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを直接取得することができ、当該コンピュータ機器の第２プロセッサは、取得したオリジナルネットワークのオフラインモデルおよび入力データに基づいて当該現在オリジナルネットワークを実行して、現在オリジナルネットワークの出力データを取得することができる。各オリジナルネットワークに対応するオフラインモデルは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令およびオリジナルネットワークにおける各計算ノードのインタフェースデータのみを含むので、オリジナルネットワークのオフラインモデルのデータ量は当該オリジナルネットワークのデータ量よりも遥かに小さい。これにより、コンピュータ機器上で当該現在オリジナルネットワークに対応するオフラインモデル（ライト級）を実行することで、コンピュータ機器によるヘビー級のデータのニューラルネットワークデータに対する処理過程を実現することができる。また、当該コンピュータ機器上で当該現在オリジナルネットワークに対応するオフラインモデルを直接実行することにより、現在オリジナルネットワークにおける各計算ノードに対するコンパイルなどの処理操作が不要となり、当該コンピュータ機器の処理速度および効率を向上させることができる。
【００５２】
本願は、コンピュータ機器であって、第１プロセッサ、第２プロセッサ、第１メモリおよび第２メモリを含み、前記第１メモリには、複数のオリジナルネットワークに対応するオフラインモデルおよび入力データと、前記第１プロセッサ上で実行可能なランタイムシステムとが記憶され、前記第２メモリには、前記第１プロセッサまたは前記第２プロセッサ上で実行可能なオペレーティングシステムが記憶されており、
前記ランタイムシステムは、トラステッド実行環境に基づいて構築されたセキュアなランタイムシステムであり、前記第１メモリはセキュア記憶媒体であり、前記ランタイムシステムは、前記第１プロセッサ上で実行されると、前記第１メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得し、前記第２プロセッサが前記現在オリジナルネットワークに対応するオフラインモデルを実行するように制御することができ、
前記現在オリジナルネットワークに対応するオフラインモデルは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および前記オリジナルネットワークにおける各計算ノードのインタフェースデータを含むコンピュータ機器をさらに提供している。
【００５３】
一実施例において、前記ランタイムシステムは、
前記第１メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得するためのオフラインモデルＡＰＩおよび入力データＡＰＩを提供可能なデータ処理装置と、
前記第２プロセッサを起動または停止するように制御するための第２プロセッサ駆動ＡＰＩを提供可能な機器管理装置と、
前記現在オリジナルネットワークのオフラインモデルおよび入力データを実行するように前記第２プロセッサを制御するための第２プロセッサ実行ＡＰＩを提供可能なタスク実行装置とを含む。
【００５４】
一実施例において、前記データ処理装置は、
前記第１メモリから各前記現在オリジナルネットワークに対応するオフラインモデルを取得し、前記現在オリジナルネットワークに対応するオフラインモデルを解析するためのオフラインモデルＡＰＩを提供可能なオフラインモデルロードユニットと、
前記第１メモリから現在オリジナルネットワークに対応する入力データを取得するための入力データＡＰＩを提供可能な入力データロードユニットとを含む。
【００５５】
一実施例において、前記データ処理装置は、前記第２プロセッサが前記現在オリジナルネットワークの入力データを実行できるように、前記現在オリジナルネットワークの入力データに対して前処理を行い、前記第２プロセッサが取得した出力データを前記第１メモリに記憶するためのデータ前処理ＡＰＩを提供可能な入力データ前処理ユニットをさらに含む。
【００５６】
一実施例において、前記第２プロセッサの数は複数であるか、または前記第２プロセッサは複数の処理ユニットを含み、
前記タスク実行装置は、さらに、複数の前記第２プロセッサまたは前記第２プロセッサの複数の処理ユニットを制御するためのタスク割り当てＡＰＩを提供可能である。
【００５７】
一実施例において、前記コンピュータ機器は、前記ランタイムシステム上で実行可能なセキュアなアプリケーションソフトウェアをさらに含み、前記アプリケーションソフトウェアは、前記オフラインモデルＡＰＩおよび入力データＡＰＩ、前記第２プロセッサ駆動ＡＰＩ、および前記第２プロセッサ実行ＡＰＩを呼び出し可能である。
【００５８】
一実施例において、前記第１メモリと前記第２メモリとは、物理的に互いに独立して設けられるか、または、前記第１メモリと前記第２メモリは、一体に集積され、かつ論理的に互いに独立して設けられる。
【００５９】
本願は、前記コンピュータ機器に用いられるデータ処理方法であって、
第１メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得し、前記現在オリジナルネットワークに対応するオフラインモデルは、前記現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および前記現在オリジナルネットワークにおける各計算ノードのインタフェースデータを含み、
前記コンピュータ機器の第２プロセッサを起動するように制御し、
前記現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて前記現在オリジナルネットワークを実行して前記現在オリジナルネットワークの出力データを取得するように前記コンピュータ機器の第２プロセッサを制御し、
前記現在オリジナルネットワークの出力データを前記第１メモリに記憶することを含むデータ処理方法をさらに提供している。
【００６０】
本願は、前記コンピュータ機器に用いられるデータ処理方法であって、
オフラインモデルＡＰＩを呼び出し、第１メモリから現在オリジナルネットワークに対応するオフラインモデルを取得し、前記現在オリジナルネットワークに対応するオフラインモデルは、前記現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および前記現在オリジナルネットワークにおける各計算ノードのインタフェースデータを含み、
入力データＡＰＩを呼び出し、前記現在オリジナルネットワークの入力データを取得し、
第２プロセッサ駆動ＡＰＩを呼び出し、前記コンピュータ機器における第２プロセッサを起動するように制御し、
第２プロセッサ実行ＡＰＩを呼び出し、前記現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて前記現在オリジナルネットワークの出力データを取得するように前記第２プロセッサを制御し、
第２プロセッサ駆動ＡＰＩを呼び出し、第２プロセッサを停止するように制御することを含むデータ処理方法をさらに提供している。
【００６１】
一実施例において、前記方法は、
データ前処理ＡＰＩを呼び出し、前記現在オリジナルネットワークの出力データを前記第１メモリに記憶することをさらに含む。
【００６２】
一実施例において、前記方法は、前記した、入力データＡＰＩを呼び出し、前記現在オリジナルネットワークの入力データを取得するステップの後に、
前記第２プロセッサが前記入力データを実行できるように、データ前処理ＡＰＩを呼び出し、取得した前記現在オリジナルネットワークの入力データに対して前処理を行うことをさらに含む。
【００６３】
また、本願は、１つまたは複数のプロセッサによって実行されると上記のいずれか１項に記載の方法のステップを実現するコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体をさらに提供している。
【００６４】
上記のコンピュータ機器、データ処理方法および記憶媒体によれば、ランタイムシステムのデータ処理装置によって、第１メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを直接取得することができ、コンピュータ機器の第２プロセッサは、取得したオリジナルネットワークのオフラインモデルおよび入力データに基づいて当該現在オリジナルネットワークを実行する。現在オリジナルネットワークのオフラインモデルには、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータなどの必要なネットワーク構成情報のみが記憶されている。このため、当該現在オリジナルネットワークのオフラインモデルのデータ量は当該現在オリジナルネットワークのデータ量よりも遥かに小さい。これにより、現在オリジナルネットワークのオフラインモデルを実行することで、ＴＥＥなどのトラステッド実行環境に基づいて構築されたセキュアなランタイムシステムによるニューラルネットワークなどのヘビー級のデータに対する処理過程を実現することができ、ニューラルネットワークの適用範囲が広くなる。また、当該コンピュータ機器上で当該オリジナルネットワークに対応するオフラインモデルを直接実行することにより、オリジナルネットワークにおける各計算ノードに対するコンパイルなどの処理操作が不要となり、当該コンピュータ機器の処理速度および効率を向上させることができる。
【図面の簡単な説明】
【００６５】
【図１】図１は、一実施例で提供するタスク並列処理システムの構成模式図である。
【図２】図２は、一実施例で提供するタスク並列処理システムの構成模式図である。
【図３】図３は、一実施例で提供するタスク並列処理方法のステップのフローチャートである。
【図４】図４は、一実施例で提供するモデル無しの操作要求の入力データと出力データを分割する模式図である。
【図５】図５は、一実施例で提供するニューラルネットワークモデルの畳み込み操作（ｃｏｎｖ）の入力出力の模式図である。
【図６】図６は、一実施例で提供するｃｏｎｖモデルを分割する模式図である。
【図７】図７は、一実施例で提供するタスク並列処理方法のステップのフローチャートである。
【図８】図８は、一実施例において構築されたタスク有向非巡回グラフＤＡＧである。
【図９】図９は、一実施例における実行すべきタスクの割り当て結果の模式図である。
【図１０】図１０は、一実施例で提供するタスク並列処理方法のステップのフローチャートである。
【図１１】図１１は、一実施例において構築されたタスク有向非巡回グラフＤＡＧである。
【図１２】図１２は、一実施例における実行すべきタスクの割り当て結果の模式図である。
【図１３】図１３は、一実施例で提供するタスク並列処理装置の構成模式図である。
【図１４】図１４は、一実施例で提供するコンピュータシステムの構成模式図である。
【図１５】図１５は、一実施例における命令リストスケジューリング方法のステップのフローチャートである。
【図１６】図１６は、一実施例において取得したスケジューリング対象の命令のデータ依存関係図である。
【図１７】図１７は、一実施例で取得した選択ノードの関連図である。
【図１８】図１８は、一実施例で提供する命令リストスケジューリング装置の構成模式図である。
【図１９】図１９は、一実施例で提供するコンピュータ機器の内部構成図である。
【図２０】図２０は、一実施例におけるコンピュータ機器の構成ブロック図である。
【図２１】図２１は、図２０における第１プロセッサの一実施例の構成ブロック図である。
【図２２】図２２は、図２０におけるランタイムシステムの一実施例の構成ブロック図である。
【図２３】図２３は、図２０におけるランタイムシステムの別の実施例の構成ブロック図である。
【図２４】図２４は、図２０におけるコンピュータ機器の一実施例のデータ処理方法のフローチャートである。
【図２５】図２５は、図２０におけるコンピュータ機器の別の実施例のデータ処理方法のフローチャートである。
【図２６】図２６は、一実施例のオフラインモデル生成方法のフローチャートである。
【図２７】図２７は、別の実施例のオフラインモデル生成方法のフローチャートである。
【図２８】図２８は、一実施例のニューラルネットワークのネットワーク構成図である。
【図２９】図２９は、図２８におけるニューラルネットワークのオフラインモデルの生成過程の模式図である。
【図３０】図３０は、別の実施例におけるコンピュータ機器の構成ブロック図である。
【図３１】図３１は、図３０におけるコンピュータ機器の一実施例のデータ処理方法のフローチャートである。
【図３２】図３２は、図３０におけるコンピュータ機器の他の実施例のデータ処理方法のフローチャートである。
【発明を実施するための形態】
【００６６】
本願の目的、技術的手段および技術効果がより明確になるように、以下、図面を参照しながら本願の具体的な実施例について説明する。本願に記載された具体的な実施例は、本願を限定するものではなく、本願を説明するためのものに過ぎないことを理解すべきである。なお、本願における実施例および実施例における特徴は、矛盾しない限り、互いに組み合わせることができる。本実施例における「第１」、「第２」などは、記載された対象を区別するためのものに過ぎず、順序または技術的意味が一切ないことは明らかである。
【００６７】
図１は、本願の実施例で提供するタスク並列処理システム６００（区別の便宜上、以下、第１タスク並列処理システムという）の構成模式図を示す。前記プロセッサシステムは、プロセッサ６２０と、プロセッサ６２０により実行可能な命令を記憶したメモリ６１０とを含み、プロセッサ６２０は、それぞれ内部バスを介して通信し、異なるタスクを実行可能な複数のプロセッサコアを含む。プロセッサ６２０のプロセッサコアは、分割アルゴリズムを実行することができる。
【００６８】
図２は、本願の実施例で提供する別のタスク並列処理システム７００（区別の便宜上、以下、第２タスク並列処理システムという）の構成模式図を示す。当該タスク並列処理システムは、第１プロセッサ７１０と、第２プロセッサ７２０と、メモリ７３０とを含む。メモリ７３０には、第１プロセッサ７１０および／または第２プロセッサ７２０により実行可能な命令が記憶されている。第１プロセッサ７１０のプロセッサコアは、分割アルゴリズムを実行する能力を持つ必要があり、第２プロセッサ７２０は、分割アルゴリズムを実行する能力を持たなくてもよい。第１プロセッサ７１０と第２プロセッサ７２０のそれぞれのプロセッサコアは、内部バスを介して通信し、異なるタスクを実行する。第１プロセッサ７１０と第２プロセッサ７２０とは、バスを介して通信し、協働して作動する。１つの選択可能な実施形態として、第１プロセッサ７１０は、マルチコアプロセッサであってもよいし、シングルコアプロセッサであってもよい。第２プロセッサ７２０はマルチコアプロセッサであってもよい。
【００６９】
図３は、本願で提供するタスク並列処理方法のステップのフローチャートである。当該方法は、図１または図２に示すタスク並列処理システムに適用でき、下記ステップは命令として上記タスク並列処理システムのメモリに記憶されてもよく、当該タスク並列処理方法は以下のステップを含みうる。
【００７０】
ステップＳ３０１において、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築する。
【００７１】
本実施例における有向非巡回グラフＤＡＧは、実行すべきタスク間の駆動依存関係を示すものである。ＤＡＧ（Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ、有向非巡回グラフ）は、有向グラフの一種であり、イベント間の駆動依存関係を示し、タスク間のスケジューリングを管理するためによく用いられる。ＤＡＧのこれらの特性によれば、取得した実行すべきタスク間の論理関係をＤＡＧを用いて記述することができる。
【００７２】
実行すべきタスク間の依存関係とは、ある実行すべきタスクの実行は、他の実行タスクの実行結果に依存する必要があることをいう。例えば、Ａ命令の読み取りは、Ａ命令の書き込みという操作に依存する必要がある。
【００７３】
１つの選択可能な実施形態として、実行すべきタスクは、第１タスク並列処理システム６００におけるプロセッサ６２０のプロセッサコアが予め設定された分割アルゴリズムを実行して実行すべきプログラムを分割することによって得られる。
【００７４】
１つの選択可能な実施形態として、実行すべきタスクは、第２タスク並列処理システム７００における第１プロセッサ７１０のプロセッサコアが予め設定された分割アルゴリズムを実行して実行すべきプログラムを分割することによって得られる。
【００７５】
本実施ステップＳ３０１は、第１タスク並列処理システム６００におけるプロセッサ６２０のプロセッサコア、または第２タスク並列処理システム７００における第１プロセッサのプロセッサコアにより実行されてもよい。
【００７６】
ステップＳ３０２において、前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクを前記プロセッサの複数のワークキューに割り当てる。
【００７７】
第１タスク並列処理システム６００におけるプロセッサのプロセッサコア、または第２タスク並列処理システム７００におけるプロセッサコアは、いずれも１つまたは複数のワークキューを含みうる。
【００７８】
ワークキュー（ｗｏｒｋ  ｑｕｅｕｅ）は、タスクを遅延実行するメカニズムであり、入れられた実行すべきタスクを順次実行することができる。ワークキューにおける各実行すべきタスクの実行は１つのカーネルスレッドによって制御されるため、プロセッサシステムの割り込み制御メカニズムによってワークキューの制御スレッドを調整して、タスクの再スケジューリング、ひいてはスリープを実現することができる。
【００７９】
実行すべきタスクをワークキューに割り当てる場合、プログラムの実行時間を短縮するために、並列可能なタスクをできるだけ異なるワークキューに割り当てる。タスク有向非巡回グラフＤＡＧにおける並列ノードに関連付けられた下流の実行すべきタスクは一般的に並列可能な実行すべきタスクであるため、構築されたタスク有向非巡回グラフＤＡＧに応じて、実行すべきタスクの割り当てを行うことができる。
【００８０】
なお、本実施ステップＳ３０２は、第１タスク並列処理システム６００におけるプロセッサコアのいずれかにより実行されてもよいし、第２タスク並列処理システム７００におけるプロセッサコアのいずれかにより実行されてもよい。
【００８１】
ステップＳ３０３において、前記タスク有向非巡回グラフＤＡＧにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御する。
【００８２】
各ワークキューが独立して実行されるため、あるワークキューにおいて他のワークキューにおける実行すべきタスクの出力結果に依存する必要がある実行すべきタスクが存在する場合、実行すべきタスクをスケジューリングしなければ、実行エラーが発生する。よって、プログラムが正しい結果を出力するのを確保するために、タスク有向非巡回グラフＤＡＧにおける各前記実行すべきタスクの依存関係に応じて各ワークキューにおける各実行すべきタスクをスケジューリングして、各実行すべきタスクの実行を制御する必要がある。
【００８３】
なお、本実施ステップは、第１タスク並列処理システム６００におけるプロセッサコアのいずれかにより実行されてもよいし、第２タスク並列処理システム７００におけるプロセッサコアのいずれかにより実行されてもよい。本実施例で提供するタスク並列処理方法において、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築し、さらにタスク有向非巡回グラフＤＡＧに応じて、実行すべきタスクの割り当てと制御を行い、ワークキューの再スケジューリングによってマルチコアプロセッサのタスク並列を実現して、データ処理効率を向上させる。本実施例で提供するタスク並列処理方法の実施はｔｅｎｓｏｒｆｌｏｗまたはＣａｆｆｅなどのフレームワークプログラムに依存しないため、プログラムの設計時にインタフェースの互換性などの問題を考慮する必要がない。
【００８４】
一実施例において、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築するステップの前に以下のことを含む。
【００８５】
プログラムにおける操作ノードおよび／またはデータノードに応じてプログラムを分割して前記実行すべきタスクを取得する。実行されるプログラムは複数の操作要求（例えば、ｃｏｎｖ、ｐｏｏｌ、ａｃｔｉｖｅ、ａｄｄなど）を含み、各操作要求の間には操作ノードが存在する。よって、操作ノードに応じてプログラムを分割して実行すべきタスクを取得することができる。
【００８６】
ある実行されるプログラムに含まれる操作要求は、すべて順次実行される必要があるものである可能性がある。この場合、タスク並列の可能性を高くするために、実行されるプログラムのデータレベル（コードレベル）で分割を行うことが考えられ、また、プログラムにおけるデータノードに応じて分割を行うことも考えられる。
【００８７】
本実施ステップにおいて、第１タスク並列処理システム６００におけるプロセッサ６２０のプロセッサコア、または第２タスク並列処理システム７００における第１プロセッサ７１０のプロセッサコアにより予め設定された分割アルゴリズムを実行して、プログラムにおける操作ノードおよび／またはデータノードに応じて実行すべきプログラムを分割して実行すべきタスクを取得する必要がある。
【００８８】
なお、実行されるプログラムを分割する場合、操作ノードのみに応じて分割を行ってもよいし、直接にデータレベルでデータノードに応じて分割を行ってもよいし、この両者の組合わせで分割を行ってもよい。実行されるプログラムを細かく分割するほど、タスク並列の可能性も高くなるが、タスク並列時の調整制御の難しさも高くなる。このため、実行されるプログラムを分割する場合、実際の必要に応じて分割方法を選択する必要があり、これについて本願では限定しない。
【００８９】
一実施例において、第１タスク並列処理システム６００におけるプロセッサ６２０のプロセッサコア、または第２タスク並列処理システム７００における第１プロセッサ７１０のプロセッサコアがプログラムにおける操作ノードに応じてプログラムを分割する場合、１）プログラムがモデル無しの操作要求を含むケースと、２）プログラムがモデル有りの操作要求を含むケースとの２つのケースを含む。
【００９０】
ケース１）では、前記プログラムがモデル無しの操作要求（例えば、ｐｏｏｌ、ｂａｔｃｈｎｏｒｍ、Ｌｒｎ、ａｃｔｉｖｅ、ａｄｄなど）を含む場合、プログラムにおける操作ノードに応じてプログラムを分割して前記実行すべきタスクを取得するステップは以下のことを含む。
【００９１】
前記モデル無しの操作要求の入力データおよび／または出力データを分割して実行すべきタスクを取得する。
【００９２】
モデル無しの操作要求の入力データおよび／または出力データを分割する場合、予め設定されたルールに従ってデータのウィンドウ方向（ｈｅｉｇｈｔ  ｗｉｄｔｈ方向、ｈｗ方向）において前記入力データおよび／または出力データを分割して実行すべきタスクを取得することができる。
【００９３】
図４は、データのウィンドウ方向においてモデル無しの操作要求の入力データと出力データを分割する模式図を示す。この分割において、ウィンドウが位置する平面上で入力データと出力データを均等に分割することを予め設定されたルールとする。
【００９４】
出力データＹ＝入力データＸとし、ここで、Ｘ＝ｘ１＋ｘ２＋ｘ３＋ｘ４、Ｙ＝ｙ１＋ｙ２＋ｙ３＋ｙ４である。
【００９５】
なお、データのウィンドウ方向において入力データと出力データを均等に分割して実行すべきタスクを取得することは、本実施例で提供する、データのウィンドウ方向において入力データと出力データを分割する具体的な形態に過ぎない。実際の場合には、非均等分割によりデータのウィンドウ方向においてデータを分割するか、または異なる均等分割方法でデータのウィンドウ方向においてデータを分割してもよい。一定のルールに従って入力データと出力データを分割できれば本ステップの目的を達成でき、具体的にどのように分割するかについて、本願では限定しない。
【００９６】
なお、本願において、データのウィンドウ方向において入力データと出力データを分割することは、複数の実行すべきタスクを取得することを目的とし、入力データと出力データを分割すれば本ステップの目的を達成できる。よって、モデル無しの操作要求を分割して実行すべきタスクを取得する場合、入力データのみを分割してもよいし、出力データのみを分割してもよいし、入力データと出力データの両方を分割してもよい。上記のいずれの場合においても、本ステップの実施目的を達成でき、具体的にどのように分割するかについて、具体的な操作および実際の必要に応じて柔軟に選択可能である。
【００９７】
ケース２）では、前記プログラムがモデル有りの操作要求（例えば、ｃｏｎｖ、ｍｌｐなど）を含む場合、プログラムにおける操作ノードに応じてプログラムを分割して前記実行すべきタスクを取得するステップは以下のことを含む。
【００９８】
前記モデル有りの操作要求のモデルを分割するか、および／または前記モデルの入力データを分割して実行すべきタスクを取得する。
【００９９】
前記モデル有りの操作要求のモデルを分割する場合、モデルを分割して取得する各前記実行すべきタスクに対応する重みを予め設定する必要がある。さらに各前記重みを用いて前記実行すべきタスクの入力データと出力データとの対応関係を設定する。
【０１００】
前記モデル有りの操作要求のモデルを分割する場合、予め設定されたルールに従ってモデルのウィンドウ方向（ｈｅｉｇｈｔ  ｗｉｄｔｈ方向、ｈｗ方向）において前記モデル有りの操作のモデルを分割して実行すべきタスクを取得してもよいし、モデルのチャンネル方向（ｃｈａｎｎｅｌ方向、Ｃ方向）において前記モデル有りの操作のモデルを分割して実行すべきタスクを取得してもよいし、この両者の組み合わせで実行すべきタスクを取得してもよい。
【０１０１】
また、ｈｗ平面上でモデル有りの操作の入力データを分割して実行すべきタスクを取得してもよい。
【０１０２】
図５は、ニューラルネットワークモデルの畳み込み操作（ｃｏｎｖ）の入力出力の模式図を示す。図６は、チャンネル方向においてｃｏｎｖモデルを分割する模式図を示す。
【０１０３】
ｃｏｎｖモデルは、出力データＹ＝入力データＸに従って入力出力を行うとする。この場合、ｍｌｐ（Ｍｕｌｔｉ−Ｌａｙｅｒ  Ｐｅｒｃｅｐｔｒｏｎ、多層パーセプトロン）タスクをモデルのＣ方向において３つのサブタスクに分ける。入力データＸはｘ１、ｘ２、ｘ３に分割され、対応する出力データはｙ１、ｙ２、ｙ３である。
【０１０４】
ニューラルネットワーク自体の特殊な構造のため、分割された入力データは処理される他、対応する重みＳｉが乗じられて対応する出力データｙ１、ｙ２、ｙ３が取得される（ここで、ｉはＸ分割数である）。すなわち、ｙ１＝ｘ１＊Ｓ１＋ｘ２＊Ｓ２＋ｘ３＊Ｓ３、ｙ２＝ｘ１＊Ｓ４＋ｘ２＊Ｓ５＋ｘ３＊Ｓ６、ｙ３＝ｘ１＊Ｓ７＋ｘ２＊Ｓ８＋ｘ３＊Ｓ９である。最後に、ｙ１、ｙ２、ｙ３に対して演算処理を行うことによって出力データＹを取得することができる。
【０１０５】
ｈｗ平面上でモデル有りの操作の入力データを分割する方法は、ｈｗ平面上でモデル無しの操作要求の入力データを分割する方法に類似するため、ここで詳細な説明は省略する。
【０１０６】
なお、モデル有りの操作要求を分割する場合、モデルのＣ方向のみにおいて分割を行ってもよいし、モデルのｈｗ平面上のみにおいて分割を行ってもよいし、モデルのＣ方向とモデルのｈｗ平面上の両方において分割を行ってもよい。複数種類の分割方法はタスク並列の可能性を高くすることができ、理論的にはプログラムの実行時間を短縮することができるが、それに応じて実現の難しさも高くなる。また、実際の適用において、分割された実行すべきタスクを実行する場合、実際の実行時間は理論的な実行時間よりもやや長いため、どのようにモデル有りの操作要求を分割するかについては、さらに実際の場面に応じて選択する必要があり、本願では限定しない。
【０１０７】
上記２つのケースで提供する、実行すべきタスクを取得する方法を用いて取得される実行すべきタスクの並列の可能性が高く、構築されたタスク有向非巡回グラフＤＡＧにおいて並列ノードがより多くなり、さらに、実行すべきプログラムをより効率良く実行することができる。
【０１０８】
一実施例において、第１タスク並列処理システム６００または第２タスク並列処理システム７００のプロセッサコアが、取得した前記実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築することは以下のことを含む。
【０１０９】
取得した各実行すべきタスク間の依存関係に応じて、前記タスク有向非巡回グラフＤＡＧにおける並列ノードと順序ノードを決定する。
【０１１０】
そして、前記並列ノードと順序ノードに応じて、タスク有向非巡回グラフＤＡＧを構築する。
【０１１１】
取得した実行すべきタスクの間に依存関係がある場合もあれば依存関係がない場合もある。２つの実行すべきタスクの間に依存関係がない場合、２つの実行すべきタスクは一般的に、並列可能なタスクである。２つの実行すべきタスクの間に依存関係がある場合、２つの実行すべきタスクは一般的に、シリアルタスクである。よって、各実行すべきタスク間の依存関係に応じてタスク有向非巡回グラフＤＡＧにおける並列ノードと順序ノードを決定し、決定した異なるタイプのノードに応じて、各タスクをタスク有向非巡回グラフＤＡＧの対応位置に入れ、タスク有向非巡回グラフＤＡＧの構築を完成する。
【０１１２】
なお、実行すべきプログラムを分割して実行すべきタスクを取得する必要がある場合、タスク並列処理システムは、プログラムを分割して実行すべきタスクを取得するための、分割アルゴリズムを実行可能なプロセッサを少なくとも１つ含むことを確保する必要がある。
【０１１３】
一実施例において、第１タスク並列処理システム６００または第２タスク並列処理システム７００のプロセッサコアが、前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクを前記プロセッサの複数のワークキューに割り当てることは以下のステップを含む。
【０１１４】
ステップＳ２０２１において、タスク有向非巡回グラフＤＡＧをトポロジカルソートし、タスクのトポロジカルソートシーケンスを取得する。
【０１１５】
ステップＳ２０２２において、各前記実行すべきタスクの予め設定された実行時間に応じて、取得した前記トポロジカルソートシーケンスをソートし、最長のトポロジカルソートシーケンスを取得する。
【０１１６】
ステップＳ２０２３において、前記最長のトポロジカルソートシーケンスおよび各前記実行すべきタスク間の依存関係に応じて、各前記実行すべきタスクを前記ワークキューに割り当てる。
【０１１７】
本実施例において、プロセッサコアはタスクを割り当てる場合、タスクを分割アルゴリズムを実行する能力を持つプロセッサコアのワークキュー、例えば第１タスク並列プロセッサシステム６００におけるプロセッサ６２０のプロセッサコアのワークキューに割り当ててもよいし、タスクを分割アルゴリズムを実行する能力を持たないプロセッサコアのワークキュー、例えば第２タスク並列処理システム７００における第２プロセッサ７２０のプロセッサコアのワークキューに割り当ててもよい。プロセッサコアが割り当てられたタスクを実行できれば、並列の方法で実行すべきプログラムを実行するのを確保できる。実行すべきタスクを実行するプロセッサコアが分割アルゴリズムを実行する能力を持つか否かは、プログラムの実行に影響しないので、本願では限定しない。
【０１１８】
本実施例において、タスクのトポロジカルソートシーケンスの最長経路に応じて実行すべきタスクを割り当て、プログラムの実行時間を最適化することができる。すなわち、理論的には、最長のトポロジカルソートシーケンスにおけるタスクを実行する時間がプログラムの実行時間となり、これにより、実行すべきプログラムの実行が最短の時間で完了するのを確保できる。
【０１１９】
一実施例において、第１タスク並列処理システム６００または第２タスク並列処理システム７００のプロセッサコアが、前記タスク有向非巡回グラフＤＡＧにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を調整制御することは以下のステップを含む。
【０１２０】
ステップＳ３０３１において、前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクに対して参照カウントを設定する。
【０１２１】
ステップＳ３０３２において、依存される側の実行すべきタスクが実行された場合、依存する側の実行すべきタスクの参照カウントを変更する。
【０１２２】
ステップＳ３０３３において、前記実行すべきタスクの参照カウントが予め設定された値に達すると、各前記ワークキューにおける参照カウントが予め設定された値に達した実行すべきタスクを実行するように制御する。
【０１２３】
図７は、タスク並列処理方法のステップのフローチャートを示す。当該方法は以下のステップを含む。
【０１２４】
ステップＳ７０１において、実行すべきプログラムにおける操作ノードに応じて、実行されるプログラムを分割して実行すべきタスクＡ３、Ｂ２、Ｃ２、Ｄ４、Ｅ５、Ｆ１を取得し、実行すべきタスクＡ３、Ｂ２、Ｃ２、Ｄ４、Ｅ５、Ｆ１間の依存関係に応じて、図８に示すようなタスク有向非巡回グラフＤＡＧを構築する。
【０１２５】
ステップＳ７０２において、図８に示すタスク有向非巡回グラフＤＡＧに応じて、実行すべきタスクＡ３、Ｂ２、Ｃ２、Ｄ４、Ｅ５、Ｆ１を前記ワークキュー１、ワークキュー２、ワークキュー３に割り当てる。割り当て結果は図９に示すとおりである。
【０１２６】
ステップＳ７０３において、タスク有向非巡回グラフＤＡＧに応じて、実行すべきタスクＡ３、Ｂ２、Ｃ２、Ｄ４、Ｅ５に対して参照カウントを設定し、設定した参照カウントに応じてＡ３、Ｂ２、Ｃ２、Ｄ４、Ｅ５、Ｆ１の実行を制御する。
【０１２７】
本実施例において、参照カウントが０になると、ワークキューにおける実行すべきタスクの実行を開始するとする。例えば、実行すべきタスクＡ３の参照カウントが０である場合、実行すべきタスクＡ３はワークキューに入れられると直接実行可能である。実行すべきタスクＥ５は実行すべきタスクＢ２と実行すべきタスクＣ２の実行結果に依存する必要があるので、実行すべきタスクＥ５の参照カウントを２に設定する。実行すべきタスクＢ２の実行が完了すると、実行すべきタスクＥ５の参照カウントを１に調整し、実行すべきタスクＣ２の実行が完了すると、実行すべきタスクＥ５の参照カウントをさらに０に調整し、参照カウントが０になると、実行すべきタスクＥ５は実行を開始できる。実行すべきタスクＦ１の実行についても同様に制御し、最終、実行すべきプログラムの実行を完了する。
【０１２８】
図１０は、タスク並列処理方法のステップのフローチャートを示す。当該方法は以下のステップを含む。
【０１２９】
ステップＳ６００１において、下記の実行すべきプログラムにおけるデータノードを取得し、実行すべきプログラムを分割して実行すべきタスクを取得し、実行すべきタスク間の依存関係に応じて、図１１に示すようなタスク有向非巡回グラフＤＡＧを構築する。
Ｂ＝ｃｏｎｖ（Ａ）；
Ｃ＝ｐｏｏｌ（Ｂ）；
Ｄ＝ａｃｔｉｖｅ（Ｂ）；
Ｅ＝ａｄｄ（Ｃ，Ｄ）。
ここで、Ａ、Ｂ、Ｃ、Ｄ、Ｅはデータノードであり、ｃｏｎｖ、ｐｏｏｌ、ａｃｔｉｖｅ、ａｄｄは操作ノードである。
【０１３０】
本実施例のタスク有向非巡回グラフＤＡＧにおいて、データＥの取得は、データＣとデータＤに対する処理結果に依存し、データＣとデータＤの取得は、データＢに対する処理結果に依存し、データＢの取得は、データＡに対する処理結果に依存する。
【０１３１】
ステップＳ６００２において、図１１に示すタスク有向非巡回グラフＤＡＧに応じて、各実行すべきタスクをワークキュー１’とワークキュー２’に割り当てる。割り当て結果は図１２に示すとおりである。
【０１３２】
ステップＳ６００３において、タスク有向非巡回グラフＤＡＧに応じて、実行すべきタスクに対して参照カウントを設定し、設定した参照カウントに応じて各実行すべきタスクの実行を制御する。
【０１３３】
本実施例において、参照カウントの値が０になると、ワークキューにおける実行すべきタスクの実行を開始し、さもなければ開始しないとする。参照されるタスクが実行されると、タスクの参照カウントが１だけ減算され、０になって初めて当該タスクが実行可能になる。初期設定では、実行すべきタスクＢ＝ｃｏｎｖ（Ａ）の参照カウントを０、実行すべきタスクＣ＝ｐｏｏｌ（Ｂ）の参照カウントを１、実行すべきタスクＤ＝ａｃｔｉｖｅ（Ｂ）の参照カウントを１、実行すべきタスクＥ＝ａｄｄ（Ｃ，Ｄ）の参照カウントを２とする。実行すべきタスクＢ＝ｃｏｎｖ（Ａ）の実行が完了すると、実行すべきタスクＣ＝ｐｏｏｌ（Ｂ）と実行すべきタスクＤ＝ａｃｔｉｖｅ（Ｂ）の参照カウントはいずれも１だけ減算されて０になり、このときに、実行すべきタスクＣ＝ｐｏｏｌ（Ｂ）と実行すべきタスクＤ＝ａｃｔｉｖｅ（Ｂ）の実行を開始する。同様に、タスクＣ＝ｐｏｏｌ（Ｂ）とタスクＤ＝ａｃｔｉｖｅ（Ｂ）の実行が完了すると、実行タスクＥ＝ａｄｄ（Ｃ，Ｄ）の参照カウントが０になり、このときに、実行すべきタスクＥの実行を開始し、実行すべきタスクＥの実行完了は実行すべきプログラムの実行完了を意味する。
【０１３４】
同様の出願思想に基づいて、本願は、プロセッサによって実行されると上記実施例に記載の方法のステップを実現するコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体を提供している。
【０１３５】
同様の出願着想に基づいて、本願は、図１３に示すように、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築するＤＡＧグラフ構築ユニット４１０と、前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクをプロセッサの複数のワークキューに割り当てるタスク割り当てユニット４２０と、前記タスク有向非巡回グラフＤＡＧにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御するスケジューリング制御ユニット４３０とを含むタスク並列処理装置を提供している。
【０１３６】
一実施例において、ＤＡＧグラフ構築ユニット４１０は、プログラムにおける操作ノードおよび／またはデータノードに応じてプログラムを分割して前記実行すべきタスクを取得する。
【０１３７】
一実施例において、ＤＡＧグラフ構築ユニット４１０は、前記プログラムがモデル有りの操作要求を含む場合、前記モデル有りの操作要求のモデルを分割するか、および／または前記モデルの入力データを分割して実行すべきタスクを取得する。
【０１３８】
一実施例において、ＤＡＧグラフ構築ユニット４１０は、前記プログラムがモデル無しの操作要求を含む場合、前記モデル無しの操作要求の入力データおよび／または出力データを分割して実行すべきタスクを取得する。
【０１３９】
一実施例において、前記ＤＡＧグラフ構築ユニット４１０は、取得した実行すべきタスク間の依存関係に応じて、前記タスク有向非巡回グラフＤＡＧにおける並列ノードと順序ノードを決定し、前記並列ノードと順序ノードに応じて、タスク有向非巡回グラフＤＡＧを構築する。
【０１４０】
一実施例において、タスク割り当てユニット４２０は、前記タスク有向非巡回グラフＤＡＧをトポロジカルソートし、タスクのトポロジカルソートシーケンスを取得し、各前記実行すべきタスクの予め設定された実行時間に応じて、取得した前記トポロジカルソートシーケンスをソートし、最長のトポロジカルソートシーケンスを取得し、前記最長のトポロジカルソートシーケンスおよび各前記実行すべきタスク間の依存関係に応じて、各前記実行すべきタスクを前記ワークキューに割り当てる。
【０１４１】
一実施例において、スケジューリング制御ユニット４３０は、前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクに対して参照カウントを設定し、依存される側の実行すべきタスクが実行された場合、依存する側の実行すべきタスクの参照カウントを変更し、前記実行すべきタスクの参照カウントが予め設定された値に達すると、各前記ワークキューにおける参照カウントが予め設定された値に達した実行すべきタスクの実行を開始するように制御する。
【０１４２】
以上の実施形態についての説明によって、当業者は、ハードウェア、またはソフトウェアと必要な汎用ハードウェアプラットフォームとの組み合わせによって本願を実現できることを明確に理解できる。このような理解に基づいて、本願の技術的手段は、ソフトウェア製品の形式で具現化されてもよく、当該ソフトウェア製品は、不揮発性記憶媒体（ＣＤ−ＲＯＭ、ＵＳＢフラッシュディスク、モバイルハードディスクなどであってもよい）に記憶されてもよく、１台のコンピュータ機器（パーソナルコンピュータ、サーバ、またはネットワーク装置などであってもよい）に本願の各実施形態の方法を実行させるための複数の命令を含む。
【０１４３】
上記処理システムの第１タスク並列処理システムにおけるプロセッサまたは第２タスク並列処理システムにおける第１プロセッサのプロセッサコアは、対応する命令リストに応じて異なる命令を並列処理することができ、当該コンピュータシステムの処理効率を向上させる。しかし、上記コンピュータシステムの処理システムにおいて、各プロセッサコアに対応する命令リストにおける命令の順序は合理的でない可能性があり、例えば、命令リストにおける命令を可能な限り並列させたものではない。このため、処理システムの処理効率を向上させることができず、または効率向上の効果が良くない。よって、どのように命令リストスケジューリング方法、装置、コンピュータ機器および記憶媒体を提供して命令リストにおける命令の順序を調整することで、命令リストにおける各命令間の配置をよりコンパクトにして、命令リストの実行時間を短縮するかは、解決すべき課題となっている。
【０１４４】
図１４に示すように、一実施例のコンピュータシステム３００は、マルチコアプロセッサコンピュータシステム（Ｍｕｌｔｉ−ｃｏｒｅ  ｐｒｏｃｅｓｓｏｒ  Ｃｏｍｐｕｔｉｎｇ  Ｓｙｓｔｅｍ）、ヘテロジニアスコンピュータシステム（Ｈｅｔｅｒｏｇｅｎｅｏｕｓ  Ｃｏｍｐｕｔｉｎｇ  Ｓｙｓｔｅｍ）などの、複数のプロセッサを含むマルチプロセッサコンピュータシステム（Ｍｕｌｔｉ−ｐｒｏｃｅｓｓｏｒ  Ｃｏｍｐｕｔｉｎｇ  Ｓｙｓｔｅｍ）であってもよい。選択可能な形態として、当該コンピュータシステムは具体的に命令リストスケジューリング装置３１０、複数の第１プロセッサ３２０およびメモリ３３０を含んでもよく、複数の第１プロセッサ３２０は同時に命令リストスケジューリング装置３１０に接続されてもよく、命令リストスケジューリング装置３１０は複数の第１プロセッサ３２０の命令リストの再スケジューリングに用いられてもよい。選択可能な形態として、当該命令リストスケジューリング装置３１０は第２プロセッサを含んでもよい。選択可能な形態として、当該第２プロセッサは取得ユニット、データ依存分析ユニット、評価ユニット、演算ユニットおよび制御ユニットなどを含んでもよく、当該取得ユニットはＩＯ（Ｉｎｐｕｔ入力／Ｏｕｔｐｕｔ出力）インタフェースなどのハードウェアユニットであってもよく、演算ユニットおよび制御ユニットはいずれもハードウェアユニットである。
【０１４５】
複数の第１プロセッサ３２０は、当該コンピュータシステムの処理効率を向上させるために、命令リストに応じて異なる命令を並列処理することができる。選択可能な形態として、命令リストは１つまたは複数の命令を含んでもよく、各命令はいずれもリソースへの参照操作を１組含み、命令の読み取りまたは実行によって、当該命令の参照するリソースを把握することができる。すなわち、第１プロセッサなどは、当該命令を実行するときに、当該命令の参照するリソースを呼び出して特定の操作を実現することができる。例えば、当該命令は、ロード命令（Ｌｏａｄ）、計算命令（ｃｏｍｐｕｔｉｎｇ）またはストア命令（ｓｔｏｒｅ）などであってもよく、もちろん、当該命令はニューラルネットワークのＮ層計算であってもよく、Ｎ＞０であり、Ｎは整数であってもよいし、非整数であってもよい。
【０１４６】
さらに、当該命令リストにおける各命令は実行順序に従って並べられ、当該命令リストにおける各命令が参照するリソースは、仮想メモリオブジェクトであってもよいし、物理メモリオブジェクトであってもよい。当該仮想メモリオブジェクトは、メモリブロック、レジスタ、またはその他の、データを記憶可能な記憶装置のソフトウェアロジック上の仮想記憶空間であってもよい。本実施例における命令スケジューリング過程は、元の命令リストのセマンティクスを変更しないことを確保するという前提をもとに、命令リストにおける命令を再ソートする過程である。これにより、当該命令リストにおける各命令間の配置をよりコンパクトにすることができ、命令リストの実行時間を短縮してシステムの処理効率を向上させる。
【０１４７】
例えば、命令リストはＮ個の命令を含む。ここで、Ｎ≧１で、Ｎは正の整数であり、Ｎ個の命令は実行タイミングに従って１番目の命令、２番目の命令、・・・、Ｎ番目の命令と表記される。当該命令リストに対するスケジューリング過程は、上記Ｎ個の命令を再ソートする過程である。
【０１４８】
具体的には、命令リストをスケジューリングする場合、命令リストスケジューリング装置３１０は、まず、スケジューリング対象の命令リストにおける各命令のデータ依存関係を取得してよい。選択可能な形態において、当該データ依存関係として、ＲＡＷ（Ｒｅａｄ  Ａｆｔｅｒ  Ｗｒｉｔｅ、リードアフターライト）／ＷＡＲ（Ｗｒｉｔｅ  Ａｆｔｅｒ  Ｒｅａｄ、ライトアフターリード）／ＷＡＷ（Ｗｒｉｔｅ  Ａｆｔｅｒ  Ｗｒｉｔｅ、ライトアフターライト）を含んでもよい。選択可能な形態として、当該データ依存関係は、データ依存グラフＤＤＧ（Ｄａｔａ  Ｄｅｐｅｎｄｅｎｃｅ  Ｇｒａｐｈ、データ依存グラフ）で記述することができる。さらに、命令リストスケジューリング装置３１０の第２プロセッサは、その取得ユニットによってスケジューリング対象の命令リストを取得し、そのデータ依存分析ユニットによってスケジューリング対象の命令リストにおける命令をデータ依存分析して上記命令間のデータ依存関係を取得してよい。具体的には、データ依存分析ユニットは、スケジューリング対象の命令リストにおける各命令に対してリソース走査追跡を行い、さらに各命令間のデータ依存関係を分析してよい。本実施例において、命令間のデータ依存とは、現在の命令の実行は他の命令の実行結果に依存する必要があるか否かをいう。簡単に例を挙げて説明すると、「書き込み命令Ｂが書き込んだデータを読み取る」命令Ａが存在すれば、当該命令Ａは命令Ｂの実行結果に依存する。その後、取得ユニットは、取得した各命令間のデータ依存関係に応じて、命令スケジューリング過程において命令選択が行われる全ての選択ノードを取得してよい。
【０１４９】
その後、命令リストスケジューリング装置は評価ユニットによって、予め設定されたルールに従って、対応順位の全ての選択ノードからスケジューリング後の命令リストにおける各順位の命令を決定する。選択可能な形態として、第２プロセッサは、その評価ユニットによって現在順位に対応する選択ノードを評価し、現在順位の各選択ノードの評価結果を取得し、評価結果に基づいて現在順位に対応する命令を決定してもよい。各選択ノードは、当該選択ノードに対応するソート済み命令とスケジューリング対象の命令セットを記録する。選択可能な形態として、評価ユニットは、各命令の優先度に従って現在順位に対応する選択ノードを評価する。選択可能な形態として、第２プロセッサは現在選択ノードの具体的な内容および／またはタイプに応じて命令の優先度を設定してもよい。
【０１５０】
選択可能な形態として、命令リストスケジューリング装置３１０は、命令スケジューリングを行うときに、スケジューリング対象の命令リストにおける命令に対応する第１プロセッサを調整してもよい。例えば、当該スケジューリング対象の命令に対応する第１プロセッサは、命令のタイプまたは当該スケジューリング対象の命令の具体的な内容に応じて決定されてもよい。
【０１５１】
図１５は、本願の一実施例の命令リストスケジューリング方法のステップのフローチャートであり、当該命令リストスケジューリング方法は図１４に示すコンピュータシステムに適用できる。上記コンピュータシステムは、メモリ３３０および複数の第１プロセッサ３２０を含みうる。当該命令リストスケジューリング方法は、上記コンピュータシステムにおける複数の第１プロセッサに対応する命令リストにおける命令の再スケジューリングを実現して、コンピュータの処理効率を向上させるためのものである。具体的には、上記方法は以下のステップを含みうる。
【０１５２】
ステップＳ１００において、スケジューリング対象の命令リストにおけるスケジューリング対象の命令セットを取得し、スケジューリング対象の命令セットに対してデータ依存分析を行い、前記スケジューリング対象の命令セットにおける各命令間のデータ依存関係を取得する。
【０１５３】
具体的には、第２プロセッサは、その取得ユニットによってスケジューリング対象の命令リストのスケジューリング対象の命令セットを取得し、データ依存分析ユニットによって上記命令のデータ依存関係を取得することができる。本実施例におけるスケジューリング対象の命令セットは、スケジューリング対象の命令リストにおける複数のスケジューリング対象の命令からなる。選択可能な形態として、スケジューリング対象の命令セットは、スケジューリング対象の命令リストにおけるセマンティクス無しの命令（例えば同期命令など）を含まない。さらに、取得ユニットがスケジューリング対象の命令リストのスケジューリング対象の命令セットを取得するステップは、スケジューリング対象の命令リストを取得し、スケジューリング対象の命令リストにおけるセマンティクス無しの命令を削除して、スケジューリング対象の命令セットを取得することを含む。
【０１５４】
例えば、取得ユニットが取得したスケジューリング対象の命令セットは６個の命令｛Ｌ１、Ｌ２、Ｃ１、Ｃ２、Ｓ１、Ｓ２｝を含む。ここで、Ｌ１、Ｃ１、Ｓ１は順次実行される必要があり、Ｌ２、Ｃ２、Ｓ２は順次実行される必要があり、その他の命令はデータ依存関係を有しない。Ｌ１、Ｌ２、Ｓ１、Ｓ２はＩ／Ｏ命令であり、Ｃ１、Ｃ２は計算命令である。データ依存分析ユニットは、上記スケジューリング対象の命令に対してデータ依存分析を行い、スケジューリング対象の命令セットにおける各命令間のデータ依存関係を取得し、図１６に示すようなＤＤＧ（Ｄａｔａ  Ｄｅｐｅｎｄｅｎｃｅ  Ｇｒａｐｈ、データ依存グラフ）を用いて上記データ依存関係を記述する。
【０１５５】
上記スケジューリング対象の命令リストにおける各スケジューリング対象の命令が参照するリソースは、仮想メモリオブジェクトであってもよいし、物理メモリオブジェクトであってもよい。当該仮想メモリオブジェクトは、メモリブロック、レジスタ、またはその他の、データを記憶可能な記憶装置のソフトウェアロジック上の仮想記憶空間であってもよい。
【０１５６】
ステップＳ２００において、各命令間の前記データ依存関係に応じて、命令スケジューリング過程において命令選択が行われる全ての選択ノードを取得する。
【０１５７】
各選択ノードは、当該選択ノードに対応するソート済み命令とスケジューリング対象の命令セットを記録する。選択可能な形態として、全ての選択ノードを取得する過程は、第２プロセッサがその取得ユニットによってまず第１回目の命令選択時の全ての第１選択ノードを取得し、具体的には、各第１選択ノードに対応するソート済み命令とスケジューリング対象の命令セットを取得する過程であってもよい。これらのスケジューリング対象の命令セットにおける各命令にはデータ依存関係があることは明らかである。その後、第２プロセッサは、その取得ユニットによって各第１選択ノードのデータ依存関係に応じて、各第１選択ノードに関連付けられた全ての第２選択ノードを取得し、第２選択ノードは第２回目の命令選択に対応する。上記ステップを繰り返すことで第３選択ノード、・・・、第Ｎ選択ノードを取得し、Ｎ≧３で、Ｎは正の整数である。上記ステップにおいて取得した第１選択ノード、・・・、第Ｎ選択ノードの合計は、命令選択が行われる全ての選択ノードを構成する。
【０１５８】
例えば、取得したスケジューリング対象の命令リストにおけるスケジューリング対象の命令セットは合計６つの命令｛Ｌ１、Ｌ２、Ｃ１、Ｃ２、Ｓ１、Ｓ２｝を含み、図３でこの６つの命令間のデータ依存関係を示す。図１６から分かるように、上記スケジューリング対象の命令セットにおける６つの命令のうちＬ１、Ｌ２は、他の命令の実行に依存しなくてもよいので、第１回目の命令選択を行う時に、Ｌ１、Ｌ２から選択する必要がある。すなわち、取得した第１選択ノードは、命令Ｌ１またはＬ２を選択した２つのケースに対応する。第１回目の命令選択時にＬ１を選択した場合、Ｌ１はソート済み命令となり、このとき、第１選択ノードは、ソート済み命令Ｌ１、および命令Ｌ１が削除されたスケジューリング対象の命令セット｛Ｌ２、Ｃ１、Ｃ２、Ｓ１、Ｓ２｝を記録する。同様に、第１回目の命令選択時にＬ２を選択した場合、もう１つの第１選択ノードが取得され、当該第１選択ノードは、ソート済み命令Ｌ２、および命令Ｌ２が削除されたスケジューリング対象の命令セット｛Ｌ１、Ｃ１、Ｃ２、Ｓ１、Ｓ２｝を記録する。上記過程を繰り返すことで第２回目の命令選択時の第２選択ノード、・・・、第６回目の命令選択時の第６選択ノードを取得することができる。
【０１５９】
本実施ステップにおいて、命令選択を行う都度に、その前の命令選択によって取得したスケジューリング対象の命令セット、例えば図３に対応するスケジューリング対象の命令セットに依る必要がある。第１回目の命令選択時に選択した命令がＬ１である場合（１つの第１選択ノードに対応）、スケジューリング対象の命令セット｛Ｌ２、Ｃ１、Ｃ２、Ｓ１、Ｓ２｝を取得し、当該第１選択ノードのスケジューリング命令セットにおける命令Ｌ２、Ｃ１は他の命令の実行に依存しなくてもよく、この場合、第２回目の命令選択を行う時に、Ｌ２、Ｃ１から選択する必要がある（２つの第２選択ノードが存在することに対応）。第１回目の命令選択時に選択した命令がＬ２である場合（もう１つの第１選択ノードに対応）、スケジューリング対象の命令セット｛Ｌ１、Ｃ１、Ｃ２、Ｓ１、Ｓ２｝を取得し、当該第１選択ノードのスケジューリング命令セットにおける命令Ｌ１、Ｃ２は他の命令の実行に依存しなくてもよく、この場合、第２回目の命令選択を行う時に、Ｌ１、Ｃ２から選択する必要がある（同様に、２つの第２選択ノードが存在することに対応）。このように、本実施例において取得した全ての選択ノード同士は関連付けられ、このような各選択ノードの関連付けを図１７で示すことができる。
【０１６０】
ステップＳ３００において、予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定する。選択可能な形態として、第２プロセッサは、その評価ユニットによって現在順位に対応する選択ノードを評価し、現在順位の各選択ノードの評価結果を取得し、評価結果に基づいて現在順位に対応する命令を決定してもよい。例えば、現在順位が第２命令である場合は図１７における第２選択ノードに対応し、予め設定されたルールに従って図１７における４つの第２選択ノードを評価し、評価結果に基づいて、スケジューリング後の命令リストにおける第２命令を取得する。選択可能な形態として、評価ユニットは、各命令の予め設定された優先度に従って現在順位に対応する選択ノードを評価し（例えば、Ｌ２の優先度が最も高く、Ｃ１がその次、・・・）、評価結果を取得する。選択可能な形態として、第２プロセッサは現在選択ノードの具体的な内容および／またはタイプに応じて各命令の優先度を設定してもよい。
【０１６１】
選択可能な形態として、評価ユニットは、現在順位の全ての選択ノードに対応する最短実行時間の長さに応じて、現在順位に対応する命令を決定してもよい。例えば、図１７における命令Ｌ１に対応する第１選択ノードは、対応する命令シーケンスの最短実行時間がｔ１であり、命令Ｌ２に対応する第１選択ノードは、対応する命令シーケンスの最短実行時間がｔ２であり、ｔ１＞ｔ２であれば、Ｌ２をスケジューリング後の命令リストにおける第１命令として決定する。同様に、スケジューリング後の命令リストの第２命令、・・・、第６命令を決定する。
【０１６２】
本実施例で提供する命令リストスケジューリング方法において、スケジューリング対象の命令のデータ依存関係を分析し、命令スケジューリング過程において命令選択が行われる全ての選択ノードを取得し、さらに各順位に対応する選択ノードに対する評価結果に基づいてスケジューリング後の命令リストにおける各順位の命令を決定する。当該方法によれば、命令選択毎に、選択された命令が現在状態における最適結果であることを確保でき、これらの最適結果を用いて取得したスケジューリング後の命令リストにおいて、各命令間の配置がよりコンパクトになり、元の命令リストにおける命令シーケンスの実行時間の短縮化が図れる。
【０１６３】
１つの選択可能な実施形態として、評価ユニットが、予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定するステップは以下のことを含む。
【０１６４】
ステップＳ２１０において、評価ユニットは、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得する。評価ユニットがアクセスする選択ノードは第１選択ノード、第２選択ノード、・・・、第Ｎ選択ノードであってもよい。
【０１６５】
ステップＳ２２０において、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間Ｔ０よりも短ければ、現在アクセスしているノードのソート済み命令をスケジューリング後の命令リストにおける対応する命令として決定する。ここで、初期実行時間はスケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【０１６６】
本実施ステップにおいて、現在アクセスしている選択ノードに対応する最長実行時間とは、現在アクセスしているノードに対応する命令シーケンスの並べが最も不適切な場合の実行時間をいう。例えば、図１７において左側から１番目の第２選択ノードに対応する最長実行時間は、Ｔ１＝ｔ１＋ｔ２＋ｔ３＋ｔ４＋ｔ５である。ここで、ｔ１はソート済み命令Ｌ１−Ｌ２の実行時間、ｔ２は命令Ｃ１の実行時間、ｔ３は命令Ｓ１の実行時間、ｔ４は命令Ｃ２の実行時間、ｔ５は命令Ｓ２の実行時間である。これは、当該選択ノードに対応する未ソート命令Ｃ１、Ｃ２、Ｓ１、Ｓ２が全く並列せず、ソートが最も不適切な場合のケースである。Ｔ１＜Ｔ０であれば、Ｌ１、Ｌ２をそれぞれスケジューリング後の命令リストにおける第１命令と第２命令とする。
【０１６７】
現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短いので、本実施例で提供する命令リストスケジューリング方法によって得られる命令シーケンスの実行時間がスケジューリング対象の命令リストにおける命令シーケンスよりも大きいことはない。
【０１６８】
本実施例の評価ユニットは、現在順位の選択ノードのみに応じて命令リストにおける命令をスケジューリングするのではなく、予め設定されたルールに従ってアクセスされる選択ノードにアクセスするので、決定された現在順位の命令が後の命令選択に影響することを避けることができる。特に、大きい計算量を必要とする命令を含む命令リスト、選択可能な形態としてニューラルネットワーク演算命令を含む命令リストをスケジューリングするのに適する。例えば、命令リストがＮ個の命令を含み、当該Ｎ個の命令は１つの重みロード命令Ａと１つのニューラルネットワーク畳み込み層計算命令Ｂを含む場合、従来の方法では、当該命令Ａと命令Ｂとを並列させてシステムを最高の処理効率に到達させることができない可能性があるが、本実施例の命令リストスケジューリングによれば、スケジューリング後の命令リストおいて命令Ａと命令Ｂとを並列させることを実現できる。
【０１６９】
一実施例において、上記方法は、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、初期実行時間を現在アクセスしている選択ノードに対応する最長実行時間に更新することをさらに含んでもよい。例えば、上記実施例において、Ｔ１＜Ｔ０の場合、Ｌ１、Ｌ２をそれぞれスケジューリング後の命令リストにおける第１命令と第２命令とするとともに、Ｔ１を初期実行時間として更新する。
【０１７０】
現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短い場合、現在アクセスしているノードに対応するソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定することで、取得したスケジューリング後の命令リストにおける命令シーケンスの実行時間がより短くなるのを確保できることは明らかである。上記した初期実行時間の更新は、命令のソートをさらに最適化し、システムの処理効率を向上させるためのものである。
【０１７１】
１つの選択可能な実施形態として、評価ユニットは、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは以下のことを含む。
【０１７２】
予め設定されたアクセス期間内に選択ノードにアクセスし、予め設定されたアクセス期間内における各選択ノードに対応する最長実行時間を取得する。本実施例において、上記実施例で提供する方法によってスケジューリング後の命令リストの各順位の命令を決定する必要がある。
【０１７３】
一般的に、命令リストにはスケジューリング対象の命令が複数存在し、これらのスケジューリング対象の命令に応じて取得される選択ノードは数多く、実際の操作では、全ての選択ノードをトラバースするのに十分な時間を確保するのは困難である。本願で提供する命令リストスケジューリング方法は、命令リストにおける命令を並べ替えることで命令リストの実行時間をさらに短縮することを目的としている。これにより、本願で提供する命令リストスケジューリング方法によって得られる新たな命令リストが実行時間を短縮できれば、本願の目的は達成できる。よって、本願で提供する命令リストスケジューリング方法を実際に適用して命令の再ソートを行う場合、一般的に、実際の必要に応じてアクセス期間を設定して命令のスケジューリング時間を制御する。
【０１７４】
１つの選択可能な実施形態として、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短くなければ、スケジューリング対象の命令リストにおける命令シーケンスをスケジューリング後の命令リストにおける命令シーケンスとする。
【０１７５】
本実施例において、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短くなければスケジューリング対象の命令リストにおける命令シーケンスをスケジューリング後の命令リストにおける命令シーケンスとすることは、上記実施例で提供する命令リストスケジューリング方法に対する最適化である。取得したスケジューリング後の命令リストにおける命令シーケンスが予め設定された期間内で取得される最適結果であることを確保できる。
【０１７６】
１つの選択可能な実施形態として、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは以下のことを含む。
【０１７７】
ステップＳ２３０において、評価ユニットは、現在アクセスしている選択ノードに対応する最短実行時間を取得する。
【０１７８】
ステップＳ２４０において、現在アクセスしている選択ノードに対応する最短実行時間が初期実行時間Ｔ０よりも長ければ、現在アクセスしている選択ノードに関連付けられた選択ノードへのアクセスを終了する。例えば、命令Ｌ２に対応する第２選択ノードの最短実行時間はＴ２であり、Ｔ２は、当該選択ノードに対応する未ソート命令Ｃ１、Ｃ２、Ｓ１、Ｓ２が完全に並列され、ソートが最も合理的である場合に対応する。Ｔ２＞Ｔ０であれば、当該第２選択ノードに関連付けられた第３選択ノード、およびこれら第３選択ノードに関連付けられた第４選択ノード、・・・、第６選択ノードへのアクセスを終了する。
【０１７９】
評価ユニットの選択ノードへのアクセス毎に時間がかかるため、本実施例の技術的手段は選択ノードへの無効なアクセスを排除し、命令リストのスケジューリング効率を向上させることができる。
【０１８０】
１つの選択可能な実施形態として、評価ユニットは、前記選択ノードにアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得するステップは以下のことを含む。評価ユニットは、ランダム優先（例えば、ＭＣＴＳ：Ｍｏｎｔｅ  Ｃａｒｌｏ  Ｔｒｅｅ  Ｓｅａｒｃｈ、モンテカルロ木探索）に従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【０１８１】
１つの選択可能な実施形態として、評価ユニットは、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは以下のことを含む。評価ユニットは、幅優先（ＢＦＳ：Ｂｒｅａｄｔｈ  Ｆｉｒｓｔ  Ｓｅａｒｃｈ、幅優先探索）のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。具体的には、本実施例における幅優先とは、現在アクセスしている選択ノードと同一順位の選択ノードを優先的に選択してアクセスすることをいう。例えば、現在アクセスしているのが第２選択ノードであれば、次にアクセスする選択ノードとして、他の第２選択ノードを優先的に選択する。
【０１８２】
１つの選択可能な実施形態として、評価ユニットは、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得するステップは以下のことを含む。評価ユニットは、深さ優先（ＢＦＳ：Ｂｒｅａｄｔｈ  Ｆｉｒｓｔ  Ｓｅａｒｃｈ、深さ優先探索）のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。具体的には、本実施例における深さ優先とは、現在アクセスしている選択ノードに関連付けられた次の順位の選択ノードを優先的に選択してアクセスすることをいう。例えば、現在アクセスしているのが第２選択ノードであれば、次にアクセスする選択ノードとして、当該第２選択ノードに関連付けられた第３選択ノードを優先的に選択する。
【０１８３】
選択可能な形態として、評価ユニットは、ランダム優先＋深さ優先のルール、または幅優先＋深さ優先のルールに従って前記選択ノードを選択してアクセスしてもよい。具体的には、幅優先またはランダム優先のルールに従って予め設定された順位よりも小さい前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得し、深さ優先のルールに従って予め設定された順位よりも小さくない前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。選択可能な形態として、上記の対応順位の予め設定された値は経験値または予備実験結果に基づいて決定される。
【０１８４】
アクセス期間を設定して命令リストスケジューリングを行う場合、命令リストスケジューリング装置の評価ユニットは全ての選択ノードをトラバースするのに十分な時間がない。この場合、単に深さ優先または幅優先のルールに従って前記選択ノードを選択してアクセスすると、最終的にアクセスする選択ノードの関与範囲が比較的に限定される（例えば、ある選択ノードに関連付けられた選択ノードのみにアクセスしたり、上位のいくつかの順位の選択ノードのみにアクセスしたりする）。また、単にランダム優先のルールに従って前記選択ノードを選択してアクセスすると、最終的にアクセスする選択ノードのランダム性が強すぎる。よって、上記ランダム優先＋深さ優先のルール、または幅優先＋深さ優先のルールに従って前記選択ノードを選択してアクセスすることが好ましい。
【０１８５】
上記フローチャートにおける各ステップは矢印の指示に従って示されているが、これらのステップは必ずしも矢印の指示順序に従って実行される必要がないことを理解すべきである。本明細書に明確な説明がない限り、これらのステップの実行順序について厳格な限定はなく、これらのステップは他の順序に従って実行されてもよい。そして、上記フローチャートにおける少なくとも一部のステップは、複数のサブステップまたは複数の段階を含んでもよく、これらのサブステップまたは段階は必ずしも同一時刻に実行完了する必要がなく、異なる時刻に実行されてもよく、これらのサブステップまたは段階の実行順序は必ずしも行われる必要がなく、他のステップまたは他のステップのサブステップまたは段階の少なくとも一部と順番にまたは交互に実行されてもよい。
【０１８６】
図１８は、一実施例で提供する命令リストスケジューリング装置の構成模式図を示す。当該装置は、スケジューリング対象の命令リストにおけるスケジューリング対象の命令セットを取得し、各命令間のデータ依存関係に応じて、命令スケジューリング過程において命令選択が行われる全ての選択ノードを取得する取得ユニット５１０と、スケジューリング対象の命令セットに対してデータ依存分析を行い、前記スケジューリング対象の命令セットにおける各命令間のデータ依存関係を取得するデータ依存分析ユニット５２０と、予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定する評価ユニット５３０とを含む。
【０１８７】
一実施例において、前記評価ユニット５３０は、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、現在アクセスしている前記選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしている選択ノードのソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【０１８８】
一実施例において、前記命令スケジューリング装置は、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、初期実行時間を現在アクセスしている選択ノードに対応する最長実行時間に更新する更新ユニットをさらに含む。
【０１８９】
一実施例において、前記評価ユニット５３０は、予め設定されたアクセス期間内に選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしているノードに対応するソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【０１９０】
一実施例において、前記評価ユニット５３０は、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短くなければ、スケジューリング対象の命令リストにおける命令シーケンスをスケジューリング後の命令リストにおける命令シーケンスとする。
【０１９１】
一実施例において、前記評価ユニット５３０は、ランダム優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【０１９２】
一実施例において、前記評価ユニット５３０は、幅優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【０１９３】
一実施例において、前記評価ユニット５３０は、深さ優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【０１９４】
一実施例において、前記評価ユニット５３０は、幅優先またはランダム優先のルールに従って予め設定された順位よりも小さい前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得し、深さ優先のルールに従って予め設定された順位よりも小さくない前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【０１９５】
一実施例において、前記評価ユニット５３０は、現在アクセスしている選択ノードに対応する最短実行時間を取得し、現在アクセスしている選択ノードに対応する最短実行時間が初期実行時間よりも長ければ、現在アクセスしている選択ノードに関連付けられた選択ノードへのアクセスを終了する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【０１９６】
一実施例において、前記評価ユニット５３０は、命令の予め設定された優先度に従って現在順位に対応する全ての選択ノードを評価し、現在順位の各選択ノードの評価結果を取得し、前記評価結果に基づいて現在順位に対応する命令を決定する。
【０１９７】
一実施例において、前記評価ユニット５３０は、現在選択ノードの具体的な内容および／またはタイプに応じて各命令の優先度を設定する。
【０１９８】
一実施例において、前記評価ユニット５３０は、現在順位の全ての選択ノードに対応する最短実行時間の長さに応じて、現在順位に対応する命令を決定する。
【０１９９】
命令リストスケジューリング装置に関する具体的なものについて、上記した命令リストスケジューリング方法に関する記載を参照してよく、ここで詳細な説明は省略する。上記命令リストスケジューリング装置における各ユニットは、その全部または一部がソフトウェア、ハードウェアおよびそれらの組み合わせによって実現されてもよい。プロセッサが上記した各ユニットに対応する操作を呼び出して実行するように、上記各ユニットはハードウェアとしてコンピュータ機器におけるプロセッサに組み込まれるか、またはコンピュータ機器におけるプロセッサとは独立して設けられてもよいし、ソフトウェアとしてコンピュータ機器におけるメモリに記憶されてもよい。
【０２００】
一実施例において、コンピュータ機器を提供しており、当該コンピュータ機器は端末であってもよく、その内部構成図は図１９に示すものであってもよい。当該コンピュータ機器は、システムバスを介して接続されたプロセッサ、メモリ、ネットワークインタフェース、ディスプレイ及び入力装置を含む。当該コンピュータ機器のプロセッサは、計算および制御能力を提供するものである。当該コンピュータ機器のメモリは、不揮発性記憶媒体、内部メモリを含む。当該不揮発性記憶媒体は、オペレーティングシステムとコンピュータプログラムを記憶している。当該内部メモリは、不揮発性記憶媒体におけるオペレーティングシステムおよびコンピュータプログラムの実行のために環境を提供する。当該コンピュータ機器のネットワークインタフェースは、ネットワークを介して外部の端末と接続され通信するためのものである。当該コンピュータプログラムは、プロセッサによって実行されると上記実施例に記載の検証励起の生成方法および／またはチップ検証方法を実現する。当該コンピュータ機器のディスプレイは、液晶ディスプレイまたは電子インクディスプレイであってもよく、当該コンピュータ機器の入力装置は、ディスプレイに被覆されたタッチ層であってもよいし、コンピュータ機器の筐体に設定されたボタン、トラックボールまたはタッチパッドであってもよいし、外付けのキーボード、タッチパッドまたはマウスなどであってもよい。
【０２０１】
当業者であれば、図１９に示した構造は、本願の技術的手段に関連する一部の構造のブロック図に過ぎず、本願の技術的手段が適用されるコンピュータ機器を限定するものではなく、具体的なコンピュータ機器は、図に示したものよりも多いまたは少ない構成要素を含んだり、いくつかの構成要素を組み合わせてなったものであったり、異なる構成要素レイアウトを備えたものであったりすることができることを理解できる。
【０２０２】
一実施例において、メモリと、プロセッサと、メモリに記憶され、プロセッサ上で実行可能なコンピュータプログラムとを含むコンピュータ機器を提供しており、プロセッサがコンピュータプログラムを実行すると、以下のステップが実現される。すなわち、スケジューリング対象の命令リストにおけるスケジューリング対象の命令セットを取得し、スケジューリング対象の命令セットに対してデータ依存分析を行い、各命令間のデータ依存関係を取得し、各命令間の前記データ依存関係に応じて、命令スケジューリング過程において命令選択が行われる全ての選択ノードを取得し、予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定する。
【０２０３】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、現在アクセスしている前記選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしているノードのソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【０２０４】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、初期実行時間を現在アクセスしている選択ノードに対応する最長実行時間に更新する。
【０２０５】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしているノードに対応するソート済み命令に基づいて命令シーケンスをランダムに生成し、前記ランダムに生成された命令シーケンスを用いて前記スケジューリング対象の命令リストの命令シーケンスを更新する。
【０２０６】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、予め設定されたアクセス期間内に選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしているノードに対応するソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【０２０７】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、幅優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【０２０８】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、ランダム優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【０２０９】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、幅優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【０２１０】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、幅優先またはランダム優先のルールに従って予め設定された順位よりも小さい前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得し、深さ優先のルールに従って予め設定された順位よりも小さくない前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【０２１１】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、現在アクセスしている選択ノードに対応する最短実行時間を取得し、現在アクセスしている選択ノードに対応する最短実行時間が初期実行時間よりも長ければ、現在アクセスしている選択ノードに関連付けられた選択ノードへのアクセスを終了する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【０２１２】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、命令の予め設定された優先度に従って現在順位に対応する全ての選択ノードを評価し、現在順位の各選択ノードの評価結果を取得し、前記評価結果に基づいて現在順位に対応する命令を決定する。
【０２１３】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、現在選択ノードの具体的な内容および／またはタイプに応じて各命令の優先度を設定する。
【０２１４】
一実施例において、プロセッサがコンピュータプログラムを実行すると、さらに以下のステップが実現される。すなわち、現在順位の全ての選択ノードに対応する最短実行時間の長さに応じて、現在順位に対応する命令を決定する。
【０２１５】
一実施例において、プログラムを記憶したコンピュータ読み取り可能な記憶媒体を提供しており、コンピュータプログラムがプロセッサによって実行されると、以下のステップが実現される。すなわち、スケジューリング対象の命令リストにおけるスケジューリング対象の命令セットを取得し、スケジューリング対象の命令セットに対してデータ依存分析を行い、各命令間のデータ依存関係を取得し、各命令間の前記データ依存関係に応じて、命令スケジューリング過程において命令選択が行われる全ての選択ノードを取得し、予め設定されたルールに従って、対応順位の選択ノードに応じてスケジューリング後の命令リストにおける各順位の命令を決定する。
【０２１６】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、現在アクセスしている前記選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしているノードのソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【０２１７】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、初期実行時間を現在アクセスしている選択ノードに対応する最長実行時間に更新する。
【０２１８】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、予め設定されたアクセス期間内に選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得し、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短ければ、現在アクセスしているノードに対応するソート済み命令をスケジューリング後の命令リストにおける対応順位の命令として決定する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【０２１９】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間よりも短くなければ、スケジューリング対象の命令リストにおける命令シーケンスをスケジューリング後の命令リストにおける命令シーケンスとする。
【０２２０】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、ランダム優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【０２２１】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、深さ優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【０２２２】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、幅優先のルールに従って前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【０２２３】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、幅優先またはランダム優先のルールに従って予め設定された順位よりも小さい前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得し、深さ優先のルールに従って予め設定された順位よりも小さくない前記選択ノードを選択してアクセスし、現在選択してアクセスしている選択ノードに対応する最長実行時間を取得する。
【０２２４】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、現在アクセスしている選択ノードに対応する最短実行時間を取得し、現在アクセスしている選択ノードに対応する最短実行時間が初期実行時間よりも長ければ、現在アクセスしている選択ノードに関連付けられた選択ノードへのアクセスを終了する。ここで、初期実行時間は、スケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【０２２５】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、命令の予め設定された優先度に従って現在順位に対応する全ての選択ノードを評価し、現在順位の各選択ノードの評価結果を取得し、前記評価結果に基づいて現在順位に対応する命令を決定する。
【０２２６】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、現在選択ノードの具体的な内容および／またはタイプに応じて各命令の優先度を設定する。
【０２２７】
一実施例において、コンピュータプログラムがプロセッサによって実行されると、さらに以下のステップが実現される。すなわち、現在順位の全ての選択ノードに対応する最短実行時間の長さに応じて、現在順位に対応する命令を決定する。
【０２２８】
一般的に、プロセッサがニューラルネットワークモデルを実行する場合、例えばＣａｆｆｅネットワークモデルを実行する場合、その都度、当該ニューラルネットワークモデルにおける各計算ノードをそれぞれコンパイルし解析した後、当該ニューラルネットワークモデルの構成方式に従って一定の方式で各計算ノードを実行する必要がある。ここで、ニューラルネットワークモデルおよびネットワーク構成は、トレーニング済みまたは未トレーニングの人工ニューラルネットワークモデルデータであってもよい。上記のニューラルネットワークに対する処理方法はプロセッサの処理速度に影響を与えてしまい、処理効率が低下する。
【０２２９】
本願の実施例において、オフラインモデルの生成方法をさらに提供している。当該オフラインモデルの生成方法は、クラウドサーバまたはニューラルネットワーク専用プロセッサ上で実行され、取得したオリジナルネットワークのオフラインモデルをメモリ１３０に記憶することができる。当該クラウドサーバまたはニューラルネットワーク専用プロセッサは、ニューラルネットワークなどのヘビー級のデータを実行可能なプロセッサであり、上記コンピュータ機器に含まれなくてもよい。具体的に、上記方法は、図２６に示すように、上記ステップＳ１１０の前に以下のステップを含む。
【０２３０】
Ｓ０１０において、オリジナルネットワークのモデルデータセットおよびモデル構成パラメータを取得する。具体的には、クラウドサーバまたはニューラルネットワーク専用プロセッサの取得ユニットによって、オリジナルネットワークのモデルデータセットおよびモデル構成パラメータを取得し、当該オリジナルネットワークのモデルデータセットおよびモデル構成パラメータによって当該オリジナルネットワークのネットワーク構成図を取得することができる。ここで、モデルデータセットは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータなどのデータを含み、図２８に示すニューラルネットワークにおけるＷ１〜Ｗ６が計算ノードのモデルパラメータを示すものである。モデル構成パラメータは、オリジナルネットワークにおける複数の計算ノードの接続関係および各計算ノードの計算属性を含む。ここで、計算ノードの接続関係は、計算ノードの間にデータ転送があるか否かを示すものであり、例えば、複数の計算ノードの間にデータストリームの転送があれば、複数の計算ノードの間に接続関係があることを意味する。さらに、計算ノードの接続関係は、入力関係と出力関係などを含んでもよい。図２８に示すように、計算ノードＦ１の出力は計算ノードＦ４とＦ５の入力となり、この場合、計算ノードＦ１と計算ノードＦ４との間に接続関係があり、計算ノードＦ１と計算ノードＦ４との間に接続関係があることを意味する。また、計算ノードＦ１と計算ノードＦ２の間にはデータ転送が無く、この場合、計算ノードＦ１と計算ノードＦ２との間に接続関係がないことを意味する。
【０２３１】
各計算ノードの計算属性は、かかる計算ノードの計算タイプおよび計算パラメータを含んでもよい。ここで、計算ノードの計算タイプとは、当該計算ノードがどのような計算を実現するためのものであるかをいう。例えば、計算ノードの計算タイプとして、加算演算、減算演算および畳み込み演算などを含んでもよく、これに対応して、当該計算ノードは、加算演算を実現するための計算ノード、減算演算を実現するための計算ノードまたは畳み込み演算を実現するための計算ノードなどであってもよい。計算ノードの計算パラメータは、当該計算ノードに対応する計算タイプを実現するために必要なパラメータであってもよい。例えば、計算ノードの計算タイプは加算演算を実現するための計算ノードであってもよく、これに対応して、当該計算ノードの計算パラメータは、加算演算における加数であってもよく、当該加算演算における被加数は入力データとして取得ユニットによって取得されてもよく、または、当該加算演算における被加数は、当該計算ノードの直前の計算ノードの出力データなどであってもよい。
【０２３２】
選択可能な形態として、当該オリジナルネットワークは、ＴｅｎｓｏｒＦｌｏｗ、ＭＸＮｅｔ、ＣａｆｆｅとＰｙＴｏｒｃｈなどのディープラーニングシステムをもとに、ＣＰＵ、ＧＰＵまたはＤＳＰなどの汎用プロセッサに対して構築された人工ニューラルネットワークであってもよいし、ＩＰＵなどのインテリジェンスプロセッサに対して構築された人工ニューラルネットワークであってもよい。例えば、当該オリジナルネットワークがＣａｆｆｅをもとに構築されたニューラルネットワークである場合、当該Ｃａｆｆｅネットワークのモデルデータセット（ｃａｆｆｅｍｏｄｅｌ）およびモデル構成パラメータ（ｐｒｏｔｏｔｘｔ）を取得してよい。ここで、モデルデータセット（ｃａｆｆｅｍｏｄｅｌ）は、当該Ｃａｆｆｅネットワークのモデルパラメータなどのデータを含み、モデル構成パラメータ（ｐｒｏｔｏｔｘｔ）は当該Ｃａｆｆｅネットワークの各計算ノードの計算属性および複数の計算ノード間の接続関係などを含む。
【０２３３】
Ｓ１０１において、オリジナルネットワークのモデルデータセットとモデル構成パラメータに基づいてオリジナルネットワークを実行し、オリジナルネットワークにおける各計算ノードに対応する命令を取得する。具体的には、クラウドサーバまたはニューラルネットワーク専用プロセッサの演算ユニットは、オリジナルネットワークのモデルデータセットとモデル構成パラメータに基づいて当該オリジナルネットワークを実行し、オリジナルネットワークにおける各計算ノードに対応する命令を取得することができる。さらに、クラウドサーバまたはニューラルネットワーク専用プロセッサの取得ユニットは、さらに当該オリジナルネットワークの入力データを取得することができ、クラウドサーバまたはニューラルネットワーク専用プロセッサの演算ユニットは、オリジナルネットワークの入力データ、ネットワークモデルデータセット、モデル構成パラメータに基づいてオリジナルネットワークを実行し、当該オリジナルネットワークにおける各計算ノードに対応する命令を取得することができる。さらには、上記した当該オリジナルネットワークを実行して各計算ノードの命令を取得する過程は、実質上、コンパイルを行う過程であり、当該コンパイルを行う過程は、クラウドサーバまたはニューラルネットワーク専用プロセッサまたは仮想デバイスによって実現されてもよい。すなわち、クラウドサーバまたはニューラルネットワーク専用プロセッサまたは仮想デバイスは、オリジナルネットワークのモデルデータセットとモデル構成パラメータに基づいてオリジナルネットワークを実行する。ここで、仮想デバイスとは、メモリのメモリ空間で仮想化されたプロセッサ実行空間をいう。
【０２３４】
本実施例においてオリジナルネットワークを実行するとは、クラウドサーバまたはニューラルネットワーク専用プロセッサが人工ニューラルネットワークモデルデータを用いてある機械学習アルゴリズム（例えば、ニューラルネットワークアルゴリズム）を実行し、フォワード演算を実行することによってアルゴリズムのターゲットアプリケーション（例えば、音声認識などの人工知能アプリケーション）を実現することをいうことは明らかである。
【０２３５】
Ｓ１０３において、オリジナルネットワークの各計算ノードに対応するモデルパラメータおよび命令に基づいて、オリジナルネットワークに対応するオフラインモデルを生成し、前記オリジナルネットワークに対応するオフラインモデルを不揮発性メモリに記憶する。具体的には、クラウドサーバまたはニューラルネットワーク専用プロセッサの制御ユニットは、オリジナルネットワークの各計算ノードに対応するモデルパラメータおよび命令に基づいて、当該オリジナルネットワークに対応するオフラインモデルを生成することができる。例えば、当該クラウドサーバまたはニューラルネットワーク専用プロセッサの制御ユニットは、オフラインモデルの生成および記憶を実現するために、オリジナルネットワークの各計算ノードに対応するモデルパラメータおよび命令を不揮発性の第２メモリに記憶することができる。ここで、オリジナルネットワークの各計算ノードに対して、当該計算ノードのモデルパラメータと命令とが一対一に対応して記憶される。これにより、当該オリジナルネットワークを再実行すると、当該オリジナルネットワークに対応するオフラインモデルを不揮発性メモリから直接取得し、対応するオフラインモデルに基づいてオリジナルネットワークを実行することができ、当該オリジナルネットワークの各計算ノードをオンラインでコンパイルして命令を取得することが不要となり、システムの実行速度および効率が向上する。
【０２３６】
本実施例において、当該オリジナルネットワークに対応するオフラインモデルを直接実行するとは、オフラインモデルを用いて当該オリジナルネットワークに対応する機械学習アルゴリズム（例えば、ニューラルネットワークアルゴリズム）を実行し、フォワード演算を実行することによってアルゴリズムのターゲットアプリケーション（例えば、音声認識などの人工知能アプリケーション）を実現することをいうことは明らかである。
【０２３７】
選択可能な形態として、図２７に示すように、上記ステップＳ１０２は以下のステップを含んでもよい。
【０２３８】
Ｓ１０４において、オリジナルネットワークのモデル構成パラメータに基づいて、オリジナルネットワークにおける各計算ノードの実行順序を取得する。具体的には、クラウドサーバまたはニューラルネットワーク専用プロセッサの演算ユニットは、オリジナルネットワークのモデル構成パラメータに基づいて、オリジナルネットワークにおける各計算ノードの実行順序を取得することができる。さらに、クラウドサーバまたはニューラルネットワーク専用プロセッサの演算ユニットは、オリジナルネットワークにおける各計算ノードの接続関係に基づいて、オリジナルネットワークにおける各計算ノードの実行順序を取得することができる。例えば、図２８に示すように、計算ノードＦ４の入力データは計算ノードＦ１の出力データおよび計算ノードＦ２の出力データであり、計算ノードＦ６の入力データは計算ノードＦ４の出力データおよび計算ノードＦ５の出力データである。よって、図２８に示すニューラルネットワークにおける各計算ノードの実行順序は、Ｆ１−Ｆ２−Ｆ３−Ｆ４−Ｆ５−Ｆ６またはＦ１−Ｆ３−Ｆ２−Ｆ５−Ｆ４−Ｆ６などであってもよい。もちろん、計算ノードＦ１、Ｆ２、Ｆ３は並列実行されてもよく、計算ノードＦ４、Ｆ５も並列実行されてもよい。ここでは単に例示的なものであり、その実行順序を具体的に限定しない。
【０２３９】
Ｓ１０５において、オリジナルネットワークにおける各計算ノードの実行順序に従ってオリジナルネットワークを実行し、オリジナルネットワークにおける各計算ノードに対応する命令をそれぞれ取得する。具体的には、クラウドサーバまたはニューラルネットワーク専用プロセッサの演算ユニットは、オリジナルネットワークにおける各計算ノードの実行順序に従って当該オリジナルネットワークを実行してオリジナルネットワークにおける各計算ノードに対応する命令を取得することができる。すなわち、クラウドサーバまたはニューラルネットワーク専用プロセッサは、オリジナルネットワークのモデルデータセットなどのデータをコンパイルして各計算ノードに対応する命令を取得することができ、各計算ノードに対応する命令から、当該計算ノードがどのような計算機能を実現するためのものかを把握でき、すなわち、当該計算ノードの計算タイプおよび計算パラメータなどの計算属性を取得することができる。
【０２４０】
さらに、図２７に示すように、上記ステップＳ１０３は以下のステップをさらに含む。
【０２４１】
Ｓ１０６において、オリジナルネットワークのモデルデータセットとモデル構成パラメータに基づいて、オリジナルネットワークのメモリ割り当て方法を取得する。具体的には、クラウドサーバまたはニューラルネットワーク専用プロセッサの演算ユニットは、オリジナルネットワークのモデルデータセットとモデル構成パラメータに基づいて、オリジナルネットワークのメモリ割り当て方法を取得することができる。さらに、クラウドサーバまたはニューラルネットワーク専用プロセッサは、オリジナルネットワークのモデル構成パラメータに基づいて、オリジナルネットワークにおける各計算ノードの実行順序を取得し、オリジナルネットワークにおける各計算ノードの実行順序に基づいて現在ネットワークのメモリ割り当て方法を決定することができる。例えば、各計算ノードの実行順序に従って各計算ノードの実行過程における関連データを１つのスタック内に格納する。ここで、メモリ割り当て方法とは、オリジナルネットワークにおける各計算ノードに関連するデータ（入力データ、出力データ、モデルパラメータおよび中間結果データなどを含む）の、メモリ空間（例えば、第１メモリ）における記憶位置を決定することをいう。例えば、データテーブルを用いて各計算ノードに関連するデータ（入力データ、出力データ、モデルパラメータおよび中間結果データなど）とメモリ空間とのマッピング関係を記憶することができる。
【０２４２】
Ｓ１０７において、オリジナルネットワークのメモリ割り当て方法に基づいて、オリジナルネットワークの実行過程における関連データを第１メモリに記憶する。ここで、オリジナルネットワークの実行過程における関連データは、オリジナルネットワークの各計算ノードに対応するモデルパラメータ、命令、入力データ、中間計算結果および出力データなどを含む。例えば、図２８に示すように、Ｘ１、Ｘ２は、当該ニューラルネットワークの入力データを示し、Ｙは当該ニューラルネットワークの出力データを示し、クラウドサーバまたはニューラルネットワーク専用プロセッサは、当該ニューラルネットワークの出力データを、ロボットまたは異なるデジタルインタフェースを制御する制御コマンドに変換することができる。Ｗ１〜Ｗ６は、計算ノードＦ１、Ｆ２、Ｆ３に対応するモデルパラメータを示すものであり、計算ノードＦ１〜Ｆ５の出力データを中間計算結果とすることができる。クラウドサーバまたはニューラルネットワーク専用プロセッサは、決定されたメモリ割り当て方法に基づいて、オリジナルネットワークの実行過程における関連データを第１メモリ、例えば内部メモリまたはキャッシュなどの揮発性メモリに記憶することができ、具体的な記憶方法について、図２９における左半分の記憶空間を参照してよい。
【０２４３】
Ｓ１０８において、第１メモリからオリジナルネットワークの各計算ノードに対応するモデルパラメータおよび命令を取得し、オリジナルネットワークの各計算ノードに対応するモデルパラメータおよび命令を第２メモリに記憶し、オフラインモデルを生成する。ここで、第２メモリは、外部メモリなどの不揮発性メモリであってもよい。当該オフラインモデルの生成過程について、図２９を参照してよい。図２９に示すように、図２９における右半分の記憶空間に記憶されたのは、オリジナルネットワークに対応するオフラインモデルである。
【０２４４】
図２８と図２９に示すように、以下、図面を参照しながら上記オフラインモデルの生成過程について説明する。
【０２４５】
まず、クラウドサーバまたはニューラルネットワーク専用プロセッサは、当該オリジナルネットワークのモデルデータセット、モデル構成パラメータおよび入力データを取得することができ、当該オリジナルネットワークのモデルデータセットとモデル構成パラメータに基づいて、当該オリジナルネットワークのネットワーク構成図を取得することができる。図９に示すとおりである。
【０２４６】
次に、クラウドサーバまたはニューラルネットワーク専用プロセッサは、オリジナルネットワークのモデル構成パラメータに基づいて、オリジナルネットワークの各計算ノードの接続関係を取得し、各計算ノードの接続関係に基づいて、オリジナルネットワークにおける各計算ノードの実行順序、およびオリジナルネットワークの実行過程におけるメモリ割り当て方法を取得することができ、オリジナルネットワークの実行過程における関連データの記憶位置を取得することができる。図２９における左半分の記憶空間が示すように、オリジナルネットワークの実行過程における関連データは、各計算ノードの実行順序に従って１つのスタックに記憶されてもよい。
【０２４７】
最後に、クラウドサーバまたはニューラルネットワーク専用プロセッサは、オリジナルネットワークの各計算ノードに対応するモデルパラメータおよび命令を不揮発性の第２メモリに記憶し、オフラインモデルを生成することができる。当該オフラインモデルの記憶方法について、図２９における右半分の記憶空間を参照してよい。そして、当該オフラインモデルは、当該オリジナルネットワークの実行に必要なモデルパラメータおよび命令などのデータのみを含み、オリジナルネットワークの実行過程における入力データ、出力データまたは中間計算結果などを記憶する必要がないので、第２メモリにおける記憶空間の消費を低減することができる。
【０２４８】
従来技術において、人工ニューラルネットワークは、ヘビー級のデータとして、数多くのノード（または、ニューロンという）を相互に接続させてなるものである。従来のコンピュータ機器はニューラルネットワークを直接読み取り、当該ニューラルネットワークの構成方式に従って一定の方式で当該ニューラルネットワークの各計算ノードを順次実行し、当該ニューラルネットワークの計算結果を取得する。すなわち、従来の計算装置では、直接にヘビー級のニューラルネットワークに対してデータ処理を行うため、コンピュータ機器のデータ処理速度および効率に影響する。そして、人工ニューラルネットワークデータの特徴によれば、ライト級のデータしか処理できない実行環境では、当該人工ニューラルネットワークデータを実行できなくなるため、ニューラルネットワークの適用範囲が制限されることになる。
【０２４９】
図２０に示すように、本願の一実施例はコンピュータ機器を提供しており、当該コンピュータ機器１００は、ハードウェアシステムとソフトウェアシステムとを含んでよい。ここで、ハードウェアシステムは、第１プロセッサ１１０、第２プロセッサ１２０およびメモリ１３０を含んでよい。図２１に示すように、当該第１プロセッサ１１０は、計算と制御能力を提供するためのもので、第１取得ユニット１１１、第１演算ユニット１１３および第１制御ユニット１１２などを含んでもよい。当該第１取得ユニット１１１は、ＩＯ（Ｉｎｐｕｔ入力／Ｏｕｔｐｕｔ出力）インタフェースなどのハードウェアユニットであってもよく、第１演算ユニット１１３および第１制御ユニット１１２はいずれもハードウェアユニットである。例えば、第１演算ユニット１１３および第１制御ユニット１１２は、デジタル回路またはアナログ回路などであってもよい。上記ハードウェア回路の物理的な実現は、物理的なデバイスによる実現を含むが、これに限定されない。物理的なデバイスとしては、トランジスタおよびメモリスタなどを含むが、これらに限定されない。当該第２プロセッサ１２０も、計算と制御能力を提供するためのもので、第２取得ユニット、第２演算ユニットおよび第２制御ユニットなどを含んでよい。当該第２取得ユニットは、ＩＯ（Ｉｎｐｕｔ入力／Ｏｕｔｐｕｔ出力）インタフェースなどのハードウェアユニットであってもよく、第２演算ユニットおよび第２制御ユニットはいずれもハードウェアユニットである。第２プロセッサ１２０の各構成の接続関係および構成は第１プロセッサにおける各構成の接続関係および構成と同一であってもよく、具体的には上記した説明を参照してよく、ここで詳細な説明は省略する。選択可能な形態として、第１プロセッサまたは第２プロセッサは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、グラフィックスプロセッサ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ、デジタル信号処理）などの汎用プロセッサまたはＩＰＵ（Ｉｎｔｅｌｌｉｇｅｎｃｅ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、インテリジェンスプロセッサ）などのニューラルネットワーク専用プロセッサであってもよい。
【０２５０】
図２０に示すように、メモリ１３０は、複数のオリジナルネットワークに対応するオフラインモデル、入力データおよび当該コンピュータ機器のソフトウェアシステムを記憶するものである。当該コンピュータ機器のソフトウェアシステムは、オペレーティングシステム、コンピュータプログラム、アプリケーションソフトウェアおよびランタイムシステム１３１などの、第１プロセッサ１１０または第２プロセッサ１２０上で実行可能なソフトウェアを含んでもよい。さらに、当該メモリ１３０は、各オリジナルネットワークの出力データ（すなわち、各オリジナルネットワークの計算結果）を記憶してもよい。さらには、当該メモリ１３０は、オフラインモデルを記憶する第１記憶ユニットと、入力データを記憶する第２記憶ユニットと、出力データを記憶する第３記憶ユニットと、ランタイムシステムを記憶する第４記憶ユニットとを含んでもよい。または、メモリ１３０の数は２つ以上であってもよく、例えば、メモリ１３０の数は２つで、それぞれ、オリジナルネットワークに対応するオフラインモデルと入力データを記憶する第１メモリと、ランタイムシステムを記憶する第２メモリとして表記してもよい。選択可能な形態として、当該メモリ１３０は、不揮発性メモリであってもよく、例えば、リードオンリーメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）またはフラッシュメモリであってもよい。
【０２５１】
ランタイムとは、あるプログラムを実行している（またはプログラムが実行されている）状態をいい、ランタイムは、ある期間内にいずれのプログラムが実行されていることを示すことは明らかである。ランタイムシステムとは、プロセスレベルの仮想マシンをいい、プログラムの実行環境を示すものである。具体的には、ランタイムシステムは、コンピュータソフトウェアによって構築されたソフトウェアシステムであってもよく、当該ソフトウェアシステムは、特定のデータ処理機能を実現するために、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、グラフィックスプロセッサ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ、デジタル信号処理）またはＩＰＵ（Ｉｎｔｅｌｌｉｇｅｎｃｅ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、インテリジェンスプロセッサ）などのプロセッサ上で実行可能である。本願の実施例におけるランタイムシステムはコンピュータ機器のオペレーティングシステムとは異なり、当該コンピュータ機器のソフトウェアシステムは上記のランタイムシステムとオペレーティングシステムとを同時に含んでもよい。
【０２５２】
図２２に示すように、本願の実施例におけるランタイムシステム１３１は、第１プロセッサ１１０上で実行可能であり、当該ランタイムシステム１３１は、データ処理装置１３１０、機器管理装置１３１４およびタスク実行装置１３１５を含んでもよく、データ処理装置１３１０および機器管理装置１３１４はいずれもタスク実行装置１３１５に接続されてもよい。具体的には、第１プロセッサ１１０が当該ランタイムシステム１３１を実行すると、ランタイムシステム１３１は、ニューラルネットワークなどのヘビー級のデータを実行するように第２プロセッサ１２０を制御することができる。すなわち、ランタイムシステム１３１は、ニューラルネットワークのオフラインモデルおよび入力データに基づいて計算を行いニューラルネットワークの出力データを取得するように第２プロセッサ１２０を制御することができる。ここで、データ処理装置１３１０は、メモリ１３０から現在オリジナルネットワークに対応するオフラインモデルおよびその入力データを取得するもので、現在オリジナルネットワークのオフラインモデルと現在ネットワークの入力データとが対応して設定されている。選択可能な形態として、現在オリジナルネットワークに対応するオフラインモデルは、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータなどの必要なネットワーク構成情報を含む。現在オリジナルネットワークのオフラインモデルは、現在オリジナルネットワークにおける各計算ノードの中間計算結果、入力データおよび出力データなどの関連データを含まないので、当該現在オリジナルネットワークのオフラインモデルのデータ量は現在オリジナルネットワークのデータ量よりも遥かに小さい。すなわち、当該現在オリジナルネットワークのオフラインモデルはライト級のデータであると考えられる。
【０２５３】
具体的には、各計算ノードに対応する命令は、当該計算ノードがどのような計算機能を実行するためのものであるかを示し、具体的には当該オリジナルネットワークにおける各計算ノードの計算属性を含んでもよい。当該現在オリジナルネットワークのノードインタフェースデータは、現在オリジナルネットワークの各計算ノードの接続関係を示すものである。具体的には、現在オリジナルネットワークのノードインタフェースデータは、各計算ノードの入力データのソースと出力データのソースを含んでもよい。例えば、図２８に示すように、Ｘ１、Ｘ２は現在オリジナルネットワークに対応する入力データであり、Ｙは現在オリジナルネットワークに対応する出力データであり、Ｗ１〜Ｗ６はそれぞれ現在オリジナルネットワークにおける計算ノードＦ１〜Ｆ３に対応するモデルパラメータである。現在オリジナルネットワークのノードインタフェースデータは、計算ノードＦ１、Ｆ２、Ｆ３を初期計算ノードとして含み、計算ノードＦ１、Ｆ２、Ｆ３の入力はそれぞれ予め設定された入力データであり、計算ノードＦ１の出力データは計算ノードＦ４と計算ノードＦ５の入力データであるなどとしてよい。このように、当該オリジナルネットワークを再実行する場合、当該現在オリジナルネットワークのオフラインモデルと入力データを取得さえすれば、当該現在オリジナルネットワークに対応するオフラインモデルを実行することで当該現在オリジナルネットワークの実行過程を実現することができる。
【０２５４】
機器管理装置１３１４は、第２プロセッサ１２０の駆動装置として、第２プロセッサ１２０を起動または停止するように制御することに用いられてもよい。ここで、第２プロセッサ１２０は、停止されると何らタスクも実行せず、起動されると計算または制御などのタスクを実行することができる。本願の実施例において、第２プロセッサ１２０は、現在オリジナルネットワークのオフラインモデルを実行するためのニューラルネットワークアクセラレーターであってもよい。タスク実行装置１３１５は、データ処理装置１３１０により取得した現在オリジナルネットワークのオフラインモデルおよび入力データを実行して現在オリジナルネットワークの出力データ（すなわち、ニューラルネットワークの計算結果）を取得するように第２プロセッサ１２０を制御することに用いられる。オリジナルネットワークに対応するオフラインモデルを実行するとは、オフラインモデルを用いて当該オリジナルネットワークに対応する機械学習アルゴリズム（例えば、ニューラルネットワークアルゴリズム）を実行し、フォワード演算を実行することによってアルゴリズムのターゲットアプリケーション（例えば、音声認識などの人工知能アプリケーション）を実現することをいうことは明らかである。
【０２５５】
具体的には、当該コンピュータ機器１００上でニューラルネットワークなどのヘビー級のデータを実行する必要がある場合、第１プロセッサ１１０上で上記ランタイムシステム１３１を実行して、当該ランタイムシステム１３１によって、当該ニューラルネットワークなどのデータを実行するように第２プロセッサ１２０を制御することができる。すなわち、当該コンピュータ機器１００上でニューラルネットワークなどのヘビー級のデータを実行する必要がある場合、まず、データ処理装置１３１０によってメモリ１３０から現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得することができる。現在オリジナルネットワークに対応するオフラインモデルおよび入力データのロードが完了した後、機器管理装置１３１４は第２プロセッサ１２０を起動するように制御することができる。その後、タスク実行装置１３１５は、現在オリジナルネットワークのオフラインモデルおよび入力データを実行するように第２プロセッサ１２０を制御することができ、これにより、当該現在オリジナルネットワークの実行過程を実現し、当該現在オリジナルネットワークの計算結果を取得する。
【０２５６】
本願の実施例において、現在オリジナルネットワークのオフラインモデルには、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータなどの必要なネットワーク構成情報のみが記憶されている。このため、当該現在オリジナルネットワークのオフラインモデルのデータ量は当該現在オリジナルネットワークのデータ量よりも遥かに小さい。これにより、現在オリジナルネットワークのオフラインモデルを実行することで、コンピュータ機器はニューラルネットワークなどのヘビー級のデータに対する処理過程を実現することができ、ニューラルネットワークの適用範囲が広くなる。また、当該コンピュータ機器上で当該オリジナルネットワークに対応するオフラインモデルを直接実行することにより、オリジナルネットワークにおける各計算ノードに対するコンパイルなどの処理操作が不要となり、当該コンピュータ機器の処理速度および効率を向上させることができる。
【０２５７】
選択可能な形態として、図２２に示すように、データ処理装置１３１０は、オフラインモデルロードユニット１３１１と入力データロードユニット１３１２を含む。ここで、オフラインモデルロードユニット１３１１は、メモリ１３０から現在オリジナルネットワークに対応するオフラインモデルを取得し、取得した現在オリジナルネットワークのオフラインモデルを解析して、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータを取得することに用いられる。さらに、オフラインモデルロードユニット１３１１が現在オリジナルネットワークのオフラインモデルを解析する過程は、第２プロセッサ１２０が当該現在オリジナルネットワークのオフラインモデルを実行できるように、現在オリジナルネットワークに対応するオフラインモデルに対してデータ前処理（例えば、データフォーマット変換、正規化などの前処理）を行う過程をさらに含んでもよい。
【０２５８】
入力データロードユニット１３１２は、メモリ１３０から入力データを取得することに用いられ、当該入力データは、オリジナルネットワークの初期計算ノードに対応する入力データであってもよい。図２８に示すように、Ｘ１、Ｘ２は、オリジナルネットワークの初期計算ノードの入力データである。さらに、当該入力データは、アプリケーションソフトウェアによって取得され、メモリ１３０に記憶されるてもよい。当該アプリケーションソフトウェアは、第１プロセッサまたは第２プロセッサ上で実行されてもよい。例えば、ユーザはアプリケーションソフトウェアのインタラクティブインタフェースを介して現在オリジナルネットワークの入力データを設定することができ、ランタイムシステムは、当該取得した現在オリジナルネットワークの入力データをメモリ１３０に記憶することができる。
【０２５９】
本願の実施例において、オフラインモデルロードユニット１３１１は、オフラインモデルのロードの進行状況をリアルタイムに取得することに用いられてもよく、入力データロードユニット１３１２は、入力データのロードの進行状況をリアルタイムに取得することに用いられてもよい。例えば、オフラインモデルロードユニット１３１１が現在オリジナルネットワークに対応するオフラインモデルのロードを完了し（例えば、オフラインモデルのデータロード割合が１００％である）、かつ入力データロードユニット１３１２が現在オリジナルネットワークに対応する入力データのロードを完了した後（例えば、入力データのロード割合が１００％である）、オフラインモデルロードユニット１３１１と入力データロードユニット１３１２は、機器管理装置１３１４にデータロード完了信号を送信することができ、機器管理装置１３１４は、受信したデータロード完了信号に基づいて第２プロセッサ１２０を起動するように制御することができる。第２プロセッサ１２０が起動されると、機器管理装置１３１４は、タスク実行装置１３１５に起動完了信号を送信することができ、タスク実行装置１３１５は、受信した起動完了信号に基づいて、現在オリジナルネットワークのオフラインモデルを実行するように第２プロセッサ１２０を制御することができる。
【０２６０】
他の実施例において、コンピュータ機器のデータ処理速度および効率をさらに向上させるために、第２プロセッサを事前に起動するように制御してもよい。そして、オフラインモデルのデータ量が入力データのデータ量よりも大きいので、オフラインモデルの必要なロード時間は入力データのロード時間よりも大きい可能性がある。このため、オフラインモデルロードユニット１３１１のデータロード割合が第１プリセット割合（例えば、８０％）以上であれば、機器管理装置１３１４にロード完了信号を送信して第２プロセッサ１２０を事前に起動するようにすることができる。さらに、オフラインモデルロードユニット１３１１のデータロード割合が第１プリセット割合（例えば、８０％）以上であり、かつ入力データロードユニット１３１２のデータロード割合が第２プリセット割合（例えば、８０％）以上であれば、オフラインモデルロードユニット１３１１と入力データロードユニット１３１２は、機器管理装置１３１４にデータロード完了信号を送信することができ、機器管理装置１３１４は、受信したデータロード完了信号に基づいて第２プロセッサ１２０を起動するように制御することができる。
【０２６１】
選択可能な形態として、図２３に示すように、データ処理装置１３１０は、第２プロセッサ１２０が入力データを実行できるように、入力データに対して前処理（例えば、データフォーマット変換、正規化などの前処理）を行う入力データ前処理ユニット１３１３を含んでもよい。この場合、入力データロードユニット１３１２は、入力データのロードを完了した後、入力データ前処理ユニット１３１３に入力データロード完了信号を送信することができ、入力データ前処理ユニット１３１３は、受信した入力データロード完了信号に基づいて、現在オリジナルネットワークに対応する入力データに対して正規化、フォーマット変換などのデータ前処理操作を行うことができる。機器管理装置１３１４は、受信した、オフラインモデルロードユニット１３１１からのオフラインモデルロード完了信号、および入力データ前処理モデル１３１４からの前処理完了信号に基づいて、第２プロセッサ１２０を起動するように制御することができる。
【０２６２】
また、入力データ前処理ユニット１３１３は、第２プロセッサ１２０が取得した出力データをメモリ１３０に記憶することにも用いられる。具体的には、第２プロセッサ１２０は、現在オリジナルネットワークのオフラインモデルおよび入力データの実行過程を完了した後、現在オリジナルネットワークの出力データ（すなわち、計算結果）を入力データ前処理ユニット１３１３に転送することができ、入力データ前処理ユニット１３１３は、現在オリジナルネットワークの出力データに対してデータフォーマット変換などの前処理を行い、その後、当該現在オリジナルネットワークの出力データをメモリ１３０に記憶することができる。
【０２６３】
一実施例において、当該コンピュータ機器１００のソフトウェアシステムは、アプリケーションソフトウェアとオペレーティングシステム（例えば、アンドロイドオペレーティングシステム、マイクロソフトオペレーティングシステム、Ｌｉｎｕｘオペレーティングシステムなど）をさらに含み、アプリケーションソフトウェアは、オペレーティングシステムまたは上記のランタイムシステム上で実行可能であり、オペレーティングシステムおよび上記のランタイムシステムは様々なアプリケーションソフトウェアのために実行環境を提供する。具体的には、オペレーティングシステムとアプリケーションソフトウェアはメモリ１３０に記憶されてもよく、当該オペレーティングシステムは、第１プロセッサ１１０または第２プロセッサ１２０上で実行可能である。
【０２６４】
当該ランタイムシステム１３１の各装置は、アプリケーションソフトウェアが呼び出し可能なセキュアＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ、アプリケーションソフトウェアインタフェース）を提供可能である。これにより、アプリケーションソフトウェアは、ランタイムシステム１３１によって現在オリジナルネットワークのオフラインモデルおよび入力データを取得し、第２プロセッサ１２０が上記現在オリジナルネットワークのオフラインモデルを実行して現在オリジナルネットワークの出力データを取得するように制御することができる。具体的には、データ処理装置１３１０は、オフラインモデルＡＰＩおよび入力データＡＰＩを提供可能で、さらに、オフラインモデルロードユニット１３１１は、オフラインモデルＡＰＩを提供可能で、入力データロードユニット１３１２は、入力データＡＰＩを提供可能である。ニューラルネットワークなどのヘビー級のデータを実行する必要がある場合、アプリケーションソフトウェアは当該データ処理装置１３１０のオフラインモデルＡＰＩを呼び出し可能で、これにより、オフラインモデルロードユニット１３１１はメモリ１３０から当該現在オリジナルネットワークに対応するオフラインモデルを取得することができる。現在オリジナルネットワークに対応するオフラインモデルのロードが完了した後、アプリケーションソフトウェアは、データ処理装置１３１０の入力データＡＰＩを呼び出し可能で、これにより、入力データロードユニット１３１２はメモリ１３０から現在オリジナルネットワークに対応する入力データを取得することができる。さらに、当該現在オリジナルネットワークの入力データは、アプリケーションソフトウェアによって取得されてもよい。例えば、ユーザは、アプリケーションソフトウェアのインタラクティブ表示インタフェースを介して現在オリジナルネットワークに対応する入力データを手動で設定することができる。もちろん、他の実施例において、アプリケーションソフトウェアは、上記のオフラインモデルＡＰＩと入力データＡＰＩを同時に呼び出してもよく、これにより、現在オリジナルネットワークのオフラインモデルと入力データを同時にロードすることができる。ここでは、単に例示的なものであり、具体的な実行順序を限定しない。
【０２６５】
さらに、データ処理装置１３１０の入力データ前処理ユニット１３１３は、データ前処理ＡＰＩを提供可能である。現在オリジナルネットワークの入力データのロードが完了した後、アプリケーションソフトウェアは、データ前処理ＡＰＩを呼び出し可能で、これにより、データ前処理ユニット１３１３は、第２プロセッサが上記の現在オリジナルネットワークの入力データを実行できるように、現在オリジナルネットワークの入力データに対して前処理を行うことができる。
【０２６６】
機器管理装置１３１４は第２プロセッサ駆動ＡＰＩを提供可能で、タスク実行装置１３１５は第２プロセッサ実行ＡＰＩを提供可能である。現在オリジナルネットワークのオフラインモデルおよび入力データのロードが完了した後、アプリケーションソフトウェアは、当該タスク実行装置１３１５が提供する第２プロセッサ駆動ＡＰＩを呼び出すことにより、第２プロセッサ１２０を起動することができる。第２プロセッサ１２０が起動されると、アプリケーションソフトウェアは、タスク実行装置１３１５が提供する第２プロセッサ実行ＡＰＩを呼び出し可能で、これにより、現在オリジナルネットワークに対応するオフラインモデルおよび入力データを実行して現在オリジナルネットワークの出力データを取得するように第２プロセッサ１２０を制御する。現在オリジナルネットワークに対応するオフラインモデルの実行過程が完了した後、アプリケーションソフトウェアは、当該第２プロセッサ駆動ＡＰＩを呼び出すことにより、第２プロセッサ１２０を停止することができる。
【０２６７】
また、現在オリジナルネットワークのオフラインモデルの実行過程が完了した後、アプリケーションソフトウェアは、さらにデータ前処理ＡＰＩを呼び出すことができ、これにより、入力データ前処理ユニット１３１３は、現在オリジナルネットワークの出力データに対してデータ前処理を行い、現在オリジナルネットワークの出力データをメモリ１３０に記憶することができる。
【０２６８】
さらには、第２プロセッサ１２０の数は複数であってもよく、タスク実行装置１３１５はさらにタスク割り当てＡＰＩを提供することができ、タスク実行装置１３１５は、複数の第２プロセッサ１２０間のタスクの割り当ておよびスケジューリングを実現するように、複数の第２プロセッサ１２０を制御することに用いられてもよい。具体的には、アプリケーションソフトウェアは、タスク実行装置１３１５が提供するタスク割り当てＡＰＩを呼び出すことにより、複数の第２プロセッサ１２０の中から現在タスクを実行するターゲット第２プロセッサを選択することができる。現在オリジナルネットワークのオフラインモデルおよび入力データのロードが完了した後、アプリケーションソフトウェアは、当該ターゲット第２プロセッサに対応する第２プロセッサ駆動ＡＰＩを呼び出すことにより、当該ターゲット第２プロセッサを起動することができる。ターゲット第２プロセッサが起動されると、アプリケーションソフトウェアは、タスク実行装置１３１５が提供する当該ターゲット第２プロセッサに対応する第２プロセッサ実行ＡＰＩを呼び出し可能で、これにより、現在オリジナルネットワークに対応するオフラインモデルおよび入力データを実行するように当該ターゲット第２プロセッサを制御する。現在オリジナルネットワークに対応するオフラインモデルの実行過程が完了した後、当該ターゲット第２プロセッサに対応する第２プロセッサ駆動ＡＰＩを呼び出すことにより、当該ターゲット第２プロセッサを停止することができる。
【０２６９】
選択可能な形態として、他の実施例において、当該第２プロセッサ１２０はマルチコアプロセッサであってもよく、すなわち、当該第２プロセッサ１２０は複数の処理ユニットを含んでもよい。タスク実行装置１３１５は、複数の第２プロセッサ１２０の複数の処理ユニット間のタスクの割り当ておよびスケジューリングを実現するように、複数の第２プロセッサ１２０の複数の処理ユニットを制御することに用いられてもよい。具体的には、アプリケーションソフトウェアは、タスク実行装置１３１５が提供するタスク割り当てＡＰＩを呼び出すことにより、第２プロセッサ１２０における複数の処理ユニットの中から現在タスクを実行するターゲット処理ユニットを選択することができる。現在オリジナルネットワークのオフラインモデルおよび入力データのロードが完了した後、アプリケーションソフトウェアは、当該ターゲット処理ユニットに対応する第２プロセッサ駆動ＡＰＩを呼び出すことにより、当該ターゲット処理ユニットを起動することができる。ターゲット処理ユニットが起動されると、アプリケーションソフトウェアは、当該ターゲット処理ユニットに対応する第２プロセッサ実行ＡＰＩを呼び出し可能で、これにより、現在オリジナルネットワークに対応するオフラインモデルおよび入力データを実行するように当該ターゲット処理ユニットを制御する。現在オリジナルネットワークに対応するオフラインモデルの実行過程が完了した後、ターゲット処理ユニットに対応する第２プロセッサ駆動ＡＰＩを呼び出すことにより、当該ターゲット処理ユニットを停止することができる。
【０２７０】
更なる改良として、ランタイムシステム１３１は、トラステッド実行環境に基づいて構築されたセキュアなランタイムシステムであってよい。例えば、ランタイムシステム１３１は、ＴＥＥ（Ｔｒｕｓｔｅｄ  Ｅｘｅｃｕｔｉｏｎ  Ｅｎｖｉｒｏｎｍｅｎｔ、トラステッド実行環境）に基づいて構築されたランタイムシステムであってもよい。具体的には、ＴＥＥは、オペレーティングシステムなどの非セキュアソフトウェアシステムから隔離されたランタイムシステムを構築することができ、これにより、ソフトウェア的な隔離を実現し、オリジナルネットワークのオフラインモデルおよび入力データと出力データのセキュリティを確保することができる。上記のアプリケーションソフトウェアは、ＴＡなどのセキュアなアプリケーションであってもよく、当該ＴＡなどのセキュアなアプリケーションソフトウェアは、ＴＥＥに基づいて構築されたランタイムシステムで実行することができる。
【０２７１】
メモリ１３０の記憶空間は、セキュア記憶空間と非セキュア記憶空間とに分けられる。具体的には、現在オリジナルネットワークのオフラインモデルおよび入力データを記憶する記憶空間はセキュア記憶空間であり、オペレーティングシステムおよびアプリケーションソフトウェアなどのソフトウェアシステムを記憶する記憶空間は非セキュア記憶空間であり、ランタイムシステムはメモリのセキュア記憶空間または非セキュア記憶空間に記憶されてもよい。もちろん、当該メモリ１３０はセキュアメモリであってもよい。これにより、上記のランタイムシステム、ＴＡおよびセキュア記憶空間は、完全なＴＥＥ実行環境を構成している。
【０２７２】
他の実施例において、メモリ１３０の数は２つ以上であってもよく、１つのメモリ１３０は、現在オリジナルネットワークのオフラインモデルおよび入力データを記憶するセキュア記憶空間として用いられてもよい。もう１つのメモリ１３０は、オペレーティングシステムおよびアプリケーションソフトウェアなどのソフトウェアシステムを記憶する非セキュア記憶空間として用いられてもよい。さらには、オペレーティングシステムおよびアプリケーションソフトウェアなどは、セキュア記憶空間に記憶されてもよい。
【０２７３】
本願の実施例におけるセキュア記憶空間とは、トラステッド（Ｔｒｕｓｔｅｄ）記憶空間をいい、当該セキュア記憶空間は、暗号化された記憶空間であってもよいことは明らかである。具体的には、対称暗号化アルゴリズム、非対称暗号化アルゴリズムまたはランダム暗号化アルゴリズム（例えば、ランダム暗号生成器によって暗号を取得する）を用いてもよい。もちろん、セキュアな記憶空間は、指紋などで暗号化された記憶空間であってもよい。上記セキュアなランタイムシステム１３１およびアプリケーションソフトウェアは、暗号化アルゴリズムによって取得されてもよい。または、セキュア記憶空間は、信頼性測定方法によって取得されたセキュア記憶空間であってもよく、上記セキュアなランタイムシステム１３１およびアプリケーションソフトウェアは、信頼性測定方法によって取得されてもよい。
【０２７４】
もちろん、当該第１プロセッサ１１０は、セキュアチップ、例えばＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ、トラステッドプラットフォームモジュール）、ＴＣＭ（Ｔｒｕｓｔｅｄ  Ｃｒｙｐｔｏｇｒａｐｈｙ  Ｍｏｄｕｌｅ、トラステッド暗号モジュール）またはＴＰＣＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｃｏｎｔｒｏｌ  Ｍｏｄｕｌｅ、トラステッドプラットフォーム制御モジュール）などであってもよい。さらに、第２プロセッサ１２０は、ＴＰＭ、ＴＣＭまたはＴＰＣＭなどのセキュアチップであってもよい。
【０２７５】
選択可能な形態として、本願の実施例のコンピュータ機器は、プロセッサとメモリのみを含んでもよい。ここで、当該プロセッサは、マルチコアプロセッサである。具体的には、当該プロセッサは、複数の処理ユニットを含んでもよい。例えば、当該プロセッサは、第１処理ユニットと第２処理ユニットを含む。ここで、ランタイムシステムは、第１処理ユニット上で実行されてもよい。さらに、上記ランタイムシステムは、データ処理装置、機器管理装置、タスク実行装置などの構造を含んでもよい。ここで、データ処理装置は、メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得することに用いられ、現在オリジナルネットワークに対応するオフラインモデルは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令およびオリジナルネットワークにおける各計算ノードのインタフェースデータを含む。機器管理装置は、第２処理ユニットを起動または停止するように制御することに用いられ、タスク実行装置は、現在オリジナルネットワークのオフラインモデルおよび入力データを実行するように第２処理ユニットを制御する。さらには、当該ランタイムシステムの他の構造は上記実施例におけるランタイムシステムのアーキテクチャと同一であり、具体的には上記した説明を参照してよく、ここで詳細な説明は省略する。
【０２７６】
図２４に示すように、本願の実施例は、図２０に示すコンピュータ機器に用いられ、オフラインモデルによってニューラルネットワークなどのヘビー級のデータに対する処理過程を実現し、コンピュータ機器のデータ処理速度および効率を向上させることができるデータ処理方法をさらに提供している。具体的には、上記方法は以下のステップを含む。
【０２７７】
Ｓ１１０において、メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得するようにデータ処理装置を制御し、現在オリジナルネットワークに対応するオフラインモデルは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータおよび命令を含む。具体的には、第１プロセッサ１１０が当該ランタイムシステム１３１を実行すると、ランタイムシステム１３１のデータ処理装置１３１０によってメモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを読み取ることができる。さらに、データ処理装置１３１０のオフラインモデルロードユニット１３１１によってメモリ１３０から現在オリジナルネットワークに対応するオフラインモデルを取得することができる。入力データロードユニット１３１２によってメモリ１３０から入力データを取得し、当該入力データは、オリジナルネットワークの初期計算ノードに対応する入力データであってもよい。
【０２７８】
Ｓ１２０において、機器管理装置によってコンピュータ機器の第２プロセッサを起動するように制御する。具体的には、ランタイムシステム１３１の機器管理装置１３１４によって第２プロセッサを起動または停止するように制御することができる。すなわち、オフラインモデルロードユニット１３１１が現在オリジナルネットワークに対応するオフラインモデルのロードを完了し、入力データロードユニット１３１２が現在オリジナルネットワークに対応する入力データのロードを完了した後、オフラインモデルロードユニット１３１１と入力データロードユニット１３１２は、機器管理装置１３１４にデータロード完了信号を送信することができ、機器管理装置１３１４は、受信したデータロード完了信号に基づいて第２プロセッサ１２０を起動するように制御することができる。
【０２７９】
Ｓ１３０において、タスク実行装置によって、現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて現在オリジナルネットワークを実行して現在オリジナルネットワークの出力データを取得するようにコンピュータ機器の第２プロセッサを制御する。具体的には、ランタイムシステム１３１のタスク実行装置１３１５によって、現在オリジナルネットワークのオフラインモデルを実行するように第２プロセッサ１２０を制御することができる。オリジナルネットワークに対応するオフラインモデルを実行するとは、オフラインモデルを用いて当該オリジナルネットワークに対応する機械学習アルゴリズム（例えば、ニューラルネットワークアルゴリズム）を実行し、フォワード演算を実行することによってアルゴリズムのターゲットアプリケーション（例えば、音声認識などの人工知能アプリケーション）を実現することをいうことは明らかである。
【０２８０】
Ｓ１４０において、データ処理装置によって現在オリジナルネットワークの出力データをメモリに記憶する。具体的には、データ処理装置１３１０によって現在オリジナルネットワークの出力データをメモリ１３０に記憶することができる。さらに、当該データ処理装置１３１０は、現在オリジナルネットワークの出力データに対してデータフォーマット変換などの前処理操作を行ってメモリ１３０に記憶することができる。選択可能な形態として、データ処理装置１３１０の入力データ処理ユニット１３１３は、現在オリジナルネットワークの出力データに対してデータフォーマット変換などの前処理操作を行ってメモリ１３０に記憶することができる。
【０２８１】
選択可能な形態として、現在オリジナルネットワークに対応するオフラインモデルおよび入力データのロードが完了した後、第２プロセッサが取得したオフラインモデルおよび入力データを実行できるように、取得したオフラインモデルおよび入力データに対して前処理を行ってもよい。具体的には、上記ステップＳ１１０は以下のステップをさらに含んでもよい。
【０２８２】
Ｓ１１１において、取得した現在オリジナルネットワークに対応するオフラインモデルを解析して、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータを取得する。さらに、具体的には、オフラインモデルロードユニット１３１１によって、取得した現在オリジナルネットワークのオフラインモデルを解析して、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータを取得することができる。さらには、オフラインモデルロードユニット１３１１によって、解析されたデータに対してデータフォーマット変換、正規化などの前処理操作を行ってもよい。
【０２８３】
Ｓ１１２において、取得した現在オリジナルネットワークの入力データに対して前処理を行い、例えば入力データに対してデータフォーマット変換、正規化などの前処理操作を行う。具体的には、第２プロセッサ１２０が入力データを実行できるように、入力データ前処理ユニット１３１３によって、入力データに対して前処理（例えば、データフォーマット変換、正規化などの前処理）を行うことができる。
【０２８４】
さらに、上記方法は、以下のステップをさらに含んでもよい。
【０２８５】
現在オリジナルネットワークに対応するオフラインモデルのロードの進行状況をリアルタイムに取得する。具体的には、オフラインモデルロードユニット１３１１は、現在ネットワークに対応するオフラインモデルのロードの進行状況をリアルタイムに取得することができ、当該オフラインモデルのロードの進行状況は、データ割合または残り時間などで示されてもよい。
【０２８６】
現在オリジナルネットワークに対応するオフラインモデルのロードの進行状況が第１プリセット割合以上であれば、前記のコンピュータ機器の第２プロセッサを起動するように制御するステップを実行する。具体的には、当該第１プリセット割合が８０％〜１００％であってもよい。例えば、オフラインモデルロードユニット１３１１が現在オリジナルネットワークに対応するオフラインモデルのロードを完了した（例えば、オフラインモデルのデータロード割合が１００％である）場合、オフラインモデルロードユニット１３１１は、機器管理装置１３１４にデータロード完了信号を送信することができ、機器管理装置１３１４は、受信したデータロード完了信号に基づいて第２プロセッサ１２０を起動するように制御することができる。または、オフラインモデルロードユニット１３１１のデータロード割合が第１プリセット割合（例えば、８０％）以上であれば、機器管理装置１３１４にロード完了信号を送信して第２プロセッサ１２０を事前に起動することができる。
【０２８７】
オフラインモデルのデータ量が入力データのデータ量よりも大きいので、オフラインモデルの必要なロード時間は入力データのロード時間よりも大きい可能性がある。このため、オフラインモデルのロードの進行状況のみに基づいて第２プロセッサ１２０を起動するか否かを判断することができる。さらに、入力データロードユニット１３１２は、入力データのロードの進行状況をリアルタイムに取得してもよく、オフラインモデルロードユニット１３１１のデータロード割合が第１プリセット割合（例えば、８０％）以上であり、かつ入力データロードユニット１３１２のデータロード割合が第２プリセット割合（例えば、８０％）以上であれば、オフラインモデルロードユニット１３１１と入力データロードユニット１３１２は、機器管理装置１３１４にデータロード完了信号を送信することができ、機器管理装置１３１４は、受信したデータロード完了信号に基づいて第２プロセッサ１２０を起動するように制御することができる。
【０２８８】
また、図２５に示すように、本願の実施例は、図２０に示すコンピュータ機器に用いられ、オフラインモデルによってニューラルネットワークなどのヘビー級のデータに対する処理過程を実現し、コンピュータ機器のデータ処理効率および速度を向上させることができるデータ処理方法をさらに提供している。具体的には、上記方法は以下のステップを含む。
【０２８９】
Ｓ２１０において、オフラインモデルＡＰＩを呼び出し、現在オリジナルネットワークに対応するオフラインモデルを取得する。具体的には、アプリケーションソフトウェアは、オフラインモデルロードユニット１３１１が提供するオフラインモデルＡＰＩを呼び出し可能で、これにより、オフラインモデルロードユニット１３１１は、メモリ１３０から現在オリジナルネットワークに対応するオフラインモデルを読み取ることができる。ここで、現在オリジナルネットワークに対応するオフラインモデルは、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータを含む。ここで、オフラインモデルの生成過程について、上記した説明を参照してよい。
【０２９０】
Ｓ２１０において、入力データＡＰＩを呼び出し、現在オリジナルネットワークの入力データを取得する。具体的には、アプリケーションソフトウェアは、入力データロードユニット１３１２が提供する入力データＡＰＩを呼び出し可能で、入力データロードユニット１３１２によってメモリ１３０から現在オリジナルネットワークの入力データを取得する。さらに、アプリケーションソフトウェアは、入力データ前処理ユニット１３１３が提供するデータ前処理ＡＰＩを呼び出すこともでき、第２プロセッサ１２０が上記の現在オリジナルネットワークの入力データを実行できるように、入力データ前処理ユニット１３１３によって、入力データロードユニット１３１２が取得した入力データに対してデータフォーマット変換、正規化などの前処理操作を行う。
【０２９１】
Ｓ２２０において、第２プロセッサ駆動ＡＰＩを呼び出し、コンピュータ機器における第２プロセッサを起動するように制御する。具体的には、アプリケーションソフトウェアは、機器管理ユニット１３１４が提供する第２プロセッサ駆動ＡＰＩを呼び出し可能で、機器管理ユニット１３１４によって第２プロセッサ１２０を起動するように制御する。
【０２９２】
Ｓ２３０において、第２プロセッサ実行ＡＰＩを呼び出し、現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて現在オリジナルネットワークの出力データを取得するように第２プロセッサを制御する。具体的には、アプリケーションソフトウェアは、タスク実行装置１３１５が提供する第２プロセッサ実行ＡＰＩを呼び出し可能で、タスク実行装置１３１５によって、現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて現在オリジナルネットワークの出力データを取得するように第２プロセッサ１２０を制御する。
【０２９３】
Ｓ２４０において、第２プロセッサ駆動ＡＰＩを呼び出し、第２プロセッサを停止するように制御する。具体的には、アプリケーションソフトウェアは、機器管理ユニット１３１４が提供する第２プロセッサ駆動ＡＰＩを呼び出し可能で、機器管理ユニット１３１４によって第２プロセッサ１２０を停止するように制御する。
【０２９４】
当業者であれば、上記実施例の方法における全部または一部のフローは、コンピュータプログラムによって関連するハードウェアに命令を与えることで実現でき、コンピュータプログラムは、不揮発性のコンピュータ読み取り可能な記憶媒体に記憶されてもよく、当該コンピュータプログラムは実行されると上記各方法の実施例のフローを含んでもよいことを理解できる。
【０２９５】
また、本願の実施例は、１つまたは複数のプロセッサによって実行されると上記の方法のステップを実現するコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体をさらに提供している。当該コンピュータ記憶媒体は、不揮発性および／または揮発性メモリを含んでもよい。不揮発性メモリは、リードオンリーメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）またはフラッシュメモリを含んでもよい。揮発性メモリは、ランダムアクセスメモリ（ＲＡＭ）または外部キャッシュメモリを含んでもよい。例示的なものとして、ＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲＳＤＲＡＭ）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンク（Ｓｙｎｃｈｌｉｎｋ）ＤＲＡＭ（ＳＬＤＲＡＭ）、ラムバス（Ｒａｍｂｕｓ）ダイレクトＲＡＭ（ＲＤＲＡＭ）、ダイレクトラムバスダイナミックＲＡＭ（ＤＲＤＲＡＭ）、およびラムバスダイナミックＲＡＭ（ＲＤＲＡＭ）などの様々な形態のものを利用してもよく、これについて限定しない。
【０２９６】
上記のコンピュータ機器、データ処理方法および記憶媒体によれば、データ処理装置によって、メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを直接取得することができ、当該コンピュータ機器の第２プロセッサは、取得したオリジナルネットワークのオフラインモデルおよび入力データに基づいて当該現在オリジナルネットワークを実行して、現在オリジナルネットワークの出力データを取得することができる。各オリジナルネットワークに対応するオフラインモデルは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令およびオリジナルネットワークにおける各計算ノードのインタフェースデータのみを含むので、オリジナルネットワークのオフラインモデルのデータ量は当該オリジナルネットワークのデータ量よりも遥かに小さい。これにより、コンピュータ機器上で当該現在オリジナルネットワークに対応するオフラインモデルを実行することで、コンピュータ機器によるヘビー級のデータのニューラルネットワークデータに対する処理過程を実現することができる。また、当該コンピュータ機器上で当該現在オリジナルネットワークに対応するオフラインモデルを直接実行することにより、現在オリジナルネットワークにおける各計算ノードに対するコンパイルなどの処理操作が不要となり、当該コンピュータ機器の処理速度および効率を向上させることができる。
【０２９７】
本願の他の実施例において、図３０に示すように、コンピュータ機器２００は、第１プロセッサ２１０、第２プロセッサ２２０、第１メモリ２３０および第２メモリ２４０を含んでもよい。第１メモリ２３０には、複数のオリジナルネットワークに対応するオフラインモデルおよび入力データと、第１プロセッサ２３０上で実行可能なランタイムシステムとが記憶され、第２メモリ２４０には、第１プロセッサまたは第２プロセッサ上で実行可能なオペレーティングシステムが記憶されている。具体的には、上記第１メモリ２３０と第２メモリ２４０は、物理的に互いに独立した２つのメモリであってもよい。または、第１メモリ２３０と第２メモリ２４０は全体として集積され、第１メモリ２３０と第２メモリ２４０は、論理的に互いに独立した２つの記憶空間であってもよい。
【０２９８】
さらに、第１プロセッサ２１０の数は２つ以上であってもよい。例えば、第１プロセッサ２１０の数は２つであり、１つの第１プロセッサ２１０は上記セキュアなランタイムシステム２３１を実行することに用いられ、もう１つの第１プロセッサ２１０はオペレーティングシステムを実行することに用いられる。または、上記の第１プロセッサ２１０は、マルチコアプロセッサであってもよく、２つ以上の処理ユニットを含んでもよく、１つの処理ユニットは上記のランタイムシステム２３１を実行することに用いられ、もう１つの処理ユニットは上記のオペレーティングシステムを実行することに用いられる。このように、ハードウェア的な隔離によりコンピュータ機器をセキュア実行環境と非セキュア実行環境に区画することができる。さらには、上記第１プロセッサ２１０は、ＴＣＭ、ＴＰＭまたはＴＰＣＭなどのセキュアチップによって実現されてもよい。
【０２９９】
上記のランタイムシステムは、トラステッド実行環境に基づいて構築されたセキュアなランタイムシステムであり、例えば、ランタイムシステム２３１は、ＴＥＥ（Ｔｒｕｓｔｅｄ  Ｅｘｅｃｕｔｉｏｎ  Ｅｎｖｉｒｏｎｍｅｎｔ、トラステッド実行環境）に基づいて構築されたランタイムシステムであってもよい。具体的には、ＴＥＥは、オペレーティングシステムなどの非セキュアソフトウェアシステムから隔離されたランタイムシステムを構築することができ、これにより、ソフトウェア的な隔離を実現し、オリジナルネットワークのオフラインモデルおよび入力データと出力データのセキュリティを確保することができる。さらに、当該セキュアなランタイムシステム２３１は、暗号化アルゴリズムによって取得されてもよいし、信頼性測定によって取得されてもよい。第１メモリ２３０はセキュア記憶媒体である。ランタイムシステム２３１は、第１プロセッサ２１０上で実行されると、第１メモリ２３０から現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得し、第２プロセッサ２２０が現在オリジナルネットワークに対応するオフラインモデルを実行するように制御することができる。
【０３００】
本願の実施例におけるセキュアとは、トラステッド（Ｔｒｕｓｔｅｄ）をいい、予め設定された暗号化アルゴリズムによって実現されてもよく、例えば対称暗号化アルゴリズム、非対称暗号化アルゴリズムまたはランダム暗号化アルゴリズム（例えば、ランダム暗号生成器によって暗号を取得する）を用いてもよい。もちろん、指紋などで暗号化されてもよい。または、セキュアは、信頼性測定方法よって取得されてもよい。
【０３０１】
選択可能な形態として、当該ランタイムシステム２３１は、アプリケーションソフトウェアが呼び出し可能なセキュアＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ、アプリケーションソフトウェアインタフェース）を提供可能で、ＡＰＩは主に、鍵管理、暗号アルゴリズムおよびセキュア記憶などを含む。上記ランタイムシステム２３１は、データ処理装置、機器管理装置、タスク実行装置を含んでもよく、その構造は上記のランタイムシステム１３１の構造と類似し、図２２と図２３を参照してよい。ここで、データ処理装置は、第１メモリ２３０から現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得するためのオフラインモデルＡＰＩおよび入力データＡＰＩを提供可能で、現在オリジナルネットワークに対応するオフラインモデルは、オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令およびオリジナルネットワークにおける各計算ノードのインタフェースデータを含む。機器管理装置は、第２プロセッサ２２０を起動または停止するように制御するための第２プロセッサ駆動ＡＰＩを提供可能である。タスク実行装置は、現在オリジナルネットワークのオフラインモデルおよび入力データを実行するように第２プロセッサ２２０を制御するための第２プロセッサ実行ＡＰＩを提供可能である。
【０３０２】
さらに、データ処理装置は、オフラインモデルロードユニットと入力データロードユニットを含む。オフラインモデルロードユニットは、第１メモリ２３０から各現在オリジナルネットワークに対応するオフラインモデルを取得し、現在オリジナルネットワークに対応するオフラインモデルを解析するためのオフラインモデルＡＰＩを提供可能である。入力データロードユニットは、第１メモリ２３０から現在オリジナルネットワークに対応する入力データを取得するための入力データＡＰＩを提供可能である。
【０３０３】
さらには、データ処理装置は、入力データ前処理ユニットをさらに含み、入力データ前処理ユニットは、第２プロセッサ２２０が現在オリジナルネットワークの入力データを実行できるように、入力データロードユニットが取得した入力データに対して前処理を行い、第２プロセッサ２２０が取得した出力データを第１メモリ２３０に記憶するためのデータ前処理ＡＰＩを提供可能である。
【０３０４】
選択可能な形態として、第２プロセッサ２２０の数は複数であるか、または第２プロセッサ２２０は複数の処理ユニットを含み、タスク実行装置は、複数の第２プロセッサ２２０、または第２プロセッサ２２０の複数の処理ユニットを制御するためのタスク割り当てＡＰＩを提供することもできる。
【０３０５】
さらに、コンピュータ機器は、ランタイムシステム２３１上で実行可能なセキュアなアプリケーションソフトウェア（ＴＡ：Ｔｒｕｓｔｅｄ  Ａｐｐｌｉｃａｔｉｏｎ）をさらに含み、アプリケーションソフトウェアは、オフラインモデルＡＰＩおよび入力データＡＰＩ、第２プロセッサ駆動ＡＰＩ、第２プロセッサ実行ＡＰＩを呼び出し可能である。当該セキュアなアプリケーションソフトウェアは、暗号化アルゴリズムによって実現されてもよいし、信頼性測定方法によって実現されてもよい。
【０３０６】
本願の実施例におけるデータ処理装置、機器管理装置およびタスク実行装置の動作原理は上記実施例における各装置の動作原理と基本的に一致していることは明らかであり、詳細は上記した説明を参照してよい。
【０３０７】
図３１に示すように、本願の実施例は、図３０に示すコンピュータ機器に用いられるデータ処理方法をさらに提供しており、方法は以下のステップを含む。
【０３０８】
Ｓ３１０において、第１メモリから現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得する。ここで、現在オリジナルネットワークに対応するオフラインモデルは、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータを含む。具体的には、第１プロセッサが上記セキュアなランタイムシステム２３１を実行すると、セキュアなランタイムシステム２３１は、セキュアな第１メモリ２３０から現在オリジナルネットワークに対応するオフラインモデルおよび入力データを取得することができる。選択可能な形態として、第１プロセッサ２１０が当該ランタイムシステム２３１を実行すると、ランタイムシステム２３１のデータ処理装置によって第１メモリ２３０から現在オリジナルネットワークに対応するオフラインモデルおよび入力データを読み取ることができる。さらに、データ処理装置のオフラインモデルロードユニットによって第１メモリ２３０から現在オリジナルネットワークに対応するオフラインモデルを取得することができる。入力データロードユニットによって第１メモリ２３０から入力データを取得し、当該入力データは、オリジナルネットワークの初期計算ノードに対応する入力データであってもよい。
【０３０９】
Ｓ３２０において、コンピュータ機器の第２プロセッサを起動するように制御する。具体的には、上記セキュアなランタイムシステム２３１は、コンピュータ機器の第２プロセッサ２２０を起動するように制御することができる。選択可能な形態として、ランタイムシステム２３１の機器管理装置は、第２プロセッサを起動または停止するように制御することができる。オフラインモデルロードユニットが現在オリジナルネットワークに対応するオフラインモデルのロードを完了した後、オフラインモデルロードユニットは、機器管理装置にデータロード完了信号を送信することができ、機器管理装置は、受信したデータロード完了信号に基づいて第２プロセッサ２２０を起動するように制御することができる。
【０３１０】
Ｓ３３０において、現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて現在オリジナルネットワークを実行して現在オリジナルネットワークの出力データを取得するようにコンピュータ機器の第２プロセッサを制御する。具体的には、上記ランタイムシステム２３１は、オフラインモデルおよびその対応する入力データを実行して現在オリジナルネットワークの出力データを取得するようにコンピュータ機器の第２プロセッサ２２０を制御することができる。選択可能な形態として、ランタイムシステム２３１のタスク実行装置によって、現在オリジナルネットワークのオフラインモデルを実行するように第２プロセッサ２２０を制御してもよい。
【０３１１】
オリジナルネットワークに対応するオフラインモデルを実行するとは、オフラインモデルを用いて当該オリジナルネットワークに対応する機械学習アルゴリズム（例えば、ニューラルネットワークアルゴリズム）を実行し、フォワード演算を実行することによってアルゴリズムのターゲットアプリケーション（例えば、音声認識などの人工知能アプリケーション）を実現することをいうことは明らかである。
【０３１２】
Ｓ３４０において、現在オリジナルネットワークの出力データを第１メモリに記憶する。すなわち、ランタイムシステム２３１は、現在オリジナルネットワークの出力データをセキュアな第１メモリ２３０に記憶することができる。選択可能な形態として、ランタイムシステム２３１のデータ処理装置によって現在オリジナルネットワークの出力データを第１メモリ２３０に記憶してもよい。さらに、当該データ処理装置は、現在オリジナルネットワークの出力データに対してデータフォーマット変換などの前処理操作を行って第１メモリ２３０に記憶することができる。さらには、データ処理装置の入力データ処理ユニットは、現在オリジナルネットワークの出力データに対してデータフォーマット変換などの前処理操作を行って第１メモリ２３０に記憶することができる。
【０３１３】
図３２に示すように、本願の実施例は、図３０に示すコンピュータ機器に用いられるデータ処理方法をさらに提供しており、上記方法は以下のステップを含んでもよい。
【０３１４】
Ｓ４１０において、オフラインモデルＡＰＩを呼び出し、第１メモリから現在オリジナルネットワークに対応するオフラインモデルを取得する。具体的には、セキュアなアプリケーションソフトウェア（ＴＡ）は、オフラインモデルＡＰＩを呼び出し可能で、これにより、オフラインモデルロードユニットは、第１メモリ２３０から現在オリジナルネットワークに対応するオフラインモデルを読み取ることができる。ここで、現在オリジナルネットワークに対応するオフラインモデルは、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータを含む。
【０３１５】
Ｓ４２０において、入力データＡＰＩを呼び出し、現在オリジナルネットワークの入力データを取得する。具体的には、セキュアなアプリケーションソフトウェアは、入力データＡＰＩを呼び出し可能で、入力データロードユニットによって第１メモリ２３０から現在オリジナルネットワークの入力データを取得する。
【０３１６】
Ｓ４３０において、第２プロセッサ駆動ＡＰＩを呼び出し、コンピュータ機器における第２プロセッサを起動するように制御する。具体的には、セキュアなアプリケーションソフトウェアは、第２プロセッサ駆動ＡＰＩを呼び出し可能で、機器管理ユニットによって第２プロセッサ２２０を起動するようにを制御する。
【０３１７】
Ｓ４４０において、第２プロセッサ実行ＡＰＩを呼び出し、現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて現在オリジナルネットワークの出力データを取得するように第２プロセッサを制御する。具体的には、セキュアなアプリケーションソフトウェアは、第２プロセッサ実行ＡＰＩを呼び出し可能で、タスク実行装置によって、現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて現在オリジナルネットワークの出力データを取得するように第２プロセッサ２２０を制御する。
【０３１８】
Ｓ４５０において、第２プロセッサ駆動ＡＰＩを呼び出し、第２プロセッサを停止するように制御する。具体的には、セキュアなアプリケーションソフトウェアは、第２プロセッサ駆動ＡＰＩを呼び出し可能で、機器管理ユニットによって第２プロセッサ２２０を停止するように制御する。
【０３１９】
さらに、上記方法は以下のステップをさらに含む。
【０３２０】
データ前処理ＡＰＩを呼び出し、現在オリジナルネットワークの出力データを第１メモリに記憶する。具体的には、セキュアなアプリケーションソフトウェアは、ランタイムシステム２３１が提供するデータ前処理ＡＰＩを呼び出し可能で、これにより、データ処理装置の入力データ前処理ユニットによって、出力データに対してデータフォーマット変換、正規化などの前処理操作を行い、現在オリジナルネットワークの出力データを第１メモリ２３０に記憶する。
【０３２１】
さらには、入力データＡＰＩを呼び出し、現在オリジナルネットワークの入力データを取得するステップの後に、上記方法は以下のステップをさらに含む。
【０３２２】
データ前処理ＡＰＩを呼び出し、第２プロセッサが入力データを実行できるように、取得した現在オリジナルネットワークの入力データに対して前処理を行う。具体的には、セキュアなアプリケーションソフトウェアは、入力データ前処理ユニットが提供するデータ前処理ＡＰＩを呼び出すこともでき、第２プロセッサ２２０が上記の現在オリジナルネットワークの入力データを実行できるように、入力データ前処理ユニットによって、入力データに対してデータフォーマット変換、正規化などの前処理操作を行う。
【０３２３】
選択可能な形態として、本願の実施例において、オフラインモデルの生成過程をさらに含んでもよく、当該オフラインモデルの生成過程は、クラウドサーバまたはニューラルネットワーク専用プロセッサ上で実行され、取得したオリジナルネットワークのオフラインモデルを第１メモリ２３０に記憶することができる。当該クラウドサーバまたはニューラルネットワーク専用プロセッサは、ニューラルネットワークなどのヘビー級のデータを実行可能なプロセッサであり、上記コンピュータ機器に含まれなくてもよい。オフラインモデルの生成過程について、上記した説明を参照してよく、詳細な説明は省略する。
【０３２４】
当業者であれば、上記実施例の方法における全部または一部のフローは、コンピュータプログラムによって関連するハードウェアに命令を与えることで実現でき、コンピュータプログラムは、不揮発性のコンピュータ読み取り可能な記憶媒体に記憶されてもよく、当該コンピュータプログラムは実行されると上記各方法の実施例のフローを含んでもよいことを理解できる。
【０３２５】
また、本願の実施例は、１つまたは複数のプロセッサによって実行されると上記の方法のステップを実現するコンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体をさらに提供している。当該コンピュータ記憶媒体は、不揮発性および／または揮発性メモリを含んでもよい。不揮発性メモリは、リードオンリーメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）またはフラッシュメモリを含んでもよい。揮発性メモリは、ランダムアクセスメモリ（ＲＡＭ）または外部キャッシュメモリを含んでもよい。例示的なものとして、ＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲＳＤＲＡＭ）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンク（Ｓｙｎｃｈｌｉｎｋ）ＤＲＡＭ（ＳＬＤＲＡＭ）、ラムバス（Ｒａｍｂｕｓ）ダイレクトＲＡＭ（ＲＤＲＡＭ）、ダイレクトラムバスダイナミックＲＡＭ（ＤＲＤＲＡＭ）、およびラムバスダイナミックＲＡＭ（ＲＤＲＡＭ）などの様々な形態のものを利用してもよく、これについて限定しない。
【０３２６】
本願の実施例において、現在オリジナルネットワークのオフラインモデルには、現在オリジナルネットワークにおける各計算ノードに対応するモデルパラメータ、命令および現在オリジナルネットワークにおける各計算ノードのインタフェースデータなどの必要なネットワーク構成情報のみが記憶されている。このため、当該現在オリジナルネットワークのオフラインモデルのデータ量は当該現在オリジナルネットワークのデータ量よりも遥かに小さい。これにより、現在オリジナルネットワークのオフラインモデルを実行することで、ＴＥＥなどのトラステッド実行環境に基づいて構築されたセキュアなランタイムシステムによるニューラルネットワークなどのヘビー級のデータに対する処理過程を実現することができ、ニューラルネットワークの適用範囲が広くなる。また、当該コンピュータ機器上で当該オリジナルネットワークに対応するオフラインモデルを直接実行することにより、オリジナルネットワークにおける各計算ノードに対するコンパイルなどの処理操作が不要となり、当該コンピュータ機器の処理速度および効率を向上させることができる。
【０３２７】
以上の実施例には本願のいくつかの実施形態のみが示されており、それらについて具体的かつ詳細に説明したが、本願の権利範囲を限定するものとして理解すべきではない。なお、当業者にとって、種々の変更や改良が本願の趣旨を逸脱しない限り可能であり、いずれも本願の権利範囲内に含まれることは自明である。よって、本願の権利範囲は添付された請求項を基準とすべきである。
【図１】
2020522824.tif 000003
【図２】
2020522824.tif 000004
【図３】
2020522824.tif 000005
【図４】
2020522824.tif 000006
【図５】
2020522824.tif 000007
【図６】
2020522824.tif 000008
【図７】
2020522824.tif 000009
【図８】
2020522824.tif 000010
【図９】
2020522824.tif 000011
【図１０】
2020522824.tif 000012
【図１１】
2020522824.tif 000013
【図１２】
2020522824.tif 000014
【図１３】
2020522824.tif 000015
【図１４】
2020522824.tif 000016
【図１５】
2020522824.tif 000017
【図１６】
2020522824.tif 000018
【図１７】
2020522824.tif 000019
【図１８】
2020522824.tif 000020
【図１９】
2020522824.tif 000021
【図２０】
2020522824.tif 000022
【図２１】
2020522824.tif 000023
【図２２】
2020522824.tif 000024
【図２３】
2020522824.tif 000025
【図２４】
2020522824.tif 000026
【図２５】
2020522824.tif 000027
【図２６】
2020522824.tif 000028
【図２７】
2020522824.tif 000029
【図２８】
2020522824.tif 000030
【図２９】
2020522824.tif 000031
【図３０】
2020522824.tif 000032
【図３１】
2020522824.tif 000033
【図３２】
2020522824.tif 000034
【手続補正書】
【提出日】令和1年12月9日(2019.12.9)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０１２６
【補正方法】変更
【補正の内容】
【０１２６】
ステップＳ７０３において、タスク有向非巡回グラフＤＡＧに応じて、実行すべきタスクＡ３、Ｂ２、Ｃ２、Ｄ４、Ｅ５、Ｆ１に対して参照カウントを設定し、設定した参照カウントに応じてＡ３、Ｂ２、Ｃ２、Ｄ４、Ｅ５、Ｆ１の実行を制御する。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１５８
【補正方法】変更
【補正の内容】
【０１５８】
例えば、取得したスケジューリング対象の命令リストにおけるスケジューリング対象の命令セットは合計６つの命令｛Ｌ１、Ｌ２、Ｃ１、Ｃ２、Ｓ１、Ｓ２｝を含み、図１６でこの６つの命令間のデータ依存関係を示す。図１６から分かるように、上記スケジューリング対象の命令セットにおける６つの命令のうちＬ１、Ｌ２は、他の命令の実行に依存しなくてもよいので、第１回目の命令選択を行う時に、Ｌ１、Ｌ２から選択する必要がある。すなわち、取得した第１選択ノードは、命令Ｌ１またはＬ２を選択した２つのケースに対応する。第１回目の命令選択時にＬ１を選択した場合、Ｌ１はソート済み命令となり、このとき、第１選択ノードは、ソート済み命令Ｌ１、および命令Ｌ１が削除されたスケジューリング対象の命令セット｛Ｌ２、Ｃ１、Ｃ２、Ｓ１、Ｓ２｝を記録する。同様に、第１回目の命令選択時にＬ２を選択した場合、もう１つの第１選択ノードが取得され、当該第１選択ノードは、ソート済み命令Ｌ２、および命令Ｌ２が削除されたスケジューリング対象の命令セット｛Ｌ１、Ｃ１、Ｃ２、Ｓ１、Ｓ２｝を記録する。上記過程を繰り返すことで第２回目の命令選択時の第２選択ノード、・・・、第６回目の命令選択時の第６選択ノードを取得することができる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１５９
【補正方法】変更
【補正の内容】
【０１５９】
本実施ステップにおいて、命令選択を行う都度に、その前の命令選択によって取得したスケジューリング対象の命令セット、例えば図１６に対応するスケジューリング対象の命令セットに依る必要がある。第１回目の命令選択時に選択した命令がＬ１である場合（１つの第１選択ノードに対応）、スケジューリング対象の命令セット｛Ｌ２、Ｃ１、Ｃ２、Ｓ１、Ｓ２｝を取得し、当該第１選択ノードのスケジューリング命令セットにおける命令Ｌ２、Ｃ１は他の命令の実行に依存しなくてもよく、この場合、第２回目の命令選択を行う時に、Ｌ２、Ｃ１から選択する必要がある（２つの第２選択ノードが存在することに対応）。第１回目の命令選択時に選択した命令がＬ２である場合（もう１つの第１選択ノードに対応）、スケジューリング対象の命令セット｛Ｌ１、Ｃ１、Ｃ２、Ｓ１、Ｓ２｝を取得し、当該第１選択ノードのスケジューリング命令セットにおける命令Ｌ１、Ｃ２は他の命令の実行に依存しなくてもよく、この場合、第２回目の命令選択を行う時に、Ｌ１、Ｃ２から選択する必要がある（同様に、２つの第２選択ノードが存在することに対応）。このように、本実施例において取得した全ての選択ノード同士は関連付けられ、このような各選択ノードの関連付けを図１７で示すことができる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１６４
【補正方法】変更
【補正の内容】
【０１６４】
ステップａにおいて、評価ユニットは、前記選択ノードにアクセスし、現在アクセスしている選択ノードに対応する最長実行時間を取得する。評価ユニットがアクセスする選択ノードは第１選択ノード、第２選択ノード、・・・、第Ｎ選択ノードであってもよい。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１６５
【補正方法】変更
【補正の内容】
【０１６５】
ステップｂにおいて、現在アクセスしている選択ノードに対応する最長実行時間が初期実行時間Ｔ０よりも短ければ、現在アクセスしているノードのソート済み命令をスケジューリング後の命令リストにおける対応する命令として決定する。ここで、初期実行時間はスケジューリング対象の命令リストにおける命令シーケンスの実行時間である。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１７７
【補正方法】変更
【補正の内容】
【０１７７】
ステップｃにおいて、評価ユニットは、現在アクセスしている選択ノードに対応する最短実行時間を取得する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１７８
【補正方法】変更
【補正の内容】
【０１７８】
ステップｄにおいて、現在アクセスしている選択ノードに対応する最短実行時間が初期実行時間Ｔ０よりも長ければ、現在アクセスしている選択ノードに関連付けられた選択ノードへのアクセスを終了する。例えば、命令Ｌ２に対応する第２選択ノードの最短実行時間はＴ２であり、Ｔ２は、当該選択ノードに対応する未ソート命令Ｃ１、Ｃ２、Ｓ１、Ｓ２が完全に並列され、ソートが最も合理的である場合に対応する。Ｔ２＞Ｔ０であれば、当該第２選択ノードに関連付けられた第３選択ノード、およびこれら第３選択ノードに関連付けられた第４選択ノード、・・・、第６選択ノードへのアクセスを終了する。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０２２９
【補正方法】変更
【補正の内容】
【０２２９】
本願の実施例において、オフラインモデルの生成方法をさらに提供している。当該オフラインモデルの生成方法は、クラウドサーバまたはニューラルネットワーク専用プロセッサ上で実行され、取得したオリジナルネットワークのオフラインモデルをメモリ１３０に記憶することができる。当該クラウドサーバまたはニューラルネットワーク専用プロセッサは、ニューラルネットワークなどのヘビー級のデータを実行可能なプロセッサであり、上記コンピュータ機器に含まれなくてもよい。具体的に、上記方法は、図２６に示すように、以下のステップを含む。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０２８０
【補正方法】変更
【補正の内容】
【０２８０】
Ｓ１４０において、データ処理装置によって現在オリジナルネットワークの出力データをメモリに記憶する。具体的には、データ処理装置１３１０によって現在オリジナルネットワークの出力データをメモリ１３０に記憶することができる。さらに、当該データ処理装置１３１０は、現在オリジナルネットワークの出力データに対してデータフォーマット変換などの前処理操作を行ってメモリ１３０に記憶することができる。選択可能な形態として、データ処理装置１３１０の入力データ前処理ユニット１３１３は、現在オリジナルネットワークの出力データに対してデータフォーマット変換などの前処理操作を行ってメモリ１３０に記憶することができる。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】０２９０
【補正方法】変更
【補正の内容】
【０２９０】
Ｓ２２０において、入力データＡＰＩを呼び出し、現在オリジナルネットワークの入力データを取得する。具体的には、アプリケーションソフトウェアは、入力データロードユニット１３１２が提供する入力データＡＰＩを呼び出し可能で、入力データロードユニット１３１２によってメモリ１３０から現在オリジナルネットワークの入力データを取得する。さらに、アプリケーションソフトウェアは、入力データ前処理ユニット１３１３が提供するデータ前処理ＡＰＩを呼び出すこともでき、第２プロセッサ１２０が上記の現在オリジナルネットワークの入力データを実行できるように、入力データ前処理ユニット１３１３によって、入力データロードユニット１３１２が取得した入力データに対してデータフォーマット変換、正規化などの前処理操作を行う。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】０２９１
【補正方法】変更
【補正の内容】
【０２９１】
Ｓ２３０において、第２プロセッサ駆動ＡＰＩを呼び出し、コンピュータ機器における第２プロセッサを起動するように制御する。具体的には、アプリケーションソフトウェアは、機器管理ユニット１３１４が提供する第２プロセッサ駆動ＡＰＩを呼び出し可能で、機器管理ユニット１３１４によって第２プロセッサ１２０を起動するように制御する。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】０２９２
【補正方法】変更
【補正の内容】
【０２９２】
Ｓ２４０において、第２プロセッサ実行ＡＰＩを呼び出し、現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて現在オリジナルネットワークの出力データを取得するように第２プロセッサを制御する。具体的には、アプリケーションソフトウェアは、タスク実行装置１３１５が提供する第２プロセッサ実行ＡＰＩを呼び出し可能で、タスク実行装置１３１５によって、現在オリジナルネットワークに対応するオフラインモデルおよび入力データに基づいて現在オリジナルネットワークの出力データを取得するように第２プロセッサ１２０を制御する。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】０２９３
【補正方法】変更
【補正の内容】
【０２９３】
Ｓ２５０において、第２プロセッサ駆動ＡＰＩを呼び出し、第２プロセッサを停止するように制御する。具体的には、アプリケーションソフトウェアは、機器管理ユニット１３１４が提供する第２プロセッサ駆動ＡＰＩを呼び出し可能で、機器管理ユニット１３１４によって第２プロセッサ１２０を停止するように制御する。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】０３１２
【補正方法】変更
【補正の内容】
【０３１２】
Ｓ３４０において、現在オリジナルネットワークの出力データを第１メモリに記憶する。すなわち、ランタイムシステム２３１は、現在オリジナルネットワークの出力データをセキュアな第１メモリ２３０に記憶することができる。選択可能な形態として、ランタイムシステム２３１のデータ処理装置によって現在オリジナルネットワークの出力データを第１メモリ２３０に記憶してもよい。さらに、当該データ処理装置は、現在オリジナルネットワークの出力データに対してデータフォーマット変換などの前処理操作を行って第１メモリ２３０に記憶することができる。さらには、データ処理装置の入力データ前処理ユニットは、現在オリジナルネットワークの出力データに対してデータフォーマット変換などの前処理操作を行って第１メモリ２３０に記憶することができる。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】０３１６
【補正方法】変更
【補正の内容】
【０３１６】
Ｓ４３０において、第２プロセッサ駆動ＡＰＩを呼び出し、コンピュータ機器における第２プロセッサを起動するように制御する。具体的には、セキュアなアプリケーションソフトウェアは、第２プロセッサ駆動ＡＰＩを呼び出し可能で、機器管理装置によって第２プロセッサ２２０を起動するように制御する。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】０３１８
【補正方法】変更
【補正の内容】
【０３１８】
Ｓ４５０において、第２プロセッサ駆動ＡＰＩを呼び出し、第２プロセッサを停止するように制御する。具体的には、セキュアなアプリケーションソフトウェアは、第２プロセッサ駆動ＡＰＩを呼び出し可能で、機器管理装置によって第２プロセッサ２２０を停止するように制御する。
【手続補正１７】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
タスク並列処理方法であって、
実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築し、
前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクをプロセッサの複数のワークキューに割り当て、
前記タスク有向非巡回グラフＤＡＧにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御することを含むことを特徴とする、タスク並列処理方法。
【請求項２】
前記した、実行すべきタスク間の依存関係に応じて、タスク有向非巡回グラフＤＡＧを構築するステップの前に、
プログラムにおける操作ノードおよび／またはデータノードに応じてプログラムを分割して前記実行すべきタスクを取得することを含むことを特徴とする、請求項１に記載の方法。
【請求項３】
前記した、プログラムにおける操作ノードに応じてプログラムを分割して前記実行すべきタスクを取得するステップは、
前記プログラムがモデル有りの操作要求を含む場合、前記モデル有りの操作要求のモデルを分割するか、および／または前記モデルの入力データを分割して実行すべきタスクを取得することを含むことを特徴とする、請求項２に記載の方法。
【請求項４】
前記した、前記モデル有りの操作要求のモデル、および／または前記モデルの入力データを分割して実行すべきタスクを取得するステップは、
モデルを分割して取得する各前記実行すべきタスクに対応する重みを設定し、
各前記重みを用いて前記実行すべきタスクの入力データと出力データとの対応関係を設定するか、または、
予め設定されたルールに従ってモデルのウィンドウ方向および／またはチャンネル方向において前記モデル有りの操作のモデルを分割して実行すべきタスクを取得するか、または、
予め設定されたルールに従ってデータのウィンドウ方向において前記モデル有りの操作の入力データを分割して実行すべきタスクを取得することを含むことを特徴とする、請求項３に記載の方法。
【請求項５】
前記した、プログラムにおける操作ノードに応じてプログラムを分割して前記実行すべきタスクを取得するステップは、
前記プログラムがモデル無しの操作要求を含む場合、前記モデル無しの操作要求の入力データおよび／または出力データを分割して実行すべきタスクを取得し、
前記した、前記モデル無しの操作要求の入力データおよび／または出力データを分割して実行すべきタスクを取得するステップは、
予め設定されたルールに従ってデータのウィンドウ方向において前記入力データおよび／または出力データを分割して実行すべきタスクを取得することを含むことを特徴とする、請求項２に記載の方法。
【請求項６】
前記した、前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクを前記プロセッサの複数のワークキューに割り当てるステップは、
前記タスク有向非巡回グラフＤＡＧをトポロジカルソートし、タスクのトポロジカルソートシーケンスを取得し、
各前記実行すべきタスクの予め設定された実行時間に応じて、取得した前記トポロジカルソートシーケンスをソートし、最長のトポロジカルソートシーケンスを取得し、
前記最長のトポロジカルソートシーケンスおよび各前記実行すべきタスク間の依存関係に応じて、各前記実行すべきタスクを前記ワークキューに割り当てることを含むことを特徴とする、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記した、前記タスク有向非巡回グラフＤＡＧにおける各前記実行すべきタスクの依存関係に応じて、各前記ワークキューにおける並列の実行すべきタスクの実行を開始するように調整制御するステップは、
前記タスク有向非巡回グラフＤＡＧに応じて、各前記実行すべきタスクに対して参照カウントを設定し、
依存される側の実行すべきタスクが実行された場合、依存する側の実行すべきタスクの参照カウントを変更し、
前記実行すべきタスクの参照カウントが予め設定された値に達すると、各前記ワークキューにおける参照カウントが予め設定された値に達した実行すべきタスクの実行を開始するように制御することを含むことを特徴とする、請求項１〜５のいずれか１項に記載の方法。
【請求項８】
プロセッサによって実行されると請求項１〜７のいずれか１項に記載の方法のステップを実現するコンピュータプログラムを記憶したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【請求項９】
タスク並列処理システムであって、
メモリと、第１プロセッサと、第２プロセッサとを含み、
前記第１プロセッサは、分割アルゴリズムを実行可能で、
第２プロセッサは、マルチコアプロセッサであり、
前記第１プロセッサと第２プロセッサが前記コンピュータプログラムを実行すると、請求項１〜７のいずれか１項に記載の方法のステップが実現されることを特徴とする、タスク並列処理システム。
【手続補正１８】
【補正対象書類名】図面
【補正対象項目名】図７
【補正方法】変更
【補正の内容】
【図７】
2020522824.tif 000035
【手続補正１９】
【補正対象書類名】図面
【補正対象項目名】図１０
【補正方法】変更
【補正の内容】
【図１０】
2020522824.tif 000036
【国際調査報告】
2020522824.tif 000037
2020522824.tif 000038
2020522824.tif 000039
2020522824.tif 000040