JP7122299B2 - 処理タスクを実行するための方法、装置、デバイス、および記憶媒体 - Google Patents

処理タスクを実行するための方法、装置、デバイス、および記憶媒体 Download PDF

Info

Publication number
JP7122299B2
JP7122299B2 JP2019238897A JP2019238897A JP7122299B2 JP 7122299 B2 JP7122299 B2 JP 7122299B2 JP 2019238897 A JP2019238897 A JP 2019238897A JP 2019238897 A JP2019238897 A JP 2019238897A JP 7122299 B2 JP7122299 B2 JP 7122299B2
Authority
JP
Japan
Prior art keywords
processing unit
queue
processing
operations
type
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
JP2019238897A
Other languages
English (en)
Other versions
JP2021043933A (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.)
Baidu com Times Technology Beijing Co Ltd
Kunlunxin Technology Beijing Co Ltd
Baidu USA LLC
Original Assignee
Baidu com Times Technology Beijing Co Ltd
Kunlunxin Technology Beijing Co Ltd
Baidu USA LLC
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 Baidu com Times Technology Beijing Co Ltd, Kunlunxin Technology Beijing Co Ltd, Baidu USA LLC filed Critical Baidu com Times Technology Beijing Co Ltd
Publication of JP2021043933A publication Critical patent/JP2021043933A/ja
Application granted granted Critical
Publication of JP7122299B2 publication Critical patent/JP7122299B2/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • G06F9/4837Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
    • 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
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Description

