JP7050957B2 - タスクスケジューリング - Google Patents

タスクスケジューリング Download PDF

Info

Publication number
JP7050957B2
JP7050957B2 JP2020561765A JP2020561765A JP7050957B2 JP 7050957 B2 JP7050957 B2 JP 7050957B2 JP 2020561765 A JP2020561765 A JP 2020561765A JP 2020561765 A JP2020561765 A JP 2020561765A JP 7050957 B2 JP7050957 B2 JP 7050957B2
Authority
JP
Japan
Prior art keywords
task
tasks
operation task
dependency
scheduling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020561765A
Other languages
English (en)
Other versions
JP2021520578A (ja
Inventor
王迎瑞
李哲▲龍▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Sensetime Intelligent Technology Co Ltd
Original Assignee
Shanghai Sensetime Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Sensetime Intelligent Technology Co Ltd filed Critical Shanghai Sensetime Intelligent Technology Co Ltd
Publication of JP2021520578A publication Critical patent/JP2021520578A/ja
Application granted granted Critical
Publication of JP7050957B2 publication Critical patent/JP7050957B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)

Description

本開示は、深層学習分野に関し、特に、タスクスケジューリング方法および装置、記憶媒体に関する。
深層学習モデルのトレーニングは、深層学習の重要なリンクである。トレーニングプロセスは非常に複雑で、使用されるハードウェアリソースも非常に多様である。
現在、各オープンソースフレームワークは、深層学習モデルのトレーニングプロセスを管理するための独自のスケジューリング方法を備え、ほとんどは、有向非巡回グラフ(Directed Acyclic Graph)を使用して操作タスク間の依存関係を記述することにより、トレーニングプロセスが正しく実行できるようにするが、このようなトレーニングプラットフォームのタスクスケジューリング方法は効率的ではない。
本開示は、タスクスケジューリング方法および装置、並びにコンピュータ記憶媒体を提供する。
本開示の実施例の第1態様によれば、タスクスケジューリング方法を提供し、前記方法は、
操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと、前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることと、を含む。
例示的に、前記操作タスクに対応するオペランドは、読み取りオペランドおよび/または書き込みオペランドを含む。
例示的に、前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、第2操作タスクが第1操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または前記第2操作タスクが前記第1操作タスクのオペランドに対する書き込み操作を含む場合、前記第2操作タスクが前記第1操作タスクに依存すると決定することを含み、前記第1操作タスクおよび前記第2操作タスクは、前記操作タスクキュー内の異なる操作タスクである。
例示的に、前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、第2操作タスクが第1操作タスクの読み取りオペランドに対する読み取り操作を含む場合、前記第1操作タスクと前記第2操作タスクとの間に依存関係がないと決定することをさらに含む。
例示的に、前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定することと、前記操作タスクキュー内の現在の操作タスクにメモリを割り当てることと、前記メモリの割り当てが完了した後、前記現在の操作タスクを前記現在の操作タスクに対応するコンテキストにスケジューリングして実行することと、前記スケジューリング順序に応じて、前記現在の操作タスクの次の操作タスクに対するメモリの割り当てを実行することと、を含む。
例示的に、前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定することは、前記複数の操作タスクのうちの第1操作タスクと、前記複数の操作タスクのうちの第2操作タスクとの間に依存関係がない場合、前記第1操作タスクと前記第2操作タスクを並行して呼び出すと決定すること、および/または前記第2操作タスクが前記第1操作タスクに依存する場合、前記第1操作タスクの後に前記第2操作タスクをスケジューリングすると決定することを含む。
例示的に、前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、前記複数の操作タスクに含まれるM個の通信操作タスクに対して融合処理を実行して、少なくとも1つの併合通信操作タスクを取得することであって、各併合通信操作タスクは、前記M個の通信操作タスクのうちの少なくとも1つの通信操作タスクを含み、Mは、1より大きいか等しい整数であることと、前記少なくとも1つの併合通信操作タスクに対応するオペランドおよび前記複数の操作タスクのうちの少なくとも1つの非通信操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと、を含む。
例示的に、前記併合通信操作タスクに対応するオペランドは、前記併合通信操作タスクに含まれる少なくとも1つの通信操作タスクに対応する読み取りオペランドのセット、および/または前記併合通信操作タスクに含まれる少なくとも1つの通信操作タスクに対応する書き込みオペランドのセットを含む。
例示的に、前記操作タスクキューは、第1操作タスクキューおよび第2操作タスクキューを含み、前記第1操作タスクキューは、前記複数の操作タスクのうちの通信操作タスクを含み、前記第2操作タスクキューは、前記複数の操作タスクのうちの非通信操作タスクを含み、ここで、前記第1操作タスクキューおよび前記第2操作タスクキューに含まれる操作タスクは、前記複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列される。
例示的に、前記タスクスケジューリング方法は、前記第1操作タスクキューと前記第2操作タスクキューとの間の依存情報を記録することであって、前記第1操作タスクキュー内の操作タスクが前記第2操作タスクキュー内の少なくとも1つの操作タスクに依存する場合、または前記第2操作タスクキュー内の操作タスクが前記第1操作タスクキュー内の少なくとも1つの操作タスクに依存する場合、前記依存情報は、前記少なくとも1つの操作タスクのうちの最後の操作タスクの情報を含むことをさらに含み、前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、前記第1操作タスクキューと前記第2操作タスクキューとの間の依存情報に基づいて、前記第1操作タスクキューおよび前記第2操作タスクキュー内の操作タスクをスケジューリングすることを含む。
例示的に、前記タスクスケジューリング方法は、メモリ回収操作タスクに対応する優先度を最高に設定することであって、前記第2操作タスクキューは、前記操作タスクキュー内の前記メモリ回収操作タスク以外の前記非通信操作タスクを含むことをさらに含む。
例示的に、前記複数の操作タスク間の依存関係を決定する前に、前記タスクスケジューリング方法は、前記複数の操作タスクの各操作タスクに対応するコンテキストを決定することであって、前記操作タスクに対応するコンテキストは、抽象リソースおよび情報フローを含むことをさらに含み、前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、前記複数の操作タスクの各操作タスクに対応する前記コンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることを含む。
例示的に、前記情報フローは、統合コンピューティングデバイスアーキテクチャ(CUDA)情報フローおよび/またはホスト情報フローを含む。
例示的に、前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、前記複数の操作タスクのうちの少なくとも2つの操作タスク間に依存関係がなく、かつ前記少なくとも2つの操作タスクが異なる抽象リソースに対応する場合、前記少なくとも2つの操作タスクを並行してスケジューリングすることを含む。
例示的に、前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクのうちの第3操作タスクと第4操作タスクとの間に依存関係があり、かつ前記第3操作タスクおよび第4操作タスクに対応する情報フローが両方ともCUDA情報フローである場合、第1同期インターフェースを呼び出して、前記第3操作タスクと前記第4操作タスクを同期することを含む。
例示的に、前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、前記複数の操作タスクのうちの第3操作タスクと第4操作タスクとの間に依存関係があり、かつ前記第3操作タスクおよび前記第4操作タスクの少なくとも1つの操作タスクに対応する情報フローがホスト情報フローである場合、第2同期インターフェースを呼び出して、前記第3操作タスクと前記第4操作タスクを同期することを含む。
本開示の実施例の第2態様によれば、タスクスケジューリング装置を提供し、前記装置は、
操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定するように構成される依存関係決定モジュールと、前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングするように構成されるスケジューリングモジュールと、を備える。
本開示の実施例の第3態様によれば、コンピュータプログラムが記憶された不揮発性コンピュータ可読記憶媒体を提供し、前記コンピュータプログラムは、上記の第1態様の任意の可能な実施形態におけるタスクスケジューリング方法を実行するために使用される。
本開示の実施例の第4態様によれば、タスクスケジューリング装置を提供し、前記装置は、
プロセッサと、プロセッサ実行可能な命令を記憶するためのメモリと、を備え、前記プロセッサは、前記メモリに記憶された実行可能な命令を呼び出して、上記の第1態様の任意の可能な実施形態におけるタスクスケジューリング方法を実現するように構成される。
本開示の実施例の第5態様によれば、コンピュータプログラムを提供し、前記コンピュータプログラムは、第1態様の任意の可能な実施形態における方法を実現するための命令を含む。
例えば、本願は以下の項目を提供する。
(項目1)
タスクスケジューリング方法であって、
操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることと、を含むことを特徴とする、前記タスクスケジューリング方法。
(項目2)
前記操作タスクに対応するオペランドは、読み取りオペランドおよび/または書き込みオペランドを含むことを特徴とする、
項目1に記載のタスクスケジューリング方法。
(項目3)
前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、
第2操作タスクが第1操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または前記第2操作タスクが前記第1操作タスクのオペランドに対する書き込み操作を含む場合、前記第2操作タスクが前記第1操作タスクに依存すると決定することを含み、
前記第1操作タスクおよび前記第2操作タスクは、前記操作タスクキュー内の異なる操作タスクであることを特徴とする、
項目1または2に記載のタスクスケジューリング方法。
(項目4)
前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、
第2操作タスクが第1操作タスクの読み取りオペランドに対する読み取り操作を含む場合、前記第1操作タスクと前記第2操作タスクとの間に依存関係がないと決定することをさらに含むことを特徴とする、
項目1ないし3のいずれか一項に記載のタスクスケジューリング方法。
(項目5)
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定することと、
前記操作タスクキュー内の現在の操作タスクにメモリを割り当てることと、
前記メモリの割り当てが完了した後、前記現在の操作タスクを前記現在の操作タスクに対応するコンテキストにスケジューリングして実行することと、
前記スケジューリング順序に応じて、前記現在の操作タスクの次の操作タスクに対するメモリの割り当てを実行することと、を含むことを特徴とする、
項目1ないし4のいずれか一項に記載のタスクスケジューリング方法。
(項目6)
前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定することは、
前記複数の操作タスクのうちの第1操作タスクと、前記複数の操作タスクのうちの第2操作タスクとの間に依存関係がない場合、前記第1操作タスクと前記第2操作タスクを並行して呼び出すと決定すること、および/または
前記第2操作タスクが前記第1操作タスクに依存する場合、前記第1操作タスクの後に前記第2操作タスクをスケジューリングすると決定することを含むことを特徴とする、
項目5に記載のタスクスケジューリング方法。
(項目7)
前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、
前記複数の操作タスクに含まれるM個の通信操作タスクに対して融合処理を実行して、少なくとも1つの併合通信操作タスクを取得することであって、各併合通信操作タスクは、前記M個の通信操作タスクのうちの少なくとも1つの通信操作タスクを含み、Mは、1より大きいか等しい整数であることと、
前記少なくとも1つの併合通信操作タスクに対応するオペランドおよび前記複数の操作タスクのうちの少なくとも1つの非通信操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと、を含むことを特徴とする、
項目1ないし6のいずれか一項に記載のタスクスケジューリング方法。
(項目8)
前記併合通信操作タスクに対応するオペランドは、
前記併合通信操作タスクに含まれる少なくとも1つの通信操作タスクに対応する読み取りオペランドのセット、および/または前記併合通信操作タスクに含まれる少なくとも1つの通信操作タスクに対応する書き込みオペランドのセットを含むことを特徴とする、
項目7に記載のタスクスケジューリング方法。
(項目9)
前記操作タスクキューは、第1操作タスクキューおよび第2操作タスクキューを含み、前記第1操作タスクキューは、前記複数の操作タスクのうちの通信操作タスクを含み、前記第2操作タスクキューは、前記複数の操作タスクのうちの非通信操作タスクを含み、
前記第1操作タスクキューおよび前記第2操作タスクキューに含まれる操作タスクは、前記複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列されることを特徴とする、
項目1ないし8のいずれか一項に記載のタスクスケジューリング方法。
(項目10)
前記第1操作タスクキューと前記第2操作タスクキューとの間の依存情報を記録することであって、
前記第1操作タスクキュー内の操作タスクが前記第2操作タスクキュー内の少なくとも1つの操作タスクに依存する場合、または前記第2操作タスクキュー内の操作タスクが前記第1操作タスクキュー内の少なくとも1つの操作タスクに依存する場合、前記依存情報は、前記少なくとも1つの操作タスクのうちの最後の操作タスクの情報を含むことをさらに含み、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記第1操作タスクキューと前記第2操作タスクキューとの間の依存情報に基づいて、前記第1操作タスクキューおよび前記第2操作タスクキュー内の操作タスクをスケジューリングすることを含むことを特徴とする、
項目9に記載のタスクスケジューリング方法。
(項目11)
メモリ回収操作タスクに対応する優先度を最高に設定することであって、前記第2操作タスクキューは、前記操作タスクキュー内の前記メモリ回収操作タスク以外の前記非通信操作タスクを含むことをさらに含むことを特徴とする、
項目9または10に記載のタスクスケジューリング方法。
(項目12)
前記複数の操作タスク間の依存関係を決定する前に、
前記複数の操作タスクの各操作タスクに対応するコンテキストを決定することであって、前記操作タスクに対応するコンテキストは、抽象リソースおよび情報フローを含むことをさらに含み、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクの各操作タスクに対応する前記コンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることを含むことを特徴とする、
項目1ないし11のいずれか一項に記載のタスクスケジューリング方法。
(項目13)
前記情報フローは、統合コンピューティングデバイスアーキテクチャ(CUDA)情報フローおよび/またはホスト情報フローを含むことを特徴とする、
項目12に記載のタスクスケジューリング方法。
(項目14)
前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクのうちの少なくとも2つの操作タスク間に依存関係がなく、かつ前記少なくとも2つの操作タスクが異なる抽象リソースに対応する場合、前記少なくとも2つの操作タスクを並行してスケジューリングすることを含むことを特徴とする、
項目12または13に記載のタスクスケジューリング方法。
(項目15)
前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクのうちの第3操作タスクと第4操作タスクとの間に依存関係があり、かつ前記第3操作タスクおよび第4操作タスクに対応する情報フローが両方ともCUDA情報フローである場合、第1同期インターフェースを呼び出して、前記第3操作タスクと前記第4操作タスクを同期することを含むことを特徴とする、
項目12ないし14のいずれか一項に記載のタスクスケジューリング方法。
(項目16)
前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
前記複数の操作タスクのうちの第3操作タスクと第4操作タスクとの間に依存関係があり、かつ前記第3操作タスクおよび前記第4操作タスクの少なくとも1つの操作タスクに対応する情報フローがホスト情報フローである場合、第2同期インターフェースを呼び出して、前記第3操作タスクと前記第4操作タスクを同期することを含むことを特徴とする、
項目12ないし15のいずれか一項に記載のタスクスケジューリング方法。
(項目17)
タスクスケジューリング装置であって、
操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定するように構成される依存関係決定モジュールと、
前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングするように構成されるスケジューリングモジュールと、を備えることを特徴とする、前記タスクスケジューリング装置。
(項目18)
前記操作タスクに対応するオペランドは、読み取りオペランドおよび/または書き込みオペランドを含むことを特徴とする、
項目17に記載のタスクスケジューリング装置。
(項目19)
前記依存関係決定モジュールは、
第2操作タスクが第1操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または前記第2操作タスクが前記第1操作タスクのオペランドに対する書き込み操作を含む場合、前記第2操作タスクが前記第1操作タスクに依存すると決定するように構成される第1決定サブモジュールを備え、
前記第1操作タスクおよび前記第2操作タスクは、前記操作タスクキュー内の異なる操作タスクであることを特徴とする、
項目17または18に記載のタスクスケジューリング装置。
(項目20)
前記依存関係決定モジュールは、
第2操作タスクが第1操作タスクの読み取りオペランドに対する読み取り操作を含む場合、前記第1操作タスクと前記第2操作タスクとの間に依存関係がないと決定するように構成される第2決定サブモジュールをさらに備えることを特徴とする、
項目17ないし19のいずれか一項に記載のタスクスケジューリング装置。
(項目21)
前記スケジューリングモジュールは、
前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定するように構成されるスケジューリング順序決定サブモジュールと、
前記操作タスクキュー内の現在の操作タスクにメモリを割り当てるように構成される第1実行サブモジュールと、
前記メモリの割り当てが完了した後、前記現在の操作タスクを前記現在の操作タスクに対応するコンテキストにスケジューリングして実行し、前記スケジューリング順序に応じて、前記現在の操作タスクの次の操作タスクに対するメモリの割り当てを実行するように構成される第2実行サブモジュールと、を備えることを特徴とする、
項目18ないし20のいずれか一項に記載のタスクスケジューリング装置。
(項目22)
前記スケジューリング順序決定サブモジュールは、
前記複数の操作タスクのうちの第1操作タスクと、前記複数の操作タスクのうちの第2操作タスクとの間に依存関係がない場合、前記第1操作タスクと前記第2操作タスクを並行して呼び出すと決定するように構成される第1決定ユニット、および/または
前記第2操作タスクが前記第1操作タスクに依存する場合、前記第1操作タスクの後に前記第2操作タスクをスケジューリングすると決定するように構成される第2決定ユニットを備えることを特徴とする、
項目21に記載のタスクスケジューリング装置。
(項目23)
前記依存関係決定モジュールは、
前記複数の操作タスクに含まれるM個の通信操作タスクに対して融合処理を実行して、少なくとも1つの併合通信操作タスクを取得するように構成される融合サブモジュールであって、各併合通信操作タスクは、前記M個の通信操作タスクのうちの少なくとも1つの通信操作タスクを含み、Mは、1より大きいか等しい整数である融合サブモジュールと、
前記少なくとも1つの併合通信操作タスクに対応するオペランドおよび前記複数の操作タスクのうちの少なくとも1つの非通信操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定するように構成される第3決定サブモジュールと、を備えることを特徴とする、
項目17ないし22のいずれか一項に記載のタスクスケジューリング装置。
(項目24)
前記併合通信操作タスクに対応するオペランドは、
前記併合通信操作タスクに含まれる少なくとも1つの通信操作タスクに対応する読み取りオペランドのセット、および/または前記併合通信操作タスクに含まれる少なくとも1つの通信操作タスクに対応する書き込みオペランドのセットを含むことを特徴とする、
項目23に記載のタスクスケジューリング装置。
(項目25)
前記操作タスクキューは、第1操作タスクキューおよび第2操作タスクキューを含み、前記第1操作タスクキューは、前記複数の操作タスクのうちの通信操作タスクを含み、前記第2操作タスクキューは、前記複数の操作タスクのうちの非通信操作タスクを含み、
前記第1操作タスクキューおよび前記第2操作タスクキューに含まれる操作タスクは、それぞれの操作タスクキュー内の前記複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列されることを特徴とする、
項目17ないし24のいずれか一項に記載のタスクスケジューリング装置。
(項目26)
前記タスクスケジューリング装置は、
前記第1操作タスクキューと前記第2操作タスクキューとの間の依存情報を記録するように構成される記録モジュールであって、
前記第1操作タスクキュー内の操作タスクが前記第2操作タスクキュー内の少なくとも1つの操作タスクに依存する場合、または前記第2操作タスクキュー内の操作タスクが前記第1操作タスクキュー内の少なくとも1つの操作タスクに依存する場合、前記依存情報は、前記少なくとも1つの操作タスクのうちの最後の操作タスクの情報を含む記録モジュールをさらに備え、
前記スケジューリングモジュールは、
前記第1操作タスクキューと前記第2操作タスクキューとの間の依存情報に基づいて、前記第1操作タスクキューおよび前記第2操作タスクキュー内の操作タスクをスケジューリングするように構成される第1スケジューリングサブモジュールを備えることを特徴とする、
項目25に記載のタスクスケジューリング装置。
(項目27)
前記タスクスケジューリング装置は、
メモリ回収操作タスクに対応する優先度を最高に設定するように構成される優先度設定モジュールであって、前記第2操作タスクキューは、前記操作タスクキュー内の前記メモリ回収操作タスク以外の前記非通信操作タスクを含む優先度設定モジュールをさらに備えることを特徴とする、
項目25または26に記載のタスクスケジューリング装置。
(項目28)
前記タスクスケジューリング装置は、
前記複数の操作タスクの各操作タスクに対応するコンテキストを決定するように構成されるコンテキスト決定モジュールであって、前記操作タスクに対応するコンテキストは、抽象リソースおよび情報フローを含むコンテキスト決定モジュールをさらに備え、
前記スケジューリングモジュールは、
前記複数の操作タスクの各操作タスクに対応する前記コンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングするように構成される第2スケジューリングサブモジュールを備える、
項目17ないし27のいずれか一項に記載のタスクスケジューリング装置。
(項目29)
前記情報フローは、統合コンピューティングデバイスアーキテクチャ(CUDA)情報フローおよび/またはホスト情報フローを含むことを特徴とする、
項目28に記載のタスクスケジューリング装置。
(項目30)
前記第2スケジューリングサブモジュールは、
前記複数の操作タスクのうちの少なくとも2つの操作タスク間に依存関係がなく、かつ前記少なくとも2つの操作タスクが異なる抽象リソースに対応する場合、前記少なくとも2つの操作タスクを並行してスケジューリングするように構成される第1スケジューリングユニットを備えることを特徴とする、
項目28または29に記載のタスクスケジューリング装置。
(項目31)
前記第2スケジューリングサブモジュールは、
前記複数の操作タスクのうちの第3操作タスクと第4操作タスクとの間に依存関係があり、かつ前記第3操作タスクおよび第4操作タスクに対応する情報フローが両方ともCUDA情報フローである場合、第1同期インターフェースを呼び出して、前記第3操作タスクと前記第4操作タスクを同期するように構成される第2スケジューリングユニットを備えることを特徴とする、
項目28ないし30のいずれか一項に記載のタスクスケジューリング装置。
(項目32)
前記第2スケジューリングサブモジュールは、
前記複数の操作タスクのうちの第3操作タスクと第4操作タスクとの間に依存関係があり、かつ前記第3操作タスクおよび前記第4操作タスクの少なくとも1つの操作タスクに対応する情報フローがホスト情報フローである場合、第2同期インターフェースを呼び出して、前記第3操作タスクと前記第4操作タスクを同期するように構成される第3スケジューリングユニットを備えることを特徴とする、
項目28ないし31のいずれか一項に記載のタスクスケジューリング装置。
(項目33)
コンピュータプログラムが記憶された、不揮発性コンピュータ可読記憶媒体であって、前記コンピュータプログラムが、項目1ないし16のいずれか一項に記載のタスクスケジューリング方法を実行するために使用されることを特徴とする、前記不揮発性コンピュータ可読記憶媒体。
(項目34)
タスクスケジューリング装置であって、
プロセッサと、
プロセッサ実行可能な命令を記憶するためのメモリと、を備え、
前記プロセッサは、前記メモリに記憶された前記実行可能な命令を呼び出して、項目1ないし16のいずれか一項に記載のタスクスケジューリング方法を実現するように構成されることを特徴とする、前記タスクスケジューリング装置。
本開示の実施例によれば、操作タスクキュー内の複数の操作タスクのそれぞれに対応するオペランドに従って、複数の操作タスク間の依存関係を決定し、依存関係に基づいて、複数の操作タスクをスケジューリングすることにより、操作タスク間の依存関係を最小化し、操作タスクの効率的なスケジューリングを実現する。
上記の一般的な説明および後述する詳細な説明は、単なる例示および説明に過ぎず、本開示を限定するものではないことを理解されたい。
ここでの図面は、本明細書に組み込まれてその一部を構成し、本開示と一致する実施例を示し、明細書とともに本開示の原理を説明するために使用される。
本開示の一例示的な実施例によるスケジューリング方法のフローチャートである。 本開示の別の例示的な実施例によるタスクスケジューリング方法のフローチャートである。 本開示の更に別の例示的な実施例によるタスクスケジューリング方法のフローチャートである。 本開示の更に別の例示的な実施例によるタスクスケジューリング方法のフローチャートである。 本開示の一例示的な実施例による通信重複シナリオの概略図である。 本開示の更に別の例示的な実施例によるタスクスケジューリング方法のフローチャートである。 本開示の更に別の例示的な実施例によるタスクスケジューリング方法のフローチャートである。 本開示の一例示的な実施例によるハードウェアリソースコンテキストの概略図である。 本開示の一例示的な実施例による操作タスク分割の概略図である。 本開示の一例示的な実施例によるコンテキストコレクションとスケジューリングシステムとの間のインターフェースの概略図である。 本開示の更に別の例示的な実施例によるタスクスケジューリング方法のフローチャートである。 本開示の一例示的な実施例によるタスクスケジューリング装置のブロック図である。 本開示の別の例示的な実施例によるタスクスケジューリング装置のブロック図である。 本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。 本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。 本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。 本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。 本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。 本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。 本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。 本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。 本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。 本開示の更に別の例示的な実施例によるタスクスケジューリング装置のブロック図である。 本開示の一例示的な実施例によるタスクスケジューリング装置の構造の概略図である。
ここで、例示的な実施例について詳細に説明し、その例を図面に示す。別の指示がない限り、以下の説明が図面に関する場合、異なる図面の同じ数字は同じまたは類似の要素を表す。以下の例示的な実施例で説明される実施形態は、本開示と一致するすべての実施形態を表すものではない。むしろ、それらは、添付された特許請求の範囲に詳述されるように、本開示の特定の態様と一致する装置および方法の例である。
本開示で使用される用語は、特定の実施形態を説明することのみを目的とし、本開示を限定するものではない。本開示および添付の特許請求の範囲で使用された単数形の「1つ」、「前記」、「上記」および「当該」は、文脈が他の意味を明確に示さない限り、複数形も含むものとする。また、本明細書で使用された「および/または」という用語は、1つまたは複数の関連する列挙されたプロジェクトのいずれかまたはすべての可能な組み合わせを指し、それらを含むことを理解されたい。
本開示では、「第1」、「第2」、「第3」などの用語を使用して様々な情報を説明することができるが、これらの情報はこれらの用語に限定されないことを理解されたい。これらの用語は、同じタイプの情報をお互いに区別するためにのみ使用される。例えば、本開示の範囲から逸脱することなく、第1の情報は第2の情報とも称し得、同様に、第2の情報は第1の情報とも称し得る。文脈に応じて、本明細書で使用される「…ば」という語は、「…場合」または「…時」または「…決定に応答して」と解釈することができる。
本開示の実施例は、ニューラルネットワークトレーニングプラットフォームなどの深層学習トレーニングプラットフォーム、またはハードウェアリソーススケジューリングに関し、かつスケジューリング効率を改善する必要がある他の装置またはプラットフォームで使用できるタスクスケジューリング方法を提供する。以下、深層学習トレーニングプラットフォームのみを例として説明する。
図1に示されるように、図1は、一例示的な実施例によるタスクスケジューリング方法のフローチャートであり、前記方法は以下のステップを含む。
ステップ101において、操作タスクキュー内の複数の操作タスクに対応するオペランド(operand)に従って、複数の操作タスク間の依存関係を決定する。
ステップ102において、複数の操作タスク間の依存関係に基づいて、操作タスクキュー内の複数の操作タスクをスケジューリングする。
上記の実施例において、オペランドに基づいて操作タスク間の依存関係を決定することにより、操作タスク間の依存関係を最小化し、きめ細かく効率的なスケジューリングの目的を達成する。
本開示の実施例において、操作タスクに含まれるきめ細かいタスクのオペランドに基づいて、複数の操作タスク間の依存関係を決定する。ここで、オペランドは、操作タスクのデータオブジェクトである。
いくつかの実施例において、操作タスクに含まれる読み取り操作および/または書き込み操作のオペランドに基づいて、2つの操作タスク間に依存関係があるか否かを決定する。これに対して、オペランドは、読み取り操作に対応する読み取りオペランド、および/または書き込み操作に対応する書き込みオペランドを含む。
例示的に、操作タスクは、ゼロ、1つまたは複数の読み取り操作を含むことができ、ゼロ、1つまたは複数の書き込み操作を含むこともでき、これに対して、操作タスクは、1つまたは複数のオペランドに対応することができる。
ステップ101において、例示的に、2つの操作タスクのオペランドが同じであるか否かに基づいて、2つの操作タスク間に依存関係があるか否かを決定でき、例えば、2つの操作タスクのオペランドの間に交差がない場合、2つの操作タスク間に依存関係がないと決定する。いくつかの実施例において、以下の方式を使用して、オペランドに基づいて複数の操作タスク間の依存関係を決定することができる。
第1のケースにおいて、2つの操作タスク間に依存関係があると仮定する。
ここで、操作タスクキュー内の第2操作タスクが第1操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または第2操作タスクが第1操作タスクのオペランドに対する書き込み操作を含む場合、トレーニングプラットフォームは、第2操作タスクが第1操作タスクに依存すると決定できる。
例えば、操作タスクキュー内の操作タスクBが操作タスクAの書き込みオペランドを読み取る必要がある場合、操作タスクBが操作タスクAに依存すると決定できる。別の例では、操作タスクキュー内の操作タスクBが、操作タスクA的書き込みオペランドおよび/または読み取りオペランドを書き込む必要がある場合、操作タスクBが操作タスクAに依存すると決定できる。
第2のケースにおいて、2つの操作タスク間に依存関係がないと仮定する。
ここで、第2操作タスクが第1操作タスクの読み取りオペランドに対する読み取り操作を含む場合、トレーニングプラットフォームは、第1操作タスクと第2操作タスクとの間に依存関係がないと決定できる。例えば、操作タスクキュー内の操作タスクBが、操作タスクAの読み取りオペランドを読み取る必要がある場合、操作タスクAと操作タスクBとの間に依存関係がないと決定できる。
第1操作タスクおよび第2操作タスクにそれぞれ対応するオペランド間に交差がない場合、トレーニングプラットフォームは、第1操作タスクと第2操作タスクとの間に依存関係がないと決定できる。例えば、操作タスクAのオペランドがaとbであり、操作タスクBのオペランドがcである場合、操作タスクAは、操作タスクBのオペランドに対して何の操作も行う必要がなく、操作タスクBも、操作タスクAのオペランドに対して何の操作も行う必要がないため、操作タスクAと操作タスクBとの間に依存関係がないと決定できる。
図2に示される例では、ステップ102は、以下のステップを含み得る。
ステップ102-1において、複数の操作タスク間の依存関係に基づいて、複数の操作タスクのスケジューリング順序を決定する。
上記のステップ101の方式に従って、複数の操作タスクのうちの第1操作タスクと複数の操作タスクのうちの第2操作タスクとの間に依存関係がないと決定した場合、トレーニングプラットフォームは、依存関係のない第1操作タスクと第2操作タスクを並行して呼び出すことができ、またはトレーニングプラットフォームは、第1操作タスクと第2操作タスクを任意の順序でスケジューリングすることができる。例えば、操作タスクAと操作タスクBとの間に依存関係がない場合、トレーニングプラットフォームは、操作タスクAと操作タスクBを並列して、または任意の順序でスケジューリングすることができる。
上記のステップ101の方式に従って、第2操作タスクが第1操作タスクに依存すると決定した場合、トレーニングプラットフォームは、第1操作タスクをスケジューリングした後に、第2操作タスクをスケジューリングする。例えば、操作タスクBが操作タスクAに依存する場合、トレーニングプラットフォームは、操作タスクAをスケジューリングしてから、操作タスクBスケジューリングする。
ステップ102-2において、操作タスクキュー内の現在の操作タスクにメモリを割り当てる。
トレーニングプラットフォームが、複数の操作タスク間の依存関係に基づいて、複数の操作タスクのスケジューリング順序を決定した後、前記スケジューリング順序に応じて、操作タスクキュー内の複数の操作タスクをスケジューリングすることができる。ここで、操作タスクキュー内の特定の操作タスクに対するスケジューリングは、前記操作タスクが必要とするメモリ空間を割り当てることと、前記操作タスクの演算子(operator)を対応するコンテキスト(context)にスケジューリングして実行することの2つのプロセスを含む。
ステップ102-3において、メモリの割り当てが完了した後、現在の操作タスクを現在の操作タスクに対応するコンテキストにスケジューリングして実行し、スケジューリング順序に応じて、現在の操作タスクの次の操作タスクに対するメモリの割り当てを実行する。
いくつかの実施例において、トレーニングプラットフォームは、現在の操作タスクにメモリを割り当てた後、現在の操作タスクの操作実行要求を現在の操作タスクに対応するコンテキストに送信することができる。このとき、現在の操作タスクの実行完了を待たずに、トレーニングプラットフォームは、スケジューリング順序に応じて現在の操作タスクの次の操作タスクに対するメモリの割り当てを始めることができる。つまり、現在の操作タスクのメモリの割り当てを完了した後、現在の操作タスクの実行と次の操作タスクのスケジューリングを同時実行することができる。次の操作タスクのスケジューリングは、現在の操作タスクのメモリの割り当ての完了を待つ必要があるが、現在の操作タスクの実行完了を待つ必要はない。いくつかの実施例において、特定の操作タスクにメモリを割り当てるときに、メモリ空間が不十分な場合、スケジューリング順序に応じて、前記操作タスクの前の少なくとも1つの操作タスクの実行完了を待つ必要があり、十分なメモリ空間を解放した後にのみ、現在の操作タスクに対するメモリ準備を実行し続けることができる。
上記の実施例において、依存関係のない操作タスクについて、潜在的なタスクの同時実行性を完全に発掘することができる。依存関係のある操作タスクの場合、先ず現在の操作タスクにメモリを割り当てることができ、現在の操作タスクの操作実行要求を送信した後、現在の操作タスクの実行完了を待たずに、現在の操作タスクの次の操作タスクに対するメモリの割り当ての実行を始めることができる。上記のプロセスにより、きめ細かく効率的なスケジューリングの目的を達成できる。
いくつかの実施例において、トレーニングプラットフォームの実際の応用において、異なる計算ノード間の通信効率の改善もトレーニング効率を改善するためのキーポイントであり、通信メッセージは、トレーニングプラットフォームのスケーラビリティに影響を与える。トレーニングプラットフォームでトレーニングする場合、通常、GPU(Graphics Processing Unit、図形プロセッサ)を使用して計算する。NVIDIA(エヌビディア)GPUクラスタ環境の場合、通常、NCCL(Nvidia Collective multi-GPU Communication Library、エヌビディア集合マルチGPU通信ライブラリ)を使用して通信する。
NCCLの実現メカニズムは、すべての通信ノードを端から端まで接続して単方向リングを形成して、データ断片をパイプライン伝送することであり、理想的には、通信時間はノード数の増加に伴って増加せず、データ量と帯域幅にのみ関連するが、データ数がノード数よりはるかに多い場合にのみ成立する。このような特性により、データ量が少ない場合はNCCLが非常に非効率になる。より多くの通信データ量を取得するために、通信操作タスクに対する融合操作を導入する。通信タスクは、複数の計算ノード間で実行されるタスクであり、非通信タスクは、単一の計算ノードで実行されるタスクである。
例示的に、図3に示される例では、ステップ101は、以下のステップを含み得る。
ステップ101-1において、複数の操作タスクに含まれるM個の通信操作タスクに対して融合処理を実行して、少なくとも1つの併合通信操作タスクを取得し、各併合通信操作タスクは、M個の通信操作タスクのうちの少なくとも1つの通信操作タスクを含む。
このステップでは、Mは、1より大きいか等しい整数であり得る。トレーニングプラットフォームは、複数の通信操作タスクを融合して、1つまたは複数の併合通信操作タスクを取得することができる。各併合通信操作タスクに含まれる通信操作タスクの数は、1つまたは複数であり得る。
ステップ101-2において、少なくとも1つの併合通信操作タスクに対応するオペランドおよび複数の操作タスクのうちの少なくとも1つの非通信操作タスクに対応するオペランドに従って、複数の操作タスク間の依存関係を決定する。
このステップでは、トレーニングプラットフォームは、併合通信操作タスクに含まれる少なくとも1つの通信操作タスクに対応する読み取りオペランドおよび/または書き込みオペランドをそれぞれ融合して、融合された読み取りオペランドのセットおよび/または書き込みオペランドのセットを取得することができ、これにより、読み取りオペランドのセットを併合通信タスクに対応する読み取りオペランドとして使用でき、書き込みオペランドのセットを併合通信タスクに対応する書き込みオペランドとして使用できる。例えば、各操作タスクは、独自の読み取りオペランドおよび書き込みオペランドを有し、少なくとも1つの通信操作タスクを融合することにより、複数の操作タスクの読み取りオペランドおよび/または書き込みオペランドに対してそれぞれ合併集合を取ることができる。
さらに、トレーニングプラットフォームは、併合通信操作タスクに対応するオペランドに従って、異なる併合通信操作タスク間の依存関係を決定でき、併合通信操作タスクに対応するオペランドおよび複数の操作タスクのうちの少なくとも1つの非通信操作タスクに対応するオペランドに従って、併合通信操作タスクと少なくとも1つの非通信操作タスクとの間の依存関係を決定できる。
依存関係を決定する方式は、上記の実施例における少なくとも2つの操作タスク間の依存関係を決定する方式と同じであり、ここでは繰り返さない。
上記の実施例において、トレーニングプラットフォームは、複数の通信操作タスクに対して融合処理して、少なくとも1つの併合通信操作タスクに併合した後、少なくとも1つの併合操作タスクに対応するオペランドおよび複数の操作タスクのうちの少なくとも1つの非通信操作タスクに対応するオペランドに従って、併合通信操作タスク間の依存関係、および/または少なくとも1つの併合通信操作タスクと少なくとも1つの非通信操作タスクとの間の依存関係を決定でき、これにより、より多くのデータ通信量を取得でき、トレーニングプラットフォームのより効率的な通信を実現することができる。
いくつかの実施例において、操作タスクキューを第1操作タスクキューおよび第2操作タスクキューに分割することができ、第1操作タスクキューは、複数の操作タスクのうちの通信操作タスクを含み、例示的に、第1操作タスクキューは、リモート通信キューである。第2操作タスクキューは、複数の操作タスクのうちの非通信操作タスクを含み、例示的に、第2操作タスクキューは、ローカルキューである。
ここで、リモート通信キューは、現在の計算ノードと他の計算ノード間のデータ交換のための操作タスクを含む。ローカルキューは、CPU(Central Processing Unit、中央処理装置)計算、GPU計算、CPUからGPUへのデータ伝送、GPUからCPUへのデータ伝送など、現在の計算ノードで実行されるタスクを含む。
上記の2つのキューに含まれる操作タスクは、それぞれの操作タスクキュー内の複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列されるため、同一キュー内の操作タスクは、依存する操作タスクの情報を記録する必要なく、キューのファーストインファーストアウトメカニズムに従えばよい。
例えば、操作タスクBが操作タスクAに依存し、スケジューリング順序が、操作タスクAをスケジューリングしてから、操作タスクBをスケジューリングする順序であり、操作タスクAと操作タスクBが両方とも通信操作タスクである場合、第1操作タスクキュー内の操作タスクAは、操作タスクBの前に配列され、キューのファーストインファーストアウトメカニズムに基づいて、操作タスクAをスケジューリングしてから、操作タスクBをスケジューリングするため、操作タスクBは、依存する操作タスクAの情報を記録する必要がない。
同様に、操作タスクAと操作タスクBが両方とも非通信操作タスクであり、第2操作タスクキュー内でも、操作タスクAが操作タスクBの前に配列される場合、操作タスクBは、操作タスクAの情報を記録する必要がない。
上記のプロセスにより、通信操作タスクの実行効率を向上させることができ、例えば、操作タスクEが操作タスクAに依存し、操作タスクAと操作タスクEが両方とも通信操作タスクである場合、操作タスクキューでは、操作タスクA、操作タスクB、操作タスクC、操作タスクDの順にスケジューリングした後にのみ、操作タスクEをスケジューリングすることができる。操作タスクキューを第1操作タスクキューおよび第2操作タスクキューに分割する場合、第1操作タスクキューには、操作タスクAおよび操作タスクEが含まれ、第2操作タスクキューには、操作タスクB、操作タスクC、および操作タスクDが含まれる。第1操作タスクキューでは、操作タスクB、操作タスクC、および操作タスクDがすべて完了されるのを待たずに、操作タスクAが実行された後に、操作タスクEを実行することができる。
上記の実施例において、通信操作タスクと非通信操作タスクをそれぞれ第1操作タスクキューと第2操作タスクキューに格納することにより、効率的な通信タスクの重複を実現し、システムの同時実行効率を向上させる。
いくつかの実施例において、図4に示される例において、上記のタスクスケジューリング方法は、以下のステップをさらに含み得る。
ステップ103において、第1操作タスクキューと第2操作タスクキューとの間の依存情報を記録し、ここで、第1操作タスクキュー内の操作タスクが第2操作タスクキュー内の1つまたは複数の操作タスクに依存する場合、依存情報は、1つまたは複数の操作タスクのうちの最後の操作タスクの情報を含み、および/または第2操作タスクキュー内の操作タスクが第1操作タスクキュー内の少なくとも1つの操作タスクに依存する場合、依存情報は、少なくとも1つの操作タスクのうちの最後の操作タスクの情報を含む。
図5に示されるように、このステップでは、異なる操作タスクキュー内の操作タスク間に依存関係がある場合、トレーニングプラットフォームは、2つの操作タスクキュー互いに依存する最後の操作タスクの情報を記録することができる。例えば、第1操作タスクキュー内の操作タスクAが第2操作タスクキュー内の操作タスクBと操作タスクCに依存し、操作タスクCが操作タスクBに依存する場合、操作タスクCに対する操作タスクAの依存関係のみを記録すればよい。
さらに、ステップ102は、第1操作タスクキューと第2操作タスクキューとの間の依存情報に基づいて、第1操作タスクキューおよび第2操作タスクキュー内の操作タスクをスケジューリングすることを含み得る。
上記の実施例において、2つの操作タスクキューの互いに依存する最後の操作タスクの情報を記録することにより、第1操作タスクキュー内の通信操作タスクの実行効率を向上させることができ、すべての非通信操作タスクの完了を待たず、効率的な通信タスクの重複の目的を達成する。
いくつかの実施例において、動的スケジューリングの技術案では、メモリ管理は、複雑で重要な課題であり、適切かつ時間内にメモリ回収を実行できない場合、ターゲット操作タスクをできるだけ早めにスケジューリングすることができないか、または計算可能なサンプル数の削減と同等である。この問題を解決するために、本開示の実施例は、メモリ回収操作タスクに対応する優先度を最高に設定することを提案する。
図6に示されるように、図6は、上記の図4に示される実施例に基づく別のタスクスケジューリング方法のフローチャートであり、前記タスクスケジューリング方法は、以下のステップをさらに含み得る。
ステップ104において、メモリ回収操作タスクに対応する優先度を最高に設定し、第2操作タスクキューは、操作タスクキュー内のメモリ回収操作タスク以外の非通信操作タスクを含む。
このステップでは、特定の操作タスクが対応するコンテキストにスケジューリングされた後、トレーニングプラットフォームは、前記操作タスクを、前記操作タスクが格納されていたタスクキューから削除するに加えて、前記操作タスクに対応するメモリ回収操作セットを削除することもできる。つまり、特定のターゲット操作タスクが対応するコンテキストにスケジューリングされた後、トレーニングプラットフォームは、前記ターゲット操作タスクによって占有されたメモリを回収する操作を事前に設定することができ、これにより、ターゲット操作タスクが完了した後、占有されたメモリをすばやく回収することができる。
このステップに記載のメモリ回収操作は、当該メモリを再割り当て可能なメモリとしてマークし、まだ実行中の操作タスクは、引き続き当該メモリを使用できるという論理操作である。本開示の実施例において、再割り当てされたメモリで実行される操作タスクが、必ずメモリ回収の前の操作タスクの後に配置されるため、ストリーム(stream)上の計算順序により、2つの操作タスクが競合しないことを保証する。
本開示の実施例において、例示的に、メモリ回収操作は、他のターゲット操作タスクのように第1操作タスクキューまたは第2操作タスクキューに格納されず、追加のマップ(map)データ構造に格納される。前記データ構造では、キーワード(key)は、依存される非メモリ回收操作であり、つまり、依存されるのは、対応するターゲット操作タスクであり、前記メモリ回收操作は、値(value)が指向するベクトル(vector)に格納される。
上記の実施例において、メモリ回収操作タスクに対応する優先度を最高に設定し、かつ独立してメモリ回収操作を格納することにより、メモリリソースの適時なクリーンアップを確保し、トレーニングプラットフォームのメモリ回収の効率を向上させる。
いくつかの実施例において、図7に示される例において、上記のタスクスケジューリング方法は、以下のステップをさらに含み得る。
ステップ100において、複数の操作タスクの各操作タスクに対応するコンテキストを決定し、操作タスクに対応するコンテキストは、抽象リソースおよび情報フローを含む。
本開示のいくつかの実施例において、トレーニングプラットフォームは、システムのハードウェアリソースを抽象化し、各ハードウェアリソースに対して統一の論理管理とインターフェイスを提供でき、これにより、GPU計算リソース、PCIE(Peripheral Component Interconnect Express、周辺コンポーネント相互接続エクスプレス)アップリンク伝送リソース、PCIEダウンリンク伝送リソース、IB(InfiniBand、インフィニバンド)ネットワークリソース、およびCPU計算リソースなどの抽象リソースを取得することができる。
上記の抽象リソースを取得する上で、各抽象リソースの操作タスクキューをさらにカプセル化することができる。ここで、GPU計算リソース、PCIEアップリンク伝送リソース、PCIEダウンリンク伝送リソース、およびIBネットワークリソースに対応する操作タスクは、本質的に非同期CUDA Stream(情報フロー)のカプセル化であるため、GPU計算リソース、PCIEアップリンク伝送リソース、PCIEダウンリンク伝送リソース、およびIBネットワークリソースに対応する情報フローは、CUDA(Compute Unified Device Architecture)情報フローであり得る。CPU計算リソースに対応する情報フローは、ホスト(Host)Streamであり得る。
図8に示されるように、操作タスクのコンテキストは、抽象リソースおよび対応する情報フローを含む。
トレーニングプラットフォームは、各ハードウェアリソースに対応するコンテキストに従って、操作タスクキュー内の複数の操作タスクを各抽象リソースに1対1で対応する操作タスクに分割することができる。
図9に示されるように、操作タスクライブラリ900としては、複数の操作タスクを使用することができ、内蔵操作タスクおよび拡張可能な操作タスクに分けることができる。ここで、内蔵操作タスク910は、アップリンク伝送913、ダウンリンク伝送912、メモリ回収911などのシステム内蔵機能を実現することができる。拡張可能な操作タスクは、必要に応じてトレーニングプラットフォームのユーザによって追加されることができ、例示的に、計算操作タスク920と通信操作タスク930にさらに分けることができる。計算操作タスク920は、さらに、CPU計算操作タスク921とGPU計算操作タスク922に分けることができる。
分割後の各操作タスクは、1つの対応するコンテキストに対応する。これに対して、上記のステップ102は、複数の操作タスクの各操作タスクに対応するコンテキストおよび複数の操作タスク間の依存関係に基づいて、操作タスクキュー内の複数の操作タスクをスケジューリングすることを含む。
つまり、トレーニングプラットフォームは、各操作タスクに対応するコンテキストおよび複数の操作タスク間の依存関係に基づいて、複数の操作タスクをスケジューリングすることができる。具体的な実現プロセスは、以下のとおりである。
第1のケースにおいて、2つの操作タスク間に依存関係がないと仮定する。
トレーニングプラットフォームは、複数の操作タスクのうちの2つの操作タスク間に依存関係がなく、かつこの2つの操作タスクが異なる抽象リソースに対応する場合、この2つの操作タスクを並行してスケジューリングすることができる。
第2のケースにおいて、2つの操作タスク間に依存関係があると仮定する。
第4操作タスクが第3操作タスクに依存すると仮定すると、トレーニングプラットフォームは、第3操作タスクと第4操作タスクに対応する情報フローを決定する必要があり、第3操作タスクと第4操作タスクに対応する情報フローに基づいて、第3操作タスクと第4操作タスクの同期インターフェースを決定する。
いくつかの実施例において、第3操作タスクと第4操作タスクに対応する情報フローが両方ともCUDA情報フローである場合、トレーニングプラットフォームは、第1同期インターフェースを呼び出して、第3操作タスクと第4操作タスクを同期することができる。例示的に、第1同期インターフェースは、cudaStreamWaitEvent()インターフェースであり得る。
本開示の実施例において、CUDA Event(イベント)によって操作タスクキュー内の操作タスクに対して状態検査、および完了待ちなどの操作を実行することができる。CUDA Eventに基づいて、きめ細かく軽量の暗黙的な同期方式を提供する。トレーニングプラットフォームが上記の操作タスクの任意の2つの操作タスク間に依存関係があることを検出し、かつ対応する情報フローが両方ともCUDA Streamである場合、トレーニングプラットフォームは、第1同期インターフェースを呼び出すことができる。
例えば、第1同期インターフェースを呼び出して、第3操作タスクに対するスケジューリングを実行したか否かなど、第3操作タスクの現在の状態を決定することにより、第3操作タスクと第4操作タスクを同期させる。
ここでの同期は、依存関係のある2つの操作タスクの計算結果の正確さを保証するためである。例えば、第4操作タスクが第3操作タスクに依存すると仮定すると、第3操作タスクと第4操作タスクを同期させる目的は、第4操作タスクに第3操作タスクの実行を待たせてから開始することである。
いくつかの実施例において、第3操作タスクおよび第4操作タスクの少なくとも1つの操作タスクに対応する情報フローがホスト情報フローである場合、第2同期インターフェースを呼び出して、第3操作タスクと第4操作タスクを同期することができる。例示的に、第2同期インターフェースは、cudaStreamSynchronize()インターフェースであり得る。
いくつかの実施例において、第3操作タスクと第4操作タスクに対応する情報フローが両方ともホスト情報フローでない場合、第1同期インターフェースを呼び出して、第3操作タスクと第4操作タスクを同期することができる。
上記の実施例において、トレーニングプラットフォームが第1同期インターフェースを呼び出すときに生成される遅延およびオーバーヘッドは、第2同期インターフェースを呼び出すときの遅延およびオーバーヘッドより小さいため、より効率的なハードウェアシステムの利用を実現することができる。
いくつかの実施例において、図10に示されるように、ハードウェアリソースコンテキストとトレーニングプラットフォームのスケジューリングシステムとの間に第1インターフェースおよび第2インターフェースがあり得る。第1インターフェースは、スケジューリングシステムが指定されたコンテキストにスケジューリングする必要がある操作タスクを通知するために使用され、例示的に、第1インターフェースは、schedule()インターフェースであり得る。第2インターフェースは、スケジューリングシステムが任意のコンテキストを同期するために使用され、例示的に、第2インターフェースは、synchronize()インターフェースであり得る。
上記の実施例において、ハードウェアリソースコンテキストとスケジューリングシステムとの間に異なるインターフェースを提供することにより、ハードウェアリソースの利用率をさらに向上させる。
いくつかの実施例において、図11に示される例において、タスクスケジューリング方法は、以下のステップを含み得る。
ステップ201において、操作タスクキュー内の複数の操作タスクの各操作タスクに対応するコンテキストを取得する。
ステップ202において、複数の操作タスクに含まれる複数の通信操作タスクに対して融合処理を実行して、少なくとも1つの併合通信操作タスクを取得する。
ステップ203において、少なくとも1つの併合通信操作タスクに対応するオペランドおよび複数の操作タスクのうちの少なくとも1つの非通信操作タスクに対応するオペランドに従って、複数の操作タスク間の依存関係を決定する。
複数の操作タスクのうちの第2操作タスクが第1操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または第2操作タスクが第1操作タスクのオペランドに対する書き込み操作を含む場合、第2操作タスクが第1操作タスクに依存すると決定する。
第2操作タスクが第1操作タスクの読み取りオペランドに対する読み取り操作を含む場合、第1操作タスクと第2操作タスクとの間に依存関係がないと決定する。
ステップ204において、前記少なくとも1つの併合通信操作タスクを第1操作タスクキューとして使用し、複数の操作タスクのうちの非通信操作タスクを第2操作タスクキューとして使用する。
操作タスクキューは、第1操作タスクキューおよび第2操作タスクキューを含むことができ、ここで、第1操作タスクキューは、複数の操作タスクのうちの併合通信操作タスクを含み、第2操作タスクキューは、複数の操作タスクのうちの非通信操作タスクを含む。ここで、第1操作タスクキューおよび第2操作タスクキューに含まれる操作タスクは、複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列される。
ステップ205において、第1操作タスクキューと第2操作タスクキューとの間の依存情報を記録する。
ステップ206において、第1操作タスクキューと第2操作タスクキューとの間の依存情報に基づいて、第1操作タスクキューおよび第2操作タスクキュー内の操作タスクをスケジューリングする。
ステップ207において、メモリ回収操作タスクに対応する優先度を最高に設定する。
ここで、前記第2操作タスクキューは、操作タスクキュー内のメモリ回収操作タスク以外の非通信操作タスクを含む。
ステップ207は、依存する操作タスクが対応するコンテキストにスケジューリングされた後に実行されてもよい。上記のすべてのステップの実行プロセスは、前の実施例による実行プロセスと一致しており、ここでは繰り返さない。
上記の実施例において、各ハードウェアリソースに対して抽象化およびカプセル化する。この上で、各リソースのために非同期タスクキューを設計しており、キュー間の柔軟で効率的な暗黙の同期ポリシーを提供する。
なお、複数の操作タスクに対応するオペランドに基づいて、複数の操作タスク間の依存関係を決定することにより、操作タスク間の依存関係を最小化し、効率的な依存関係分析とスケジューリングポリシーを実現する。非依存操作間のタスクの同時実行性を完全に発掘し、ハードウェアリソースの利用率を向上させる。暗黙的な同期により、依存関係のある操作間の依存遅延を低減する。本開示の実施例は、効率的な通信融合および通信重複の解決策を提供する。通信融合により通信操作自体の効率を向上させ、通信重複によりトレーニングプロセスの全体的な効率を向上させ、融合および重複プロセスで導入される依存関係融合と、マルチタスクキューが相互依存するという課題を解決する。メモリ回収操作が最も優先度の高い操作として定義されることにより、メモリリソースの適時なクリーンアップを確保し、効率的なメモリ回収の目的を達成する。
上記した方法の実施例に対応して、本開示はまた、装置の実施例を提供する。
図12に示されるように、図12は、本開示の一例示的な実施例によるタスクスケジューリング装置のブロック図であり、前記装置は、依存関係決定モジュール310と、スケジューリングモジュール320とを備える。
依存関係決定モジュール310は、操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、複数の操作タスク間の依存関係を決定するように構成される。
スケジューリングモジュール320は、複数の操作タスク間の依存関係に基づいて、操作タスクキュー内の複数の操作タスクをスケジューリングするように構成される。
例示的に、操作タスクに対応するオペランドは、読み取りオペランドおよび/または書き込みオペランドを含む。
図13に示されるように、図13は、本開示の一例示的な実施例による別のタスクスケジューリング装置のブロック図であり、図12に示される実施例に加えて、当該実施例による依存関係決定モジュール310は、第2操作タスクが第1操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または第2操作タスクが第1操作タスクのオペランドに対する書き込み操作を含む場合、第2操作タスクが第1操作タスクに依存すると決定するように構成される第1決定サブモジュール311であって、第1操作タスクおよび第2操作タスクは操作タスクキュー内の異なる操作タスクである第1決定サブモジュール311とを備える。
図14に示されるように、図14は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図13に示される実施例に加えて、当該実施例による依存関係決定モジュール310は、第1操作タスクが第2操作タスクの読み取りオペランドに対する読み取り操作を含む場合、第1操作タスクと第2操作タスクとの間に依存関係がないと決定するように構成される第2決定サブモジュール312をさらに備える。
図15に示されるように、図15は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図12に示される実施例に加えて、当該実施例によるスケジューリングモジュール320は、複数の操作タスク間の依存関係に基づいて、複数の操作タスクのスケジューリング順序を決定するように構成されるスケジューリング順序決定サブモジュール321と、操作タスクキュー内の現在の操作タスクにメモリを割り当てるように構成される第1実行サブモジュール322と、メモリの割り当てが完了した後、現在の操作タスクを現在の操作タスクに対応するコンテキストにスケジューリングして実行し、スケジューリング順序に応じて、現在の操作タスクの次の操作タスクに対するメモリの割り当てを実行するように構成される第2実行サブモジュール323と、を備える。
図16に示されるように、図16は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図15に示される実施例に加えて、当該実施例によるスケジューリング順序決定サブモジュール321は、複数の操作タスクのうちの第1操作タスクと複数の操作タスクのうちの第2操作タスクとの間に依存関係がない場合、第1操作タスクと第2操作タスクを並行して呼び出すと決定するように構成される第1決定ユニット3211、および/または第2操作タスクが第1操作タスクに依存する場合、第1操作タスクの後に第2操作タスクをスケジューリングすると決定するように構成される第2決定ユニット3212を備える。
図17に示されるように、図17は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図12に示される実施例に加えて、当該実施例による依存関係決定モジュール310は、複数の操作タスクに含まれるM個の通信操作タスクに対して融合処理を実行して、少なくとも1つの併合通信操作タスクを取得するように構成される融合サブモジュール313であって、各併合通信操作タスクは、M個の通信操作タスクのうちの少なくとも1つの通信操作タスクを含み、Mは、1より大きいか等しい整数である融合サブモジュール313と、少なくとも1つの併合通信操作タスクに対応するオペランドおよび複数の操作タスクのうちの少なくとも1つの非通信操作タスクに対応するオペランドに従って、複数の操作タスク間の依存関係を決定するように構成される第3決定サブモジュール314と、を備える。
例示的に、併合通信操作タスクに対応するオペランドは、併合通信操作タスクに含まれる少なくとも1つの通信操作タスクに対応する読み取りオペランドのセット、および/または併合通信操作タスクに含まれる少なくとも1つの通信操作タスクに対応する書き込みオペランドのセットを含む。
例示的に、操作タスクキューは、第1操作タスクキューおよび第2操作タスクキューを含み、第1操作タスクキューは、複数の操作タスクのうちの通信操作タスクを含み、第2操作タスクキューは、複数の操作タスクのうちの非通信操作タスクを含み、ここで、第1操作タスクキューおよび第2操作タスクキューに含まれる操作タスクは、それぞれの操作タスクキューにおける複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列される。
図18に示されるように、図18は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図12に示される実施例に加えて、当該実施例によるタスクスケジューリング装置は、前記第1操作タスクキューと前記第2操作タスクキューとの間の依存情報を記録するように構成される記録モジュール330であって、前記第1操作タスクキュー内の操作タスクが前記第2操作タスクキュー内の少なくとも1つの操作タスクに依存する場合、または前記第2操作タスクキュー内の操作タスクが前記第1操作タスクキュー内の少なくとも1つの操作タスクに依存する場合、前記依存情報は、前記少なくとも1つの操作タスクのうちの最後の操作タスクの情報を含む記録モジュール330をさらに備える。
スケジューリングモジュール320は、前記第1操作タスクキューと前記第2操作タスクキューとの間の依存情報に基づいて、前記第1操作タスクキューおよび前記第2操作タスクキュー内の操作タスクをスケジューリングするように構成される第1スケジューリングサブモジュール324を備える。
図19に示されるように、図19は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図18に示される実施例に加えて、当該実施例によるタスクスケジューリング装置は、メモリ回収操作タスクに対応する優先度を最高に設定するように構成される優先度設定モジュール340であって、第2操作タスクキューは、操作タスクキュー内のメモリ回収操作タスク以外の非通信操作タスクを含む優先度設定モジュール340をさらに備える。
図20に示されるように、図20は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図19に示される実施例に加えて、当該実施例によるタスクスケジューリング装置は、複数の操作タスクの各操作タスクに対応するコンテキストを決定するように構成されるコンテキスト決定モジュール350であって、操作タスクに対応するコンテキストは、抽象リソースおよび情報フローを含むコンテキスト決定モジュール350をさらに備える。
スケジューリングモジュール320は、複数の操作タスクの各操作タスクに対応するコンテキストおよび複数の操作タスク間の依存関係に基づいて、操作タスクキュー内の複数の操作タスクをスケジューリングするように構成される第2スケジューリングサブモジュール325を備える。
例示的に、情報フローは、統合コンピューティングデバイスアーキテクチャ(CUDA)情報フローおよび/またはホスト情報フローを含む。
図21に示されるように、図21は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図20に示される実施例に加えて、当該実施例による第2スケジューリングサブモジュール325は、複数の操作タスクのうちの少なくとも2つの操作タスク間に依存関係がなく、かつ前記少なくとも2つの操作タスクが異なる抽象リソースに対応する場合、少なくとも2つの操作タスクを並行してスケジューリングするように構成される第1スケジューリングユニット3251を備える。
図22に示されるように、図22は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図20に示される実施例に加えて、当該実施例による第2スケジューリングサブモジュール325は、複数の操作タスクのうちの第3操作タスクと第4操作タスクとの間に依存関係があり、かつ第3操作タスクおよび第4操作タスクに対応する情報フローが両方ともCUDA情報フローである場合、第1同期インターフェースを呼び出して、第3操作タスクと第4操作タスクを同期するように構成される第2スケジューリングユニット3252を備える。
図23に示されるように、図23は、本開示の一例示的な実施例による更に別のタスクスケジューリング装置のブロック図であり、図20に示される実施例に加えて、当該実施例によるスケジューリングサブモジュール325は、複数の操作タスクのうちの第3操作タスクと第4操作タスクとの間に依存関係があり、かつ第3操作タスクおよび第4操作タスクの少なくとも1つの操作タスクに対応する情報フローがホスト情報フローである場合、第2同期インターフェースを呼び出して、第3操作タスクと第4操作タスクを同期するように構成される第3スケジューリングユニット3253を備える。
装置の実施例において、それらは基本的に方法の実施例に対応するので、関連する部分は方法の実施例の説明の部分を参照することができる。上記で説明された装置の実施例は例示的なものに過ぎず、ここで、前記分離部材として説明されたユニットは、物理的に分離されている場合とされていない場合があり、ユニットとして表示された部材は、物理ユニットである場合もそうでない場合もあり、1箇所に配置される場合もあれば、複数のネットワークユニットに分散される場合もある。実際の必要に応じて、その中の一部または全部モジュールを選択して本開示の技術案の目的を実現することができる。当業者は、創造的な努力なしに、理解して実施することができる。
本開示の実施例は、コンピュータプログラムが記憶された不揮発性コンピュータ可読記憶媒体をさらに提供し、前記コンピュータプログラムは、上記の任意のタスクスケジューリング方法を実行するために使用される。
本開示の実施例は、タスクスケジューリング装置をさらに提供し、前記装置は、プロセッサと、プロセッサによって実行可能な命令を記憶するためのメモリと、を備え、前記プロセッサは、前記メモリに記憶された実行可能な命令を呼び出して、上記の任意のタスクスケジューリング方法を実現するように構成される。
図24に示されるように、図24は、一例示的な実施例によるタスクスケジューリング装置2400の構造の概略図である。例えば、装置2400は、タスクスケジューリング装置として提供されることができる。図24を参照すると、装置2400は、1つまたは複数のプロセッサを備える処理コンポーネント2422と、アプリケーションプログラムなど、処理コンポーネント2422によって実行可能な命令を記憶するための、メモリリソースを代表するメモリ2432と、を備える。メモリ2432に記憶されたアプリケーションプログラムは、それぞれが一命令セットに対応する1つまたは複数のモジュールを含み得る。また、処理コンポーネント2422は、命令を実行して上記のタスクスケジューリング方法を実行するように構成される。
装置2400は、装置2400の電源管理を実行するように構成される1つの電源コンポーネント2426と、装置2400をネットワークに接続するように構成される1つの有線または無線ネットワークインターフェース2450と、1つの入力/出力(I/O)インターフェース2458と、をさらに備えることができる。装置2400は、メモリ2432に記憶されたWindows(登録商標) ServerTM、Mac OS XTM、Unix(登録商標)、Linux(登録商標)、FreeBSDTMまたは類似したものなどの操作システムに基づいて操作されることができる。
本開示の実施例は、上記の任意の可能な実施形態における方法を実現するための命令を含むコンピュータプログラムをさらに提供する。
当業者は、明細書を考慮して、本明細書に開示された発明を実施した後に、本開示の他の実施形態を容易に想到し得るであろう。本開示は、本開示のあらゆる変形、応用または適応性変化を網羅することを意図し、これらの変形、応用または適応性変化は、本開示の普通の原理に準拠し、本開示によって開示されない本技術分野における公知知識または従来の技術的手段を含む。明細書と実施例は、例示としてのみ考慮され、本開示の真の範囲及び思想は添付の特許請求の範囲によって示される。
上記は本開示の好ましい実施例に過ぎず、本開示を限定することを意図するものではなく、本開示の精神および原則内で行われるあらゆる修正、同等の置換、改善などは、本開示の保護範囲に含まれるべきである。

