(57)【要約】本開示は、深層学習分野に関し、特に、タスクスケジューリング方法および装置、記憶媒体に関する。本開示は、タスクスケジューリング方法および装置を提供する。前記タスクスケジューリング方法は、操作タスクキュー内の複数の操作タスクのそれぞれに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと、前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることと、を含む。
2021520578.tif 000002
【特許請求の範囲】
【請求項１】
タスクスケジューリング方法であって、
操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることと、を含むことを特徴とする、前記タスクスケジューリング方法。
【請求項２】
前記操作タスクに対応するオペランドは、読み取りオペランドおよび／または書き込みオペランドを含むことを特徴とする、
請求項１に記載のタスクスケジューリング方法。
【請求項３】
前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、
第２操作タスクが第１操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または前記第２操作タスクが前記第１操作タスクのオペランドに対する書き込み操作を含む場合、前記第２操作タスクが前記第１操作タスクに依存すると決定することを含み、
前記第１操作タスクおよび前記第２操作タスクは、前記操作タスクキュー内の異なる操作タスクであることを特徴とする、
請求項１または２に記載のタスクスケジューリング方法。
【請求項４】
前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、
第２操作タスクが第１操作タスクの読み取りオペランドに対する読み取り操作を含む場合、前記第１操作タスクと前記第２操作タスクとの間に依存関係がないと決定することをさらに含むことを特徴とする、
請求項１ないし３のいずれか一項に記載のタスクスケジューリング方法。
【請求項５】
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定することと、
前記操作タスクキュー内の現在の操作タスクにメモリを割り当てることと、
前記メモリの割り当てが完了した後、前記現在の操作タスクを前記現在の操作タスクに対応するコンテキストにスケジューリングして実行することと、
前記スケジューリング順序に応じて、前記現在の操作タスクの次の操作タスクに対するメモリの割り当てを実行することと、を含むことを特徴とする、
請求項１ないし４のいずれか一項に記載のタスクスケジューリング方法。
【請求項６】
前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定することは、
前記複数の操作タスクのうちの第１操作タスクと、前記複数の操作タスクのうちの第２操作タスクとの間に依存関係がない場合、前記第１操作タスクと前記第２操作タスクを並行して呼び出すと決定すること、および／または
前記第２操作タスクが前記第１操作タスクに依存する場合、前記第１操作タスクの後に前記第２操作タスクをスケジューリングすると決定することを含むことを特徴とする、
請求項５に記載のタスクスケジューリング方法。
【請求項７】
前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、
前記複数の操作タスクに含まれるＭ個の通信操作タスクに対して融合処理を実行して、少なくとも１つの併合通信操作タスクを取得することであって、各併合通信操作タスクは、前記Ｍ個の通信操作タスクのうちの少なくとも１つの通信操作タスクを含み、Ｍは、１より大きいか等しい整数であることと、
前記少なくとも１つの併合通信操作タスクに対応するオペランドおよび前記複数の操作タスクのうちの少なくとも１つの非通信操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと、を含むことを特徴とする、
請求項１ないし６のいずれか一項に記載のタスクスケジューリング方法。
【請求項８】
前記併合通信操作タスクに対応するオペランドは、
前記併合通信操作タスクに含まれる少なくとも１つの通信操作タスクに対応する読み取りオペランドのセット、および／または前記併合通信操作タスクに含まれる少なくとも１つの通信操作タスクに対応する書き込みオペランドのセットを含むことを特徴とする、
請求項７に記載のタスクスケジューリング方法。
【請求項９】
前記操作タスクキューは、第１操作タスクキューおよび第２操作タスクキューを含み、前記第１操作タスクキューは、前記複数の操作タスクのうちの通信操作タスクを含み、前記第２操作タスクキューは、前記複数の操作タスクのうちの非通信操作タスクを含み、
前記第１操作タスクキューおよび前記第２操作タスクキューに含まれる操作タスクは、前記複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列されることを特徴とする、
請求項１ないし８のいずれか一項に記載のタスクスケジューリング方法。
【請求項１０】
前記第１操作タスクキューと前記第２操作タスクキューとの間の依存情報を記録することであって、
前記第１操作タスクキュー内の操作タスクが前記第２操作タスクキュー内の少なくとも１つの操作タスクに依存する場合、または前記第２操作タスクキュー内の操作タスクが前記第１操作タスクキュー内の少なくとも１つの操作タスクに依存する場合、前記依存情報は、前記少なくとも１つの操作タスクのうちの最後の操作タスクの情報を含むことをさらに含み、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記第１操作タスクキューと前記第２操作タスクキューとの間の依存情報に基づいて、前記第１操作タスクキューおよび前記第２操作タスクキュー内の操作タスクをスケジューリングすることを含むことを特徴とする、
請求項９に記載のタスクスケジューリング方法。
【請求項１１】
メモリ回収操作タスクに対応する優先度を最高に設定することであって、前記第２操作タスクキューは、前記操作タスクキュー内の前記メモリ回収操作タスク以外の前記非通信操作タスクを含むことをさらに含むことを特徴とする、
請求項９または１０に記載のタスクスケジューリング方法。
【請求項１２】
前記複数の操作タスク間の依存関係を決定する前に、
前記複数の操作タスクの各操作タスクに対応するコンテキストを決定することであって、前記操作タスクに対応するコンテキストは、抽象リソースおよび情報フローを含むことをさらに含み、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクの各操作タスクに対応する前記コンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることを含むことを特徴とする、
請求項１ないし１１のいずれか一項に記載のタスクスケジューリング方法。
【請求項１３】
前記情報フローは、統合コンピューティングデバイスアーキテクチャ（ＣＵＤＡ）情報フローおよび／またはホスト情報フローを含むことを特徴とする、
請求項１２に記載のタスクスケジューリング方法。
【請求項１４】
前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクのうちの少なくとも２つの操作タスク間に依存関係がなく、かつ前記少なくとも２つの操作タスクが異なる抽象リソースに対応する場合、前記少なくとも２つの操作タスクを並行してスケジューリングすることを含むことを特徴とする、
請求項１２または１３に記載のタスクスケジューリング方法。
【請求項１５】
前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクのうちの第３操作タスクと第４操作タスクとの間に依存関係があり、かつ前記第３操作タスクおよび第４操作タスクに対応する情報フローが両方ともＣＵＤＡ情報フローである場合、第１同期インターフェースを呼び出して、前記第３操作タスクと前記第４操作タスクを同期することを含むことを特徴とする、
請求項１２ないし１４のいずれか一項に記載のタスクスケジューリング方法。
【請求項１６】
前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクのうちの第３操作タスクと第４操作タスクとの間に依存関係があり、かつ前記第３操作タスクおよび前記第４操作タスクの少なくとも１つの操作タスクに対応する情報フローがホスト情報フローである場合、第２同期インターフェースを呼び出して、前記第３操作タスクと前記第４操作タスクを同期することを含むことを特徴とする、
請求項１２ないし１５のいずれか一項に記載のタスクスケジューリング方法。
【請求項１７】
タスクスケジューリング装置であって、
操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定するように構成される依存関係決定モジュールと、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングするように構成されるスケジューリングモジュールと、を備えることを特徴とする、前記タスクスケジューリング装置。
【請求項１８】
前記操作タスクに対応するオペランドは、読み取りオペランドおよび／または書き込みオペランドを含むことを特徴とする、
請求項１７に記載のタスクスケジューリング装置。
【請求項１９】
前記依存関係決定モジュールは、
第２操作タスクが第１操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または前記第２操作タスクが前記第１操作タスクのオペランドに対する書き込み操作を含む場合、前記第２操作タスクが前記第１操作タスクに依存すると決定するように構成される第１決定サブモジュールを備え、
前記第１操作タスクおよび前記第２操作タスクは、前記操作タスクキュー内の異なる操作タスクであることを特徴とする、
請求項１７または１８に記載のタスクスケジューリング装置。
【請求項２０】
前記依存関係決定モジュールは、
第２操作タスクが第１操作タスクの読み取りオペランドに対する読み取り操作を含む場合、前記第１操作タスクと前記第２操作タスクとの間に依存関係がないと決定するように構成される第２決定サブモジュールをさらに備えることを特徴とする、
請求項１７ないし１９のいずれか一項に記載のタスクスケジューリング装置。
【請求項２１】
前記スケジューリングモジュールは、
前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定するように構成されるスケジューリング順序決定サブモジュールと、
前記操作タスクキュー内の現在の操作タスクにメモリを割り当てるように構成される第１実行サブモジュールと、
前記メモリの割り当てが完了した後、前記現在の操作タスクを前記現在の操作タスクに対応するコンテキストにスケジューリングして実行し、前記スケジューリング順序に応じて、前記現在の操作タスクの次の操作タスクに対するメモリの割り当てを実行するように構成される第２実行サブモジュールと、を備えることを特徴とする、
請求項１８ないし２０のいずれか一項に記載のタスクスケジューリング装置。
【請求項２２】
前記スケジューリング順序決定サブモジュールは、
前記複数の操作タスクのうちの第１操作タスクと、前記複数の操作タスクのうちの第２操作タスクとの間に依存関係がない場合、前記第１操作タスクと前記第２操作タスクを並行して呼び出すと決定するように構成される第１決定ユニット、および／または
前記第２操作タスクが前記第１操作タスクに依存する場合、前記第１操作タスクの後に前記第２操作タスクをスケジューリングすると決定するように構成される第２決定ユニットを備えることを特徴とする、
請求項２１に記載のタスクスケジューリング装置。
【請求項２３】
前記依存関係決定モジュールは、
前記複数の操作タスクに含まれるＭ個の通信操作タスクに対して融合処理を実行して、少なくとも１つの併合通信操作タスクを取得するように構成される融合サブモジュールであって、各併合通信操作タスクは、前記Ｍ個の通信操作タスクのうちの少なくとも１つの通信操作タスクを含み、Ｍは、１より大きいか等しい整数である融合サブモジュールと、
前記少なくとも１つの併合通信操作タスクに対応するオペランドおよび前記複数の操作タスクのうちの少なくとも１つの非通信操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定するように構成される第３決定サブモジュールと、を備えることを特徴とする、
請求項１７ないし２２のいずれか一項に記載のタスクスケジューリング装置。
【請求項２４】
前記併合通信操作タスクに対応するオペランドは、
前記併合通信操作タスクに含まれる少なくとも１つの通信操作タスクに対応する読み取りオペランドのセット、および／または前記併合通信操作タスクに含まれる少なくとも１つの通信操作タスクに対応する書き込みオペランドのセットを含むことを特徴とする、
請求項２３に記載のタスクスケジューリング装置。
【請求項２５】
前記操作タスクキューは、第１操作タスクキューおよび第２操作タスクキューを含み、前記第１操作タスクキューは、前記複数の操作タスクのうちの通信操作タスクを含み、前記第２操作タスクキューは、前記複数の操作タスクのうちの非通信操作タスクを含み、
前記第１操作タスクキューおよび前記第２操作タスクキューに含まれる操作タスクは、それぞれの操作タスクキュー内の前記複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列されることを特徴とする、
請求項１７ないし２４のいずれか一項に記載のタスクスケジューリング装置。
【請求項２６】
前記タスクスケジューリング装置は、
前記第１操作タスクキューと前記第２操作タスクキューとの間の依存情報を記録するように構成される記録モジュールであって、
前記第１操作タスクキュー内の操作タスクが前記第２操作タスクキュー内の少なくとも１つの操作タスクに依存する場合、または前記第２操作タスクキュー内の操作タスクが前記第１操作タスクキュー内の少なくとも１つの操作タスクに依存する場合、前記依存情報は、前記少なくとも１つの操作タスクのうちの最後の操作タスクの情報を含む記録モジュールをさらに備え、
前記スケジューリングモジュールは、
前記第１操作タスクキューと前記第２操作タスクキューとの間の依存情報に基づいて、前記第１操作タスクキューおよび前記第２操作タスクキュー内の操作タスクをスケジューリングするように構成される第１スケジューリングサブモジュールを備えることを特徴とする、
請求項２５に記載のタスクスケジューリング装置。
【請求項２７】
前記タスクスケジューリング装置は、
メモリ回収操作タスクに対応する優先度を最高に設定するように構成される優先度設定モジュールであって、前記第２操作タスクキューは、前記操作タスクキュー内の前記メモリ回収操作タスク以外の前記非通信操作タスクを含む優先度設定モジュールをさらに備えることを特徴とする、
請求項２５または２６に記載のタスクスケジューリング装置。
【請求項２８】
前記タスクスケジューリング装置は、
前記複数の操作タスクの各操作タスクに対応するコンテキストを決定するように構成されるコンテキスト決定モジュールであって、前記操作タスクに対応するコンテキストは、抽象リソースおよび情報フローを含むコンテキスト決定モジュールをさらに備え、
前記スケジューリングモジュールは、
前記複数の操作タスクの各操作タスクに対応する前記コンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングするように構成される第２スケジューリングサブモジュールを備える、
請求項１７ないし２７のいずれか一項に記載のタスクスケジューリング装置。
【請求項２９】
前記情報フローは、統合コンピューティングデバイスアーキテクチャ（ＣＵＤＡ）情報フローおよび／またはホスト情報フローを含むことを特徴とする、
請求項２８に記載のタスクスケジューリング装置。
【請求項３０】
前記第２スケジューリングサブモジュールは、
前記複数の操作タスクのうちの少なくとも２つの操作タスク間に依存関係がなく、かつ前記少なくとも２つの操作タスクが異なる抽象リソースに対応する場合、前記少なくとも２つの操作タスクを並行してスケジューリングするように構成される第１スケジューリングユニットを備えることを特徴とする、
請求項２８または２９に記載のタスクスケジューリング装置。
【請求項３１】
前記第２スケジューリングサブモジュールは、
前記複数の操作タスクのうちの第３操作タスクと第４操作タスクとの間に依存関係があり、かつ前記第３操作タスクおよび第４操作タスクに対応する情報フローが両方ともＣＵＤＡ情報フローである場合、第１同期インターフェースを呼び出して、前記第３操作タスクと前記第４操作タスクを同期するように構成される第２スケジューリングユニットを備えることを特徴とする、
請求項２８ないし３０のいずれか一項に記載のタスクスケジューリング装置。
【請求項３２】
前記第２スケジューリングサブモジュールは、
前記複数の操作タスクのうちの第３操作タスクと第４操作タスクとの間に依存関係があり、かつ前記第３操作タスクおよび前記第４操作タスクの少なくとも１つの操作タスクに対応する情報フローがホスト情報フローである場合、第２同期インターフェースを呼び出して、前記第３操作タスクと前記第４操作タスクを同期するように構成される第３スケジューリングユニットを備えることを特徴とする、
請求項２８ないし３１のいずれか一項に記載のタスクスケジューリング装置。
【請求項３３】
コンピュータプログラムが記憶された、不揮発性コンピュータ可読記憶媒体であって、前記コンピュータプログラムが、請求項１ないし１６のいずれか一項に記載のタスクスケジューリング方法を実行するために使用されることを特徴とする、前記不揮発性コンピュータ可読記憶媒体。
【請求項３４】
タスクスケジューリング装置であって、
プロセッサと、
プロセッサ実行可能な命令を記憶するためのメモリと、を備え、
前記プロセッサは、前記メモリに記憶された前記実行可能な命令を呼び出して、請求項１ないし１６のいずれか一項に記載のタスクスケジューリング方法を実現するように構成されることを特徴とする、前記タスクスケジューリング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、深層学習分野に関し、特に、タスクスケジューリング方法および装置、記憶媒体に関する。
【背景技術】
【０００２】
深層学習モデルのトレーニングは、深層学習の重要なリンクである。トレーニングプロセスは非常に複雑で、使用されるハードウェアリソースも非常に多様である。
【０００３】
現在、各オープンソースフレームワークは、深層学習モデルのトレーニングプロセスを管理するための独自のスケジューリング方法を備え、ほとんどは、有向非巡回グラフ（Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ）を使用して操作タスク間の依存関係を記述することにより、トレーニングプロセスが正しく実行できるようにするが、このようなトレーニングプラットフォームのタスクスケジューリング方法は効率的ではない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、タスクスケジューリング方法および装置、並びにコンピュータ記憶媒体を提供する。
【課題を解決するための手段】
【０００５】
本開示の実施例の第１態様によれば、タスクスケジューリング方法を提供し、前記方法は、
操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと、前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることと、を含む。
【０００６】
例示的に、前記操作タスクに対応するオペランドは、読み取りオペランドおよび／または書き込みオペランドを含む。
【０００７】
例示的に、前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、第２操作タスクが第１操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または前記第２操作タスクが前記第１操作タスクのオペランドに対する書き込み操作を含む場合、前記第２操作タスクが前記第１操作タスクに依存すると決定することを含み、前記第１操作タスクおよび前記第２操作タスクは、前記操作タスクキュー内の異なる操作タスクである。
【０００８】
例示的に、前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、第２操作タスクが第１操作タスクの読み取りオペランドに対する読み取り操作を含む場合、前記第１操作タスクと前記第２操作タスクとの間に依存関係がないと決定することをさらに含む。
【０００９】
例示的に、前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定することと、前記操作タスクキュー内の現在の操作タスクにメモリを割り当てることと、前記メモリの割り当てが完了した後、前記現在の操作タスクを前記現在の操作タスクに対応するコンテキストにスケジューリングして実行することと、前記スケジューリング順序に応じて、前記現在の操作タスクの次の操作タスクに対するメモリの割り当てを実行することと、を含む。
【００１０】
例示的に、前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定することは、前記複数の操作タスクのうちの第１操作タスクと、前記複数の操作タスクのうちの第２操作タスクとの間に依存関係がない場合、前記第１操作タスクと前記第２操作タスクを並行して呼び出すと決定すること、および／または前記第２操作タスクが前記第１操作タスクに依存する場合、前記第１操作タスクの後に前記第２操作タスクをスケジューリングすると決定することを含む。
【００１１】
例示的に、前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、前記複数の操作タスクに含まれるＭ個の通信操作タスクに対して融合処理を実行して、少なくとも１つの併合通信操作タスクを取得することであって、各併合通信操作タスクは、前記Ｍ個の通信操作タスクのうちの少なくとも１つの通信操作タスクを含み、Ｍは、１より大きいか等しい整数であることと、前記少なくとも１つの併合通信操作タスクに対応するオペランドおよび前記複数の操作タスクのうちの少なくとも１つの非通信操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと、を含む。
【００１２】
例示的に、前記併合通信操作タスクに対応するオペランドは、前記併合通信操作タスクに含まれる少なくとも１つの通信操作タスクに対応する読み取りオペランドのセット、および／または前記併合通信操作タスクに含まれる少なくとも１つの通信操作タスクに対応する書き込みオペランドのセットを含む。
【００１３】
例示的に、前記操作タスクキューは、第１操作タスクキューおよび第２操作タスクキューを含み、前記第１操作タスクキューは、前記複数の操作タスクのうちの通信操作タスクを含み、前記第２操作タスクキューは、前記複数の操作タスクのうちの非通信操作タスクを含み、ここで、前記第１操作タスクキューおよび前記第２操作タスクキューに含まれる操作タスクは、前記複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列される。
【００１４】
例示的に、前記タスクスケジューリング方法は、前記第１操作タスクキューと前記第２操作タスクキューとの間の依存情報を記録することであって、前記第１操作タスクキュー内の操作タスクが前記第２操作タスクキュー内の少なくとも１つの操作タスクに依存する場合、または前記第２操作タスクキュー内の操作タスクが前記第１操作タスクキュー内の少なくとも１つの操作タスクに依存する場合、前記依存情報は、前記少なくとも１つの操作タスクのうちの最後の操作タスクの情報を含むことをさらに含み、前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、前記第１操作タスクキューと前記第２操作タスクキューとの間の依存情報に基づいて、前記第１操作タスクキューおよび前記第２操作タスクキュー内の操作タスクをスケジューリングすることを含む。
【００１５】
例示的に、前記タスクスケジューリング方法は、メモリ回収操作タスクに対応する優先度を最高に設定することであって、前記第２操作タスクキューは、前記操作タスクキュー内の前記メモリ回収操作タスク以外の前記非通信操作タスクを含むことをさらに含む。
【００１６】
例示的に、前記複数の操作タスク間の依存関係を決定する前に、前記タスクスケジューリング方法は、前記複数の操作タスクの各操作タスクに対応するコンテキストを決定することであって、前記操作タスクに対応するコンテキストは、抽象リソースおよび情報フローを含むことをさらに含み、前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、前記複数の操作タスクの各操作タスクに対応する前記コンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることを含む。
【００１７】
例示的に、前記情報フローは、統合コンピューティングデバイスアーキテクチャ（ＣＵＤＡ）情報フローおよび／またはホスト情報フローを含む。
【００１８】
例示的に、前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、前記複数の操作タスクのうちの少なくとも２つの操作タスク間に依存関係がなく、かつ前記少なくとも２つの操作タスクが異なる抽象リソースに対応する場合、前記少なくとも２つの操作タスクを並行してスケジューリングすることを含む。
【００１９】
例示的に、前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクのうちの第３操作タスクと第４操作タスクとの間に依存関係があり、かつ前記第３操作タスクおよび第４操作タスクに対応する情報フローが両方ともＣＵＤＡ情報フローである場合、第１同期インターフェースを呼び出して、前記第３操作タスクと前記第４操作タスクを同期することを含む。
【００２０】
例示的に、前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、前記複数の操作タスクのうちの第３操作タスクと第４操作タスクとの間に依存関係があり、かつ前記第３操作タスクおよび前記第４操作タスクの少なくとも１つの操作タスクに対応する情報フローがホスト情報フローである場合、第２同期インターフェースを呼び出して、前記第３操作タスクと前記第４操作タスクを同期することを含む。
【００２１】
本開示の実施例の第２態様によれば、タスクスケジューリング装置を提供し、前記装置は、
操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定するように構成される依存関係決定モジュールと、前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングするように構成されるスケジューリングモジュールと、を備える。
【００２２】
本開示の実施例の第３態様によれば、コンピュータプログラムが記憶された不揮発性コンピュータ可読記憶媒体を提供し、前記コンピュータプログラムは、上記の第１態様の任意の可能な実施形態におけるタスクスケジューリング方法を実行するために使用される。
【００２３】
本開示の実施例の第４態様によれば、タスクスケジューリング装置を提供し、前記装置は、
プロセッサと、プロセッサ実行可能な命令を記憶するためのメモリと、を備え、前記プロセッサは、前記メモリに記憶された実行可能な命令を呼び出して、上記の第１態様の任意の可能な実施形態におけるタスクスケジューリング方法を実現するように構成される。
【００２４】
本開示の実施例の第５態様によれば、コンピュータプログラムを提供し、前記コンピュータプログラムは、第１態様の任意の可能な実施形態における方法を実現するための命令を含む。
【発明の効果】
【００２５】
本開示の実施例によれば、操作タスクキュー内の複数の操作タスクのそれぞれに対応するオペランドに従って、複数の操作タスク間の依存関係を決定し、依存関係に基づいて、複数の操作タスクをスケジューリングすることにより、操作タスク間の依存関係を最小化し、操作タスクの効率的なスケジューリングを実現する。
【００２６】
上記の一般的な説明および後述する詳細な説明は、単なる例示および説明に過ぎず、本開示を限定するものではないことを理解されたい。
【図面の簡単な説明】
【００２７】
ここでの図面は、本明細書に組み込まれてその一部を構成し、本開示と一致する実施例を示し、明細書とともに本開示の原理を説明するために使用される。
【図１】本開示の一例示的な実施例によるスケジューリング方法のフローチャートである。
【図２】本開示の別の例示的な実施例によるタスクスケジューリング方法のフローチャートである。
【図３】本開示の更に別の例示的な実施例によるタスクスケジューリング方法のフローチャートである。
【図４】本開示の更に別の例示的な実施例によるタスクスケジューリング方法のフローチャートである。
【図５】本開示の一例示的な実施例による通信重複シナリオの概略図である。
【図６】本開示の更に別の例示的な実施例によるタスクスケジューリング方法のフローチャートである。
【図７】本開示の更に別の例示的な実施例によるタスクスケジューリング方法のフローチャートである。
【図８】本開示の一例示的な実施例によるハードウェアリソースコンテキストの概略図である。
【図９】本開示の一例示的な実施例による操作タスク分割の概略図である。
【図１０】本開示の一例示的な実施例によるコンテキストコレクションとスケジューリングシステムとの間のインターフェースの概略図である。
【図１１】本開示の更に別の例示的な実施例によるタスクスケジューリング方法のフローチャートである。
【図１２】本開示の一例示的な実施例によるタスクスケジューリング装置のブロック図である。
【図１３】本開示の別の例示的な実施例によるタスクスケジューリング装置のブロック図である。
【図１４】本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。
【図１５】本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。
【図１６】本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。
【図１７】本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。
【図１８】本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。
【図１９】本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。
【図２０】本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。
【図２１】本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。
【図２２】本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。
【図２３】本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。
【図２４】本開示の一例示的な実施例によるタスクスケジューリング装置の構造の概略図である。
【発明を実施するための形態】
【００２８】
ここで、例示的な実施例について詳細に説明し、その例を図面に示す。別の指示がない限り、以下の説明が図面に関する場合、異なる図面の同じ数字は同じまたは類似の要素を表す。以下の例示的な実施例で説明される実施形態は、本開示と一致するすべての実施形態を表すものではない。むしろ、それらは、添付された特許請求の範囲に詳述されるように、本開示の特定の態様と一致する装置および方法の例である。
【００２９】
本開示で使用される用語は、特定の実施形態を説明することのみを目的とし、本開示を限定するものではない。本開示および添付の特許請求の範囲で使用された単数形の「１つ」、「前記」、「上記」および「当該」は、文脈が他の意味を明確に示さない限り、複数形も含むものとする。また、本明細書で使用された「および／または」という用語は、１つまたは複数の関連する列挙されたプロジェクトのいずれかまたはすべての可能な組み合わせを指し、それらを含むことを理解されたい。
【００３０】
本開示では、「第１」、「第２」、「第３」などの用語を使用して様々な情報を説明することができるが、これらの情報はこれらの用語に限定されないことを理解されたい。これらの用語は、同じタイプの情報をお互いに区別するためにのみ使用される。例えば、本開示の範囲から逸脱することなく、第１の情報は第２の情報とも称し得、同様に、第２の情報は第１の情報とも称し得る。文脈に応じて、本明細書で使用される「…ば」という語は、「…場合」または「…時」または「…決定に応答して」と解釈することができる。
【００３１】
本開示の実施例は、ニューラルネットワークトレーニングプラットフォームなどの深層学習トレーニングプラットフォーム、またはハードウェアリソーススケジューリングに関し、かつスケジューリング効率を改善する必要がある他の装置またはプラットフォームで使用できるタスクスケジューリング方法を提供する。以下、深層学習トレーニングプラットフォームのみを例として説明する。
【００３２】
図１に示されるように、図１は、一例示的な実施例によるタスクスケジューリング方法のフローチャートであり、前記方法は以下のステップを含む。
【００３３】
ステップ１０１において、操作タスクキュー内の複数の操作タスクに対応するオペランド（ｏｐｅｒａｎｄ）に従って、複数の操作タスク間の依存関係を決定する。
【００３４】
ステップ１０２において、複数の操作タスク間の依存関係に基づいて、操作タスクキュー内の複数の操作タスクをスケジューリングする。
【００３５】
上記の実施例において、オペランドに基づいて操作タスク間の依存関係を決定することにより、操作タスク間の依存関係を最小化し、きめ細かく効率的なスケジューリングの目的を達成する。
【００３６】
本開示の実施例において、操作タスクに含まれるきめ細かいタスクのオペランドに基づいて、複数の操作タスク間の依存関係を決定する。ここで、オペランドは、操作タスクのデータオブジェクトである。
【００３７】
いくつかの実施例において、操作タスクに含まれる読み取り操作および／または書き込み操作のオペランドに基づいて、２つの操作タスク間に依存関係があるか否かを決定する。これに対して、オペランドは、読み取り操作に対応する読み取りオペランド、および／または書き込み操作に対応する書き込みオペランドを含む。
【００３８】
例示的に、操作タスクは、ゼロ、１つまたは複数の読み取り操作を含むことができ、ゼロ、１つまたは複数の書き込み操作を含むこともでき、これに対して、操作タスクは、１つまたは複数のオペランドに対応することができる。
【００３９】
ステップ１０１において、例示的に、２つの操作タスクのオペランドが同じであるか否かに基づいて、２つの操作タスク間に依存関係があるか否かを決定でき、例えば、２つの操作タスクのオペランドの間に交差がない場合、２つの操作タスク間に依存関係がないと決定する。いくつかの実施例において、以下の方式を使用して、オペランドに基づいて複数の操作タスク間の依存関係を決定することができる。
【００４０】
第１のケースにおいて、２つの操作タスク間に依存関係があると仮定する。
【００４１】
ここで、操作タスクキュー内の第２操作タスクが第１操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または第２操作タスクが第１操作タスクのオペランドに対する書き込み操作を含む場合、トレーニングプラットフォームは、第２操作タスクが第１操作タスクに依存すると決定できる。
【００４２】
例えば、操作タスクキュー内の操作タスクＢが操作タスクＡの書き込みオペランドを読み取る必要がある場合、操作タスクＢが操作タスクＡに依存すると決定できる。別の例では、操作タスクキュー内の操作タスクＢが、操作タスクＡ的書き込みオペランドおよび／または読み取りオペランドを書き込む必要がある場合、操作タスクＢが操作タスクＡに依存すると決定できる。
【００４３】
第２のケースにおいて、２つの操作タスク間に依存関係がないと仮定する。
【００４４】
ここで、第２操作タスクが第１操作タスクの読み取りオペランドに対する読み取り操作を含む場合、トレーニングプラットフォームは、第１操作タスクと第２操作タスクとの間に依存関係がないと決定できる。例えば、操作タスクキュー内の操作タスクＢが、操作タスクＡの読み取りオペランドを読み取る必要がある場合、操作タスクＡと操作タスクＢとの間に依存関係がないと決定できる。
【００４５】
第１操作タスクおよび第２操作タスクにそれぞれ対応するオペランド間に交差がない場合、トレーニングプラットフォームは、第１操作タスクと第２操作タスクとの間に依存関係がないと決定できる。例えば、操作タスクＡのオペランドがａとｂであり、操作タスクＢのオペランドがｃである場合、操作タスクＡは、操作タスクＢのオペランドに対して何の操作も行う必要がなく、操作タスクＢも、操作タスクＡのオペランドに対して何の操作も行う必要がないため、操作タスクＡと操作タスクＢとの間に依存関係がないと決定できる。
【００４６】
図２に示される例では、ステップ１０２は、以下のステップを含み得る。
【００４７】
ステップ１０２−１において、複数の操作タスク間の依存関係に基づいて、複数の操作タスクのスケジューリング順序を決定する。
【００４８】
上記のステップ１０１の方式に従って、複数の操作タスクのうちの第１操作タスクと複数の操作タスクのうちの第２操作タスクとの間に依存関係がないと決定した場合、トレーニングプラットフォームは、依存関係のない第１操作タスクと第２操作タスクを並行して呼び出すことができ、またはトレーニングプラットフォームは、第１操作タスクと第２操作タスクを任意の順序でスケジューリングすることができる。例えば、操作タスクＡと操作タスクＢとの間に依存関係がない場合、トレーニングプラットフォームは、操作タスクＡと操作タスクＢを並列して、または任意の順序でスケジューリングすることができる。
【００４９】
上記のステップ１０１の方式に従って、第２操作タスクが第１操作タスクに依存すると決定した場合、トレーニングプラットフォームは、第１操作タスクをスケジューリングした後に、第２操作タスクをスケジューリングする。例えば、操作タスクＢが操作タスクＡに依存する場合、トレーニングプラットフォームは、操作タスクＡをスケジューリングしてから、操作タスクＢスケジューリングする。
【００５０】
ステップ１０２−２において、操作タスクキュー内の現在の操作タスクにメモリを割り当てる。
【００５１】
トレーニングプラットフォームが、複数の操作タスク間の依存関係に基づいて、複数の操作タスクのスケジューリング順序を決定した後、前記スケジューリング順序に応じて、操作タスクキュー内の複数の操作タスクをスケジューリングすることができる。ここで、操作タスクキュー内の特定の操作タスクに対するスケジューリングは、前記操作タスクが必要とするメモリ空間を割り当てることと、前記操作タスクの演算子（ｏｐｅｒａｔｏｒ）を対応するコンテキスト（ｃｏｎｔｅｘｔ）にスケジューリングして実行することの２つのプロセスを含む。
【００５２】
ステップ１０２−３において、メモリの割り当てが完了した後、現在の操作タスクを現在の操作タスクに対応するコンテキストにスケジューリングして実行し、スケジューリング順序に応じて、現在の操作タスクの次の操作タスクに対するメモリの割り当てを実行する。
【００５３】
いくつかの実施例において、トレーニングプラットフォームは、現在の操作タスクにメモリを割り当てた後、現在の操作タスクの操作実行要求を現在の操作タスクに対応するコンテキストに送信することができる。このとき、現在の操作タスクの実行完了を待たずに、トレーニングプラットフォームは、スケジューリング順序に応じて現在の操作タスクの次の操作タスクに対するメモリの割り当てを始めることができる。つまり、現在の操作タスクのメモリの割り当てを完了した後、現在の操作タスクの実行と次の操作タスクのスケジューリングを同時実行することができる。次の操作タスクのスケジューリングは、現在の操作タスクのメモリの割り当ての完了を待つ必要があるが、現在の操作タスクの実行完了を待つ必要はない。いくつかの実施例において、特定の操作タスクにメモリを割り当てるときに、メモリ空間が不十分な場合、スケジューリング順序に応じて、前記操作タスクの前の少なくとも１つの操作タスクの実行完了を待つ必要があり、十分なメモリ空間を解放した後にのみ、現在の操作タスクに対するメモリ準備を実行し続けることができる。
【００５４】
上記の実施例において、依存関係のない操作タスクについて、潜在的なタスクの同時実行性を完全に発掘することができる。依存関係のある操作タスクの場合、先ず現在の操作タスクにメモリを割り当てることができ、現在の操作タスクの操作実行要求を送信した後、現在の操作タスクの実行完了を待たずに、現在の操作タスクの次の操作タスクに対するメモリの割り当ての実行を始めることができる。上記のプロセスにより、きめ細かく効率的なスケジューリングの目的を達成できる。
【００５５】
いくつかの実施例において、トレーニングプラットフォームの実際の応用において、異なる計算ノード間の通信効率の改善もトレーニング効率を改善するためのキーポイントであり、通信メッセージは、トレーニングプラットフォームのスケーラビリティに影響を与える。トレーニングプラットフォームでトレーニングする場合、通常、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、図形プロセッサ）を使用して計算する。ＮＶＩＤＩＡ（エヌビディア）ＧＰＵクラスタ環境の場合、通常、ＮＣＣＬ（Ｎｖｉｄｉａ  Ｃｏｌｌｅｃｔｉｖｅ  ｍｕｌｔｉ−ＧＰＵ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｌｉｂｒａｒｙ、エヌビディア集合マルチＧＰＵ通信ライブラリ）を使用して通信する。
【００５６】
ＮＣＣＬの実現メカニズムは、すべての通信ノードを端から端まで接続して単方向リングを形成して、データ断片をパイプライン伝送することであり、理想的には、通信時間はノード数の増加に伴って増加せず、データ量と帯域幅にのみ関連するが、データ数がノード数よりはるかに多い場合にのみ成立する。このような特性により、データ量が少ない場合はＮＣＣＬが非常に非効率になる。より多くの通信データ量を取得するために、通信操作タスクに対する融合操作を導入する。通信タスクは、複数の計算ノード間で実行されるタスクであり、非通信タスクは、単一の計算ノードで実行されるタスクである。
【００５７】
例示的に、図３に示される例では、ステップ１０１は、以下のステップを含み得る。
【００５８】
ステップ１０１−１において、複数の操作タスクに含まれるＭ個の通信操作タスクに対して融合処理を実行して、少なくとも１つの併合通信操作タスクを取得し、各併合通信操作タスクは、Ｍ個の通信操作タスクのうちの少なくとも１つの通信操作タスクを含む。
【００５９】
このステップでは、Ｍは、１より大きいか等しい整数であり得る。トレーニングプラットフォームは、複数の通信操作タスクを融合して、１つまたは複数の併合通信操作タスクを取得することができる。各併合通信操作タスクに含まれる通信操作タスクの数は、１つまたは複数であり得る。
【００６０】
ステップ１０１−２において、少なくとも１つの併合通信操作タスクに対応するオペランドおよび複数の操作タスクのうちの少なくとも１つの非通信操作タスクに対応するオペランドに従って、複数の操作タスク間の依存関係を決定する。
【００６１】
このステップでは、トレーニングプラットフォームは、併合通信操作タスクに含まれる少なくとも１つの通信操作タスクに対応する読み取りオペランドおよび／または書き込みオペランドをそれぞれ融合して、融合された読み取りオペランドのセットおよび／または書き込みオペランドのセットを取得することができ、これにより、読み取りオペランドのセットを併合通信タスクに対応する読み取りオペランドとして使用でき、書き込みオペランドのセットを併合通信タスクに対応する書き込みオペランドとして使用できる。例えば、各操作タスクは、独自の読み取りオペランドおよび書き込みオペランドを有し、少なくとも１つの通信操作タスクを融合することにより、複数の操作タスクの読み取りオペランドおよび／または書き込みオペランドに対してそれぞれ合併集合を取ることができる。
【００６２】
さらに、トレーニングプラットフォームは、併合通信操作タスクに対応するオペランドに従って、異なる併合通信操作タスク間の依存関係を決定でき、併合通信操作タスクに対応するオペランドおよび複数の操作タスクのうちの少なくとも１つの非通信操作タスクに対応するオペランドに従って、併合通信操作タスクと少なくとも１つの非通信操作タスクとの間の依存関係を決定できる。
【００６３】
依存関係を決定する方式は、上記の実施例における少なくとも２つの操作タスク間の依存関係を決定する方式と同じであり、ここでは繰り返さない。
【００６４】
上記の実施例において、トレーニングプラットフォームは、複数の通信操作タスクに対して融合処理して、少なくとも１つの併合通信操作タスクに併合した後、少なくとも１つの併合操作タスクに対応するオペランドおよび複数の操作タスクのうちの少なくとも１つの非通信操作タスクに対応するオペランドに従って、併合通信操作タスク間の依存関係、および／または少なくとも１つの併合通信操作タスクと少なくとも１つの非通信操作タスクとの間の依存関係を決定でき、これにより、より多くのデータ通信量を取得でき、トレーニングプラットフォームのより効率的な通信を実現することができる。
【００６５】
いくつかの実施例において、操作タスクキューを第１操作タスクキューおよび第２操作タスクキューに分割することができ、第１操作タスクキューは、複数の操作タスクのうちの通信操作タスクを含み、例示的に、第１操作タスクキューは、リモート通信キューである。第２操作タスクキューは、複数の操作タスクのうちの非通信操作タスクを含み、例示的に、第２操作タスクキューは、ローカルキューである。
【００６６】
ここで、リモート通信キューは、現在の計算ノードと他の計算ノード間のデータ交換のための操作タスクを含む。ローカルキューは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置）計算、ＧＰＵ計算、ＣＰＵからＧＰＵへのデータ伝送、ＧＰＵからＣＰＵへのデータ伝送など、現在の計算ノードで実行されるタスクを含む。
【００６７】
上記の２つのキューに含まれる操作タスクは、それぞれの操作タスクキュー内の複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列されるため、同一キュー内の操作タスクは、依存する操作タスクの情報を記録する必要なく、キューのファーストインファーストアウトメカニズムに従えばよい。
【００６８】
例えば、操作タスクＢが操作タスクＡに依存し、スケジューリング順序が、操作タスクＡをスケジューリングしてから、操作タスクＢをスケジューリングする順序であり、操作タスクＡと操作タスクＢが両方とも通信操作タスクである場合、第１操作タスクキュー内の操作タスクＡは、操作タスクＢの前に配列され、キューのファーストインファーストアウトメカニズムに基づいて、操作タスクＡをスケジューリングしてから、操作タスクＢをスケジューリングするため、操作タスクＢは、依存する操作タスクＡの情報を記録する必要がない。
【００６９】
同様に、操作タスクＡと操作タスクＢが両方とも非通信操作タスクであり、第２操作タスクキュー内でも、操作タスクＡが操作タスクＢの前に配列される場合、操作タスクＢは、操作タスクＡの情報を記録する必要がない。
【００７０】
上記のプロセスにより、通信操作タスクの実行効率を向上させることができ、例えば、操作タスクＥが操作タスクＡに依存し、操作タスクＡと操作タスクＥが両方とも通信操作タスクである場合、操作タスクキューでは、操作タスクＡ、操作タスクＢ、操作タスクＣ、操作タスクＤの順にスケジューリングした後にのみ、操作タスクＥをスケジューリングすることができる。操作タスクキューを第１操作タスクキューおよび第２操作タスクキューに分割する場合、第１操作タスクキューには、操作タスクＡおよび操作タスクＥが含まれ、第２操作タスクキューには、操作タスクＢ、操作タスクＣ、および操作タスクＤが含まれる。第１操作タスクキューでは、操作タスクＢ、操作タスクＣ、および操作タスクＤがすべて完了されるのを待たずに、操作タスクＡが実行された後に、操作タスクＥを実行することができる。
【００７１】
上記の実施例において、通信操作タスクと非通信操作タスクをそれぞれ第１操作タスクキューと第２操作タスクキューに格納することにより、効率的な通信タスクの重複を実現し、システムの同時実行効率を向上させる。
【００７２】
いくつかの実施例において、図４に示される例において、上記のタスクスケジューリング方法は、以下のステップをさらに含み得る。
【００７３】
ステップ１０３において、第１操作タスクキューと第２操作タスクキューとの間の依存情報を記録し、ここで、第１操作タスクキュー内の操作タスクが第２操作タスクキュー内の１つまたは複数の操作タスクに依存する場合、依存情報は、１つまたは複数の操作タスクのうちの最後の操作タスクの情報を含み、および／または第２操作タスクキュー内の操作タスクが第１操作タスクキュー内の少なくとも１つの操作タスクに依存する場合、依存情報は、少なくとも１つの操作タスクのうちの最後の操作タスクの情報を含む。
【００７４】
図５に示されるように、このステップでは、異なる操作タスクキュー内の操作タスク間に依存関係がある場合、トレーニングプラットフォームは、２つの操作タスクキュー互いに依存する最後の操作タスクの情報を記録することができる。例えば、第１操作タスクキュー内の操作タスクＡが第２操作タスクキュー内の操作タスクＢと操作タスクＣに依存し、操作タスクＣが操作タスクＢに依存する場合、操作タスクＣに対する操作タスクＡの依存関係のみを記録すればよい。
【００７５】
さらに、ステップ１０２は、第１操作タスクキューと第２操作タスクキューとの間の依存情報に基づいて、第１操作タスクキューおよび第２操作タスクキュー内の操作タスクをスケジューリングすることを含み得る。
【００７６】
上記の実施例において、２つの操作タスクキューの互いに依存する最後の操作タスクの情報を記録することにより、第１操作タスクキュー内の通信操作タスクの実行効率を向上させることができ、すべての非通信操作タスクの完了を待たず、効率的な通信タスクの重複の目的を達成する。
【００７７】
いくつかの実施例において、動的スケジューリングの技術案では、メモリ管理は、複雑で重要な課題であり、適切かつ時間内にメモリ回収を実行できない場合、ターゲット操作タスクをできるだけ早めにスケジューリングすることができないか、または計算可能なサンプル数の削減と同等である。この問題を解決するために、本開示の実施例は、メモリ回収操作タスクに対応する優先度を最高に設定することを提案する。
【００７８】
図６に示されるように、図６は、上記の図４に示される実施例に基づく別のタスクスケジューリング方法のフローチャートであり、前記タスクスケジューリング方法は、以下のステップをさらに含み得る。
【００７９】
ステップ１０４において、メモリ回収操作タスクに対応する優先度を最高に設定し、第２操作タスクキューは、操作タスクキュー内のメモリ回収操作タスク以外の非通信操作タスクを含む。
【００８０】
このステップでは、特定の操作タスクが対応するコンテキストにスケジューリングされた後、トレーニングプラットフォームは、前記操作タスクを、前記操作タスクが格納されていたタスクキューから削除するに加えて、前記操作タスクに対応するメモリ回収操作セットを削除することもできる。つまり、特定のターゲット操作タスクが対応するコンテキストにスケジューリングされた後、トレーニングプラットフォームは、前記ターゲット操作タスクによって占有されたメモリを回収する操作を事前に設定することができ、これにより、ターゲット操作タスクが完了した後、占有されたメモリをすばやく回収することができる。
【００８１】
このステップに記載のメモリ回収操作は、当該メモリを再割り当て可能なメモリとしてマークし、まだ実行中の操作タスクは、引き続き当該メモリを使用できるという論理操作である。本開示の実施例において、再割り当てされたメモリで実行される操作タスクが、必ずメモリ回収の前の操作タスクの後に配置されるため、ストリーム（ｓｔｒｅａｍ）上の計算順序により、２つの操作タスクが競合しないことを保証する。
【００８２】
本開示の実施例において、例示的に、メモリ回収操作は、他のターゲット操作タスクのように第１操作タスクキューまたは第２操作タスクキューに格納されず、追加のマップ（ｍａｐ）データ構造に格納される。前記データ構造では、キーワード（ｋｅｙ）は、依存される非メモリ回收操作であり、つまり、依存されるのは、対応するターゲット操作タスクであり、前記メモリ回收操作は、値（ｖａｌｕｅ）が指向するベクトル（ｖｅｃｔｏｒ）に格納される。
【００８３】
上記の実施例において、メモリ回収操作タスクに対応する優先度を最高に設定し、かつ独立してメモリ回収操作を格納することにより、メモリリソースの適時なクリーンアップを確保し、トレーニングプラットフォームのメモリ回収の効率を向上させる。
【００８４】
いくつかの実施例において、図７に示される例において、上記のタスクスケジューリング方法は、以下のステップをさらに含み得る。
【００８５】
ステップ１００において、複数の操作タスクの各操作タスクに対応するコンテキストを決定し、操作タスクに対応するコンテキストは、抽象リソースおよび情報フローを含む。
【００８６】
本開示のいくつかの実施例において、トレーニングプラットフォームは、システムのハードウェアリソースを抽象化し、各ハードウェアリソースに対して統一の論理管理とインターフェイスを提供でき、これにより、ＧＰＵ計算リソース、ＰＣＩＥ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ、周辺コンポーネント相互接続エクスプレス）アップリンク伝送リソース、ＰＣＩＥダウンリンク伝送リソース、ＩＢ（ＩｎｆｉｎｉＢａｎｄ、インフィニバンド）ネットワークリソース、およびＣＰＵ計算リソースなどの抽象リソースを取得することができる。
【００８７】
上記の抽象リソースを取得する上で、各抽象リソースの操作タスクキューをさらにカプセル化することができる。ここで、ＧＰＵ計算リソース、ＰＣＩＥアップリンク伝送リソース、ＰＣＩＥダウンリンク伝送リソース、およびＩＢネットワークリソースに対応する操作タスクは、本質的に非同期ＣＵＤＡ  Ｓｔｒｅａｍ（情報フロー）のカプセル化であるため、ＧＰＵ計算リソース、ＰＣＩＥアップリンク伝送リソース、ＰＣＩＥダウンリンク伝送リソース、およびＩＢネットワークリソースに対応する情報フローは、ＣＵＤＡ（Ｃｏｍｐｕｔｅ  Ｕｎｉｆｉｅｄ  Ｄｅｖｉｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ）情報フローであり得る。ＣＰＵ計算リソースに対応する情報フローは、ホスト（Ｈｏｓｔ）Ｓｔｒｅａｍであり得る。
【００８８】
図８に示されるように、操作タスクのコンテキストは、抽象リソースおよび対応する情報フローを含む。
【００８９】
トレーニングプラットフォームは、各ハードウェアリソースに対応するコンテキストに従って、操作タスクキュー内の複数の操作タスクを各抽象リソースに１対１で対応する操作タスクに分割することができる。
【００９０】
図９に示されるように、操作タスクライブラリ９００としては、複数の操作タスクを使用することができ、内蔵操作タスクおよび拡張可能な操作タスクに分けることができる。ここで、内蔵操作タスク９１０は、アップリンク伝送９１３、ダウンリンク伝送９１２、メモリ回収９１１などのシステム内蔵機能を実現することができる。拡張可能な操作タスクは、必要に応じてトレーニングプラットフォームのユーザによって追加されることができ、例示的に、計算操作タスク９２０と通信操作タスク９３０にさらに分けることができる。計算操作タスク９２０は、さらに、ＣＰＵ計算操作タスク９２１とＧＰＵ計算操作タスク９２２に分けることができる。
【００９１】
分割後の各操作タスクは、１つの対応するコンテキストに対応する。これに対して、上記のステップ１０２は、複数の操作タスクの各操作タスクに対応するコンテキストおよび複数の操作タスク間の依存関係に基づいて、操作タスクキュー内の複数の操作タスクをスケジューリングすることを含む。
【００９２】
つまり、トレーニングプラットフォームは、各操作タスクに対応するコンテキストおよび複数の操作タスク間の依存関係に基づいて、複数の操作タスクをスケジューリングすることができる。具体的な実現プロセスは、以下のとおりである。
【００９３】
第１のケースにおいて、２つの操作タスク間に依存関係がないと仮定する。
【００９４】
トレーニングプラットフォームは、複数の操作タスクのうちの２つの操作タスク間に依存関係がなく、かつこの２つの操作タスクが異なる抽象リソースに対応する場合、この２つの操作タスクを並行してスケジューリングすることができる。
【００９５】
第２のケースにおいて、２つの操作タスク間に依存関係があると仮定する。
【００９６】
第４操作タスクが第３操作タスクに依存すると仮定すると、トレーニングプラットフォームは、第３操作タスクと第４操作タスクに対応する情報フローを決定する必要があり、第３操作タスクと第４操作タスクに対応する情報フローに基づいて、第３操作タスクと第４操作タスクの同期インターフェースを決定する。
【００９７】
いくつかの実施例において、第３操作タスクと第４操作タスクに対応する情報フローが両方ともＣＵＤＡ情報フローである場合、トレーニングプラットフォームは、第１同期インターフェースを呼び出して、第３操作タスクと第４操作タスクを同期することができる。例示的に、第１同期インターフェースは、ｃｕｄａＳｔｒｅａｍＷａｉｔＥｖｅｎｔ（）インターフェースであり得る。
【００９８】
本開示の実施例において、ＣＵＤＡ  Ｅｖｅｎｔ（イベント）によって操作タスクキュー内の操作タスクに対して状態検査、および完了待ちなどの操作を実行することができる。ＣＵＤＡ  Ｅｖｅｎｔに基づいて、きめ細かく軽量の暗黙的な同期方式を提供する。トレーニングプラットフォームが上記の操作タスクの任意の２つの操作タスク間に依存関係があることを検出し、かつ対応する情報フローが両方ともＣＵＤＡ  Ｓｔｒｅａｍである場合、トレーニングプラットフォームは、第１同期インターフェースを呼び出すことができる。
【００９９】
例えば、第１同期インターフェースを呼び出して、第３操作タスクに対するスケジューリングを実行したか否かなど、第３操作タスクの現在の状態を決定することにより、第３操作タスクと第４操作タスクを同期させる。
【０１００】
ここでの同期は、依存関係のある２つの操作タスクの計算結果の正確さを保証するためである。例えば、第４操作タスクが第３操作タスクに依存すると仮定すると、第３操作タスクと第４操作タスクを同期させる目的は、第４操作タスクに第３操作タスクの実行を待たせてから開始することである。
【０１０１】
いくつかの実施例において、第３操作タスクおよび第４操作タスクの少なくとも１つの操作タスクに対応する情報フローがホスト情報フローである場合、第２同期インターフェースを呼び出して、第３操作タスクと第４操作タスクを同期することができる。例示的に、第２同期インターフェースは、ｃｕｄａＳｔｒｅａｍＳｙｎｃｈｒｏｎｉｚｅ（）インターフェースであり得る。
【０１０２】
いくつかの実施例において、第３操作タスクと第４操作タスクに対応する情報フローが両方ともホスト情報フローでない場合、第１同期インターフェースを呼び出して、第３操作タスクと第４操作タスクを同期することができる。
【０１０３】
上記の実施例において、トレーニングプラットフォームが第１同期インターフェースを呼び出すときに生成される遅延およびオーバーヘッドは、第２同期インターフェースを呼び出すときの遅延およびオーバーヘッドより小さいため、より効率的なハードウェアシステムの利用を実現することができる。
【０１０４】
いくつかの実施例において、図１０に示されるように、ハードウェアリソースコンテキストとトレーニングプラットフォームのスケジューリングシステムとの間に第１インターフェースおよび第２インターフェースがあり得る。第１インターフェースは、スケジューリングシステムが指定されたコンテキストにスケジューリングする必要がある操作タスクを通知するために使用され、例示的に、第１インターフェースは、ｓｃｈｅｄｕｌｅ（）インターフェースであり得る。第２インターフェースは、スケジューリングシステムが任意のコンテキストを同期するために使用され、例示的に、第２インターフェースは、ｓｙｎｃｈｒｏｎｉｚｅ（）インターフェースであり得る。
【０１０５】
上記の実施例において、ハードウェアリソースコンテキストとスケジューリングシステムとの間に異なるインターフェースを提供することにより、ハードウェアリソースの利用率をさらに向上させる。
【０１０６】
いくつかの実施例において、図１１に示される例において、タスクスケジューリング方法は、以下のステップを含み得る。
【０１０７】
ステップ２０１において、操作タスクキュー内の複数の操作タスクの各操作タスクに対応するコンテキストを取得する。
【０１０８】
ステップ２０２において、複数の操作タスクに含まれる複数の通信操作タスクに対して融合処理を実行して、少なくとも１つの併合通信操作タスクを取得する。
【０１０９】
ステップ２０３において、少なくとも１つの併合通信操作タスクに対応するオペランドおよび複数の操作タスクのうちの少なくとも１つの非通信操作タスクに対応するオペランドに従って、複数の操作タスク間の依存関係を決定する。
【０１１０】
複数の操作タスクのうちの第２操作タスクが第１操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または第２操作タスクが第１操作タスクのオペランドに対する書き込み操作を含む場合、第２操作タスクが第１操作タスクに依存すると決定する。
【０１１１】
第２操作タスクが第１操作タスクの読み取りオペランドに対する読み取り操作を含む場合、第１操作タスクと第２操作タスクとの間に依存関係がないと決定する。
【０１１２】
ステップ２０４において、前記少なくとも１つの併合通信操作タスクを第１操作タスクキューとして使用し、複数の操作タスクのうちの非通信操作タスクを第２操作タスクキューとして使用する。
【０１１３】
操作タスクキューは、第１操作タスクキューおよび第２操作タスクキューを含むことができ、ここで、第１操作タスクキューは、複数の操作タスクのうちの併合通信操作タスクを含み、第２操作タスクキューは、複数の操作タスクのうちの非通信操作タスクを含む。ここで、第１操作タスクキューおよび第２操作タスクキューに含まれる操作タスクは、複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列される。
【０１１４】
ステップ２０５において、第１操作タスクキューと第２操作タスクキューとの間の依存情報を記録する。
【０１１５】
ステップ２０６において、第１操作タスクキューと第２操作タスクキューとの間の依存情報に基づいて、第１操作タスクキューおよび第２操作タスクキュー内の操作タスクをスケジューリングする。
【０１１６】
ステップ２０７において、メモリ回収操作タスクに対応する優先度を最高に設定する。
【０１１７】
ここで、前記第２操作タスクキューは、操作タスクキュー内のメモリ回収操作タスク以外の非通信操作タスクを含む。
【０１１８】
ステップ２０７は、依存する操作タスクが対応するコンテキストにスケジューリングされた後に実行されてもよい。上記のすべてのステップの実行プロセスは、前の実施例による実行プロセスと一致しており、ここでは繰り返さない。
【０１１９】
上記の実施例において、各ハードウェアリソースに対して抽象化およびカプセル化する。この上で、各リソースのために非同期タスクキューを設計しており、キュー間の柔軟で効率的な暗黙の同期ポリシーを提供する。
【０１２０】
なお、複数の操作タスクに対応するオペランドに基づいて、複数の操作タスク間の依存関係を決定することにより、操作タスク間の依存関係を最小化し、効率的な依存関係分析とスケジューリングポリシーを実現する。非依存操作間のタスクの同時実行性を完全に発掘し、ハードウェアリソースの利用率を向上させる。暗黙的な同期により、依存関係のある操作間の依存遅延を低減する。本開示の実施例は、効率的な通信融合および通信重複の解決策を提供する。通信融合により通信操作自体の効率を向上させ、通信重複によりトレーニングプロセスの全体的な効率を向上させ、融合および重複プロセスで導入される依存関係融合と、マルチタスクキューが相互依存するという課題を解決する。メモリ回収操作が最も優先度の高い操作として定義されることにより、メモリリソースの適時なクリーンアップを確保し、効率的なメモリ回収の目的を達成する。
【０１２１】
上記した方法の実施例に対応して、本開示はまた、装置の実施例を提供する。
【０１２２】
図１２に示されるように、図１２は、本開示の一例示的な実施例によるタスクスケジューリング装置のブロック図であり、前記装置は、依存関係決定モジュール３１０と、スケジューリングモジュール３２０とを備える。
【０１２３】
依存関係決定モジュール３１０は、操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、複数の操作タスク間の依存関係を決定するように構成される。
【０１２４】
スケジューリングモジュール３２０は、複数の操作タスク間の依存関係に基づいて、操作タスクキュー内の複数の操作タスクをスケジューリングするように構成される。
【０１２５】
例示的に、操作タスクに対応するオペランドは、読み取りオペランドおよび／または書き込みオペランドを含む。
【０１２６】
図１３に示されるように、図１３は、本開示の一例示的な実施例による別のタスクスケジューリング装置のブロック図であり、図１２に示される実施例に加えて、当該実施例による依存関係決定モジュール３１０は、第２操作タスクが第１操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または第２操作タスクが第１操作タスクのオペランドに対する書き込み操作を含む場合、第２操作タスクが第１操作タスクに依存すると決定するように構成される第１決定サブモジュール３１１であって、第１操作タスクおよび第２操作タスクは操作タスクキュー内の異なる操作タスクである第１決定サブモジュール３１１とを備える。
【０１２７】
図１４に示されるように、図１４は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図１３に示される実施例に加えて、当該実施例による依存関係決定モジュール３１０は、第１操作タスクが第２操作タスクの読み取りオペランドに対する読み取り操作を含む場合、第１操作タスクと第２操作タスクとの間に依存関係がないと決定するように構成される第２決定サブモジュール３１２をさらに備える。
【０１２８】
図１５に示されるように、図１５は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図１２に示される実施例に加えて、当該実施例によるスケジューリングモジュール３２０は、複数の操作タスク間の依存関係に基づいて、複数の操作タスクのスケジューリング順序を決定するように構成されるスケジューリング順序決定サブモジュール３２１と、操作タスクキュー内の現在の操作タスクにメモリを割り当てるように構成される第１実行サブモジュール３２２と、メモリの割り当てが完了した後、現在の操作タスクを現在の操作タスクに対応するコンテキストにスケジューリングして実行し、スケジューリング順序に応じて、現在の操作タスクの次の操作タスクに対するメモリの割り当てを実行するように構成される第２実行サブモジュール３２３と、を備える。
【０１２９】
図１６に示されるように、図１６は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図１５に示される実施例に加えて、当該実施例によるスケジューリング順序決定サブモジュール３２１は、複数の操作タスクのうちの第１操作タスクと複数の操作タスクのうちの第２操作タスクとの間に依存関係がない場合、第１操作タスクと第２操作タスクを並行して呼び出すと決定するように構成される第１決定ユニット３２１１、および／または第２操作タスクが第１操作タスクに依存する場合、第１操作タスクの後に第２操作タスクをスケジューリングすると決定するように構成される第２決定ユニット３２１２を備える。
【０１３０】
図１７に示されるように、図１７は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図１２に示される実施例に加えて、当該実施例による依存関係決定モジュール３１０は、複数の操作タスクに含まれるＭ個の通信操作タスクに対して融合処理を実行して、少なくとも１つの併合通信操作タスクを取得するように構成される融合サブモジュール３１３であって、各併合通信操作タスクは、Ｍ個の通信操作タスクのうちの少なくとも１つの通信操作タスクを含み、Ｍは、１より大きいか等しい整数である融合サブモジュール３１３と、少なくとも１つの併合通信操作タスクに対応するオペランドおよび複数の操作タスクのうちの少なくとも１つの非通信操作タスクに対応するオペランドに従って、複数の操作タスク間の依存関係を決定するように構成される第３決定サブモジュール３１４と、を備える。
【０１３１】
例示的に、併合通信操作タスクに対応するオペランドは、併合通信操作タスクに含まれる少なくとも１つの通信操作タスクに対応する読み取りオペランドのセット、および／または併合通信操作タスクに含まれる少なくとも１つの通信操作タスクに対応する書き込みオペランドのセットを含む。
【０１３２】
例示的に、操作タスクキューは、第１操作タスクキューおよび第２操作タスクキューを含み、第１操作タスクキューは、複数の操作タスクのうちの通信操作タスクを含み、第２操作タスクキューは、複数の操作タスクのうちの非通信操作タスクを含み、ここで、第１操作タスクキューおよび第２操作タスクキューに含まれる操作タスクは、それぞれの操作タスクキューにおける複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列される。
【０１３３】
図１８に示されるように、図１８は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図１２に示される実施例に加えて、当該実施例によるタスクスケジューリング装置は、前記第１操作タスクキューと前記第２操作タスクキューとの間の依存情報を記録するように構成される記録モジュール３３０であって、前記第１操作タスクキュー内の操作タスクが前記第２操作タスクキュー内の少なくとも１つの操作タスクに依存する場合、または前記第２操作タスクキュー内の操作タスクが前記第１操作タスクキュー内の少なくとも１つの操作タスクに依存する場合、前記依存情報は、前記少なくとも１つの操作タスクのうちの最後の操作タスクの情報を含む記録モジュール３３０をさらに備える。
【０１３４】
スケジューリングモジュール３２０は、前記第１操作タスクキューと前記第２操作タスクキューとの間の依存情報に基づいて、前記第１操作タスクキューおよび前記第２操作タスクキュー内の操作タスクをスケジューリングするように構成される第１スケジューリングサブモジュール３２４を備える。
【０１３５】
図１９に示されるように、図１９は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図１８に示される実施例に加えて、当該実施例によるタスクスケジューリング装置は、メモリ回収操作タスクに対応する優先度を最高に設定するように構成される優先度設定モジュール３４０であって、第２操作タスクキューは、操作タスクキュー内のメモリ回収操作タスク以外の非通信操作タスクを含む優先度設定モジュール３４０をさらに備える。
【０１３６】
図２０に示されるように、図２０は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図１９に示される実施例に加えて、当該実施例によるタスクスケジューリング装置は、複数の操作タスクの各操作タスクに対応するコンテキストを決定するように構成されるコンテキスト決定モジュール３５０であって、操作タスクに対応するコンテキストは、抽象リソースおよび情報フローを含むコンテキスト決定モジュール３５０をさらに備える。
【０１３７】
スケジューリングモジュール３２０は、複数の操作タスクの各操作タスクに対応するコンテキストおよび複数の操作タスク間の依存関係に基づいて、操作タスクキュー内の複数の操作タスクをスケジューリングするように構成される第２スケジューリングサブモジュール３２５を備える。
【０１３８】
例示的に、情報フローは、統合コンピューティングデバイスアーキテクチャ（ＣＵＤＡ）情報フローおよび／またはホスト情報フローを含む。
【０１３９】
図２１に示されるように、図２１は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図２０に示される実施例に加えて、当該実施例による第２スケジューリングサブモジュール３２５は、複数の操作タスクのうちの少なくとも２つの操作タスク間に依存関係がなく、かつ前記少なくとも２つの操作タスクが異なる抽象リソースに対応する場合、少なくとも２つの操作タスクを並行してスケジューリングするように構成される第１スケジューリングユニット３２５１を備える。
【０１４０】
図２２に示されるように、図２２は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図２０に示される実施例に加えて、当該実施例による第２スケジューリングサブモジュール３２５は、複数の操作タスクのうちの第３操作タスクと第４操作タスクとの間に依存関係があり、かつ第３操作タスクおよび第４操作タスクに対応する情報フローが両方ともＣＵＤＡ情報フローである場合、第１同期インターフェースを呼び出して、第３操作タスクと第４操作タスクを同期するように構成される第２スケジューリングユニット３２５２を備える。
【０１４１】
図２３に示されるように、図２３は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図２０に示される実施例に加えて、当該実施例によるスケジューリングサブモジュール３２５は、複数の操作タスクのうちの第３操作タスクと第４操作タスクとの間に依存関係があり、かつ第３操作タスクおよび第４操作タスクの少なくとも１つの操作タスクに対応する情報フローがホスト情報フローである場合、第２同期インターフェースを呼び出して、第３操作タスクと第４操作タスクを同期するように構成される第３スケジューリングユニット３２５３を備える。
【０１４２】
装置の実施例において、それらは基本的に方法の実施例に対応するので、関連する部分は方法の実施例の説明の部分を参照することができる。上記で説明された装置の実施例は例示的なものに過ぎず、ここで、前記分離部材として説明されたユニットは、物理的に分離されている場合とされていない場合があり、ユニットとして表示された部材は、物理ユニットである場合もそうでない場合もあり、１箇所に配置される場合もあれば、複数のネットワークユニットに分散される場合もある。実際の必要に応じて、その中の一部または全部モジュールを選択して本開示の技術案の目的を実現することができる。当業者は、創造的な努力なしに、理解して実施することができる。
【０１４３】
本開示の実施例は、コンピュータプログラムが記憶された不揮発性コンピュータ可読記憶媒体をさらに提供し、前記コンピュータプログラムは、上記の任意のタスクスケジューリング方法を実行するために使用される。
【０１４４】
本開示の実施例は、タスクスケジューリング装置をさらに提供し、前記装置は、プロセッサと、プロセッサによって実行可能な命令を記憶するためのメモリと、を備え、前記プロセッサは、前記メモリに記憶された実行可能な命令を呼び出して、上記の任意のタスクスケジューリング方法を実現するように構成される。
【０１４５】
図２４に示されるように、図２４は、一例示的な実施例によるタスクスケジューリング装置２４００の構造の概略図である。例えば、装置２４００は、タスクスケジューリング装置として提供されることができる。図２４を参照すると、装置２４００は、１つまたは複数のプロセッサを備える処理コンポーネント２４２２と、アプリケーションプログラムなど、処理コンポーネント２４２２によって実行可能な命令を記憶するための、メモリリソースを代表するメモリ２４３２と、を備える。メモリ２４３２に記憶されたアプリケーションプログラムは、それぞれが一命令セットに対応する１つまたは複数のモジュールを含み得る。また、処理コンポーネント２４２２は、命令を実行して上記のタスクスケジューリング方法を実行するように構成される。
【０１４６】
装置２４００は、装置２４００の電源管理を実行するように構成される１つの電源コンポーネント２４２６と、装置２４００をネットワークに接続するように構成される１つの有線または無線ネットワークインターフェース２４５０と、１つの入力／出力（Ｉ／Ｏ）インターフェース２４５８と、をさらに備えることができる。装置２４００は、メモリ２４３２に記憶されたＷｉｎｄｏｗｓ（登録商標）  ＳｅｒｖｅｒＴＭ、Ｍａｃ  ＯＳ  ＸＴＭ、Ｕｎｉｘ（登録商標）、Ｌｉｎｕｘ（登録商標）、ＦｒｅｅＢＳＤＴＭまたは類似したものなどの操作システムに基づいて操作されることができる。
【０１４７】
本開示の実施例は、上記の任意の可能な実施形態における方法を実現するための命令を含むコンピュータプログラムをさらに提供する。
【０１４８】
当業者は、明細書を考慮して、本明細書に開示された発明を実施した後に、本開示の他の実施形態を容易に想到し得るであろう。本開示は、本開示のあらゆる変形、応用または適応性変化を網羅することを意図し、これらの変形、応用または適応性変化は、本開示の普通の原理に準拠し、本開示によって開示されない本技術分野における公知知識または従来の技術的手段を含む。明細書と実施例は、例示としてのみ考慮され、本開示の真の範囲及び思想は添付の特許請求の範囲によって示される。
【０１４９】
上記は本開示の好ましい実施例に過ぎず、本開示を限定することを意図するものではなく、本開示の精神および原則内で行われるあらゆる修正、同等の置換、改善などは、本開示の保護範囲に含まれるべきである。
【図１】
2021520578.tif 000003
【図２】
2021520578.tif 000004
【図３】
2021520578.tif 000005
【図４】
2021520578.tif 000006
【図５】
2021520578.tif 000007
【図６】
2021520578.tif 000008
【図７】
2021520578.tif 000009
【図８】
2021520578.tif 000010
【図９】
2021520578.tif 000011
【図１０】
2021520578.tif 000012
【図１１】
2021520578.tif 000013
【図１２】
2021520578.tif 000014
【図１３】
2021520578.tif 000015
【図１４】
2021520578.tif 000016
【図１５】
2021520578.tif 000017
【図１６】
2021520578.tif 000018
【図１７】
2021520578.tif 000019
【図１８】
2021520578.tif 000020
【図１９】
2021520578.tif 000021
【図２０】
2021520578.tif 000022
【図２１】
2021520578.tif 000023
【図２２】
2021520578.tif 000024
【図２３】
2021520578.tif 000025
【図２４】
2021520578.tif 000026
【手続補正書】
【提出日】令和2年11月2日(2020.11.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
タスクスケジューリング方法であって、
操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることと、を含むことを特徴とする、前記タスクスケジューリング方法。
【請求項２】
前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、
第２操作タスクが第１操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または前記第２操作タスクが前記第１操作タスクのオペランドに対する書き込み操作を含む場合、前記第２操作タスクが前記第１操作タスクに依存すると決定することを含み、
前記第１操作タスクおよび前記第２操作タスクは、前記操作タスクキュー内の異なる操作タスクであることを特徴とする、
請求項１に記載のタスクスケジューリング方法。
【請求項３】
前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、
第２操作タスクが第１操作タスクの読み取りオペランドに対する読み取り操作を含む場合、前記第１操作タスクと前記第２操作タスクとの間に依存関係がないと決定することをさらに含むことを特徴とする、
請求項１または２に記載のタスクスケジューリング方法。
【請求項４】
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定することと、
前記操作タスクキュー内の現在の操作タスクにメモリを割り当てることと、
前記メモリの割り当てが完了した後、前記現在の操作タスクを前記現在の操作タスクに対応するコンテキストにスケジューリングして実行することと、
前記スケジューリング順序に応じて、前記現在の操作タスクの次の操作タスクに対するメモリの割り当てを実行することと、を含むことを特徴とする、
請求項１ないし３のいずれか一項に記載のタスクスケジューリング方法。
【請求項５】
前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定することは、
前記複数の操作タスクのうちの第１操作タスクと、前記複数の操作タスクのうちの第２操作タスクとの間に依存関係がない場合、前記第１操作タスクと前記第２操作タスクを並行して呼び出すと決定すること、および／または
前記第２操作タスクが前記第１操作タスクに依存する場合、前記第１操作タスクの後に前記第２操作タスクをスケジューリングすると決定することを含むことを特徴とする、
請求項４に記載のタスクスケジューリング方法。
【請求項６】
前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、
前記複数の操作タスクに含まれるＭ個の通信操作タスクに対して融合処理を実行して、少なくとも１つの併合通信操作タスクを取得することであって、各併合通信操作タスクは、前記Ｍ個の通信操作タスクのうちの少なくとも１つの通信操作タスクを含み、Ｍは、１より大きいか等しい整数であることと、
前記少なくとも１つの併合通信操作タスクに対応するオペランドおよび前記複数の操作タスクのうちの少なくとも１つの非通信操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと、を含むことを特徴とする、
請求項１ないし５のいずれか一項に記載のタスクスケジューリング方法。
【請求項７】
前記操作タスクキューは、第１操作タスクキューおよび第２操作タスクキューを含み、前記第１操作タスクキューは、前記複数の操作タスクのうちの通信操作タスクを含み、前記第２操作タスクキューは、前記複数の操作タスクのうちの非通信操作タスクを含み、
前記第１操作タスクキューおよび前記第２操作タスクキューに含まれる操作タスクは、前記複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列されることを特徴とする、
請求項１ないし６のいずれか一項に記載のタスクスケジューリング方法。
【請求項８】
前記第１操作タスクキューと前記第２操作タスクキューとの間の依存情報を記録することであって、
前記第１操作タスクキュー内の操作タスクが前記第２操作タスクキュー内の少なくとも１つの操作タスクに依存する場合、または前記第２操作タスクキュー内の操作タスクが前記第１操作タスクキュー内の少なくとも１つの操作タスクに依存する場合、前記依存情報は、前記少なくとも１つの操作タスクのうちの最後の操作タスクの情報を含むことをさらに含み、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記第１操作タスクキューと前記第２操作タスクキューとの間の依存情報に基づいて、前記第１操作タスクキューおよび前記第２操作タスクキュー内の操作タスクをスケジューリングすることを含むことを特徴とする、
請求項７に記載のタスクスケジューリング方法。
【請求項９】
メモリ回収操作タスクに対応する優先度を最高に設定することであって、前記第２操作タスクキューは、前記操作タスクキュー内の前記メモリ回収操作タスク以外の前記非通信操作タスクを含むことをさらに含むことを特徴とする、
請求項７または８に記載のタスクスケジューリング方法。
【請求項１０】
前記複数の操作タスク間の依存関係を決定する前に、
前記複数の操作タスクの各操作タスクに対応するコンテキストを決定することであって、前記操作タスクに対応するコンテキストは、抽象リソースおよび情報フローを含むことをさらに含み、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクの各操作タスクに対応する前記コンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることを含むことを特徴とする、
請求項１ないし９のいずれか一項に記載のタスクスケジューリング方法。
【請求項１１】
前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクのうちの少なくとも２つの操作タスク間に依存関係がなく、かつ前記少なくとも２つの操作タスクが異なる抽象リソースに対応する場合、前記少なくとも２つの操作タスクを並行してスケジューリングすることを含むことを特徴とする、
請求項１０に記載のタスクスケジューリング方法。
【請求項１２】
前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクのうちの第３操作タスクと第４操作タスクとの間に依存関係があり、かつ前記第３操作タスクおよび第４操作タスクに対応する情報フローが両方ともＣＵＤＡ情報フローである場合、第１同期インターフェースを呼び出して、前記第３操作タスクと前記第４操作タスクを同期することを含むことを特徴とする、
請求項１０または１１に記載のタスクスケジューリング方法。
【請求項１３】
タスクスケジューリング装置であって、
操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定するように構成される依存関係決定モジュールと、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングするように構成されるスケジューリングモジュールと、を備えることを特徴とする、前記タスクスケジューリング装置。
【請求項１４】
コンピュータプログラムが記憶された、不揮発性コンピュータ可読記憶媒体であって、前記コンピュータプログラムが、請求項１ないし１２のいずれか一項に記載のタスクスケジューリング方法を実行するために使用されることを特徴とする、前記不揮発性コンピュータ可読記憶媒体。
【請求項１５】
タスクスケジューリング装置であって、
プロセッサと、
プロセッサ実行可能な命令を記憶するためのメモリと、を備え、
前記プロセッサは、前記メモリに記憶された前記実行可能な命令を呼び出して、請求項１ないし１２のいずれか一項に記載のタスクスケジューリング方法を実現するように構成されることを特徴とする、前記タスクスケジューリング装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】変更
【補正の内容】
【００２４】
本開示の実施例の第５態様によれば、コンピュータプログラムを提供し、前記コンピュータプログラムは、第１態様の任意の可能な実施形態における方法を実現するための命令を含む。
例えば、本願は以下の項目を提供する。
（項目１）
タスクスケジューリング方法であって、
操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることと、を含むことを特徴とする、前記タスクスケジューリング方法。
（項目２）
前記操作タスクに対応するオペランドは、読み取りオペランドおよび／または書き込みオペランドを含むことを特徴とする、
項目１に記載のタスクスケジューリング方法。
（項目３）
前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、
第２操作タスクが第１操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または前記第２操作タスクが前記第１操作タスクのオペランドに対する書き込み操作を含む場合、前記第２操作タスクが前記第１操作タスクに依存すると決定することを含み、
前記第１操作タスクおよび前記第２操作タスクは、前記操作タスクキュー内の異なる操作タスクであることを特徴とする、
項目１または２に記載のタスクスケジューリング方法。
（項目４）
前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、
第２操作タスクが第１操作タスクの読み取りオペランドに対する読み取り操作を含む場合、前記第１操作タスクと前記第２操作タスクとの間に依存関係がないと決定することをさらに含むことを特徴とする、
項目１ないし３のいずれか一項に記載のタスクスケジューリング方法。
（項目５）
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定することと、
前記操作タスクキュー内の現在の操作タスクにメモリを割り当てることと、
前記メモリの割り当てが完了した後、前記現在の操作タスクを前記現在の操作タスクに対応するコンテキストにスケジューリングして実行することと、
前記スケジューリング順序に応じて、前記現在の操作タスクの次の操作タスクに対するメモリの割り当てを実行することと、を含むことを特徴とする、
項目１ないし４のいずれか一項に記載のタスクスケジューリング方法。
（項目６）
前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定することは、
前記複数の操作タスクのうちの第１操作タスクと、前記複数の操作タスクのうちの第２操作タスクとの間に依存関係がない場合、前記第１操作タスクと前記第２操作タスクを並行して呼び出すと決定すること、および／または
前記第２操作タスクが前記第１操作タスクに依存する場合、前記第１操作タスクの後に前記第２操作タスクをスケジューリングすると決定することを含むことを特徴とする、
項目５に記載のタスクスケジューリング方法。
（項目７）
前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、
前記複数の操作タスクに含まれるＭ個の通信操作タスクに対して融合処理を実行して、少なくとも１つの併合通信操作タスクを取得することであって、各併合通信操作タスクは、前記Ｍ個の通信操作タスクのうちの少なくとも１つの通信操作タスクを含み、Ｍは、１より大きいか等しい整数であることと、
前記少なくとも１つの併合通信操作タスクに対応するオペランドおよび前記複数の操作タスクのうちの少なくとも１つの非通信操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと、を含むことを特徴とする、
項目１ないし６のいずれか一項に記載のタスクスケジューリング方法。
（項目８）
前記併合通信操作タスクに対応するオペランドは、
前記併合通信操作タスクに含まれる少なくとも１つの通信操作タスクに対応する読み取りオペランドのセット、および／または前記併合通信操作タスクに含まれる少なくとも１つの通信操作タスクに対応する書き込みオペランドのセットを含むことを特徴とする、
項目７に記載のタスクスケジューリング方法。
（項目９）
前記操作タスクキューは、第１操作タスクキューおよび第２操作タスクキューを含み、前記第１操作タスクキューは、前記複数の操作タスクのうちの通信操作タスクを含み、前記第２操作タスクキューは、前記複数の操作タスクのうちの非通信操作タスクを含み、
前記第１操作タスクキューおよび前記第２操作タスクキューに含まれる操作タスクは、前記複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列されることを特徴とする、
項目１ないし８のいずれか一項に記載のタスクスケジューリング方法。
（項目１０）
前記第１操作タスクキューと前記第２操作タスクキューとの間の依存情報を記録することであって、
前記第１操作タスクキュー内の操作タスクが前記第２操作タスクキュー内の少なくとも１つの操作タスクに依存する場合、または前記第２操作タスクキュー内の操作タスクが前記第１操作タスクキュー内の少なくとも１つの操作タスクに依存する場合、前記依存情報は、前記少なくとも１つの操作タスクのうちの最後の操作タスクの情報を含むことをさらに含み、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記第１操作タスクキューと前記第２操作タスクキューとの間の依存情報に基づいて、前記第１操作タスクキューおよび前記第２操作タスクキュー内の操作タスクをスケジューリングすることを含むことを特徴とする、
項目９に記載のタスクスケジューリング方法。
（項目１１）
メモリ回収操作タスクに対応する優先度を最高に設定することであって、前記第２操作タスクキューは、前記操作タスクキュー内の前記メモリ回収操作タスク以外の前記非通信操作タスクを含むことをさらに含むことを特徴とする、
項目９または１０に記載のタスクスケジューリング方法。
（項目１２）
前記複数の操作タスク間の依存関係を決定する前に、
前記複数の操作タスクの各操作タスクに対応するコンテキストを決定することであって、前記操作タスクに対応するコンテキストは、抽象リソースおよび情報フローを含むことをさらに含み、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクの各操作タスクに対応する前記コンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることを含むことを特徴とする、
項目１ないし１１のいずれか一項に記載のタスクスケジューリング方法。
（項目１３）
前記情報フローは、統合コンピューティングデバイスアーキテクチャ（ＣＵＤＡ）情報フローおよび／またはホスト情報フローを含むことを特徴とする、
項目１２に記載のタスクスケジューリング方法。
（項目１４）
前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクのうちの少なくとも２つの操作タスク間に依存関係がなく、かつ前記少なくとも２つの操作タスクが異なる抽象リソースに対応する場合、前記少なくとも２つの操作タスクを並行してスケジューリングすることを含むことを特徴とする、
項目１２または１３に記載のタスクスケジューリング方法。
（項目１５）
前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクのうちの第３操作タスクと第４操作タスクとの間に依存関係があり、かつ前記第３操作タスクおよび第４操作タスクに対応する情報フローが両方ともＣＵＤＡ情報フローである場合、第１同期インターフェースを呼び出して、前記第３操作タスクと前記第４操作タスクを同期することを含むことを特徴とする、
項目１２ないし１４のいずれか一項に記載のタスクスケジューリング方法。
（項目１６）
前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクのうちの第３操作タスクと第４操作タスクとの間に依存関係があり、かつ前記第３操作タスクおよび前記第４操作タスクの少なくとも１つの操作タスクに対応する情報フローがホスト情報フローである場合、第２同期インターフェースを呼び出して、前記第３操作タスクと前記第４操作タスクを同期することを含むことを特徴とする、
項目１２ないし１５のいずれか一項に記載のタスクスケジューリング方法。
（項目１７）
タスクスケジューリング装置であって、
操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定するように構成される依存関係決定モジュールと、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングするように構成されるスケジューリングモジュールと、を備えることを特徴とする、前記タスクスケジューリング装置。
（項目１８）
前記操作タスクに対応するオペランドは、読み取りオペランドおよび／または書き込みオペランドを含むことを特徴とする、
項目１７に記載のタスクスケジューリング装置。
（項目１９）
前記依存関係決定モジュールは、
第２操作タスクが第１操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または前記第２操作タスクが前記第１操作タスクのオペランドに対する書き込み操作を含む場合、前記第２操作タスクが前記第１操作タスクに依存すると決定するように構成される第１決定サブモジュールを備え、
前記第１操作タスクおよび前記第２操作タスクは、前記操作タスクキュー内の異なる操作タスクであることを特徴とする、
項目１７または１８に記載のタスクスケジューリング装置。
（項目２０）
前記依存関係決定モジュールは、
第２操作タスクが第１操作タスクの読み取りオペランドに対する読み取り操作を含む場合、前記第１操作タスクと前記第２操作タスクとの間に依存関係がないと決定するように構成される第２決定サブモジュールをさらに備えることを特徴とする、
項目１７ないし１９のいずれか一項に記載のタスクスケジューリング装置。
（項目２１）
前記スケジューリングモジュールは、
前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定するように構成されるスケジューリング順序決定サブモジュールと、
前記操作タスクキュー内の現在の操作タスクにメモリを割り当てるように構成される第１実行サブモジュールと、
前記メモリの割り当てが完了した後、前記現在の操作タスクを前記現在の操作タスクに対応するコンテキストにスケジューリングして実行し、前記スケジューリング順序に応じて、前記現在の操作タスクの次の操作タスクに対するメモリの割り当てを実行するように構成される第２実行サブモジュールと、を備えることを特徴とする、
項目１８ないし２０のいずれか一項に記載のタスクスケジューリング装置。
（項目２２）
前記スケジューリング順序決定サブモジュールは、
前記複数の操作タスクのうちの第１操作タスクと、前記複数の操作タスクのうちの第２操作タスクとの間に依存関係がない場合、前記第１操作タスクと前記第２操作タスクを並行して呼び出すと決定するように構成される第１決定ユニット、および／または
前記第２操作タスクが前記第１操作タスクに依存する場合、前記第１操作タスクの後に前記第２操作タスクをスケジューリングすると決定するように構成される第２決定ユニットを備えることを特徴とする、
項目２１に記載のタスクスケジューリング装置。
（項目２３）
前記依存関係決定モジュールは、
前記複数の操作タスクに含まれるＭ個の通信操作タスクに対して融合処理を実行して、少なくとも１つの併合通信操作タスクを取得するように構成される融合サブモジュールであって、各併合通信操作タスクは、前記Ｍ個の通信操作タスクのうちの少なくとも１つの通信操作タスクを含み、Ｍは、１より大きいか等しい整数である融合サブモジュールと、
前記少なくとも１つの併合通信操作タスクに対応するオペランドおよび前記複数の操作タスクのうちの少なくとも１つの非通信操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定するように構成される第３決定サブモジュールと、を備えることを特徴とする、
項目１７ないし２２のいずれか一項に記載のタスクスケジューリング装置。
（項目２４）
前記併合通信操作タスクに対応するオペランドは、
前記併合通信操作タスクに含まれる少なくとも１つの通信操作タスクに対応する読み取りオペランドのセット、および／または前記併合通信操作タスクに含まれる少なくとも１つの通信操作タスクに対応する書き込みオペランドのセットを含むことを特徴とする、
項目２３に記載のタスクスケジューリング装置。
（項目２５）
前記操作タスクキューは、第１操作タスクキューおよび第２操作タスクキューを含み、前記第１操作タスクキューは、前記複数の操作タスクのうちの通信操作タスクを含み、前記第２操作タスクキューは、前記複数の操作タスクのうちの非通信操作タスクを含み、
前記第１操作タスクキューおよび前記第２操作タスクキューに含まれる操作タスクは、それぞれの操作タスクキュー内の前記複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列されることを特徴とする、
項目１７ないし２４のいずれか一項に記載のタスクスケジューリング装置。
（項目２６）
前記タスクスケジューリング装置は、
前記第１操作タスクキューと前記第２操作タスクキューとの間の依存情報を記録するように構成される記録モジュールであって、
前記第１操作タスクキュー内の操作タスクが前記第２操作タスクキュー内の少なくとも１つの操作タスクに依存する場合、または前記第２操作タスクキュー内の操作タスクが前記第１操作タスクキュー内の少なくとも１つの操作タスクに依存する場合、前記依存情報は、前記少なくとも１つの操作タスクのうちの最後の操作タスクの情報を含む記録モジュールをさらに備え、
前記スケジューリングモジュールは、
前記第１操作タスクキューと前記第２操作タスクキューとの間の依存情報に基づいて、前記第１操作タスクキューおよび前記第２操作タスクキュー内の操作タスクをスケジューリングするように構成される第１スケジューリングサブモジュールを備えることを特徴とする、
項目２５に記載のタスクスケジューリング装置。
（項目２７）
前記タスクスケジューリング装置は、
メモリ回収操作タスクに対応する優先度を最高に設定するように構成される優先度設定モジュールであって、前記第２操作タスクキューは、前記操作タスクキュー内の前記メモリ回収操作タスク以外の前記非通信操作タスクを含む優先度設定モジュールをさらに備えることを特徴とする、
項目２５または２６に記載のタスクスケジューリング装置。
（項目２８）
前記タスクスケジューリング装置は、
前記複数の操作タスクの各操作タスクに対応するコンテキストを決定するように構成されるコンテキスト決定モジュールであって、前記操作タスクに対応するコンテキストは、抽象リソースおよび情報フローを含むコンテキスト決定モジュールをさらに備え、
前記スケジューリングモジュールは、
前記複数の操作タスクの各操作タスクに対応する前記コンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングするように構成される第２スケジューリングサブモジュールを備える、
項目１７ないし２７のいずれか一項に記載のタスクスケジューリング装置。
（項目２９）
前記情報フローは、統合コンピューティングデバイスアーキテクチャ（ＣＵＤＡ）情報フローおよび／またはホスト情報フローを含むことを特徴とする、
項目２８に記載のタスクスケジューリング装置。
（項目３０）
前記第２スケジューリングサブモジュールは、
前記複数の操作タスクのうちの少なくとも２つの操作タスク間に依存関係がなく、かつ前記少なくとも２つの操作タスクが異なる抽象リソースに対応する場合、前記少なくとも２つの操作タスクを並行してスケジューリングするように構成される第１スケジューリングユニットを備えることを特徴とする、
項目２８または２９に記載のタスクスケジューリング装置。
（項目３１）
前記第２スケジューリングサブモジュールは、
前記複数の操作タスクのうちの第３操作タスクと第４操作タスクとの間に依存関係があり、かつ前記第３操作タスクおよび第４操作タスクに対応する情報フローが両方ともＣＵＤＡ情報フローである場合、第１同期インターフェースを呼び出して、前記第３操作タスクと前記第４操作タスクを同期するように構成される第２スケジューリングユニットを備えることを特徴とする、
項目２８ないし３０のいずれか一項に記載のタスクスケジューリング装置。
（項目３２）
前記第２スケジューリングサブモジュールは、
前記複数の操作タスクのうちの第３操作タスクと第４操作タスクとの間に依存関係があり、かつ前記第３操作タスクおよび前記第４操作タスクの少なくとも１つの操作タスクに対応する情報フローがホスト情報フローである場合、第２同期インターフェースを呼び出して、前記第３操作タスクと前記第４操作タスクを同期するように構成される第３スケジューリングユニットを備えることを特徴とする、
項目２８ないし３１のいずれか一項に記載のタスクスケジューリング装置。
（項目３３）
コンピュータプログラムが記憶された、不揮発性コンピュータ可読記憶媒体であって、前記コンピュータプログラムが、項目１ないし１６のいずれか一項に記載のタスクスケジューリング方法を実行するために使用されることを特徴とする、前記不揮発性コンピュータ可読記憶媒体。
（項目３４）
タスクスケジューリング装置であって、
プロセッサと、
プロセッサ実行可能な命令を記憶するためのメモリと、を備え、
前記プロセッサは、前記メモリに記憶された前記実行可能な命令を呼び出して、項目１ないし１６のいずれか一項に記載のタスクスケジューリング方法を実現するように構成されることを特徴とする、前記タスクスケジューリング装置。
【国際調査報告】
2021520578.tif 000027
2021520578.tif 000028
2021520578.tif 000029
2021520578.tif 000030