本開示の実施形態は、主に処理タスクに関し、より具体的には、複数の処理ユニットにおいて処理タスクを分散方式で実行するための方法、装置、デバイス、およびコンピュータ記憶媒体に関する。
コンピュータ技術の発展に伴い、現在、分散処理方式が登場している。複数の処理ユニットを提供し、分散方式で複数の処理ユニットにおいて処理タスクを実行することができる。しかし、処理タスクが複雑になるにつれて、大量の処理ユニットが協調して動作する必要がある。このとき、複数の処理ユニットをどのようにスケジューリングして処理タスクをより効率的に処理するかは、1つの技術的難題となる。
本開示の例示的な実施形態によれば、処理タスクを実行するための技術的解決手段が提供される。
本開示の第1の態様において、処理タスクを実行する方法を提供する。処理タスクの複数の部分のうちの1つが複数の処理ユニットのうちの1つの処理ユニットにおいて実行される動作のセットを含み、動作のセットは第1のタイプの動作と第2のタイプの動作とを含む。該方法において、第1のタイプの動作を実行するための第1のキューと、第2のタイプの動作を実行するための第2のキューとをそれぞれ作成する。処理タスクの定義に基づいて、処理ユニットにおいて実行されるべき動作のセットと、複数の処理ユニットのうちの他の処理ユニットにおいて実行されるべき動作のセットとの間の依存関係を取得する。依存関係に基づいて前記処理ユニットにおいて第1のキューにおける動作と第2のキューにおける動作とをそれぞれ実行する。
本開示の第2の態様において、処理タスクを実行する装置を提供する。処理タスクの複数の部分のうちの1つが複数の処理ユニットのうちの1つの処理ユニットにおいて実行される動作のセットを含み、動作のセットは第1のタイプの動作と第2のタイプの動作とを含む。該装置は、第1のタイプの動作を実行するための第1のキューと、第2のタイプの動作を実行するための第2のキューとをそれぞれ作成するように構成された作成モジュールと、処理タスクの定義に基づいて、処理ユニットにおいて実行されるべき動作のセットと、複数の処理ユニットのうちの他の処理ユニットにおいて実行されるべき動作のセットとの間の依存関係を取得するように構成された取得モジュールと、依存関係に基づいて処理ユニットにおいて第1のキューにおける動作と第2のキューにおける動作とをそれぞれ実行するように構成された実行モジュールと、を含む。
本開示の第3の態様において、処理タスクを実行する設備を提供する。該設備は、1つまたは複数のプロセッサと、1つまたは複数のプログラムを格納するための記憶装置であって、1つまたは複数のプログラムが1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに本開示の第1態様に記載の方法を実施させる記憶装置と、を備える。
本開示の第4の態様において、コンピュータプログラムが格納されているコンピュータ可読記憶媒体であって、該プログラムがプロセッサによって実行されると、本開示の第1態様に記載の方法を実施するコンピュータ可読記憶媒体を提供する。
発明の概要に記載されたものは、本開示の実施形態を限定するためのかなめまたは重要な特徴ではなく、本開示の範囲を制限するためのものではないことを理解されたい。本開示の他の特徴は、以下の説明により容易に理解できるであろう。
図面を踏まえて以下の詳細な説明を参照すると、本開示の各実施形態の上記と他の特徴、利点および方法がより明らかになる。図面において、同一または類似の符号は、同一または類似の要素を表す。
図1Aは、処理タスクが複数の処理ユニットによって実行されることを概略的に示すブロック図である。 図1Bは、処理タスクが複数の処理ユニットによって実行された後の処理結果を概略的に示すブロック図である。 図2は、本開示の例示的な実施形態に係る、処理タスクを実行するための方法を概略的に示すブロック図である。 図3は、本開示の例示的な実施形態に係る、処理タスクを実行するための方法を概略的に示すフローチャートである。 図4は、本開示の例示的な実施形態に係る、複数の処理ユニット間のデータ配信を概略的に示すブロック図である。 図5は、本開示の例示的な実施形態に係る、複数の処理ユニットにおいて累積動作を実行することを概略的に示すブロック図である。 図6は、本開示の例示的な実施形態に係る、処理ユニットにコードをロードすることを概略的に示すブロック図である。 図7は、本開示の例示的な実施形態に係る、コピーキューにおけるコピー動作の完了後にハードウェア割り込みをトリガすることを概略的に示すブロック図である。 図8は、本開示の例示的な実施形態に係る、累積キューにおける累積動作の完了後にハードウェア割り込みをトリガすることを概略的に示すブロック図である。 図9は、本開示の例示的な実施形態に係る、処理タスクを実行するための装置を概略的に示すブロック図である。 図10は、本開示の様々な実施形態を実施できるコンピューティングデバイスを示すブロック図である。
以下、本開示の実施形態について図面を参照しながらより詳細に説明する。本開示のいくつかの実施形態は図面に示されているが、本開示は様々な形態で実施されることができ、ここで説明された実施形態に限定されるものと解釈されるべきではない。本開示の内容をより詳細かつ完全に理解するために、これらの実施形態が提供されたわけである。本開示の図面および実施形態は、例示的な役割のみに使用され、本開示の保護範囲を制限するためのものではないことを理解されたい。
本開示の実施形態の説明では、用語「…を含む」およびそれに類似する用語は、「…を含むがそれらに限定されない」という非限定の表現として理解されるべきである。用語「…に基づいて」は、「少なくとも部分的に…に基づいて」と理解されるべきである。用語「1つの実施形態」または「該実施形態」は、「少なくとも1つの実施形態」と理解されるべきである。用語「第1の」、「第2の」などは、異なるまたは同一の対象を指すことができる。以下では、他の明確か暗黙的な定義も含み得る。
本開示のコンテキストでは、処理タスクは、処理対象データに対して累積動作を行うためのオールリデュース(All Reduce)タスクであり得る。複数の処理ユニット(例えば、GPU、AI専用チップなど)において処理タスクを実行することができる。例えば、複数の処理ユニットの数をnで表すことができる。説明を容易にするために、本開示のコンテキストでは、4つの処理ユニットにおいて処理タスクを実行する例を挙げて説明する。nの値はより大きいか小さい整数であってもよいことが言うまでもない。
現在、オールリデュースを実行するための複数の技術的解決手段が提供されており、ループベースのオールリデュース方式では、処理対象データをn分割することができる。また、ループ状に接続されたn個の処理ユニットにおいてn個のデータをそれぞれ処理する。各処理ユニットは、自身の累積結果をループ内の次の処理ユニットに送信し、ループ内の前の処理ユニットから累積結果を受信する。
以下では、まず、図1Aと図1Bを参照しながら、本開示の適用環境について説明する。図1Aは、処理タスクが複数の処理ユニットによって実行されるブロック図100Aを模式的に示す。図1Aに示されるように、ループ状に接続された4つの処理ユニット110、120、130、140を用いて処理タスクを実行する。ここで、処理すべき処理対象データをMと仮定し、データMを4分割することができる。このとき、各データをM/4とする。各処理ユニットに処理対象データのそれぞれの処理対象データM/4をそれぞれ送信する。
各処理ユニットのデータは平均で4分割され、i番目の処理ユニットはi番目のデータを次の処理ユニットにコピーする。各処理ユニットは、前の処理ユニットのデータを受信すると、ローカルの対応するデータと累積し、累積結果を次の処理ユニットにコピーする。次のラウンドでは、各処理ユニットは、前の処理ユニットの累積結果を待ち、受信した累積結果とローカルの対応するデータとを累積し、新たな累積結果を次の処理ユニットにコピーする。上記のステップは、各処理ユニットが一部分の完全な累積結果を有するまで繰り返される。次に、各処理ユニットは、自身の一部分の完全な累積結果を次の処理ユニットにコピーし、次の処理ユニットは、該部分の完全な累積結果を受信した後、また次の処理ユニットにコピーする。上記のステップは、各処理ユニットがすべての完全な累積結果を有するまで繰り返される。
図1Bは、処理タスクが複数の処理ユニットによって実行された後の処理結果のブロック図を模式的に示す。上述したオールリデュースタスクが実行された後、各処理ユニット110、120、130、140のいずれもすべての完全な累積結果を有する。上述したプロセスを実行するために、n個の処理ユニットが協調して動作するように制御するためには、データの累積、コピーおよび受信をスケジューリングするための大量の通信リソースが必要であり、スケーラビリティが悪い。
現在、両方向のループベースのオールリデュース方式も提案されており、該技術的解決手段では複数の処理ユニットを縦横2方向のループに分割している。しかしながら、この方式の各ステップ間では、より多くの通信オーバヘッドが必要であり、大規模なデータ処理に採用することは困難である。したがって、オールリデュースの処理タスクをより効率的に実施できる方式を提供することが望ましい。
上記の技術的解決手段の欠陥を少なくとも部分的に解決するために、本開示の例示的な実施形態によって、処理タスクを実行するための技術的解決手段が提案されている。具体的には、本開示の例示的な実施形態は、処理ユニットにおいて異なるタイプの動作に対応する動作キューを作成できる動作キューの概念を提案している。そして、1つの処理ユニットにおいて実行される複数の動作と、他の処理ユニットにおいて実行される複数の動作との依存関係に基づいて、各動作キューにおける動作を処理ユニットにおいてそれぞれ実行することができる。これにより、処理タスクにおける該処理ユニットに割り当てられた部分を完了させることができる。以下では、本開示のプロセスについて、図2を参照して概説する。
図2は、本開示の例示的な実施形態による処理タスクを実行するためのブロック図200を概略的に示す。説明を簡単にするために、図2は、複数の処理ユニットのうちの2つの処理ユニットにおける処理のみを模式的に示している。処理ユニットのセットがn個の処理ユニットを含む場合、該処理タスク210をn個の部分に分割することができる。図2に示されるように、処理タスク210は、複数の部分220、230などを含み、1つの処理ユニットを用いて処理タスク210の1つの部分を実行することができる。例えば、処理ユニット110により部分220を処理することができ、処理ユニット120により部分230を処理することができる。なお、以下では、説明を簡単にするために、処理ユニット110による部分220の実行のみを例に挙げて説明する。処理ユニット120による部分230の実行プロセスも同様である。
ここで、各部分は、第1のタイプの動作と、第2のタイプの動作とを含む。例えば、部分220は、第1のタイプ222の動作と第2のタイプ224の動作とを含み得る。処理ユニット110においては、第1のタイプ222の動作を実行するための第1のキュー226と、第2のタイプ224の動作を実行するための第2のキュー228とを作成することができる。ここでは、動作のタイプに応じて、各動作を相応するキューにおいて各動作の実行順に従ってソートすることができる。
そして、処理タスク210の定義に基づいて、処理ユニット110において実行されるべき動作のセットと、複数の処理ユニットのうちの他の処理ユニット120において実行されるべき動作のセットとの依存関係240を取得することができる。ここで、依存関係240とは、各動作を実行する順序である。例えば、処理ユニット110において実行されるべき動作の場合、データブロックを次の処理ユニットにコピーするコピー動作は、他の動作に依存しなくてもよい。一方、累積動作は、前の処理ユニットがデータブロックを処理ユニット110にコピーしたことに依存する。依存関係240を取得した場合、依存関係240に基づいて、処理ユニット110において第1のキュー226における動作と第2のキュー228における動作とをそれぞれ実行することができる。
同様に、処理ユニット120の場合、処理ユニット120において実行されるようになった部分230は、第1のタイプ232の動作と、第2のタイプ234の動作とを含み得る。また、各タイプの動作を管理するために、第1のキュー236と第2のキュー238とをそれぞれ作成することができる。次に、依存関係240に基づいて、処理ユニット120において第1のキュー236における動作と第2のキュー238における動作とをそれぞれ実行することができる。本開示の技術的解決手段を採用し、キューと依存関係に基づいて複数の異なるタイプの動作の実行をスケジューリングすることにより、オールリデュースの並列性を大きく向上させることができ、実行期間中の様々な時間とリソースのオーバヘッドを低減することができる。さらに、本開示の技術的解決手段は、既存のオールリデュース方法と組み合わせることができる。
以下、図3を参照しながら、本開示の例示的な実施形態の詳細について説明する。図3は、本開示の例示的な実施形態に係る、処理タスクを実行するための方法300のフローチャートを概略的に示す。ここで、処理タスク210における部分220は、処理ユニット110において実行される。ブロック310では、処理ユニットにおいて第1のタイプの動作を実行するための第1のキューと、第2のタイプの動作を実行するための第2のキューとをそれぞれ作成することができる。
本開示の例示的な実施形態によれば、処理タスク210は、オールリデュースタスクであってもよく、複数の処理ユニットは、ループ状に接続されている。例えば、複数の処理ユニット110、120、130、140は、図1Aに示されるように、前後順次ループ状に接続されていてもよい。また、例えば、複数の処理ユニットは縦横2方向に分割され、それぞれ2方向のループにおいて複数の処理ユニットが接続されている。
処理タスク210によって処理されるべき処理対象データを複数のデータブロックに分割することができることは言うまでもない。例えば、処理タスク210がn個の処理ユニットによって実行されると仮定すると、処理対象データをn個のデータブロックに分割し、かつ対応するデータブロックを各処理ユニットにそれぞれ送信することができる。このとき、各処理ユニットにおいて、1つのデータブロックを受信することができ、該データブロックは、処理タスク210の処理対象データのうち、処理ユニットにおいて処理されるべき部分である。
ここでは、説明を簡単にするために、処理対象データをすべてMとし、4つの処理ユニットを使用する場合、処理対象データを4つのデータブロックに分割することができる。このとき、処理対象のデータブロックを処理ユニット110、120、130、140にそれぞれ配信することができる。各処理ユニットにおいて、受信したデータを4分割することができる。このとき、処理ユニット110にはデータA1、B1、C1、D1が含まれることができ、処理ユニット120にはデータA2、B2、C2、D2が含まれることができ、他の処理ユニットも同様である。以下、各処理ユニットにおける動作の例について説明する。図4は、本開示の例示的な実施形態に係る、複数の処理ユニット間のデータ配信のブロック図400を概略的に示す。例えば、以下の表1は、処理ユニット120において実行される動作の一例を示しており、この時点では、処理ユニット120はデータA2、B2、C2、D2を有している。
Figure 0007122299000001
表1に示されるように、1列目は動作の識別子を示し、2列目は動作タイプを示し、3列目が動作内容を示している。表1においては、処理ユニット120で実行されるべき動作の一部のみが模式的に示されており、動作2以降は、累積動作とコピー動作が累積結果(A1+A2+A3+A4)を得るまで交互に行われることができる。ここでの累積結果(A1+A2+A3+A4)は、一部分の完全な累積結果にすぎないため、各処理ユニットは自身のローカルの一部分の完全な累積結果を次の処理ユニットにコピーする必要があり、次の処理ユニットは、各処理ユニットのいずれもすべての完全な累積結果を有するまで繰り返してコピーを実行することが言うまでもない。
処理ユニット120において実行される動作のセットは、コピー動作と累積動作とを含むことができる。このとき、処理ユニット120において実行される動作のタイプに応じて、第1のキューと第2のキューとをそれぞれ作成することができる。具体的には、第1のキューは、次の表2に示されるような累積動作を含むことができ、第2のキューは、次の表3に示されるようなコピー動作を含むことができる。
Figure 0007122299000002
Figure 0007122299000003
以下では、図4と図5をそれぞれ参照しながら、コピー動作と累積動作について詳しく説明する。ここにいうコピー動作は、処理ユニットにおける累積結果/データブロックを該処理ユニットの後に接続された次の処理ユニットにコピーすることができることは言うまでもない。処理ユニット110の場合、矢印410に示されるように、該処理ユニット110は、データA1を処理ユニット120にコピーして副本とすることができる。処理ユニット120の場合、矢印420に示されるように、該処理ユニット120は、データB2を処理ユニット130にコピーして副本とすることができる。他の処理ユニットの場合も、同様のコピー動作を実行することができる。図4には示されていないが、コピー動作の対象は、処理ユニットにおける累積結果であってもよい。
本開示の例示的な実施形態によれば、累積動作とは、処理ユニットにおけるデータブロックを、処理ユニットの前に接続された前の処理ユニットから該処理ユニットにコピーされた累積結果に累積して、該処理ユニットの累積結果とすることを意味する。図5は、本開示の例示的な実施形態に係る、複数の処理ユニットにおいて累積動作を実行するためのブロック図500を概略的に示す。図5は、図4のコピー動作後の処理ユニット120の状態を示しており、この時点で、処理ユニット120においてはデータA1の副本を有している。処理ユニット120においては、データA1の副本とデータA2に基づいて、累積結果510(すなわち、A1+A2)を確定することができる。同様に、他の処理ユニットにおいては、他のデータの累積結果を確定することもできる。
本開示の例示的な実施形態によれば、コピー動作と累積動作を実行するために、相応するタイプの動作を実行するためのコードを処理ユニットにそれぞれロードすることができる。図6は、本開示の例示的な実施形態に係る、処理ユニットにコードをロードするためのブロック図600を概略的に示す。図6に示されるように、ホスト410は、各処理ユニット110、120、130、140に接続されることができる。ここで、ホスト410は、累積タイプの動作を実行するための第1のコードと、コピー動作を実行するための第2のコードとを、各処理ユニット内のメモリにそれぞれロードすることができる。
各処理ユニットにコードをロードするプロセスが同様であることは、言うまでもない。説明を簡略化するために、以下では、処理ユニット110に対するロードプロセスのみを説明する。本開示の例示的な実施形態によれば、累積動作を実行するための第1のコード612と、コピー動作を実行するための第2のコード614とを、処理ユニット110のメモリ610にそれぞれロードすることができる。
第1のコード612と第2のコード614がメモリ610にロードされた後、処理ユニット110は、コードに応じた動作を迅速に実行することができる。本開示の例示的な実施形態によれば、処理ユニット110の応答速度を向上させるために、第1のコード612と第2のコード614のうちの少なくともいずれかを処理ユニット110のメモリ610に保持することができる。本開示の例示的な実施形態によれば、データコピーとデータ累積のコードを予め各処理ユニットにロードし、各処理ユニットのメモリに常駐させることにより、ロード/リリースを繰り返すことによる余分な時間やリソースのオーバヘッドを回避することができる。
このとき、第1のコード612に基づいて第1のキューにおける動作を実行することができ、第2のコード614に基づいて第2のキューにおける動作を実行することができる。コピー動作は処理ユニット間の帯域リソースを占用する必要があり、累積動作は各処理ユニット内の計算リソースを占用することになるため、依存関係のない動作の場合、2つのキューにおける動作を並列に実行することができることは、言うまでもない。
ブロック320では、処理タスク210の定義に基づいて、複数の動作間の依存関係を確定することができる。処理ユニット110において実行されるべき動作のセットと、複数の処理ユニットのうちの他の処理ユニットにおいて実行されるべき動作のセットとの依存関係を取得することができる。以下では、処理ユニット120において実行される複数の動作のみを例に挙げて、依存関係の取得方法について説明する。上記の例に続けて、処理ユニット110、120、130、140に4つのデータブロックをそれぞれ送信したと仮定する。オールリデュースのプロセスから分かるように、各動作間の依存関係を表4の最後の列に示すことができる。
Figure 0007122299000004
図3に戻り、ブロック330では、依存関係に基づいて、処理ユニットにおいて第1のキューにおける動作と第2のキューにおける動作とをそれぞれ実行する。ハードウェア割り込み方式で、ある特定の動作を実行する依存関係が満たされたことを処理ユニットに通知し、さらに、該処理ユニットをトリガして該特定の動作を実行させることができることを理解されたい。本開示の例示的な実施形態によれば、処理ユニットにおいて第1のキューと第2のキューのいずれかにおける動作が完了したと判断された場合、処理ユニットのハードウェア割り込みを利用して他の処理ユニットに通知する。
本開示の例示的な実施形態を利用して、処理ユニットのハードウェア割り込みに基づいてキューにおけるタスクをスケジューリングし、処理ユニット自身がタスク実行の優先順位を確保し、ホストとの不必要な通信を回避する。本開示の技術的解決手段を採用することにより、オールリデュースの並列効率を大幅に向上させ、実行中の様々な時間とリソースのオーバヘッドを低減することができる。以下では、図7と図8をそれぞれ参照しながら、如何にハードウェア割り込みに基づいて通知するかについて説明する。
図7は、本開示の例示的な実施形態に係る、コピーキューにおける動作の完了後にハードウェア割り込みをトリガするブロック図700を概略的に示す。図7は、処理ユニット120に対する、複数のコピー動作を含むことができるコピーキュー710を示している。図7に示されるコピーキュー710におけるコピー動作712は、表1の動作1を表す。すなわち、処理ユニット120におけるデータB2を次の処理ユニット130にコピーする。表4の依存関係から分かるように、該動作は他の動作に依存しないため、直接実行できる。
さらに、依存関係から分かるように、次の処理ユニット130における累積動作はコピー動作712に依存するため、コピー動作712が完了した後に、ハードウェア割り込み714を生成することにより、相応する累積動作を実行するように次の処理ユニット130に通知する(716)ことができる。次の処理ユニット130においては、前の処理ユニット120からのハードウェア割り込み714を受信すると、累積動作(すなわち、受信したデータB2と自身のデータブロックB3とを累積すること)を実行することができる。
本開示の例示的な実施形態によれば、処理ユニットと次の処理ユニットはキャッシュ領域を共有するため、コピー動作を実施するために処理ユニットからキャッシュ領域に累積結果をコピーすることができる。例えば、上述した処理ユニット120と処理ユニット130との間に共有キャッシュ領域がある場合には、処理ユニット120は該キャッシュ領域にデータをコピーすることもでき、処理ユニット130は該キャッシュ領域からデータを読み取ることもできる。なお、図7は、コピーキュー710における1つのコピー動作712が実行された後にハードウェア割り込み714を生成する例のみを詳細に示しているが、他のコピー動作が実行された後にも同様に、相応する累積動作を実行するように次の処理ユニットに通知することができることは、言うまでもない。
本開示の例示的な実施形態によれば、処理ユニットにおいて第1のキューにおける1つの累積動作が実行された場合、ハードウェア割り込みに基づいて、第2のキューにおける次のコピー動作を実行するように前の処理ユニットに通知することができる。以下では、図8を参照して、詳しく説明する。図8は、本開示の例示的な実施形態に係る、累積キューにおける累積動作の完了後にハードウェア割り込みをトリガするブロック図800を概略的に示す。図8は、処理ユニット120に対する、複数のコピー動作を含むことができる累積キュー810を示している。図8に示される累積キュー810における累積動作712は、表1の動作2を表す。すなわち、処理ユニット110から受信したデータA1とローカルのデータA2とを累積することにより、累積結果(A1+A2)を得る。該動作は前の処理ユニット110がデータA1を処理ユニット120にコピーしたことに依存するため、処理ユニット120が処理ユニット110からのハードウェア割り込みを受信した場合、累積動作812を開始することができる。
さらに、累積動作812の依存関係から分かるように、前の処理ユニット110が次の累積結果を処理ユニット120にコピーするコピー動作は、該累積動作812に依存するため、累積動作812が完了した後に、ハードウェア割り込み814を生成することにより、後の累積結果を処理ユニット120にコピーするように前の処理ユニット110に通知する(816)ことができる。前の処理ユニット110においては、処理ユニット120からのハードウェア割り込み814を受信すると、処理ユニット110はコピー動作を実行することができる。
本開示の例示的な実施形態によれば、コピー動作と累積動作は帯域リソースと計算リソースをそれぞれ使用するため、実行されるべきコピー動作と累積動作をそれぞれコピーキューと累積キューにより記憶することで、2つのタイプの動作によるリソースの奪い合いを回避することができる。これにより、並列実行の可能性を高めることができる。さらに、ホストが各処理ユニットの実行をスケジューリングするか、またはポーリング技術を用いて依存関係が満たされているかどうかを確認し続けるような技術的解決手段と比較して、ハードウェア割り込み方式を用いて依存関係が満たされていることを通知することは、スケジューリング作業の効率を大幅に向上でき、動作のセットの実行効率を向上させることができる。
本開示の例示的な実施形態によれば、処理ユニットにおいて第1のキューと第2のキューにおけるすべての動作が実行されていると判断された場合、処理ユニットが処理タスクの部分を実行したことを示すメッセージを送信することができる。本開示の例示的な実施形態では、処理タスクを実行する具体的なプロセスは、1つの処理ユニットにおいて実行されるプロセスのみを例に挙げて説明したが、複数の処理ユニットのうちの他の処理ユニットにおいて実行される動作も同様であることは、言うまでもない。上述した方法300をすべての複数の処理ユニットにおいて並列的に実行することにより、各処理ユニットが処理タスクのうち、自身に割り当てられた一部分のタスクを実行する効率を向上させることができ、全体的な処理タスクの実行効率を向上させることができる。
タスクを処理する方法300の複数の実施形態は、上記で詳細に説明された。本開示の例示的な実施形態によれば、処理タスクを実行するための装置も提供される。以下では、図9を参照して詳細に説明する。図9は、本開示の例示的な実施形態に係る、処理タスクを実行するための装置900のブロック図を概略的に示す。処理タスクの複数の部分のうちの1つの部分は、複数の処理ユニットのうちの1つの処理ユニットにおいて実行される動作のセットを含み、動作のセットは、第1のタイプの動作と第2のタイプの動作とを含む。図9に示されるように、該装置900は、第1のタイプの動作を実行するための第1のキューと、第2のタイプの動作を実行するための第2のキューとをそれぞれ作成するように構成された作成モジュール910と、処理タスクの定義に基づいて、処理ユニットにおいて実行されるべき動作のセットと、複数の処理ユニットのうちの他の処理ユニットにおいて実行されるべき動作のセットとの間の依存関係を取得するように構成された取得モジュール920と、依存関係に基づいて処理ユニットにおいて第1のキューにおける動作と第2のキューにおける動作とをそれぞれ実行するように構成された実行モジュール930と、を含む。
本開示の例示的な実施形態によれば、該装置900は、第1のタイプの第1の動作のセットを実行するための第1のコードと、第2のタイプの第2の動作のセットを実行するための第2のコードとをそれぞれ処理ユニットにロードするように構成されたロードモジュールをさらに含む。本開示の例示的な実施形態によれば、実行モジュール930は、第1のコードに基づいて第1のキューにおける動作を実行するように構成された第1の実行モジュールと、第2のコードに基づいて第2のキューにおける動作を実行するように構成された第2の実行モジュールと、を含む。
本開示の例示的な実施形態によれば、該装置900は、処理ユニットのメモリに第1のコードと第2のコードのうちの少なくともいずれかをそれぞれ保持するように構成された保持モジュールをさらに含む。
本開示の例示的な実施形態によれば、該装置900は、処理ユニットにおいて、処理タスクの処理対象データのうちの、処理ユニットにおいて処理されるべき、複数の処理ユニットの数に応じて処理対象データを分割して得られたデータブロックを受信するように構成された受信モジュールをさらに含む。
本開示の例示的な実施形態によれば、実行モジュール930は、処理ユニットにおいてデータブロックに対して第1のキューにおける動作と第2のキューにおける動作とをそれぞれ実行するように構成されたデータ処理モジュールをさらに含む。
本開示の例示的な実施形態によれば、処理タスクはオールリデュースタスクであり、複数の処理ユニットはループ状に接続されている。
本開示の例示的な実施形態によれば、第1の動作のセットは、処理ユニットの前に接続された前の処理ユニットから処理ユニットにコピーされた累積結果に、処理ユニットにおけるデータブロックを累積して、処理ユニットの累積結果とするための累積動作を含む。
本開示の例示的な実施形態によれば、第2の動作のセットは、処理ユニットの後に接続された次の処理ユニットに、処理ユニットにおけるデータブロックと累積結果のうちの少なくともいずれかをコピーするためのコピー動作を含む。
本開示の例示的な実施形態によれば、実行モジュール930は、処理ユニットにおいて第1のキューと第2のキューのいずれかのキューにおける動作が完了したことに対応して、処理ユニットのハードウェア割り込みを利用して他の処理ユニットに通知するように構成された通知モジュールを含む。
本開示の例示的な実施形態によれば、通知モジュールは、処理ユニットにおいて第1のキューにおける1つの累積動作が実行されたことに対応して、ハードウェア割り込みに基づいて、第2のキューにおける次のコピー動作を実行するように前の処理ユニットに通知するように構成された第1の通知モジュールを含む。
本開示の例示的な実施形態によれば、通知モジュールは、処理ユニットにおいて第2のキューにおける1つのコピー動作が実行されたことに対応して、ハードウェア割り込みに基づいて、第1のキューにおける次の累積動作を実行するように次の処理ユニットに通知するように構成された第2の通知モジュールを含む。
本開示の例示的な実施形態によれば、処理ユニットと次の処理ユニットはキャッシュ領域を共有し、装置は処理ユニットからキャッシュ領域にデータブロックと累積結果のうちの少なくともいずれかをコピーするように構成されたコピーモジュールをさらに含む。
本開示の例示的な実施形態によれば、装置は処理ユニットにおいて第1のキューと第2のキューにおける動作がすべて実行されたと判断されたことに対応して、処理ユニットが処理タスクのうちの部分を実行したことを報告するように構成された報告モジュールをさらに含む。
図10は、本開示の様々な実施形態を実施できるコンピューティングデバイス1000のブロック図を示す。デバイス1000は、図3に説明された方法の実施に使用され得る。図に示されたように、デバイス1000は、中央処理ユニット(CPU)1001を備えている。これは、読み取り専用メモリ(ROM)1002に記憶されたコンピュータプログラム命令、または記憶ユニット1008からランダムアクセスメモリ(RAM)1003にロードされたコンピュータプログラム命令に基づいて、様々な適切な動作と処理を実行することができる。RAM1003には、デバイス1000の動作に必要な様々なプログラムとデータを記憶することもできる。CPU1001、ROM1002、RAM1003はバス1004を介して接続されている。バス1004には、入出力(I/O)インターフェース1005も接続されている。
デバイス1000内の複数の構成要素は、I/Oインターフェース1005に接続されている。構成要素には、キーボード、マウスなどの入力ユニット1006、様々な種類のディスプレイ、スピーカなどの出力ユニット1007、磁気ディスク、光ディスクなどの記憶ユニット1008、ネットワークアダプター、モデム、無線通信送受信機などの通信ユニット1009が含まれる。通信ユニット1009は、デバイス1000がインターネットなどのコンピュータネットワークおよび/または様々な電気通信ネットワークを介して他のデバイスと情報/データを交換することを可能にする。
処理ユニット1001は、上述した方法300のような様々な方法と処理を実行する。例えば、いくつかの実施形態では、方法300は、記憶ユニット100のような機械可読媒体に有形的に含まれるコンピュータソフトウェアプログラムとして実施されることができる。いくつかの実施形態では、コンピュータプログラムの一部またはすべては、ROM1002および/または通信ユニット1009を介してデバイス1000にロードおよび/またはインストールされることができる。コンピュータプログラムがRAM1003にロードされ、CPU1001によって実行されると、上述した方法300の1つまたは複数のステップを実行することができる。あるいは、他の実施形態では、CPU1001は、他の任意の適切な方法(例えば、ファームウェアを介して)によって方法300を実行するように構成されることができる。
本開示の例示的な実施形態によれば、コンピュータプログラムが格納されたコンピュータ可読記憶媒体が提供される。プログラムがプロセッサによって実行されると、本開示で説明された方法を実施する。
本明細書で説明した機能は、少なくとも部分的に1つまたは複数のハードウェアロジックコンポーネントによって実行されることができる。例えば、非限定的に使用可能な例示的なタイプのハードウェアロジックコンポーネントは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路 (ASIC)、特定用途向け標準部品(ASSP)、システムオンチップシステム(SOC)、複雑なプログラマブルロジックデバイス(CPLD)などを含む。
本開示の方法を実施するためのプログラムコードは、1つまたは複数のプログラミング言語のいずれかの組み合わせで作成することができる。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサまたはコントローラに提供することができる。これにより、プログラムコードはプロセッサまたはコントローラによって実行されると、フローチャートおよび/またはブロック図に規定された機能/動作が実施される。プログラムコードは完全にもしくは部分的にマシン上で実行されることができ、またはスタンドアロンソフトウェアパッケージとして部分的にマシン上で実行されながら部分的にリモートマシン上で実行されたり、完全にリモートマシンもしくはサーバ上で実行されたりすることができる。
本開示のコンテキストでは、機械可読媒体は、有形の媒体であり得る。それは、命令実行システム、装置またはデバイスが使用するため、または命令実行システム、装置またはデバイスと組み合わせて使用するためのプログラムを含むか、または格納することができる。機械可読媒体は、機械可読信号媒体または機械可読記憶媒体であり得る。機械可読媒体は、電子的、磁気的、光学的、電磁的、赤外線、または半導体システム、装置またはデバイス、またはこれらの任意の適切な組合せを含むことができるが、これらに限定されない。機械可読記憶媒体のより具体的な例には、1本または複数本のケーブルに基づく電気的接続、携帯型コンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、コンパクトディスク読み取り専用メモリ(CD-ROM)、光学記憶装置、磁気記憶装置、または上記の任意の適切な組合せが含まれる。
また、各動作は特定の順序で示されているが、所望の結果を得られるために、このような動作は示された特定の順序にてまたは順を追って実行されることを要求するものと理解されるべきである。または、図に示されたすべての動作を実行されることを要求するものと理解されるべきである。特定の環境では、マルチタスクと並列処理が有利である可能性がある。同様に、上記ではいくつかの具体的な実施詳細を説明したが、これらは本開示の範囲への制限と解釈されるべきではない。個別の実施形態のコンテキストで説明された、いくつかの特徴は、単一の実施において組み合わせて実施されることもできる。逆に、単一の実施のコンテキストで説明された様々な特徴は、複数の実施において、個別にまたは任意の適切なサブセットで実施されることもできる。
本主題は、構造特徴および/または方法のロジック動作に特定された言語で記述されたが、特許請求の範囲内に限定される主題が、必ずしも上記に記載された特定の特徴または動作に限定されるものではないことを理解されたい。逆に、上述した特定の特徴および動作は、特許請求の範囲を実施するための例示的な形態にすぎない。