Claims (14)

  1. タスクスケジューリング方法であって、
    操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと、
    前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることと
    み、前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、
    前記複数の操作タスクに含まれるM個の通信操作タスクに対して融合処理を実行して、少なくとも1つの併合通信操作タスクを取得することであって、各併合通信操作タスクは、前記M個の通信操作タスクのうちの少なくとも1つの通信操作タスクを含み、Mは、1より大きいか等しい整数であることと、
    前記少なくとも1つの併合通信操作タスクに対応するオペランドおよび前記複数の操作タスクのうちの少なくとも1つの非通信操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと
    を含むことを特徴とする、スクスケジューリング方法。
  2. 前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、
    第2操作タスクが第1操作タスクの書き込みオペランドに対する読み取り操作を含む場合、または前記第2操作タスクが前記第1操作タスクのオペランドに対する書き込み操作を含む場合、前記第2操作タスクが前記第1操作タスクに依存すると決定することをさらに含み、
    前記第1操作タスクおよび前記第2操作タスクは、前記操作タスクキュー内の異なる操作タスクであることを特徴とする、
    請求項1に記載のタスクスケジューリング方法。
  3. 前記操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することは、
    第2操作タスクが第1操作タスクの読み取りオペランドに対する読み取り操作を含む場合、前記第1操作タスクと前記第2操作タスクとの間に依存関係がないと決定することをさらに含むことを特徴とする、
    請求項1または2に記載のタスクスケジューリング方法。
  4. 前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
    前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定することと、
    前記操作タスクキュー内の現在の操作タスクにメモリを割り当てることと、
    前記メモリの割り当てが完了した後、前記現在の操作タスクを前記現在の操作タスクに対応するコンテキストにスケジューリングして実行することと、
    前記スケジューリング順序に応じて、前記現在の操作タスクの次の操作タスクに対するメモリの割り当てを実行することと
    含むことを特徴とする、
    請求項1ないし3のいずれか一項に記載のタスクスケジューリング方法。
  5. 前記複数の操作タスク間の依存関係に基づいて、前記複数の操作タスクのスケジューリング順序を決定することは、
    前記複数の操作タスクのうちの第1操作タスクと、前記複数の操作タスクのうちの第2操作タスクとの間に依存関係がない場合、前記第1操作タスクと前記第2操作タスクを並行して呼び出すと決定すること、および/または
    前記第2操作タスクが前記第1操作タスクに依存する場合、前記第1操作タスクの後に前記第2操作タスクをスケジューリングすると決定すること
    含むことを特徴とする、
    請求項4に記載のタスクスケジューリング方法。
  6. 前記操作タスクキューは、第1操作タスクキューおよび第2操作タスクキューを含み、前記第1操作タスクキューは、前記複数の操作タスクのうちの通信操作タスクを含み、前記第2操作タスクキューは、前記複数の操作タスクのうちの非通信操作タスクを含み、
    前記第1操作タスクキューおよび前記第2操作タスクキューに含まれる操作タスクは、前記複数の操作タスク間の依存関係に基づいて決定されたスケジューリング順序に応じて配列されることを特徴とする、
    請求項1ないしのいずれか一項に記載のタスクスケジューリング方法。
  7. 前記第1操作タスクキューと前記第2操作タスクキューとの間の依存情報を記録することであって、
    前記第1操作タスクキュー内の操作タスクが前記第2操作タスクキュー内の少なくとも1つの操作タスクに依存する場合、または前記第2操作タスクキュー内の操作タスクが前記第1操作タスクキュー内の少なくとも1つの操作タスクに依存する場合、前記依存情報は、前記少なくとも1つの操作タスクのうちの最後の操作タスクの情報を含むことをさらに含み、
    前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
    前記第1操作タスクキューと前記第2操作タスクキューとの間の依存情報に基づいて、前記第1操作タスクキューおよび前記第2操作タスクキュー内の操作タスクをスケジューリングすることを含むことを特徴とする、
    請求項に記載のタスクスケジューリング方法。
  8. メモリ回収操作タスクに対応する優先度を最高に設定することであって、前記第2操作タスクキューは、前記操作タスクキュー内の前記メモリ回収操作タスク以外の前記非通信操作タスクを含むことをさらに含むことを特徴とする、
    請求項またはに記載のタスクスケジューリング方法。
  9. 前記複数の操作タスク間の依存関係を決定する前に、
    前記複数の操作タスクの各操作タスクに対応するコンテキストを決定することであって、前記操作タスクに対応するコンテキストは、抽象リソースおよび情報フローを含むことをさらに含み、
    前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
    前記複数の操作タスクの各操作タスクに対応する前記コンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることを含むことを特徴とする、
    請求項1ないしのいずれか一項に記載のタスクスケジューリング方法。
  10. 前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
    前記複数の操作タスクのうちの少なくとも2つの操作タスク間に依存関係がなく、かつ前記少なくとも2つの操作タスクが異なる抽象リソースに対応する場合、前記少なくとも2つの操作タスクを並行してスケジューリングすることを含むことを特徴とする、
    請求項に記載のタスクスケジューリング方法。
  11. 前記複数の操作タスクの各操作タスクに対応するコンテキストおよび前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングすることは、
    前記複数の操作タスクのうちの第3操作タスクと第4操作タスクとの間に依存関係があり、かつ前記第3操作タスクおよび第4操作タスクに対応する情報フローが両方ともCUDA情報フローである場合、第1同期インターフェースを呼び出して、前記第3操作タスクと前記第4操作タスクを同期することを含むことを特徴とする、
    請求項または10に記載のタスクスケジューリング方法。
  12. タスクスケジューリング装置であって、
    操作タスクキュー内の複数の操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定するように構成される依存関係決定モジュールと、
    前記複数の操作タスク間の依存関係に基づいて、前記操作タスクキュー内の前記複数の操作タスクをスケジューリングするように構成されるスケジューリングモジュールと
    備え、前記依存関係決定モジュールはさらに、
    前記複数の操作タスクに含まれるM個の通信操作タスクに対して融合処理を実行して、少なくとも1つの併合通信操作タスクを取得することであって、各併合通信操作タスクは、前記M個の通信操作タスクのうちの少なくとも1つの通信操作タスクを含み、Mは、1より大きいか等しい整数である、ことと、
    前記少なくとも1つの併合通信操作タスクに対応するオペランドおよび前記複数の操作タスクのうちの少なくとも1つの非通信操作タスクに対応するオペランドに従って、前記複数の操作タスク間の依存関係を決定することと
    を行うように構成されることを特徴とする、スクスケジューリング装置。
  13. コンピュータプログラムが記憶された、不揮発性コンピュータ可読記憶媒体であって、前記コンピュータプログラムが、請求項1ないし11のいずれか一項に記載のタスクスケジューリング方法を実行するために使用されることを特徴とする、揮発性コンピュータ可読記憶媒体。
  14. タスクスケジューリング装置であって、
    プロセッサと、
    プロセッサ実行可能な命令を記憶するためのメモリと
    備え、
    前記プロセッサは、前記メモリに記憶された前記実行可能な命令を呼び出して、請求項1ないし11のいずれか一項に記載のタスクスケジューリング方法を実現するように構成されることを特徴とする、スクスケジューリング装置。
