(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-08
(54)【発明の名称】タスク実行方法、装置、記憶媒体及び電子デバイス
(51)【国際特許分類】
G06F 9/50 20060101AFI20241001BHJP
【FI】
G06F9/50 120A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023546471
(86)(22)【出願日】2023-06-20
(85)【翻訳文提出日】2023-08-01
(86)【国際出願番号】 CN2023101479
(87)【国際公開番号】W WO2024051270
(87)【国際公開日】2024-03-14
(31)【優先権主張番号】202310509060.5
(32)【優先日】2023-05-08
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】521162399
【氏名又は名称】之江実験室
(74)【代理人】
【識別番号】110000729
【氏名又は名称】弁理士法人ユニアス国際特許事務所
(72)【発明者】
【氏名】唐 曉瑜
(72)【発明者】
【氏名】毛 曠
(72)【発明者】
【氏名】潘 秋紅
(72)【発明者】
【氏名】湯 昭榮
(72)【発明者】
【氏名】王 穎
(72)【発明者】
【氏名】楊 ▲タオ▼
(57)【要約】
本発明は、タスク実行方法、装置、記憶媒体及び電子デバイスを開示し、全ての並列に実行可能な演算子の組み合わせを予め決定し、ユーザから出されたタスク要求に応答してタスクを実行する時に、実行する必要がある当該タスクに対応する各実行可能な演算子と第2のタスクを実行しているチップが実行している第2のタスクの演算子とにはマッチングする並列に実行可能な演算子の組み合わせがあるか否かを決定し、あれば、第2のタスクを実行しているチップにより当該第1のタスクを並列に実行することができ、それによりチップのコンピューティングリソースの利用率を向上させることができる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第1のタスク要求を取得することと、
前記第1のタスク要求に対応する第1のタスクの実行に必要な演算子の組み合わせを決定し、前記演算子の組み合わせにおける少なくとも1つの実行可能な演算子を第1の目標演算子として決定することであって、前記実行可能な演算子は、他の演算子の実行結果に依存する必要がないため直接実行することができる、ことと、
第2のタスクを実行しているチップについて、前記チップの残りのコンピューティングリソースが予め設定された条件を満たすか否かを判断することと、
前記判断結果が肯定である場合、
前記チップが現在実行している前記第2のタスクに対応する少なくとも1つの実行可能な演算子を第2の目標演算子として決定することと、
前記チップが各前記第2の目標演算子を実行する上で各前記第1の目標演算子を並列に実行することで前記第1のタスクを実行するように、前記チップが各前記第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各前記第1の目標演算子に前記チップの残りのコンピューティングリソースの少なくとも一部を割り当ることと、を含む、
ことを特徴とするタスク実行方法。
【請求項2】
前記チップが各前記第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各前記第1の目標演算子に前記チップの残りのコンピューティングリソースの少なくとも一部を割り当てることは、
予め決定された複数の並列可能な演算子の組み合わせから前記第2の目標演算子が含まれる候補演算子の組み合わせを選別することと、
各前記候補演算子の組み合わせについて、当該候補演算子の組み合わせに含まれる前記第1の目標演算子の数が予め設定された第1の閾値を超えれば、当該候補演算子の組み合わせを目標演算子の組み合わせとして決定することと、
前記目標演算子の組み合わせにおける各前記第1の目標演算子及び各前記第2の目標演算子を前記チップにより並列に実行することと、を含む、
ことを特徴とする請求項1に記載の方法。
【請求項3】
並列可能な演算子の組み合わせを決定することは、
複数の目標モデルを取得することと、
各前記目標モデルについて、当該目標モデルに含まれる演算子の間のデータ伝送依存関係を決定することと、
前記複数の目標モデルのそれぞれの前記データ伝送依存関係に基づいて、前記複数の目標モデルに含まれる全ての演算子のうち互いにデータ伝送依存関係が存在しない演算子の組み合わせを、前記並列可能な演算子の組み合わせとして決定することと、を含む、
ことを特徴とする請求項2に記載の方法。
【請求項4】
前記複数の目標モデルのそれぞれの前記データ伝送依存関係に基づいて、前記複数の目標モデルに含まれる全ての演算子のうち互いにデータ伝送依存関係が存在しない演算子の組み合わせを、前記並列可能な演算子の組み合わせとして決定することは、
各前記目標モデルについて決定された前記データ伝送依存関係に基づいて、前記目標モデルに対応するデータフロー図を決定することであって、前記データフロー図において、各ノードは、前記目標モデルに含まれる演算子を表現するために用いられ、2つのノードの間のエッジは、前記2つのノードの間にデータ伝送依存関係が存在することを表現するために用いられる、ことと、
前記複数の目標モデルに対応する複数の前記データフロー図に基づいて、前記並列可能な演算子の組み合わせを決定することと、を含む、
ことを特徴とする請求項3に記載の方法。
【請求項5】
前記複数の目標モデルに対応する複数の前記データフロー図に基づいて、前記並列可能な演算子の組み合わせを決定することは、
前記複数のデータフロー図に含まれる各ノードについて、複数回の反復により、当該ノードに対応する並列可能な演算子の組み合わせを決定することを含み、ここで、
各回の反復について、
当該回の反復における目標ノードの組み合わせであって、1つの目標ノード、又は互に依存関係が存在しない複数の目標ノードを含む目標ノードの組み合わせを決定し、
前記複数のデータフロー図に含まれる前記目標ノードの組み合わせにおける各目標ノード以外の他の各ノードについて、当該他のノードが前記目標ノードの組み合わせにおけるいずれの目標ノードにも依存しなければ、当該他のノード及び前記目標ノードの組み合わせに基づいて並列可能な演算子の組み合わせを決定し、
決定された前記並列可能な演算子の組み合わせを次回の反復における目標ノードの組み合わせとするか、又は前記複数のデータフロー図に含まれるノードから次回の反復における目標ノードを予め設定された終了条件が満たされるまで順次選択する、
ことを特徴とする請求項4に記載の方法。
【請求項6】
当該他のノード及び前記目標ノードの組み合わせに基づいて並列可能な演算子の組み合わせを決定することは、
当該他のノードと前記目標ノードの組み合わせを候補演算子の組み合わせとして合併することと、
前記チップ内での前記候補演算子の組み合わせの実行時間が予め設定された第2の閾値を超えなければ、当該候補演算子の組み合わせを並列可能な演算子の組み合わせとして決定することと、を含む、
ことを特徴とする請求項5に記載の方法。
【請求項7】
前記複数のデータフロー図に含まれるノードから次回の反復における目標ノードを順次選択することは、
候補ノードセットから1つのノードを次回の反復における目標ノードとして順次選択することを含み、
ここで、前記候補ノードセットは、前記複数のデータフロー図に含まれる、前記チップ内での対応する演算子の実行時間が予め設定された第2の閾値を超えない全てのノードを含む、
ことを特徴とする請求項5に記載の方法。
【請求項8】
前記チップ内での前記候補演算子の組み合わせの実行時間を決定することは、
前記候補演算子の組み合わせの関連特徴であって、前記候補演算子の組み合わせに含まれる各演算子の過去に使用したチップのコンピューティング量、過去のデータ帯域幅、過去の実行時間、及び前記候補演算子の組み合わせに含まれる演算子のデータ伝送サイズの平均値、最大値、最小値、分散のうち少なくとも1つを含む関連特徴を取得することと、
前記関連特徴を予め設定された予測モデルに入力して、前記予測モデルにより前記チップ内での前記候補演算子の組み合わせの実行時間を予測し出力することと、を含む、
ことを特徴とする請求項6に記載の方法。
【請求項9】
前記並列可能な演算子の組み合わせは、前記チップがオフライン状態にある時に決定されるものである、ことを特徴とする請求項2に記載の方法。
【請求項10】
第1のタスク要求を取得するための取得モジュールと、
前記第1のタスク要求に対応する第1のタスクの実行に必要な演算子の組み合わせを決定し、前記演算子の組み合わせにおける少なくとも1つの実行可能な演算子を第1の目標演算子として決定するための第1の決定モジュールであって、前記実行可能な演算子は、他の演算子の実行結果に依存する必要がないため直接実行することができる、第1の決定モジュールと、
第2のタスクを実行しているチップについて、前記チップの残りのコンピューティングリソースが予め設定された条件を満たすか否かを判断するための検出モジュールと、
前記検出モジュールの判断結果が肯定である場合、前記チップが現在実行している前記第2のタスクに対応する少なくとも1つの実行可能な演算子を第2の目標演算子として決定するための第2の決定モジュールと、
前記チップが各前記第2の目標演算子を実行する上で各前記第1の目標演算子を並列に実行することで前記第1のタスクを実行するように、前記チップが各前記第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各前記第1の目標演算子に前記チップの残りのコンピューティングリソースの少なくとも一部を割り当るための実行モジュールと、を含む、
ことを特徴とするタスク実行装置。
【請求項11】
前記実行モジュールは、具体的に、
予め決定された複数の並列可能な演算子の組み合わせから前記第2の目標演算子が含まれる候補演算子の組み合わせを選別し、
各前記候補演算子の組み合わせについて、当該候補演算子の組み合わせに含まれる前記第1の目標演算子の数が予め設定された第1の閾値を超えれば、当該候補演算子の組み合わせを目標演算子の組み合わせとして決定し、
前記目標演算子の組み合わせにおける各前記第1の目標演算子及び各前記第2の目標演算子を前記チップにより並列に実行して、前記第1のタスクを実行するために用いられる、
ことを特徴とする請求項10に記載の装置。
【請求項12】
複数の目標モデルを取得し、
各前記目標モデルについて、当該目標モデルに含まれる演算子の間のデータ伝送依存関係を決定し、
前記複数の目標モデルのそれぞれの前記データ伝送依存関係に基づいて、前記複数の目標モデルに含まれる全ての演算子のうち互いにデータ伝送依存関係が存在しない演算子の組み合わせを、前記並列可能な演算子の組み合わせとして決定するための第3の決定モジュールをさらに含む、
ことを特徴とする請求項10に記載の装置。
【請求項13】
前記第3の決定モジュールは、具体的に、
各前記目標モデルについて決定された前記データ伝送依存関係に基づいて、前記目標モデルに対応するデータフロー図を決定し、前記データフロー図において、各ノードは、前記目標モデルに含まれる演算子を表現するために用いられ、2つのノードの間のエッジは、前記2つのノードの間にデータ伝送依存関係が存在することを表現するために用いられ、
前記複数の目標モデルに対応する複数の前記データフロー図に基づいて、前記並列可能な演算子の組み合わせを決定するために用いられる、
ことを特徴とする請求項12に記載の装置。
【請求項14】
前記複数の目標モデルに対応する複数の前記データフロー図に基づいて、前記並列可能な演算子の組み合わせを決定することについて、前記第3の決定モジュールは、具体的に、
前記複数のデータフロー図に含まれる各ノードについて、複数回の反復により、当該ノードに対応する並列可能な演算子の組み合わせを決定するために用いられ、ここで、
各回の反復について、
当該回の反復における目標ノードの組み合わせであって、1つの目標ノード、又は互に依存関係が存在しない複数の目標ノードを含む目標ノードの組み合わせを決定し、
前記複数のデータフロー図に含まれる前記目標ノードの組み合わせにおける各目標ノード以外の他の各ノードについて、当該他のノードが前記目標ノードの組み合わせにおけるいずれの目標ノードにも依存しなければ、当該他のノード及び前記目標ノードの組み合わせに基づいて並列可能な演算子の組み合わせを決定し、
決定された前記並列可能な演算子の組み合わせを次回の反復における目標ノードの組み合わせとするか、又は前記複数のデータフロー図に含まれるノードから次回の反復における目標ノードを予め設定された終了条件が満たされるまで順次選択する、
ことを特徴とする請求項13に記載の装置。
【請求項15】
当該他のノード及び前記目標ノードの組み合わせに基づいて並列可能な演算子の組み合わせを決定することについて、前記第3の決定モジュールは、具体的に、
当該他のノードと前記目標ノードの組み合わせを候補演算子の組み合わせとして合併し、
前記チップ内での前記候補演算子の組み合わせの実行時間が予め設定された第2の閾値を超えなければ、当該候補演算子の組み合わせを並列可能な演算子の組み合わせとして決定するために用いられる、
ことを特徴とする請求項14に記載の装置。
【請求項16】
前記複数のデータフロー図に含まれるノードから次回の反復における目標ノードを順次選択することについて、前記第3の決定モジュールは、具体的に、
候補ノードセットから1つのノードを次回の反復における目標ノードとして順次選択するために用いられ、
ここで、前記候補ノードセットは、前記複数のデータフロー図に含まれる、前記チップ内での対応する演算子の実行時間が予め設定された第2の閾値を超えない全てのノードを含む、
ことを特徴とする請求項14に記載の装置。
【請求項17】
前記チップ内での前記候補演算子の組み合わせの実行時間を決定するために、前記第3の決定モジュールは、具体的に、
前記候補演算子の組み合わせの関連特徴であって、前記候補演算子の組み合わせに含まれる各演算子の過去に使用したチップのコンピューティング量、過去のデータ帯域幅、過去の実行時間、及び前記候補演算子の組み合わせに含まれる演算子のデータ伝送サイズの平均値、最大値、最小値、分散のうち少なくとも1つを含む関連特徴を取得し、
前記関連特徴を予め設定された予測モデルに入力して、前記予測モデルにより前記チップ内での前記候補演算子の組み合わせの実行時間を予測し出力するために用いられる、
ことを特徴とする請求項15に記載の装置。
【請求項18】
前記並列可能な演算子の組み合わせは、前記チップがオフライン状態にある時に決定されるものである、
ことを特徴とする請求項11に記載の装置。
【請求項19】
コンピュータプログラムを記憶しているコンピュータ可読記憶媒体であって、前記コンピュータプログラムがプロセッサにより実行されると、請求項1~9のいずれか1項に記載の方法が実施される、
ことを特徴とするコンピュータ可読記憶媒体。
【請求項20】
メモリと、プロセッサと、メモリに記憶されプロセッサで実行可能なコンピュータプログラムとを含む電子デバイスであって、前記プロセッサは、前記プログラムを実行すると、上記請求項1~9のいずれか1項に記載の方法を実施する、
ことを特徴とする電子デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、人工知能技術の分野に関し、特にタスク実行方法、装置、記憶媒体及び電子デバイスに関する。
【背景技術】
【0002】
現在、自動運転、拡張現実などの分野において、様々な人工知能モデルが広く適用されている。業務プラットフォームは、人工知能モデルでタスクを実行する時に、通常、人工知能モデルに含まれる演算子から、タスクの実行に必要な演算子を決定し、これらの演算子をチップにより実行することでタスクを実行する。
【0003】
これらの演算子をチップにより実行するプロセスにおいて、チップのコンピューティングリソースの一部しか占有されないため、チップのコンピューティングリソースが無駄になり、チップのコンピューティングリソースの利用率が低下する。したがって、チップのコンピューティングリソースの利用率をいかに向上させるかが喫緊の課題となっている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は、従来技術に存在する上記問題を部分的に解決するために、タスク実行方法、装置、記憶媒体及び電子デバイスを提供する。
【課題を解決するための手段】
【0005】
本発明にて提供されるタスク実行方法は、第1のタスク要求を取得することと、前記第1のタスク要求に対応する第1のタスクの実行に必要な演算子の組み合わせを決定し、前記演算子の組み合わせにおける少なくとも1つの実行可能な演算子を第1の目標演算子として決定することであって、前記実行可能な演算子は、他の演算子の実行結果に依存する必要がないため直接実行することができる、ことと、第2のタスクを実行しているチップについて、前記チップの残りのコンピューティングリソースが予め設定された条件を満たすか否かを判断することと、前記判断結果が肯定である場合、前記チップが現在実行している前記第2のタスクに対応する少なくとも1つの実行可能な演算子を第2の目標演算子として決定することと、前記チップが各前記第2の目標演算子を実行する上で各前記第1の目標演算子を並列に実行することで前記第1のタスクを実行するように、前記チップが各前記第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各前記第1の目標演算子に前記チップの残りのコンピューティングリソースの少なくとも一部を割り当ることと、を含む。
【0006】
オプションで、前記チップが各前記第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各前記第1の目標演算子に前記チップの残りのコンピューティングリソースの少なくとも一部を割り当てることは、予め決定された複数の並列可能な演算子の組み合わせから前記第2の目標演算子が含まれる候補演算子の組み合わせを選別することと、各前記候補演算子の組み合わせについて、当該候補演算子の組み合わせに含まれる前記第1の目標演算子の数が予め設定された第1の閾値を超えれば、当該候補演算子の組み合わせを目標演算子の組み合わせとして決定することと、前記目標演算子の組み合わせにおける各前記第1の目標演算子及び各前記第2の目標演算子を前記チップにより並列に実行して、前記第1のタスクを実行することと、を含む。
【0007】
オプションで、並列可能な演算子の組み合わせを決定することは、複数の目標モデルを取得することと、各前記目標モデルについて、当該目標モデルに含まれる演算子の間のデータ伝送依存関係を決定することと、前記複数の目標モデルのそれぞれの前記データ伝送依存関係に基づいて、前記複数の目標モデルに含まれる全ての演算子のうち互いにデータ伝送依存関係が存在しない演算子の組み合わせを、前記並列可能な演算子の組み合わせとして決定することと、を含む。
【0008】
オプションで、前記複数の目標モデルのそれぞれの前記データ伝送依存関係に基づいて、前記複数の目標モデルに含まれる全ての演算子のうち互いにデータ伝送依存関係が存在しない演算子の組み合わせを、前記並列可能な演算子の組み合わせとして決定することは、各前記目標モデルについて決定された前記データ伝送依存関係に基づいて、前記目標モデルに対応するデータフロー図を決定することであって、前記データフロー図において、各ノードは、前記目標モデルに含まれる演算子を表現するために用いられ、2つのノードの間のエッジは、前記2つのノードの間にデータ伝送依存関係が存在することを表現するために用いられる、ことと、前記複数の目標モデルに対応する複数の前記データフロー図に基づいて、前記並列可能な演算子の組み合わせを決定することと、を含む。
【0009】
オプションで、前記複数の目標モデルに対応する複数の前記データフロー図に基づいて、前記並列可能な演算子の組み合わせを決定することは、前記複数のデータフロー図に含まれる各ノードについて、複数回の反復により、当該ノードに対応する並列可能な演算子の組み合わせを決定することを含む。ここで、各回の反復について、当該回の反復における目標ノードの組み合わせであって、1つの目標ノード、又は互に依存関係が存在しない複数の目標ノードを含む目標ノードの組み合わせを決定し、前記複数のデータフロー図に含まれる前記目標ノードの組み合わせにおける各目標ノード以外の他の各ノードについて、当該他のノードが前記目標ノードの組み合わせにおけるいずれの目標ノードにも依存しなければ、当該他のノード及び前記目標ノードの組み合わせに基づいて並列可能な演算子の組み合わせを決定し、決定された前記並列可能な演算子の組み合わせを次回の反復における目標ノードの組み合わせとするか、又は前記複数のデータフロー図に含まれるノードから次回の反復における目標ノードを予め設定された終了条件が満たされるまで順次選択する。
【0010】
オプションで、当該他のノード及び前記目標ノードの組み合わせに基づいて並列可能な演算子の組み合わせを決定することは、当該他のノードと前記目標ノードの組み合わせを候補演算子の組み合わせとして合併することと、前記チップ内での前記候補演算子の組み合わせの実行時間が予め設定された第2の閾値を超えなければ、当該候補演算子の組み合わせを並列可能な演算子の組み合わせとして決定することと、を含む。
【0011】
オプションで、前記複数のデータフロー図に含まれるノードから次回の反復における目標ノードを順次選択することは、候補ノードセットから1つのノードを次回の反復における目標ノードとして順次選択することを含む。ここで、前記候補ノードセットは、前記複数のデータフロー図に含まれる、前記チップ内での対応する演算子の実行時間が予め設定された第2の閾値を超えない全てのノードを含む。
【0012】
オプションで、前記チップ内での前記候補演算子の組み合わせの実行時間を決定することは、前記候補演算子の組み合わせの関連特徴であって、前記候補演算子の組み合わせに含まれる各演算子の過去に使用したチップのコンピューティング量、過去のデータ帯域幅、過去の実行時間、及び前記候補演算子の組み合わせに含まれる演算子のデータ伝送サイズの平均値、最大値、最小値、分散のうち少なくとも1つを含む関連特徴を取得することと、前記関連特徴を予め設定された予測モデルに入力して、前記予測モデルにより前記チップ内での前記候補演算子の組み合わせの実行時間を予測し出力することと、を含む。
【0013】
オプションで、前記並列可能な演算子の組み合わせは、前記チップがオフライン状態にある時に決定されるものである。
【0014】
本発明にて提供されるタスク実行装置は、第1のタスク要求を取得するための取得モジュールと、前記第1のタスク要求に対応する第1のタスクの実行に必要な演算子の組み合わせを決定し、前記演算子の組み合わせにおける少なくとも1つの実行可能な演算子を第1の目標演算子として決定するための第1の決定モジュールであって、前記実行可能な演算子は、他の演算子の実行結果に依存する必要がないため直接実行することができる、第1の決定モジュールと、第2のタスクを実行しているチップについて、前記チップの残りのコンピューティングリソースが予め設定された条件を満たすか否かを判断するための検出モジュールと、前記検出モジュールの判断結果が肯定である場合、前記チップが現在実行している前記第2のタスクに対応する少なくとも1つの実行可能な演算子を第2の目標演算子として決定するための第2の決定モジュールと、前記チップが各前記第2の目標演算子を実行する上で各前記第1の目標演算子を並列に実行することで前記第1のタスクを実行するように、前記チップが各前記第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各前記第1の目標演算子に前記チップの残りのコンピューティングリソースの少なくとも一部を割り当るための実行モジュールと、を含む。
【0015】
オプションで、前記実行モジュールは、具体的に、予め決定された複数の並列可能な演算子の組み合わせから前記第2の目標演算子が含まれる候補演算子の組み合わせを選別し、各前記候補演算子の組み合わせについて、当該候補演算子の組み合わせに含まれる前記第1の目標演算子の数が予め設定された第1の閾値を超えれば、当該候補演算子の組み合わせを目標演算子の組み合わせとして決定し、前記目標演算子の組み合わせにおける各前記第1の目標演算子及び各前記第2の目標演算子を前記チップにより並列に実行して、前記第1のタスクを実行するために用いられる。
【0016】
オプションで、前記装置は、複数の目標モデルを取得し、各前記目標モデルについて、当該目標モデルに含まれる演算子の間のデータ伝送依存関係を決定し、前記複数の目標モデルのそれぞれの前記データ伝送依存関係に基づいて、前記複数の目標モデルに含まれる全ての演算子のうち互いにデータ伝送依存関係が存在しない演算子の組み合わせを、前記並列可能な演算子の組み合わせとして決定するための第3の決定モジュールをさらに含む。
【0017】
オプションで、前記第3の決定モジュールは、具体的に、各前記目標モデルについて決定された前記データ伝送依存関係に基づいて、前記目標モデルに対応するデータフロー図を決定し、前記データフロー図において、各ノードは、前記目標モデルに含まれる演算子を表現するために用いられ、2つのノードの間のエッジは、前記2つのノードの間にデータ伝送依存関係が存在することを表現するために用いられ、前記複数の目標モデルに対応する複数の前記データフロー図に基づいて、前記並列可能な演算子の組み合わせを決定するために用いられる。
【0018】
オプションで、前記第3の決定モジュールは、具体的に、前記複数のデータフロー図に含まれる各ノードについて、複数回の反復により、当該ノードに対応する並列可能な演算子の組み合わせを決定するために用いられる。ここで、各回の反復について、当該回の反復における目標ノードの組み合わせであって、1つの目標ノード、又は互に依存関係が存在しない複数の目標ノードを含む目標ノードの組み合わせを決定し、前記複数のデータフロー図に含まれる前記目標ノードの組み合わせにおける各目標ノード以外の他の各ノードについて、当該他のノードが前記目標ノードの組み合わせにおけるいずれの目標ノードにも依存しなければ、当該他のノード及び前記目標ノードの組み合わせに基づいて並列可能な演算子の組み合わせを決定し、決定された前記並列可能な演算子の組み合わせを次回の反復における目標ノードの組み合わせとするか、又は前記複数のデータフロー図に含まれるノードから次回の反復における目標ノードを予め設定された終了条件が満たされるまで順次選択する。
【0019】
オプションで、前記第3の決定モジュールは、具体的に、当該他のノードと前記目標ノードの組み合わせを候補演算子の組み合わせとして合併し、前記チップ内での前記候補演算子の組み合わせの実行時間が予め設定された第2の閾値を超えなければ、当該候補演算子の組み合わせを並列可能な演算子の組み合わせとして決定するために用いられる。
【0020】
オプションで、前記第3の決定モジュールは、具体的に、候補ノードセットから1つのノードを次回の反復における目標ノードとして順次選択するために用いられる。ここで、前記候補ノードセットは、前記複数のデータフロー図に含まれる、前記チップ内での対応する演算子の実行時間が予め設定された第2の閾値を超えない全てのノードを含む。
【0021】
オプションで、前記第3の決定モジュールは、具体的に、前記候補演算子の組み合わせの関連特徴であって、前記候補演算子の組み合わせに含まれる各演算子の過去に使用したチップのコンピューティング量、過去のデータ帯域幅、過去の実行時間、及び前記候補演算子の組み合わせに含まれる演算子のデータ伝送サイズの平均値、最大値、最小値、分散のうち少なくとも1つを含む関連特徴を取得し、前記関連特徴を予め設定された予測モデルに入力して、前記予測モデルにより前記チップ内での前記候補演算子の組み合わせの実行時間を予測し出力するために用いられる。
【0022】
オプションで、前記並列可能な演算子の組み合わせは、前記チップがオフライン状態にある時に決定されるものである。
【0023】
本発明は、コンピュータプログラムを記憶しているコンピュータ可読記憶媒体であって、前記コンピュータプログラムがプロセッサにより実行されると、上記タスク実行方法が実施される、コンピュータ可読記憶媒体を提供する。
【0024】
本発明は、メモリと、プロセッサと、メモリに記憶されプロセッサで実行可能なコンピュータプログラムとを含む電子デバイスであって、前記プロセッサは、前記プログラムを実行すると、上記タスク実行方法を実施する、電子デバイスを提供する。
【発明の効果】
【0025】
本発明の実施例にて提供されるタスク実行方法によれば、現在のタスク要求に対応する第1のタスクの実行に必要な演算子の組み合わせにおける、他の演算子の実行結果に依存する必要がない実行可能な演算子を第1の目標演算子として決定し、第2のタスクを実行しているチップの残りのコンピューティングリソースが予め設定された条件を満たす場合に、当該チップが第2のタスクに対応する各実行可能な演算子(第2の目標演算子とする)に割り当てたコンピューティングリソースに影響を与えない前提で、各第1の目標演算子に当該チップの残りのコンピューティングリソースの少なくとも一部を割り当てることで、当該チップは各第2の目標演算子を実行する上で各第1の目標演算子を並列に実行することで第1のタスクを実行することができ、それによりチップのコンピューティングリソースの利用率を効果的に向上させることができる。
【図面の簡単な説明】
【0026】
図面は、本発明に対する更なる理解を提供するために用いられ、本発明の一部を構成し、本発明の概略的な実施例及びその説明は、本発明を解釈するために用いられ、本発明に対する不当な限定を構成しない。
【
図1】本発明の実施例により提供されるタスク実行方法の概略図である。
【
図2】本発明の実施例により提供されるデータフロー図の概略図である。
【
図3】本発明の実施例により提供される並列可能な演算子の組み合わせを決定するプロセスの概略図である。
【
図4】本発明の実施例により提供されるタスク実行装置の機能モジュールの概略図である。
【
図5】本発明の実施例により提供されるタスク実行のための電子デバイスの構造の概略図である。
【発明を実施するための形態】
【0027】
本発明の目的、技術的解決手段及び利点をより明確にするために、以下、本発明の具体的な実施例及び相応する図面と併せて、本発明の技術的解決手段を明確に完全に説明する。明らかに、説明される実施例は、本発明の一部の実施例にすぎず、全ての実施例ではない。本発明における実施例に基づいて、当業者が創造的な労力を要することなく得られる他の全ての実施例は、いずれも本発明の保護範囲に属する。
【0028】
以下、本発明の各実施例にて提供される技術的解決手段について図面と併せて詳細に説明する。
【0029】
本発明にて提供されるタスク実行方法は、
図1に示すように、以下のステップS101~ステップS105を含む。
【0030】
ステップS101において、第1のタスク要求を取得する。
【0031】
本発明では、ユーザは、業務プラットフォーム内に配置された人工知能モデルで相応するタスクを実行することができる。具体的に、ユーザは、ユーザが使用するデバイスによりタスク要求を業務プラットフォームに送信することができ、それにより、業務プラットフォームは、当該タスク要求を取得した後、受信したタスク要求に応答してチップのコンピューティングリソースをスケジューリングして、当該タスク要求に対応するタスクを実行することができる。例えば、ユーザは、ユーザが使用するデバイスにより商品推薦要求を業務プラットフォームに送信することができ、業務プラットフォームは、商品推薦要求を受信した後、チップを呼び出して商品推薦モデルにおける演算子を実行することで商品推薦タスクを実行することができる。
【0032】
本発明では、タスク実行方法を実現するための実行主体とは、サーバなど、業務プラットフォームに設置された指定デバイスであってもよく、例えば、デスクトップコンピュータ、ラップトップコンピュータなどの端末デバイスであってもよい。以下、説明を容易にするために、サーバが実行主体であることを例として、本発明にて提供されるタスク実行方法を説明する。
【0033】
ステップS102において、前記第1のタスク要求に対応する第1のタスクの実行に必要な演算子の組み合わせを決定し、前記演算子の組み合わせに含まれる少なくとも1つの実行可能な演算子を第1の目標演算子として決定する。ここで、前記実行可能な演算子は、他の演算子の実行結果に依存する必要がないため、例えば、チップにより直接実行することができる。
【0034】
例えば、サーバは、タスク要求に対応するタスクの実行に必要な演算子の組み合わせを決定し、演算子の組み合わせに含まれる少なくとも1つの実行可能な演算子を第1の目標演算子として決定してもよい。ここでの実行可能な演算子は、他の演算子の実行結果に依存する必要がないため直接実行することができる。
【0035】
具体的に、サーバがあるタスクを実行する必要がある場合に、当該タスクを実行するためのモデルを決定し、当該タスクを実行するためのモデルに含まれる演算子が、当該タスクの実行に必要な演算子の組み合わせを構成し、当該演算子の組み合わせに含まれる演算子をチップにより実行することでタスクの実行を実現することができる。ここで、サーバにより決定された当該タスクを実行するためのモデルは、複数であってもよく、例えば、Aタスクの実行には、モデル1のa演算子とb演算子、モデル2のc演算子とd演算子を実行する必要がある。
【0036】
実際の利用シーンでは、サーバは、各実行可能な演算子を複数のチップにより実行してもよく、したがって、サーバは、演算子の組み合わせにおける少なくとも1つの実行可能な演算子を第1の目標演算子として決定してもよい。例えば、実行可能な演算子がa演算子、b演算子、c演算子、d演算子を含むとすると、サーバは、a演算子をチップ1で実行し、b演算子をチップ2で実行し、c演算子とd演算子をチップ3で実行してもよい。
【0037】
さらに、演算子の間には一定のデータ伝送依存関係が存在する可能性がある。例えば、ある演算子は、実行時に、他の演算子のデータ処理結果を当該演算子の実行のパラメータとして使用する必要がある。したがって、当該演算子が依存する演算子が実行されなければ、当該演算子の実行に必要なパラメータが決定されておらず、それにより当該演算子は直接実行することができない。したがって、サーバは、ユーザから出されたタスク要求に応答して実行する必要がある演算子の組み合わせを決定した後、演算子の組み合わせから、チップにより直接実行できる演算子を第1の目標演算子として決定してもよい。第1の目標演算子をチップにより実行することで、演算子の組み合わせにおける、第1の目標演算子の実行結果に依存する他の演算子はチップにより継続的に実行することができる。
【0038】
また、サーバが第1の目標演算子をチップにより実行し終えた後、上記第1のタスクに対応する演算子の組み合わせにおける、第1の目標演算子に依存する演算子は、第1の目標演算子の実行結果を取得した後、チップにより直接実行可能な演算子となる。この時に、サーバは、演算子の組み合わせから、チップにより直接実行可能な少なくとも1つの新たな演算子を、第1の目標演算子として新たに決定してもよい。
【0039】
ステップS103において、第2のタスクを実行しているチップについて、前記チップの残りのコンピューティングリソースが予め設定された条件を満たすか否かを判断する。
【0040】
ステップS104において、ステップS103の判断結果が肯定である場合、前記チップが現在実行している第2のタスクに対応する実行可能な演算子を第2の目標演算子として取得する。
【0041】
サーバは、現在チップにより実行する必要がある第1の目標演算子を決定した後、第2のタスクを実行しているチップについて、当該チップの残りのコンピューティングリソースが予め設定された条件を満たすか否かを判断してもよく、判断結果が肯定である場合、当該チップにより第2のタスクを実行する上で第1のタスクに対応する第1の目標演算子を並列に実行してもよい。判断結果が否定である場合、当該第1のタスクにアイドル状態にあるチップを割り当てて、当該第1のタスクに対応する第1の目標演算子を実行してもよく、又は、現在アイドル状態にあるチップが存在しない場合に、当該第1のタスクを待機状態にしてもよい。ここで、上記予め設定された条件は、実際の要求に応じて設定することができる。例えば、チップの残りのコンピューティングリソースが指定条件閾値に達したか否かを判断するなどである。
【0042】
ステップS105において、前記チップが各前記第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各前記第1の目標演算子に前記チップの残りのコンピューティングリソースの少なくとも一部を割り当て、前記チップにより、各前記第2の目標演算子を実行する上で各前記第1の目標演算子を並列に実行することで、前記第1のタスクを実行する。
【0043】
例えば、サーバは、チップが各第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各第1の目標演算子に当該チップの残りのコンピューティングリソースの少なくとも一部を割り当て、各第1の目標演算子を並列に実行することで、対応する第1のタスクを実行してもよい。
【0044】
具体的に、サーバは、予め決定された並列可能な演算子の組み合わせから、第2の目標演算子が含まれる並列可能な演算子の組み合わせを候補演算子の組み合わせとして選別し、各候補演算子の組み合わせについて、当該候補演算子の組み合わせに含まれる第1の目標演算子の数が予め設定された第1の閾値を超えれば、当該候補演算子の組み合わせを目標演算子の組み合わせとして決定し、当該目標演算子の組み合わせにおける各第1の目標演算子及び各第2の目標演算子を前記チップにより並列に実行してもよい。
【0045】
実際の利用シーンでは、サーバが第1のタスクを、第2のタスクを実行しているチップにより並列に実行する必要がある場合に、第1のタスクの実行に実行する必要がある第1の目標演算子は、現在実行している第2のタスクの第2の目標演算子と並列に実行可能であるか否かを予測する必要があり、上記予測プロセスは、タスク要求の応答遅延の延長をもたらす可能性がある。これに基づいて、サーバは、オフライン状態で、並列に実行可能な全ての演算子の組み合わせを並列可能な演算子の組み合わせとして予め決定してもよく、それにより、実際の応用では、各並列可能な演算子の組み合わせから第2の目標演算子及び第1の目標演算子とマッチングする目標演算子の組み合わせを直接選別してチップに並列に実行させることができる。
【0046】
ここで、サーバが各並列可能な演算子の組み合わせを決定する方法は、複数の目標モデルを取得するステップと、各目標モデルについて、当該目標モデルに含まれる演算子の間のデータ伝送依存関係を決定するステップと、前記目標モデルのそれぞれに対応するデータ伝送依存関係に基づいて、前記複数の目標モデルに含まれる全ての演算子のうち互いにデータ伝送依存関係が存在しない演算子の組み合わせを、前記並列可能な演算子の組み合わせとして決定するステップと、を含んでもよい。
【0047】
図2は、本発明の実施例により提供されるデータフロー図の概略図である。
図2から分かるように、サーバは、決定されたデータ伝送依存関係に基づいて、各目標モデルに対応するデータフロー図を決定することができる。データフロー図において、各ノードは、目標モデルに含まれる演算子を表現するために用いられ、2つのノードの間のエッジは、この2つのノードの間にデータ伝送依存関係が存在することを表現するために用いられる。ここで、ノードAとノードBとの間にノードAからノードBを指すエッジが存在する場合に、ノードBはノードAに依存することが示される。
【0048】
さらに、サーバは、データフロー図に含まれる各ノードについて、複数回の反復により、当該ノードに対応する並列可能な演算子の組み合わせを決定してもよい。
【0049】
ここで、各回の反復について、サーバは、当該回の反復における目標ノードの組み合わせであって、1つの目標ノード、又は互に依存関係が存在しない複数の目標ノードを含む目標ノードの組み合わせを決定し、データフロー図に含まれる、目標ノードの組み合わせにおける各目標ノード以外の他の各ノードについて、当該他のノードが目標ノードの組み合わせにおけるいずれかの目標ノードに依存するか否かを判断してもよい。
【0050】
当該他のノードが目標ノードの組み合わせにおけるいずれの目標ノードにも依存しない場合に、サーバは、当該他のノード及び前記目標ノードの組み合わせに基づいて並列可能な演算子の組み合わせを決定し、決定された並列可能な演算子の組み合わせを次回の反復における目標ノードの組み合わせとするか、又はデータフロー図に含まれるノードから次回の反復における目標ノードを順次選択してもよい。
【0051】
他の各ノードについて、サーバは、データフロー図にしたがって目標のノードの組み合わせにおける目標のノードが当該他のノードの親ノード又は祖先ノードであるか否かを順次判断してもよく、前記目標ノードの組み合わせに当該他のノードの親ノード又は祖先ノードである1つの目標ノードが存在すれば、当該他のノードは、当該目標ノードの組み合わせにおける目標ノードに依存すると決定することができる。ここで、データフロー図において、第1のノードから第2のノードを指すエッジが存在すれば、第1のノードは親ノードであり、第2のノードは子ノードである。そして、第1のノードの親ノード及び祖先ノードは、第2のノードの祖先ノードである。
【0052】
さらに、サーバは、予め設定された終了条件が満たされたと決定した場合に、得られた各目標ノードの組み合わせを並列可能な演算子の組み合わせとして決定してもよい。ここで、上記予め設定された終了条件は、データフロー図に含まれる全てのノードをいずれも目標ノードとして反復処理に参加したようにすることであってもよい。当然ながら、上記予め設定された終了条件は、反復の回数が指定回数に達することであってもよい。
【0053】
ここで、サーバが当該他のノード及び前記目標ノードの組み合わせに基づいて並列可能な演算子の組み合わせを決定することは、具体的に、サーバが当該他のノードと前記目標ノードの組み合わせを候補演算子の組み合わせとして合併し、チップ内での当該候補演算子の組み合わせの実行時間を決定し、チップ内での当該候補演算子の組み合わせの実行時間が予め設定された第2の閾値を超えなければ、当該候補演算子の組み合わせを並列可能な演算子の組み合わせとして決定することであってもよい。
【0054】
上記内容から分かるように、サーバは、チップ内での各候補演算子の組み合わせの実行時間を予測し、予測したチップ内での各候補演算子の組み合わせの実行時間に基づいて、各候補演算子の組み合わせをさらに選別してもよい。
【0055】
実際の利用シーンでは、チップ内での実行時間が長いため、他の演算子とともに並列可能な演算子の組み合わせとすることに適しない一部の演算子が存在する可能性がある。したがって、サーバは、並列可能な演算子の組み合わせを決定する前に、データフロー図に含まれる各ノードについて、チップ内での当該ノードに対応する演算子の実行時間を決定し、チップ内での当該ノードに対応する演算子の実行時間が予め設定された第2の閾値を超えなければ、当該ノードを予め設定された候補ノードセットに追加してもよい。このように、並列可能な演算子の組み合わせを決定する複数回の反復において、当該候補ノードセットから1つのノードを次回の反復における目標ノードとして順次選択することができる。
【0056】
サーバがチップ内での候補演算子の組み合わせの実行時間を決定することは、具体的に、サーバが候補演算子の組み合わせの関連特徴を取得し、関連特徴を予め設定された予測モデルに入力して、予測モデルによりチップ内での候補演算子の組み合わせの実行時間を予測し出力することであってもよい。ここで、ここでの関連特徴は、候補演算子の組み合わせに含まれる各演算子の過去に使用したチップのコンピューティング量、過去のデータ帯域幅、過去の実行時間、及び候補演算子の組み合わせに含まれる演算子のデータ伝送サイズの平均値、最大値、最小値、分散のうち少なくとも1つを含む。なお、候補演算子の組み合わせが1つの演算子のみを含む場合に、上記方法で得られるのは、チップ内での当該演算子の実行時間である。
【0057】
ここで、上記予測モデルのトレーニング方法は、少なくとも1つのサンプル演算子を含むサンプル演算子の組み合わせを予測モデルに入力し、予測モデルによりチップ内でのサンプル演算子の組み合わせの実行時間を予測して出力し、予測モデルにより出力されたチップ内でのサンプル演算子の組み合わせの実行時間とオフラインシミュレーションで得られたサンプル演算子の組み合わせの実際の実行時間との間の差を最小化することで予測モデルをトレーニングすることであってもよい。
【0058】
図3は、本発明の実施例により提供される並列可能な演算子の組み合わせを決定するプロセスの概略図である。
【0059】
図3と併せて分かるように、サーバは、データフロー図における各ノードに対応する演算子をコーディングすることができる。ここで、コーディングの方法は、データフロー図における各ノードについて、0からNまで昇順に順次コーディングすることであってもよい。ここで、Nは、データフロー図における全てのノードの数を表す。
【0060】
さらに、サーバは、チップ内でのノードiに対応する演算子(以下、i番目の演算子、又は演算子iとも称する)の実行時間がtiであると予測することができ、演算子iの実行時間tiが予め設定された第2の閾値未満である場合に、演算子iをセット1及びセット2にそれぞれ追加するとともに、結果セットRに追加する。ここで、iは、0以上N未満の整数であり、ノード及びノードに対応する演算子のコードを表す。
【0061】
各回の反復のプロセスにおいて、サーバは、セット1が空であるか否かを判断してもよい。セット1が空でない場合に、サーバは、セット1における演算子xを選択し、当該演算子xをセット1から削除し、セット2における各演算子と演算子xとを組み合わせて、演算子の組み合わせx′を得ることができる。さらに、演算子の組み合わせx′における演算子の間にデータ依存関係が存在せず、且つ単一のチップ内での当該演算子の組み合わせx′の実行時間が第2の閾値を超えなければ、演算子の組み合わせx′をセット1及び結果セットRに追加し、それ以外の場合、当該演算子の組み合わせx′を廃棄する。上記プロセスをセット1が空になるまで繰り返し、この時に結果セットRにおける各演算子の組み合わせはいずれも並列可能な演算子の組み合わせである。
【0062】
上記内容から分かるように、全ての並列に実行可能な演算子の組み合わせを予め決定し、ユーザから出されたタスク要求に応じて実行される実行する第1のタスクに対応する実行可能な演算子と、チップが実行している第2のタスクの実行可能な演算子とで、前記並列に実行可能な演算子の組み合わせを組み合わせることができることに応答して、当該チップにより第2のタスクを実行する上で第1のタスクを並列に実行することで、チップのコンピューティングリソースの利用率を効果的に向上させることができる。
【0063】
以上、本発明の1つ又は複数の実施例にて提供されるタスク実行方法である。同じ考え方に基づき、本発明は、相応するタスク実行装置も提供する。
図4に示すように、当該装置は、取得モジュール401と、第1の決定モジュール402と、検出モジュール403と、第2の決定モジュール404と、実行モジュール405と、を含む。
【0064】
取得モジュール401は、第1のタスク要求を取得するために用いられる。
【0065】
第1の決定モジュール402は、前記第1のタスク要求に対応する第1のタスクの実行に必要な演算子の組み合わせを決定し、前記演算子の組み合わせにおける少なくとも1つの実行可能な演算子を第1の目標演算子として決定するために用いられ、前記実行可能な演算子は、他の演算子の実行結果に依存する必要がないため直接実行することができる。
【0066】
検出モジュール403は、第2のタスクを実行しているチップについて、前記チップの残りのコンピューティングリソースが予め設定された条件を満たすか否かを判断するために用いられる。
【0067】
第2の決定モジュール404は、前記検出モジュール403の判断結果が肯定である場合、前記チップが現在実行している第2のタスクに対応する少なくとも1つの実行可能な演算子を各第2の目標演算子として決定するために用いられる。
【0068】
実行モジュール405は、前記チップにより各前記第2の目標演算子を実行する上で各前記第1の目標演算子を並列に実行するように、前記チップが各前記第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各前記第1の目標演算子に前記チップの残りのコンピューティングリソースの少なくとも一部を割り当るために用いられる。
【0069】
オプションで、前記実行モジュール405は、具体的に、予め決定された複数の並列可能な演算子の組み合わせから前記第2の目標演算子が含まれる候補演算子の組み合わせを選別し、各候補演算子の組み合わせについて、当該候補演算子の組み合わせに含まれる前記第1の目標演算子の数が予め設定された第1の閾値を超えれば、当該候補演算子の組み合わせを目標演算子の組み合わせとして決定し、前記目標演算子の組み合わせにおける各第1の目標演算子及び各第2の目標演算子を前記チップにより並列に実行するために用いられる。
【0070】
オプションで、前記装置は、第3の決定モジュール406をさらに含む。前記第3の決定モジュール406は、具体的に、複数の目標モデルを取得し、各目標モデルについて、当該目標モデルに含まれる演算子の間のデータ伝送依存関係を決定し、前記複数の目標モデルのそれぞれに対応するデータ伝送依存関係に基づいて、前記複数の目標モデルに含まれる全ての演算子のうち互いにデータ伝送依存関係が存在しない演算子の組み合わせを、並列可能な演算子の組み合わせとして決定するために用いられる。
【0071】
オプションで、前記第3の決定モジュール406は、具体的に、決定された前記データ伝送依存関係に基づいて、前記各目標モデルに対応するデータフロー図を決定し、前記データフロー図において、各ノードは、目標モデルに含まれる演算子を表現するために用いられ、2つのノードの間のエッジは、前記2つのノードの間にデータ伝送依存関係が存在することを表現するために用いられ、前記データフロー図に基づいて、並列可能な演算子の組み合わせを決定するために用いられる。
【0072】
オプションで、前記第3の決定モジュール406は、具体的に、前記データフロー図に含まれる各ノードについて、複数回の反復により、当該ノードに対応する並列可能な演算子の組み合わせを決定するために用いられる。ここで、各回の反復について、前記第3の決定モジュール406は、具体的に、当該回の反復における目標ノードの組み合わせであって、1つの目標ノード、又は互に依存関係が存在しない複数の目標ノードを含む目標ノードの組み合わせを決定し、前記データフロー図に含まれる前記目標ノードの組み合わせにおける各目標ノード以外の他の各ノードについて、当該他のノードが前記目標ノードの組み合わせにおけるいずれの目標ノードにも依存しなければ、当該他のノード及び前記目標ノードの組み合わせに基づいて並列可能な演算子の組み合わせを決定し、決定された並列可能な演算子の組み合わせを次回の反復における目標ノードの組み合わせとするか、又は前記複数のデータフロー図に含まれるノードから次回の反復における目標ノードを順次選択し、予め設定された終了条件が満たされたと決定した後、並列可能な演算子の組み合わせを得るために用いられる。
【0073】
オプションで、前記第3の決定モジュール406は、具体的に、当該他のノードと前記目標ノードの組み合わせを候補演算子の組み合わせとして合併し、前記チップ内での前記候補演算子の組み合わせの実行時間を決定し、前記チップ内での前記候補演算子の組み合わせの実行時間が予め設定された第2の閾値を超えなければ、当該候補演算子の組み合わせを並列可能な演算子の組み合わせとして決定するために用いられる。
【0074】
オプションで、前記第3の決定モジュール406は、具体的に、前記データフロー図に含まれる各ノードについて、前記チップ内での当該ノードに対応する演算子の実行時間を決定し、前記チップ内での当該ノードに対応する演算子の実行時間が予め設定された閾値を超えなければ、当該ノードを予め設定された候補ノードセットに追加し、前記候補ノードセットから1つのノードを次回の反復における目標ノードとして順次選択するために用いられる。
【0075】
オプションで、前記第3の決定モジュール406は、具体的に、前記候補演算子の組み合わせの関連特徴であって、候補演算子の組み合わせに含まれる各演算子の過去に使用したチップのコンピューティング量、過去のデータ帯域幅、過去の実行時間、及び候補演算子の組み合わせに含まれる演算子のデータ伝送サイズの平均値、最大値、最小値、分散のうち少なくとも1つを含む関連特徴を取得し、前記関連特徴を予め設定された予測モデルに入力して、前記予測モデルにより前記チップ内での前記候補演算子の組み合わせの実行時間を予測し出力するために用いられる。
【0076】
オプションで、前記並列可能な演算子の組み合わせは、前記チップがオフライン状態にある時に決定されるものである。
【0077】
本発明はコンピュータ可読記憶媒体をさらに提供し、当該記憶媒体は上記タスク実行のための方法を実行するためのコンピュータプログラムを記憶する。
【0078】
本発明は、
図5に示すタスク実行のための電子デバイスの概略構造図をさらに提供する。
図5に示すように、ハードウェアレベルでは、当該電子デバイスは、プロセッサ、内部バス、ネットワークインタフェース、内部メモリ、及び不揮発性メモリを含み、もちろん、他の動作に必要なハードウェアも含み得る。プロセッサは、不揮発性メモリから対応するコンピュータプログラムを内部メモリに読み込んで実行し、上記タスク実行のための方法を実現する。
【0079】
もちろん、ソフトウェアによる実現の他に、本発明は、論理デバイスやハードウェアとソフトウェアの組み合わせなど、他の実現方式を排除するものではなく、つまり、以下の処理プロセスの実行主体は、各の論理ユニットに限定されず、ハードウェアや論理デバイスであってもよい。
【0080】
1990年代には、ある技術の改良は、ハードウェアの改良(ダイオード、トランジスタ、スイッチなどの回路構造の改良など)とソフトウェアの改良(方法フローの改良)に明確に区別することができる。しかし、技術の発展に伴い、現在の方法フローの改良の多くは、ハードウェア回路構造に対する直接的な改良と見なすことができるようになった。設計者は、改良された方法フローをハードウェア回路にプログラミングすることで、対応するハードウェア回路構造を得ることがほとんどである。したがって、方法フローの改良がハードウェア物理モジュールにより実現できないとは言い切れない。例えば、プログラマブルロジックデバイス(Programmable Logic Device、PLD)(例えばフィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA))はこのような集積回路であり、その論理機能がデバイスのユーザによるプログラミングによって決定される。チップメーカーが専用の集積回路チップを設計・製造する代わりに、設計者がプログラミングしてデジタルシステムを1枚のPLD上に「集積」する。そして、現在では、集積回路チップを手作りする代わりに、このプログラミングは「論理コンパイラ(logic compiler)」というソフトウェアを使って実現されることがほとんどであり、これは、プログラムを書くときに使うソフトウェアコンパイラと類似し、前のオリジナルコードをコンパイルするためには、特定のプログラミング言語で書く必要があり、これはハードウェア記述言語(Hardware Description Language、HDL)と呼ばれ、HDLは1種類だけではなく、ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)など、多くの種類があり、現在最もよく使われているのはVHDL(Very-High-Speed Integrated Circuit Hardware Description Language)とVerilogである。方法フローを、上記のハードウェア記述言語のいくつかでちょっと論理的にプログラミングして集積回路にプログラミングするだけで、論理的な方法フローを実現するハードウェア回路は簡単に得られることは、当業者には明らかであろう。
【0081】
コントローラは、任意の適切な方法で実現されてもよく、例えば、コントローラはマイクロプロセッサ又はプロセッサと、当該(マイクロ)プロセッサによって実行可能なコンピュータ可読プログラムコード(例えば、ソフトウェア又はファームウェア)を記憶するコンピュータ可読記憶媒体と、論理ゲート、スイッチ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、プログラマブルロジックコントローラ及び埋め込みマイクロコントローラの形態を採用してもよく、コントローラの例として、ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20、Silicone Labs C8051F320などのマイクロコントローラを含むが、これらに限定されず、メモリコントローラはさらに、メモリの制御ロジックの一部として実現されることも可能である。また、純粋なコンピュータ可読プログラムコードでコントローラを実現することに加えて、方法ステップを論理的にプログラミングすることで、コントローラに、論理ゲート、スイッチ、特定用途向け集積回路、プログラマブルロジックコントローラ及び埋め込みマイクロコントローラなどの形態で同じ機能を実行させることも完全に可能であることは、当業者には明らかであろう。したがって、このようなコントローラを、ハードウェアコンポーネントとみなしてもよく、様々な機能を実現するためのその中に含まれる装置も、ハードウェアコンポーネント内の構造とみなしてもよい。又は、さらに、様々な機能を実現するための装置を、方法を実現するソフトウェアモジュールであってもよいし、ハードウェアコンポーネント内の構造であってもよいと、みなしてもよい。
【0082】
上記実施例で説明したシステム、装置、モジュール又はユニットは、具体的に、コンピュータチップ、エンティティ、又は何らかの機能を有する製品によって実現されてもよい。典型的な実現デバイスはコンピュータである。具体的に、コンピュータは例えば、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラ付き電話、スマートフォン、パーソナルデジタルアシスタント、メディアプレーヤ、ナビゲーションデバイス、電子メールデバイス、ゲーム機、タブレット、ウェアラブルデバイス、又はこれらのデバイスの任意のいくつかの組み合わせであってもよい。
【0083】
なお、説明の便宜上、上記の装置を説明するときに機能によって様々なユニットに分けてそれぞれ説明する。もちろん、本発明を実施する際に、各ユニットの機能を同一又は複数のソフトウェア及び/又はハードウェアで実現することも可能である。
【0084】
当業者であれば分かるように、本発明の実施例が、方法、システム、又はコンピュータプログラム製品として提供されてもよい。したがって、本発明は、ハードウェアだけからなる実施例、ソフトウェアだけからなる実施例、又はソフトウェアとハードウェアを組み合わせた実施例なる形態を用いてもよい。さらに、本発明は、コンピュータで使用可能なプログラムコードを含む1つ又は複数のコンピュータで使用可能な記憶媒体(磁気ディスクメモリ、CD-ROM、光学メモリなどを含むが、これらに限定されない)において実施されるコンピュータプログラム製品の形態であってもよい。
【0085】
本発明は、本発明の実施例による方法、デバイス(システム)、及びコンピュータプログラム製品のフローチャート及び/又はブロック図を参照して説明される。フローチャート及び/又はブロック図における各フロー及び/又はブロック、並びにフローチャート及び/又はブロック図におけるフロー及び/又はブロックの組み合わせは、コンピュータプログラム命令によって実現されてもよいことが理解されるべきである。これらのコンピュータプログラム命令は、マシンを生成するために、汎用コンピュータ、専用コンピュータ、埋め込みプロセッサ、又は他のプログラム可能なデータ処理デバイスのプロセッサに提供されてもよく、それにより、コンピュータ又は他のプログラム可能なデータ処理デバイスのプロセッサによって実行される命令により、フローチャートの1つ又は複数のフロー、及び/又はブロック図の1つ又は複数のブロックにおいて指定される機能を実現するための装置が生成される。
【0086】
これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能なデータ処理デバイスに特定の方法で作業するように指示することができるコンピュータ可読メモリに記憶されてもよく、その結果、当該コンピュータ可読メモリに記憶されている命令により、フローチャートの1つ又は複数のフロー及び/又はブロック図の1つ又は複数のブロックにおいて指定される機能を実現する命令装置を含む製品が生成される。
【0087】
これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能なデータ処理デバイスにロードしてもよく、それにより、一連の動作ステップがコンピュータ又は他のプログラム可能なデバイス上で実行されることで、コンピュータにより実施される処理が生成され、それにより、コンピュータ又は他のプログラム可能なデバイス上で実行される命令により、フローチャートの1つ又は複数のフロー、及び/又はブロック図の1つ又は複数のブロック内で指定される機能を実現するためのステップが提供される。
【0088】
典型的な構成では、コンピューティングデバイスは、1つ以上のプロセッサ(CPU)、入力/出力インタフェース、ネットワークインタフェース、及びメモリを含む。
【0089】
メモリは、コンピュータ可読記憶媒体のうちの揮発性メモリ、ランダムアクセスメモリ(RAM)及び/又は不揮発性メモリなどの形態を含み得、例えば、読み出し専用メモリ(ROM)又はフラッシュメモリ(flash RAM)である。メモリは、コンピュータ可読記憶媒体の一例である。
【0090】
コンピュータ可読記憶媒体は不揮発性及び揮発性媒体、移動可能及び非移動可能な媒体を含み、任意の方法又は技術により情報記憶を実現し得る。情報はコンピュータ可読命令、データ構造、プログラムモジュール又は他のデータであってもよい。コンピュータの記憶媒体は、相変化メモリ(Phase Change RAM、PRAM)、スタティックランダムアクセスメモリ(Static Random-Access Memory、SRAM)、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)、他のタイプのランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、電気的消去可能プログラマブル読み出し専用メモリ(Electrically Erasable Programmable Read Only Memory、EEPROM)、フラッシュメモリ(flash Memory)又は他のメモリ技術、コンパクトディスク読み出し専用メモリ(Compact Disc Read Only Memory、CD-ROM)、デジタル多用途ディスク(Digital Versatile Disc、DVD)又は他の光学記憶、磁気カセットテープ、磁気テープ磁気ディスク記憶又は他の磁気記憶デバイス、又はコンピューティングデバイスからアクセス可能な情報を記憶するために使用され得る任意の他の非伝送媒体を含むがそれらに限定されない。本明細書の定義によれば、コンピュータ可読記憶媒体は一時記憶コンピュータ可読記憶媒体(transitory Media)、例えば変調されたデータ信号及びキャリアを含まない。
【0091】
また、用語「含む」、「含有」又はそのいずれかの他の変形は、非排他的な含有を含むことを意図し、それにより一連の要素を含むプロセス、方法、物品又はデバイスはそれらの要素を含むだけでなく、また明確に列挙されていない他の要素も含み、又はこのようなプロセス、方法、物品又はデバイスの固有の要素も含む。より多くの制限がない場合、文「1つの…を含む」により限定された要素は、前記要素を含むプロセス、方法、物品又はデバイスにさらに他の同じ要素が存在することを排除するものではない。
【0092】
当業者であれば分かるように、本発明の実施例が、方法、システム、又はコンピュータプログラム製品として提供されてもよい。したがって、本発明は、ハードウェアだけからなる実施例、ソフトウェアだけからなる実施例、又はソフトウェアとハードウェアを組み合わせた実施例なる形態を用いてもよい。さらに、本発明は、コンピュータで使用可能なプログラムコードを含む1つ又は複数のコンピュータで使用可能な記憶媒体(磁気ディスクメモリ、CD-ROM、光学メモリなどを含むが、これらに限定されない)において実施されるコンピュータプログラム製品の形態であってもよい。
【0093】
本発明は、プログラムモジュールのようなコンピュータによって実行されるコンピュータ実行可能命令の一般的な文脈で記述され得る。一般的に、プログラムモジュールは、特定のタスクを実行する、又は特定の抽象データ型を実現するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明は、通信ネットワークを介して接続されたリモート処理デバイスによってタスクが実行される分散コンピューティング環境においても実施され得る。分散コンピューティング環境において、プログラムモジュールは、記憶デバイスを含むローカル及びリモートコンピュータ記憶媒体に配置され得る。
【0094】
本発明における各実施例はいずれも漸進の方式で説明され、各実施例の間の同じ又は類似する部分は互いに参照すればよく、各実施例の重点的に説明されたのは他の実施例との相違点である。特に、システムの実施例に対して、それは基本的に方法の実施例と類似するため、簡単に説明し、関連する部分は方法の実施例の一部の説明を参照すればよい。
【手続補正書】
【提出日】2023-08-01
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
第1のタスク要求を取得することと、
前記第1のタスク要求に対応する第1のタスクの実行に必要な演算子の組み合わせを決定し、前記演算子の組み合わせにおける少なくとも1つの実行可能な演算子を第1の目標演算子として決定することであって、前記実行可能な演算子は、他の演算子の実行結果に依存する必要がないため直接実行することができる、ことと、
第2のタスクを実行しているチップについて、前記チップの残りのコンピューティングリソースが予め設定された条件を満たすか否かを判断することと、
前記判断結果が肯定である場合、
前記チップが現在実行している前記第2のタスクに対応する少なくとも1つの実行可能な演算子を第2の目標演算子として決定することと、
前記チップが各前記第2の目標演算子を実行する上で各前記第1の目標演算子を並列に実行することで前記第1のタスクを実行するように、前記チップが各前記第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各前記第1の目標演算子に前記チップの残りのコンピューティングリソースの少なくとも一部を割り当ることと、を含む、
ことを特徴とするタスク実行方法。
【請求項2】
前記チップが各前記第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各前記第1の目標演算子に前記チップの残りのコンピューティングリソースの少なくとも一部を割り当てることは、
予め決定された複数の並列可能な演算子の組み合わせから前記第2の目標演算子が含まれる候補演算子の組み合わせを選別することと、
各前記候補演算子の組み合わせについて、当該候補演算子の組み合わせに含まれる前記第1の目標演算子の数が予め設定された第1の閾値を超えれば、当該候補演算子の組み合わせを目標演算子の組み合わせとして決定することと、
前記目標演算子の組み合わせにおける各前記第1の目標演算子及び各前記第2の目標演算子を前記チップにより並列に実行することと、を含む、
ことを特徴とする請求項1に記載の方法。
【請求項3】
並列可能な演算子の組み合わせを決定することは、
複数の目標モデルを取得することと、
各前記目標モデルについて、当該目標モデルに含まれる演算子の間のデータ伝送依存関係を決定することと、
前記複数の目標モデルのそれぞれの前記データ伝送依存関係に基づいて、前記複数の目標モデルに含まれる全ての演算子のうち互いにデータ伝送依存関係が存在しない演算子の組み合わせを、前記並列可能な演算子の組み合わせとして決定することと、を含む、
ことを特徴とする請求項2に記載の方法。
【請求項4】
前記複数の目標モデルのそれぞれの前記データ伝送依存関係に基づいて、前記複数の目標モデルに含まれる全ての演算子のうち互いにデータ伝送依存関係が存在しない演算子の組み合わせを、前記並列可能な演算子の組み合わせとして決定することは、
各前記目標モデルについて決定された前記データ伝送依存関係に基づいて、前記目標モデルに対応するデータフロー図を決定することであって、前記データフロー図において、各ノードは、前記目標モデルに含まれる演算子を表現するために用いられ、2つのノードの間のエッジは、前記2つのノードの間にデータ伝送依存関係が存在することを表現するために用いられる、ことと、
前記複数の目標モデルに対応する複数の前記データフロー図に基づいて、前記並列可能な演算子の組み合わせを決定することと、を含む、
ことを特徴とする請求項3に記載の方法。
【請求項5】
前記複数の目標モデルに対応する複数の前記データフロー図に基づいて、前記並列可能な演算子の組み合わせを決定することは、
前記複数のデータフロー図に含まれる各ノードについて、複数回の反復により、当該ノードに対応する並列可能な演算子の組み合わせを決定することを含み、ここで、
各回の反復について、
当該回の反復における目標ノードの組み合わせであって、1つの目標ノード、又は互に依存関係が存在しない複数の目標ノードを含む目標ノードの組み合わせを決定し、
前記複数のデータフロー図に含まれる前記目標ノードの組み合わせにおける各目標ノード以外の他の各ノードについて、当該他のノードが前記目標ノードの組み合わせにおけるいずれの目標ノードにも依存しなければ、当該他のノード及び前記目標ノードの組み合わせに基づいて並列可能な演算子の組み合わせを決定し、
決定された前記並列可能な演算子の組み合わせを次回の反復における目標ノードの組み合わせとするか、又は前記複数のデータフロー図に含まれるノードから次回の反復における目標ノードを予め設定された終了条件が満たされるまで順次選択する、
ことを特徴とする請求項4に記載の方法。
【請求項6】
当該他のノード及び前記目標ノードの組み合わせに基づいて並列可能な演算子の組み合わせを決定することは、
当該他のノードと前記目標ノードの組み合わせを候補演算子の組み合わせとして合併することと、
前記チップ内での前記候補演算子の組み合わせの実行時間が予め設定された第2の閾値を超えなければ、当該候補演算子の組み合わせを並列可能な演算子の組み合わせとして決定することと、を含む、
ことを特徴とする請求項5に記載の方法。
【請求項7】
前記複数のデータフロー図に含まれるノードから次回の反復における目標ノードを順次選択することは、
候補ノードセットから1つのノードを次回の反復における目標ノードとして順次選択することを含み、
ここで、前記候補ノードセットは、前記複数のデータフロー図に含まれる、前記チップ内での対応する演算子の実行時間が予め設定された第2の閾値を超えない全てのノードを含む、
ことを特徴とする請求項5に記載の方法。
【請求項8】
前記チップ内での前記候補演算子の組み合わせの実行時間を決定することは、
前記候補演算子の組み合わせの関連特徴であって、前記候補演算子の組み合わせに含まれる各演算子の過去に使用したチップのコンピューティング量、過去のデータ帯域幅、過去の実行時間、及び前記候補演算子の組み合わせに含まれる演算子のデータ伝送サイズの平均値、最大値、最小値、分散のうち少なくとも1つを含む関連特徴を取得することと、
前記関連特徴を予め設定された予測モデルに入力して、前記予測モデルにより前記チップ内での前記候補演算子の組み合わせの実行時間を予測し出力することと、を含む、
ことを特徴とする請求項6に記載の方法。
【請求項9】
前記並列可能な演算子の組み合わせは、前記チップがオフライン状態にある時に決定されるものである、ことを特徴とする請求項2に記載の方法。
【請求項10】
第1のタスク要求を取得するための取得モジュールと、
前記第1のタスク要求に対応する第1のタスクの実行に必要な演算子の組み合わせを決定し、前記演算子の組み合わせにおける少なくとも1つの実行可能な演算子を第1の目標演算子として決定するための第1の決定モジュールであって、前記実行可能な演算子は、他の演算子の実行結果に依存する必要がないため直接実行することができる、第1の決定モジュールと、
第2のタスクを実行しているチップについて、前記チップの残りのコンピューティングリソースが予め設定された条件を満たすか否かを判断するための検出モジュールと、
前記検出モジュールの判断結果が肯定である場合、前記チップが現在実行している前記第2のタスクに対応する少なくとも1つの実行可能な演算子を第2の目標演算子として決定するための第2の決定モジュールと、
前記チップが各前記第2の目標演算子を実行する上で各前記第1の目標演算子を並列に実行することで前記第1のタスクを実行するように、前記チップが各前記第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各前記第1の目標演算子に前記チップの残りのコンピューティングリソースの少なくとも一部を割り当るための実行モジュールと、を含む、
ことを特徴とするタスク実行装置。
【請求項11】
コンピュータプログラムを記憶しているコンピュータ可読記憶媒体であって、前記コンピュータプログラムがプロセッサにより実行されると、請求項1~9のいずれか1項に記載の方法が実施される、
ことを特徴とするコンピュータ可読記憶媒体。
【請求項12】
メモリと、プロセッサと、メモリに記憶されプロセッサで実行可能なコンピュータプログラムとを含む電子デバイスであって、前記プロセッサは、前記プログラムを実行すると、上記請求項1~9のいずれか1項に記載の方法を実施する、
ことを特徴とする電子デバイス。
【手続補正書】
【提出日】2024-03-25
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
チップ計算能力スケジューリングのためのタスク実行方法であって、
第1のタスク要求を取得することと、
前記第1のタスク要求
を実行する複数のモデルを決定し、前記複数のモデルに含まれる演算子に基づいて、前記第1のタスク要求に対応する第1のタスクの実行に必要な演算子の組み合わせを決定し、前記演算子の組み合わせにおける少なくとも1つの実行可能な演算子を第1の目標演算子として決定することであって、前記実行可能な演算子は、他の演算子の実行結果に依存する必要がないため直接実行することができる、ことと、
第2のタスクを実行しているチップについて、前記チップの残りのコンピューティングリソースが予め設定された条件を満たすか否かを判断することと、
前記判断結果が肯定である場合、
前記チップが現在実行している前記第2のタスクに対応する少なくとも1つの実行可能な演算子を第2の目標演算子として決定することと、
前記チップが各前記第2の目標演算子を実行する上で各前記第1の目標演算子を並列に実行することで前記第1のタスクを実行するように、前記チップが各前記第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各前記第1の目標演算子に前記チップの残りのコンピューティングリソースの少なくとも一部を割り当ることと、を含
み、
前記チップが各前記第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各前記第1の目標演算子に前記チップの残りのコンピューティングリソースの少なくとも一部を割り当ることは、
前記チップがオフライン状態にある時に、予め決定された複数の並列可能な演算子の組み合わせから前記第2の目標演算子が含まれる候補演算子の組み合わせを選別することであって、前記チップ内での前記予め決定された複数の並列可能な演算子の組み合わせにおける各演算子の実行時間が予め設定された第2の閾値を超えない、ことと、
各前記候補演算子の組み合わせについて、当該候補演算子の組み合わせに含まれる前記第1の目標演算子の数が予め設定された第1の閾値を超えれば、当該候補演算子の組み合わせを目標演算子の組み合わせとして決定することと、を含む、
ことを特徴とするタスク実行方法。
【請求項2】
並列可能な演算子の組み合わせを決定することは、
複数の目標モデルを取得することと、
各前記目標モデルについて、当該目標モデルに含まれる演算子の間のデータ伝送依存関係を決定することと、
前記複数の目標モデルのそれぞれの前記データ伝送依存関係に基づいて、前記複数の目標モデルに含まれる全ての演算子のうち互いにデータ伝送依存関係が存在しない演算子の組み合わせを、前記並列可能な演算子の組み合わせとして決定することと、を含む、
ことを特徴とする請求項
1に記載の方法。
【請求項3】
前記複数の目標モデルのそれぞれの前記データ伝送依存関係に基づいて、前記複数の目標モデルに含まれる全ての演算子のうち互いにデータ伝送依存関係が存在しない演算子の組み合わせを、前記並列可能な演算子の組み合わせとして決定することは、
各前記目標モデルについて決定された前記データ伝送依存関係に基づいて、前記目標モデルに対応するデータフロー図を決定することであって、前記データフロー図において、各ノードは、前記目標モデルに含まれる演算子を表現するために用いられ、2つのノードの間のエッジは、前記2つのノードの間にデータ伝送依存関係が存在することを表現するために用いられる、ことと、
前記複数の目標モデルに対応する複数の前記データフロー図に基づいて、前記並列可能な演算子の組み合わせを決定することと、を含む、
ことを特徴とする請求項
2に記載の方法。
【請求項4】
前記複数の目標モデルに対応する複数の前記データフロー図に基づいて、前記並列可能な演算子の組み合わせを決定することは、
前記複数のデータフロー図に含まれる各ノードについて、複数回の反復により、当該ノードに対応する並列可能な演算子の組み合わせを決定することを含み、ここで、
各回の反復について、
当該回の反復における目標ノードの組み合わせであって、1つの目標ノード、又は互に依存関係が存在しない複数の目標ノードを含む目標ノードの組み合わせを決定し、
前記複数のデータフロー図に含まれる前記目標ノードの組み合わせにおける各目標ノード以外の他の各ノードについて、当該他のノードが前記目標ノードの組み合わせにおけるいずれの目標ノードにも依存しなければ、当該他のノード及び前記目標ノードの組み合わせに基づいて並列可能な演算子の組み合わせを決定し、
決定された前記並列可能な演算子の組み合わせを次回の反復における目標ノードの組み合わせとするか、又は前記複数のデータフロー図に含まれるノードから次回の反復における目標ノードを予め設定された終了条件が満たされるまで順次選択する、
ことを特徴とする請求項
3に記載の方法。
【請求項5】
当該他のノード及び前記目標ノードの組み合わせに基づいて並列可能な演算子の組み合わせを決定することは、
当該他のノードと前記目標ノードの組み合わせを候補演算子の組み合わせとして合併することと、
前記チップ内での前記候補演算子の組み合わせの実行時間が予め設定された第2の閾値を超えなければ、当該候補演算子の組み合わせを並列可能な演算子の組み合わせとして決定することと、を含む、
ことを特徴とする請求項
4に記載の方法。
【請求項6】
前記複数のデータフロー図に含まれるノードから次回の反復における目標ノードを順次選択することは、
候補ノードセットから1つのノードを次回の反復における目標ノードとして順次選択することを含み、
ここで、前記候補ノードセットは、前記複数のデータフロー図に含まれる、前記チップ内での対応する演算子の実行時間が予め設定された第2の閾値を超えない全てのノードを含む、
ことを特徴とする請求項
4に記載の方法。
【請求項7】
前記チップ内での前記候補演算子の組み合わせの実行時間を決定することは、
前記候補演算子の組み合わせの関連特徴であって、前記候補演算子の組み合わせに含まれる各演算子の過去に使用したチップのコンピューティング量、過去のデータ帯域幅、過去の実行時間、及び前記候補演算子の組み合わせに含まれる演算子のデータ伝送サイズの平均値、最大値、最小値、分散のうち少なくとも1つを含む関連特徴を取得することと、
前記関連特徴を予め設定された予測モデルに入力して、前記予測モデルにより前記チップ内での前記候補演算子の組み合わせの実行時間を予測し出力することと、を含む、
ことを特徴とする請求項
5に記載の方法。
【請求項8】
チップ計算能力スケジューリングのためのタスク実行装置であって、
第1のタスク要求を取得するための取得モジュールと、
前記第1のタスク要求
を実行する複数のモデルを決定し、前記複数のモデルに含まれる演算子に基づいて、前記第1のタスク要求に対応する第1のタスクの実行に必要な演算子の組み合わせを決定し、前記演算子の組み合わせにおける少なくとも1つの実行可能な演算子を第1の目標演算子として決定するための第1の決定モジュールであって、前記実行可能な演算子は、他の演算子の実行結果に依存する必要がないため直接実行することができる、第1の決定モジュールと、
第2のタスクを実行しているチップについて、前記チップの残りのコンピューティングリソースが予め設定された条件を満たすか否かを判断するための検出モジュールと、
前記検出モジュールの判断結果が肯定である場合、前記チップが現在実行している前記第2のタスクに対応する少なくとも1つの実行可能な演算子を第2の目標演算子として決定するための第2の決定モジュールと、
前記チップが各前記第2の目標演算子を実行する上で各前記第1の目標演算子を並列に実行することで前記第1のタスクを実行するように、前記チップが各前記第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各前記第1の目標演算子に前記チップの残りのコンピューティングリソースの少なくとも一部を割り当るための実行モジュールと、を含
み、
前記チップが各前記第2の目標演算子に割り当てたコンピューティングリソースに影響を与えない前提で、各前記第1の目標演算子に前記チップの残りのコンピューティングリソースの少なくとも一部を割り当ることは、
前記チップがオフライン状態にある時に、予め決定された複数の並列可能な演算子の組み合わせから前記第2の目標演算子が含まれる候補演算子の組み合わせを選別することであって、前記チップ内での前記予め決定された複数の並列可能な演算子の組み合わせにおける各演算子の実行時間が予め設定された第2の閾値を超えない、ことと、
各前記候補演算子の組み合わせについて、当該候補演算子の組み合わせに含まれる前記第1の目標演算子の数が予め設定された第1の閾値を超えれば、当該候補演算子の組み合わせを目標演算子の組み合わせとして決定することと、を含む、
ことを特徴とするタスク実行装置。
【請求項9】
コンピュータプログラムを記憶しているコンピュータ可読記憶媒体であって、前記コンピュータプログラムがプロセッサにより実行されると、請求項1~
7のいずれか1項に記載の方法が実施される、
ことを特徴とするコンピュータ可読記憶媒体。
【請求項10】
メモリと、プロセッサと、メモリに記憶されプロセッサで実行可能なコンピュータプログラムとを含む電子デバイスであって、前記プロセッサは、前記プログラムを実行すると、上記請求項1~
7のいずれか1項に記載の方法を実施する、
ことを特徴とする電子デバイス。
【国際調査報告】