Claims (23)

  1. 処理タスクを実行する方法であって、
    前記処理タスクを複数の部分に分けることであって、各部分は複数の処理ユニットのうちの1つの処理ユニットにおいて実行されるべき動作のセットを含み、前記動作のセットは第1のタイプの動作と第2のタイプの動作とを含み、前記第1のタイプの動作は累積動作を含み、前記第2のタイプの動作はコピー動作を含む、ことと、
    前記第1のタイプの動作を実行するための第1のキューと、前記第2のタイプの動作を実行するための第2のキューとをそれぞれ作成することと、
    前記処理タスクの定義に基づいて、前記処理ユニットにおいて実行されるべき前記動作のセットと、前記複数の処理ユニットのうちの他の処理ユニットにおいて実行されるべき動作のセットとの間の依存関係を取得することであって、前記依存関係は順次実行関係と並行実行関係とを含む、ことと、
    前記依存関係が順次実行関係である場合、前記複数の処理ユニットにおいて前記第1のキューにおける動作を順次実行することと、
    前記依存関係が並行実行関係である場合、前記複数の処理ユニットにおいて前記第2のキューにおける動作を並行実行することと、を含む処理タスクを実行する方法。
  2. 前記第1のタイプの動作の第1の動作のセットを実行するための第1のコードと、前記第2のタイプの動作の第2の動作のセットを実行するための第2のコードとをそれぞれ前記処理ユニットにロードすることをさらに含み、
    前記依存関係が順次実行関係である場合、前記複数の処理ユニットにおいて前記第1のキューにおける動作を順次実行することは、前記第1のコードに基づいて前記第1のキューにおける動作を実行することを含み、
    前記依存関係が並行実行関係である場合、前記複数の処理ユニットにおいて前記第2のキューにおける動作を並行実行することは、前記第2のコードに基づいて前記第2のキューにおける動作を実行することを含む、請求項1に記載の方法。
  3. 前記処理ユニットのメモリに前記第1のコードと前記第2のコードのうちの少なくともいずれかをそれぞれ保持することをさらに含む請求項2に記載の方法。
  4. 前記処理ユニットにおいて、前記処理タスクの処理対象データのうちの、前記処理ユニットにおいて処理されるべき、前記複数の処理ユニットの数に応じて前記処理対象データを分割して得られたデータブロックを受信することをさらに含み、
    前記処理ユニットにおいて前記第1のキューにおける動作と前記第2のキューにおける動作とをそれぞれ実行することは、前記処理ユニットにおいて前記データブロックに対して前記第1のキューにおける動作と前記第2のキューにおける動作とをそれぞれ実行することを含む請求項1に記載の方法。
  5. 前記処理タスクはオールリデュースタスクであり、前記複数の処理ユニットはループ状に接続されており、
    前記第1のタイプの動作は、前記処理ユニットの前に接続された前の処理ユニットから前記処理ユニットにコピーされた累積結果に前記処理ユニットにおけるデータブロックを累積して前記処理ユニットの累積結果とするための累積動作を含み、
    前記第2のタイプの動作は、前記処理ユニットの後に接続された次の処理ユニットに前記処理ユニットにおけるデータブロックと累積結果のうちの少なくともいずれかをコピーするためのコピー動作を含む請求項4に記載の方法。
  6. 前記処理ユニットにおいて前記第1のキューと前記第2のキューのいずれかにおける動作が完了したことに応答して、前記処理ユニットのハードウェア割り込みを利用して前記他の処理ユニットに通知することを含む請求項5に記載の方法。
  7. 前記処理ユニットにおいて前記第1のキューと前記第2のキューのいずれかにおける動作が完了したことに対応して、前記処理ユニットのハードウェア割り込みを利用して前記他の処理ユニットに通知することは、
    前記処理ユニットにおいて第1のキューにおける1つの累積動作が実行されたことに対応して、前記ハードウェア割り込みに基づいて、前記第2のキューにおける次のコピー動作を実行するように前記前の処理ユニットに通知することを含む請求項6に記載の方法。
  8. 前記処理ユニットにおいて前記第1のキューと前記第2のキューのいずれかにおける動作が完了したことに対応して、前記処理ユニットのハードウェア割り込みを利用して前記他の処理ユニットに通知することは、
    前記処理ユニットにおいて前記第2のキューにおける1つのコピー動作が実行されたことに対応して、前記ハードウェア割り込みに基づいて、前記第1のキューにおける次の累積動作を実行するように前記次の処理ユニットに通知することを含む請求項6に記載の方法。
  9. 前記処理ユニットと前記次の処理ユニットはキャッシュ領域を共有し、
    前記処理ユニットにおいて前記コピー動作を実行することは、前記処理ユニットから前記キャッシュ領域に前記累積結果をコピーすることを含む請求項8に記載の方法。
  10. 前記処理ユニットにおいて前記第1のキューと前記第2のキューにおける動作がすべて実行されていると判断されたことに対応して、前記処理ユニットが前記処理タスクのうちの前記部分を実行したことを報告することをさらに含む請求項1に記載の方法。
  11. 処理タスクを実行する装置であって、
    前記処理タスクを複数の部分に分けるように構成された処理タスク分けモジュールであって、各部分は複数の処理ユニットのうちの1つの処理ユニットにおいて実行されるべき動作のセットを含み、前記動作のセットは第1のタイプの動作と第2のタイプの動作とを含み、前記第1のタイプの動作は累積動作を含み、前記第2のタイプの動作はコピー動作を含む、処理タスク分けモジュールと、
    前記第1のタイプの動作を実行するための第1のキューと、前記第2のタイプの動作を実行するための第2のキューとをそれぞれ作成するように構成されたキュー作成モジュールと、
    前記処理タスクの定義に基づいて、前記処理ユニットにおいて実行されるべき前記動作のセットと、前記複数の処理ユニットのうちの他の処理ユニットにおいて実行されるべき動作のセットとの間の依存関係を取得するように構成された依存関係取得モジュールであって、前記依存関係は順次実行関係と並行実行関係とを含む、依存関係取得モジュールと、
    前記依存関係が順次実行関係である場合、前記複数の処理ユニットにおいて前記第1のキューにおける動作を順次実行し、前記依存関係が並行実行関係である場合、前記複数の処理ユニットにおいて前記第2のキューにおける動作を並行実行するように構成された動作実行モジュールと、を含む処理タスクを実行する装置。
  12. 前記第1のタイプの動作を実行するための第1のコードと、前記第2のタイプの動作を実行するための第2のコードとをそれぞれ前記処理ユニットにロードするように構成されたロードモジュールをさらに含み、
    前記動作実行モジュールは、
    前記第1のコードに基づいて前記第1のキューにおける動作を実行するように構成された第1の実行モジュールと、
    前記第2のコードに基づいて前記第2のキューにおける動作を実行するように構成された第2の実行モジュールと、を含む請求項11に記載の装置。
  13. 前記処理ユニットのメモリに前記第1のコードと前記第2のコードのうちの少なくともいずれかをそれぞれ保持するように構成された保持モジュールをさらに含む請求項12に記載の装置。
  14. 前記処理ユニットにおいて、前記処理タスクの処理対象データのうちの、前記処理ユニットにおいて処理されるべき、前記複数の処理ユニットの数に応じて前記処理対象データを分割して得られたデータブロックを受信するように構成された受信モジュールをさらに含み、
    前記動作実行モジュールは、前記処理ユニットにおいて前記データブロックに対して前記第1のキューにおける動作と前記第2のキューにおける動作とをそれぞれ実行するように構成されたデータ処理モジュールをさらに含む請求項11に記載の装置。
  15. 前記処理タスクはオールリデュースタスクであり、前記複数の処理ユニットはループ状に接続されており、
    前記第1のタイプの動作は、前記処理ユニットの前に接続された前の処理ユニットから前記処理ユニットにコピーされた累積結果に前記処理ユニットにおけるデータブロックを累積して前記処理ユニットの累積結果とするための累積動作を含み、
    前記第2のタイプの動作は、前記処理ユニットの後に接続された次の処理ユニットに前記処理ユニットにおけるデータブロックと累積結果のうちの少なくともいずれかをコピーするためのコピー動作を含む請求項14に記載の装置。
  16. 前記動作実行モジュールは、前記処理ユニットにおいて前記第1のキューと前記第2のキューのいずれかにおける動作が完了したことに応答して、前記処理ユニットのハードウェア割り込みを利用して前記他の処理ユニットに通知するように構成された通知モジュールを含む請求項15に記載の装置。
  17. 前記通知モジュールは、前記処理ユニットにおいて第1のキューにおける1つの累積動作が実行されたことに対応して、前記ハードウェア割り込みに基づいて、前記第2のキューにおける次のコピー動作を実行するように前記前の処理ユニットに通知するように構成された第1の通知モジュールを含む請求項16に記載の装置。
  18. 前記通知モジュールは、前記処理ユニットにおいて前記第2のキューにおける1つのコピー動作が実行されたことに対応して、前記ハードウェア割り込みに基づいて、前記第1のキューにおける次の累積動作を実行するように前記次の処理ユニットに通知するように構成された第2の通知モジュールを含む請求項16に記載の装置。
  19. 前記処理ユニットと前記次の処理ユニットはキャッシュ領域を共有し、
    前記装置は、前記処理ユニットから前記キャッシュ領域に前記データブロックと累積結果のうちの少なくともいずれかをコピーするように構成されたコピーモジュールをさらに含む請求項18に記載の装置。
  20. 前記処理ユニットにおいて前記第1のキューと前記第2のキューにおける動作がすべて実行されていると判断されたことに対応して、前記処理ユニットが前記処理タスクのうちの前記部分を実行したことを報告するように構成された報告モジュールをさらに含む請求項11に記載の装置。
  21. 請求項1~10のいずれか1項に記載の方法を実行するための1つまたは複数のプロセッサと、
    請求項1~10のいずれか1項に記載の方法を実行する1つまたは複数のプログラムを格納するための記憶装置と、を備える処理タスクを実行するデバイス。
  22. コンピュータプログラムが格納されているコンピュータ可読記憶媒体であって、
    前記コンピュータプログラムは、プロセッサによって実行されると、請求項1~10のいずれか1項に記載の方法を実施するコンピュータ可読記憶媒体。
  23. コンピュータプログラムであって、
    前記コンピュータプログラムがプロセッサにより実行されると、請求項1~10のいずれか1項に記載の方法を実現する、コンピュータプログラム。