JP2020561765A 2019-03-15 2019-12-11 タスクスケジューリング Active JP7050957B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201910200097.3 2019-03-15
CN201910200097.3A CN111694675B (zh) 2019-03-15 2019-03-15 任务调度方法及装置、存储介质
PCT/CN2019/124494 WO2020186836A1 (zh) 2019-03-15 2019-12-11 任务调度

Publications (2)

Publication Number Publication Date
JP2021520578A JP2021520578A (ja) 2021-08-19
JP7050957B2 true JP7050957B2 (ja) 2022-04-08

Family

ID=72475505

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020561765A Active JP7050957B2 (ja) 2019-03-15 2019-12-11 タスクスケジューリング

Country Status (7)

Country Link
US (1) US11347546B2 (ja)
JP (1) JP7050957B2 (ja)
KR (1) KR20200136468A (ja)
CN (1) CN111694675B (ja)
SG (1) SG11202010574PA (ja)
TW (1) TW202036306A (ja)
WO (1) WO2020186836A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114567520B (zh) * 2020-11-26 2023-06-02 华为技术有限公司 实现集合通信的方法、计算机设备和通信系统
CN112463334B (zh) * 2020-12-04 2023-08-18 苏州浪潮智能科技有限公司 一种训练任务排队原因分析方法、系统、设备以及介质
CN112612615B (zh) * 2020-12-28 2022-12-06 中孚安全技术有限公司 基于多线程内存分配和上下文调度的数据处理方法及系统
US20220269528A1 (en) * 2021-02-24 2022-08-25 Huawei Technologies Co., Ltd. System, method and apparatus for intelligent heterogeneous computation
CN113220480B (zh) * 2021-04-29 2023-03-10 西安易联趣网络科技有限责任公司 分布式的数据任务跨云调度系统及方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006228241A (ja) 1998-08-24 2006-08-31 Advanced Micro Devices Inc プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129390B (zh) * 2011-03-10 2013-06-12 中国科学技术大学苏州研究院 片上多核计算平台的任务调度系统及进行任务并行化方法
CN102354289B (zh) * 2011-09-21 2012-10-10 苏州大学 一种并发事务的调度方法和相关装置
CN102360309B (zh) * 2011-09-29 2013-12-18 中国科学技术大学苏州研究院 片上多核异构系统的调度系统与调度执行方法
WO2013177765A1 (en) 2012-05-30 2013-12-05 Intel Corporation Runtime dispatching among heterogeneous group of processors
JP6371870B2 (ja) * 2014-06-30 2018-08-08 アマゾン・テクノロジーズ・インコーポレーテッド 機械学習サービス
CN104156264B (zh) 2014-08-01 2017-10-10 西北工业大学 一种基于多gpu的基带信号处理任务并行实时调度方法
CN105637482A (zh) * 2014-09-15 2016-06-01 华为技术有限公司 基于gpu的数据流处理方法和装置
CN104965761B (zh) 2015-07-21 2018-11-02 华中科技大学 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法
US10437649B2 (en) * 2016-03-11 2019-10-08 Intel Corporation Task mapping for heterogeneous platforms
CN106227507B (zh) * 2016-07-11 2019-10-18 北京深鉴智能科技有限公司 计算系统及其控制器
CN107766144A (zh) * 2016-08-17 2018-03-06 中兴通讯股份有限公司 一种任务调度方法、装置及系统
CN106648846A (zh) * 2016-09-23 2017-05-10 郑州云海信息技术有限公司 一种改进的异构多核任务调度的方法
CN110298443B (zh) * 2016-09-29 2021-09-17 中科寒武纪科技股份有限公司 神经网络运算装置及方法
CN108021563B (zh) * 2016-10-31 2021-09-07 华为技术有限公司 一种指令间数据依赖的检测方法和装置
US10503671B2 (en) * 2016-12-29 2019-12-10 Oath Inc. Controlling access to a shared resource
JP6753521B2 (ja) * 2017-04-27 2020-09-09 日本電気株式会社 計算資源管理装置、計算資源管理方法、及びプログラム
WO2018223330A1 (en) * 2017-06-08 2018-12-13 Alibaba Group Holding Limited Method and apparatus for distributed machine learning system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006228241A (ja) 1998-08-24 2006-08-31 Advanced Micro Devices Inc プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法