JP2019238897A 2019-09-11 2019-12-27 処理タスクを実行するための方法、装置、デバイス、および記憶媒体 Active JP7122299B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910859334.7 2019-09-11
CN201910859334.7A CN112486638A (zh) 2019-09-11 2019-09-11 用于执行处理任务的方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
JP2021043933A JP2021043933A (ja) 2021-03-18
JP7122299B2 true JP7122299B2 (ja) 2022-08-19

Family

ID=69055870

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019238897A Active JP7122299B2 (ja) 2019-09-11 2019-12-27 処理タスクを実行するための方法、装置、デバイス、および記憶媒体

Country Status (5)

Country Link
US (1) US11301255B2 (ja)
EP (1) EP3792757A1 (ja)
JP (1) JP7122299B2 (ja)
KR (1) KR102350785B1 (ja)
CN (1) CN112486638A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561840B2 (en) 2020-01-30 2023-01-24 Alibaba Group Holding Limited Efficient inter-chip interconnect topology for distributed parallel deep learning
CN116483584B (zh) * 2023-05-26 2024-05-03 摩尔线程智能科技(北京)有限责任公司 Gpu的任务处理方法、装置、电子设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006048696A (ja) 2004-07-30 2006-02-16 Intel Corp 複数の順序ベクトルで複数のメモリ順序モデルを実施する方法及び装置
JP2007200295A (ja) 2006-01-26 2007-08-09 Internatl Business Mach Corp <Ibm> コマンド順序依存性を追跡する方法および装置
JP2016537717A (ja) 2013-12-23 2016-12-01 インテル・コーポレーション 複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC)

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3639323B2 (ja) * 1994-03-31 2005-04-20 富士通株式会社 メモリ分散型並列計算機による連立1次方程式計算処理方法および計算機
US20040139299A1 (en) * 2003-01-14 2004-07-15 International Business Machines Corporation Operand forwarding in a superscalar processor
US7620945B1 (en) * 2005-08-16 2009-11-17 Sun Microsystems, Inc. Parallelization scheme for generic reduction
US8607236B2 (en) 2005-08-22 2013-12-10 Ns Solutions Corporation Information processing system
US8065503B2 (en) * 2006-12-15 2011-11-22 International Business Machines Corporation Iteratively processing data segments by concurrently transmitting to, processing by, and receiving from partnered process
US7707390B2 (en) * 2007-04-25 2010-04-27 Arm Limited Instruction issue control within a multi-threaded in-order superscalar processor
US8161480B2 (en) 2007-05-29 2012-04-17 International Business Machines Corporation Performing an allreduce operation using shared memory
US8683471B2 (en) * 2008-10-02 2014-03-25 Mindspeed Technologies, Inc. Highly distributed parallel processing on multi-core device
US20110276966A1 (en) * 2010-05-06 2011-11-10 Arm Limited Managing task dependency within a data processing system
US8700834B2 (en) * 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US9807152B2 (en) 2012-07-30 2017-10-31 Nec Corporation Distributed processing device and distributed processing system as well as distributed processing method
US20140101673A1 (en) * 2012-10-05 2014-04-10 Microsoft Corporation Dynamic dependency evaluation for computing task execution
US10928882B2 (en) * 2014-10-16 2021-02-23 Futurewei Technologies, Inc. Low cost, low power high performance SMP/ASMP multiple-processor system
KR101676467B1 (ko) 2016-06-24 2016-11-15 주식회사 넷츠 프로비저닝 방법 및 그 장치
US10318348B2 (en) * 2016-09-23 2019-06-11 Imagination Technologies Limited Task scheduling in a GPU
US10698785B2 (en) * 2017-05-30 2020-06-30 International Business Machines Corporation Task management based on an access workload
CN107315629A (zh) * 2017-06-14 2017-11-03 北京小米移动软件有限公司 任务处理方法、装置及存储介质
CN108491260A (zh) * 2018-04-12 2018-09-04 迈普通信技术股份有限公司 通信设备多任务测试方法及装置
US11243775B2 (en) * 2019-03-26 2022-02-08 Intel Corporation System, apparatus and method for program order queue (POQ) to manage data dependencies in processor having multiple instruction queues
US11023289B2 (en) * 2019-07-12 2021-06-01 Vmware, Inc. Cloud environment configuration based on task parallelization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006048696A (ja) 2004-07-30 2006-02-16 Intel Corp 複数の順序ベクトルで複数のメモリ順序モデルを実施する方法及び装置
JP2007200295A (ja) 2006-01-26 2007-08-09 Internatl Business Mach Corp <Ibm> コマンド順序依存性を追跡する方法および装置
JP2016537717A (ja) 2013-12-23 2016-12-01 インテル・コーポレーション 複数のハイブリッドプロセッサコアを含むシステムオンチップ(SoC)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
FUJITSU Software Interstage Big Data Parallel Processing Server V1.2.2 ユーザーズガイド,[online],富士通株式会社,2018年04月,第190頁-第211頁,https://software.fujitsu.com/jp/manual/manualfiles/m180003/j2ul1563/06z200/j2ul-1563-06z0.pdf,[令和3年4月22日検索],インターネット<URL:https://software.fujitsu.com/jp/manual/manualfiles/m180003/j2ul1563/06z200/j2ul-1563-06z0.pdf>

Also Published As

Publication number Publication date
CN112486638A (zh) 2021-03-12
EP3792757A1 (en) 2021-03-17
KR20210031347A (ko) 2021-03-19
JP2021043933A (ja) 2021-03-18
US11301255B2 (en) 2022-04-12
KR102350785B1 (ko) 2022-01-14
US20210072996A1 (en) 2021-03-11

Similar Documents

Publication Publication Date Title
US8209690B2 (en) System and method for thread handling in multithreaded parallel computing of nested threads
US9582312B1 (en) Execution context trace for asynchronous tasks
KR101332840B1 (ko) 병렬 컴퓨팅 프레임워크 기반의 클러스터 시스템, 호스트 노드, 계산 노드 및 어플리케이션 실행 방법
US8112559B2 (en) Increasing available FIFO space to prevent messaging queue deadlocks in a DMA environment
US9535756B2 (en) Latency-hiding context management for concurrent distributed tasks in a distributed system
JP2010079622A (ja) マルチコアプロセッサシステム、および、そのタスク制御方法
JP2009265963A (ja) 情報処理システム及びタスクの実行制御方法
US9348658B1 (en) Technologies for efficient synchronization barriers with work stealing support
KR102338849B1 (ko) 실시간 운영 체제에서 스택 메모리 관리를 제공하는 방법 및 시스템
JP7122299B2 (ja) 処理タスクを実行するための方法、装置、デバイス、および記憶媒体
US20130097382A1 (en) Multi-core processor system, computer product, and control method
Reano et al. Intra-node memory safe gpu co-scheduling
US20110173287A1 (en) Preventing messaging queue deadlocks in a dma environment
WO2022160628A1 (zh) 命令处理装置、方法、电子设备以及计算机可读存储介质
CN112486468A (zh) 基于spark内核的任务执行方法、***和计算机设备
KR101332839B1 (ko) 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드 및 메모리 관리 방법
JP6368452B2 (ja) 非同期のデバイスによって実行されるタスクのスケジューリングの向上
CN115599507A (zh) 数据处理方法、执行工作站、电子设备和存储介质
JP2018536945A (ja) タスクをタイムベーススケジューリングする方法及び装置
US10713085B2 (en) Asynchronous sequential processing execution
JP5867630B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
US8566829B1 (en) Cooperative multi-level scheduler for virtual engines
JP2010020683A (ja) スレッド制御方法およびスレッド制御装置ならびにリアルタイムシステム
JP2010026575A (ja) スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム
Shi et al. DFlow: Efficient Dataflow-based Invocation Workflow Execution for Function-as-a-Service

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200214

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200214

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210511

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210810

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20211018

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20211018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220415

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: 20220802

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220808

R150 Certificate of patent or registration of utility model

Ref document number: 7122299

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150