Also Published As

Publication number Publication date
JP2021520578A (ja) 2021-08-19
CN111694675B (zh) 2022-03-08
WO2020186836A1 (zh) 2020-09-24
SG11202010574PA (en) 2020-11-27
US20210042155A1 (en) 2021-02-11
TW202036306A (zh) 2020-10-01
US11347546B2 (en) 2022-05-31
CN111694675A (zh) 2020-09-22
KR20200136468A (ko) 2020-12-07

Similar Documents

Publication Publication Date Title
JP7050957B2 (ja) タスクスケジューリング
US10412021B2 (en) Optimizing placement of virtual machines
JP5643190B2 (ja) 局所的集合内のタスクを汎用的集合に割り当てるための方法及びコンピュータ読取可能記録媒体
US8155134B2 (en) System-on-chip communication manager
KR101827369B1 (ko) 데이터 스트림 분산 병렬 처리 서비스 관리 장치 및 방법
US20040054997A1 (en) Task definition for specifying resource requirements
JP2011521353A (ja) スケジューラーにおけるスケジューリングコレクション
US20110197196A1 (en) Dynamic job relocation in a high performance computing system
US9311270B2 (en) Scheduler and scheduling method for reconfigurable architecture
JP2007188523A (ja) タスク実行方法およびマルチプロセッサシステム
US20100269119A1 (en) Event-based dynamic resource provisioning
AU2011229395B2 (en) Dual mode reader writer lock
US10289329B2 (en) Burst buffer dynamic logical volume sizing in high performance computing environment
CN113296957B (zh) 一种用于动态分配片上网络带宽的方法及装置
KR101558807B1 (ko) 호스트 프로세서와 협업 프로세서 간에 협업 처리를 위한 프로세서 스케줄링 방법 및 그 방법을 수행하는 호스트 프로세서
Alzahrani et al. adCFS: Adaptive completely fair scheduling policy for containerised workflows systems
CN113742646A (zh) 将单语言复合函数编译为单个实体
US20180159720A1 (en) Dynamic agent deployment in a data processing system
JP2015185003A (ja) スケジューラ装置及びそのスケジューリング方法、演算処理システム、並びにコンピュータ・プログラム
CN114285784B (zh) 数据传输和管道搭建方法、装置、计算设备和存储介质
CN116841751B (zh) 一种多任务线程池的策略配置方法、装置和存储介质
JP2011198063A (ja) データ入出力制御方法,データ入出力制御プログラムおよびデータ入出力制御装置
JP2009193260A (ja) ストレージシステム、ストレージ装置、優先度制御装置および優先度制御方法
Cao Performance Optimization of Big Data Computing Workflows for Batch and Stream Data Processing in Multi-Clouds
CN116680296A (zh) 一种基于单机的大规模图数据处理系统

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201102

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201102

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220301

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220307

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220329

R150 Certificate of patent or registration of utility model

Ref document number: 7050957

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150