(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】ハードウェアアクセラレータをスケジューリングするための方法およびタスクスケジューラ
(51)【国際特許分類】
G06F 9/48 20060101AFI20240910BHJP
【FI】
G06F9/48 300A
G06F9/48 300C
(21)【出願番号】P 2022559487
(86)(22)【出願日】2020-03-31
(86)【国際出願番号】 CN2020082395
(87)【国際公開番号】W WO2021195949
(87)【国際公開日】2021-10-07
【審査請求日】2022-11-01
【前置審査】
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ホアン,ウエイチャオ
(72)【発明者】
【氏名】シアオ,ロォン
【審査官】漆原 孝治
(56)【参考文献】
【文献】国際公開第2017/131187(WO,A1)
【文献】特開2009-069921(JP,A)
【文献】特開2009-093218(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
ハードウェアアクセラレータをスケジューリングするための方法であって:
タスクスケジューラによって、ターゲットタスクを取得するステップと;
依存関係に基づいて前記タスクスケジューラによって、前記ターゲットタスクに関連付けられた第1の関連付けられたタスクを決定するステップであって、前記依存関係は、タスクセット内のタスクの実行順序を示し、前記ターゲットタスクは前記タスクセット内のタスクであり、前記第1の関連付けられたタスクは前記ターゲットタスクが実行される前に前記依存関係に基づいて実行される必要があるタスクである、ステップと;
前記第1の関連付けられたタスクが実行されたと前記タスクスケジューラが決定するとき、前記タスクスケジューラによって、前記ターゲットタスクを実行するように少なくとも1つのハードウェアアクセラレータをスケジューリングするステップと;
前記タスクスケジューラによって、前記タスクセット内の各タスクが実行された後に取得されたデータを格納するステップであって、前記タスクセット内のすべてのタスクがスケジューリングされたタスクを形成する、ステップと;を含み、
前記タスクセット内の前記タスクを形成するデータは、車両によって、前記車両に搭載されたカメラ装置を使用することによって取得され、
前記タスクセット内の各タスクが実行された後に取得された前記データはAIモジュールによって計算されるフィードバックデータを含み、前記フィードバックデータは、車線境界線および/または停止線を感知するために使用されるデータ;または安全領域を感知するために使用されるデータ;または障害物を感知するために使用されるデータ;を含み、前記フィードバックデータは、前記車両の操作を案内するために使用され、前記AIモジュールは前記少なくとも1つのハードウェアアクセラレータに属する、
方法。
【請求項2】
前記タスクスケジューラが、前記ターゲットタスクを実行するように前記少なくとも1つのハードウェアアクセラレータをスケジューリングするとき、前記少なくとも1つのハードウェアアクセラレータは前記ターゲットタスクを順に実行する、
請求項1に記載の方法。
【請求項3】
前記少なくとも1つのハードウェアアクセラレータのそれぞれは実行キューに対応し、前記ターゲットタスクの識別子が各前記ハードウェアアクセラレータに対応する前記実行キューに格納される、
請求項1又は2に記載の方法。
【請求項4】
前記タスクスケジューラが前記ターゲットタスクを実行するように前記少なくとも1つのハードウェアアクセラレータをスケジューリングした後、前記方法はさらに:
前記タスクスケジューラによって、前記少なくとも1つのハードウェアアクセラレータによって返された指示メッセージを受信するステップであって、前記指示メッセージは、前記少なくとも1つのハードウェアアクセラレータが前記ターゲットタスクを実行したことを示す、ステップと;
前記タスクスケジューラによって、前記少なくとも1つのハードウェアアクセラレータに対応する実行キューから前記ターゲットタスクの前記識別子を削除するステップと;を含む、
請求項3に記載の方法。
【請求項5】
ターゲットタスクを取得するように構成された取得モジュールと;
依存関係に基づいて、前記ターゲットタスクに関連付けられた第1の関連付けられたタスクを決定するように構成された決定モジュールであって、前記依存関係はタスクセット内のタスクの実行順序を示し、前記ターゲットタスクは前記タスクセット内のタスクであり、前記第1の関連付けられたタスクは前記ターゲットタスクが実行される前に前記依存関係に基づいて実行される必要があるタスクである、決定モジュールと;
スケジューリングモジュールであって:前記決定モジュールが前記第1の関連付けられたタスクが実行されたと決定するときに、前記ターゲットタスクを実行するよう少なくとも1つのハードウェアアクセラレータをスケジューリングするように構成された、スケジューリングモジュールと;を有
し、
前記スケジューリングモジュールは、さらに:前記タスクセット内の各タスクが実行された後に取得されたデータを格納するように構成される、前記タスクセット内のすべてのタスクがスケジューリングされたタスクを形成し、
前記タスクセット内の前記タスクを形成するデータは、車両によって、前記車両に搭載されたカメラ装置を使用することによって取得され、
前記タスクセット内の各タスクが実行された後に取得された前記データはAIモジュールによって計算されるフィードバックデータを含み、前記フィードバックデータは:車線境界線および/または停止線を感知するために使用されるデータ;または安全領域を感知するために使用されるデータ;または障害物を感知するために使用されるデータ;を含み、前記フィードバックデータは、前記車両の操作を案内するために使用され、前記AIモジュールは前記少なくとも1つのハードウェアアクセラレータに属する、
タスクスケジューラ。
【請求項6】
前記スケジューリングモジュールが、前記ターゲットタスクを実行するように前記少なくとも1つのハードウェアアクセラレータをスケジューリングするとき、前記少なくとも1つのハードウェアアクセラレータは前記ターゲットタスクを順に実行する、
請求項
5に記載のスケジューラ。
【請求項7】
前記少なくとも1つのハードウェアアクセラレータのそれぞれが実行キューに対応し、前記ターゲットタスクの識別子が各前記ハードウェアアクセラレータに対応する前記実行キューに格納される、
請求項
5又は
6に記載のスケジューラ。
【請求項8】
前記スケジューリングモジュールは、さらに:
前記スケジューリングモジュールが前記ターゲットタスクを実行するように前記少なくとも1つのハードウェアアクセラレータをスケジューリングした後、前記少なくとも1つのハードウェアアクセラレータによって返された指示メッセージを受信し、前記指示メッセージは、前記少なくとも1つのハードウェアアクセラレータが前記ターゲットタスクを実行したことを示し;
前記少なくとも1つのハードウェアアクセラレータに対応する実行キューから、前記ターゲットタスクの前記識別子を削除する;ように構成される、
請求項
7に記載のスケジューラ。
【請求項9】
タスクスケジューラであって、ターゲットタスクを取得し、依存関係に基づいて、前記ターゲットタスクに関連付けられた第1の関連付けられたタスクを決定し、前記依存関係はタスクセット内のタスクの実行順序を示し、前記ターゲットタスクは前記タスクセット内のタスクであり、前記第1の関連付けられたタスクは前記ターゲットタスクが実行される前に前記依存関係に基づいて実行される必要があるタスクであり;前記第1の関連付けられたタスクが実行されたと決定されるとき、前記ターゲットタスクを実行するように少なくとも1つのハードウェアアクセラレータをスケジューリングする、ように構成される、タスクスケジューラと;
前記ターゲットタスクを実行するように構成された前記少なくとも1つのハードウェアアクセラレータと;を有
し、
前記タスクスケジューラはさらに:前記タスクセット内の各タスクが実行された後に取得されたデータを格納するように構成され、前記タスクセット内のすべてのタスクがスケジューリングされたタスクを形成し、
前記タスクセット内の前記タスクを形成するデータは、車両によって、前記車両に搭載されたカメラ装置を使用することによって取得され、
前記タスクセット内の各タスクが実行された後に取得された前記データはAIモジュールによって計算されるフィードバックデータを含み、前記フィードバックデータは:車線境界線および/または停止線を感知するために使用されるデータ;または安全領域を感知するために使用されるデータ;または障害物を感知するために使用されるデータ;を含み、前記フィードバックデータは前記車両の操作を案内するために使用され、前記AIモジュールは前記少なくとも1つのハードウェアアクセラレータに属する、
制御システム。
【請求項10】
前記タスクスケジューラは少なくとも1つの実行キューを含み、前記ターゲットタスクの識別子が各実行キューに格納され;
前記少なくとも1つのハードウェアアクセラレータは、前記ターゲットタスクのものであって、前記少なくとも1つの実行キューに格納されている識別子を使用することによって前記ターゲットタスクを実行するように構成され、各ハードウェアアクセラレータは1つの実行キューに対応する、
請求項
9に記載のシステム。
【請求項11】
プロセッサおよびメモリを有するタスクスケジューラであって、前記プロセッサは前記メモリに結合され;
前記メモリはプログラムを格納するように構成され;
前記プロセッサは、前記タスクスケジューラが請求項1乃至
4のいずれか1項に記載の方法を実行するように、前記メモリ内の前記プログラムを実行するように構成される、
タスクスケジューラ。
【請求項12】
プログラムを含むコンピュータ可読記憶媒体であって、前記プログラムがコンピュータで実行されるとき、前記コンピュータは請求項1乃至
4のいずれか1項に記載の方法を実行することを可能にされる、コンピュータ可読記憶媒体。
【請求項13】
コンピュータプログラムであって、前記コンピュータプログラムがコンピュータで実行されるとき、前記コンピュータは、請求項1乃至
4のいずれか1項に記載の方法を実行することを可能にされる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、ネットワーク通信技術の分野、特にハードウェアアクセラレータをスケジューリングするための方法およびタスクスケジューラに関する。
【背景技術】
【0002】
ハードウェアアクセラレータ(hardware accelerator、HAC)は、論理型言語を使用していくつかの特定の機能を実装するハードウェアモジュールである。データを同時に処理できるため、ハードウェアアクセラレータは、処理能力および遅延においてソフトウェア実装よりも大きな利点がある。現在、いくつかの制御システム、例えば、自動運転マルチドメインコントローラ(Multi-Domain Controller、MDC、インテリジェントドライビングドメインコントローラとも呼ばれる)では、異なる情報フロータスクを処理するためにシステムオンチップ(System on Chip、SoC)によって使用される対応するアクセラレータが、対応するタスクを完了するために一緒に動作するようにスケジューリングする必要がある。各タスクはデータフレームに基づいて処理される。各データフレームは複数のHACによって並列または連続的に処理される。
【0003】
現在、HACは、一般的に、ソフトウェアによって管理およびスケジューリングされ、HACはソフトウェアを使用してスケジューリングされる。各HACは、1つまたは複数のソフトウェアによってスケジューリングされる。タスクを処理する必要がある場合、ソフトウェアは対応するHACにタスク要求を送信する。処理が完了すると、HACはタスク完了応答を返す。
図1に示すように、MDCシナリオの制御システムでは、CPUソフトウェアスケジューリングレイヤ、ユーザモード空間レイヤ、カーネルモード空間レイヤ、HACを上から下にソフトウェアでスケジューリングすることによってタスクが実行される。ソフトウェアによってタスクをスケジューリングするプロセスは、具体的には以下の通りである:CPUが前のレベルによって送信されたデータ(すなわち、前のタスク)を受信し、ハードウェアアクセラレータ0がデータ処理を実行する必要がある。この場合、アドレス空間が仮想メモリ0内のデータをコピーするために、ユーザモード空間レイヤに作成される必要があり、ハードウェアアクセラレータ0に対応しカーネルモード空間レイヤにあるエグゼキュータ0(エグゼキュータ(Executor))が呼び出され、その後、ハードウェアアクセラレータ0は呼び出されてデータを実行し、対応するタスクの処理を完了する。タスクの実行後、ハードウェアアクセラレータ0は、メッセージ応答を生成し(例えば、割り込み又はステータスレジスタを生成する)、カーネルモード空間レイヤのドライバ0(ドライバ(Driver))およびエグゼキュータ0を介してユーザモード空間レイヤにメッセージ応答を順次報告し、最後にメッセージ応答をCPUに報告する。ハードウェアアクセラレータ0によって前のデータが処理された後、ハードウェアアクセラレータ1がさらにデータ処理を実行し続ける必要がある場合、ハードウェアアクセラレータ0によって処理された後に出力されたデータはさらにコピーされる必要があり、その後、ハードウェアアクセラレータ1は、データが最終的にCPUに報告されるまで、前述のプロセスに従って処理を実行し続ける。複数のタスクが処理される必要があり、タスクが相互に依存している場合(例えば、タスク2は、タスク1が処理された後にのみ処理できる)、各タスクは前のステップに従って処理する必要がある。加えて、タスク2は、タスク1が前のステップに従って処理された後にのみ、前のステップに従って処理されることができる。
【0004】
前述のハードウェアアクセラレータをスケジューリングするための方法では、タスクがレベルごとに配送されるプロセスおよびタスクが処理後にレベルごとに報告されるプロセスにおいて、カーネルモードドライバとエグゼキュータが必要とされ、その後タスクはユーザモード空間レイヤに到達し、最終的に処理のためにCPUに報告される。このプロセスには長い時間がかかる。複数のタスクを処理する必要があり、タスクが互いに依存している場合、タスクは先行するステップに従って順に処理される必要がある。この期間の間、待ち時間が長く、CPUリソースが占有される。
【発明の概要】
【0005】
本出願の実施形態は、ハードウェアアクセラレータをスケジューリングする方法およびタスクスケジューラを提供する。タスクスケジューラは、CPUと各ハードウェアアクセラレータとの間に接続される。タスクスケジューラは、ハードウェアスケジューリングを介して、タスク間の依存関係に基づいて、各タスクを実行するHACをスケジューリングするように構成される。各タスクの配信およびタスク実行後のレポートは、どちらも直接ハードウェアアクセスによって実行される。これは、タスクが処理された後のタスク配信およびレポートの遅延を短縮し、システムの処理性能を間接的に向上させる。
【0006】
この観点から、本出願の実施形態は以下の技術的解決策を提供する。
【0007】
第1の態様によると、本出願はまずハードウェアアクセラレータをスケジューリングする方法を提供する。本方法は、次のものを含む:タスクスケジューラが、まずターゲットタスクを取得する。例えば、メモリ(例えば、DDR)からターゲットタスクを取得する。ターゲットタスクは、タスクセットにおいて実行されることになるタスクである。ターゲットタスクを取得した後、タスクスケジューラは、依存関係に基づいて、ターゲットタスクに関連付けられた第1の関連タスクを決定し得る。第1の関連付けられたタスクは、ターゲットタスクが実行される前に依存関係に基づいて実行される必要があるタスクである。第1の関連付けられたタスクは、タスクセット内の1つのタスクであり得る、またはタスクセット内の複数のタスクであり得る。第1の関連付けられたタスクの量は、依存関係に基づいて具体的に決定される。複数の第1の関連付けられたタスクがある場合、依存関係はさらに複数の第1の関連付けられたタスクの実行順序(execution sequence)を含む。タスクスケジューラが、依存関係に基づいて、ターゲットタスクに関連付けられた第1の関連付けられたタスクを決定し、さらに第1の関連付けられたタスクが実行されたことを決定した後、タスクスケジューラは、ターゲットタスクの実行に関連する少なくとも1つのハードウェアアクセラレータを決定し、ターゲットタスクを実行するように少なくとも1つのハードウェアアクセラレータをスケジューリングする。
【0008】
前述の本出願の実装では、タスクスケジューラはまずターゲットタスクを取得し(例えば、メモリからターゲットタスクを取得し)、ターゲットタスクと関連タスクとの間の依存関係を取得する。依存関係に基づいて、関連付けられたタスク内の第1の関連付けられたタスク(例えば、ターゲットタスクを実行するための前提条件は、タスク1、タスク2などがすべて成功裏に実行されることである)が成功裏に実行されたと決定される場合は、ターゲットタスクは実行条件を満たしていることを示す。この場合、タスクスケジューラは、ターゲットタスクを実行するようにターゲットタスクの実行に関連するハードウェアアクセラレータ(1つまたは複数であり得る)をスケジューリングする。本出願のこの実施形態では、タスクスケジューラはCPUと各ハードウェアアクセラレータとの間に接続される。タスクスケジューラは、ハードウェアスケジューリングを介して、タスク間の依存関係に基づいて、各タスクを実行するようにHACをスケジューリングするように構成される。各タスクの配信は、直接ハードウェアアクセスによって実行される。これは、タスクの配信遅延を短縮し、間接的にシステムの処理性能を向上させる。
【0009】
本出願の実施形態の第1の態様を参照すると、本出願の実施形態の第1の態様の第1の実装では、ターゲットタスクを実行する1つまたは複数のハードウェアアクセラレータがあり得る。ターゲットタスクを実行する複数のハードウェアアクセラレータがある場合、複数のハードウェアアクセラレータは順にターゲットタスクを実行する。なお、本出願のいくつかの実装では、複数のハードウェアアクセラレータがターゲットタスクを順に実行することは、複数のハードウェアアクセラレータが同時にターゲットタスクを実行することを含み得る。例えば、タスクスケジューラが、ターゲットタスクを取得した後、ターゲットタスクが、ハードウェアアクセラレータ1、ハードウェアアクセラレータ2、ハードウェアアクセラレータ3によって個別に実行される必要があると決定する場合、ターゲットタスクは、ハードウェアアクセラレータ1~3によって同時に実行され得、ハードウェアアクセラレータ1~3は競合しない。
【0010】
前述の本出願の実装では、ターゲットタスクの実行に関連する複数のハードウェアアクセラレータがある場合、どのように複数のハードウェアアクセラレータがターゲットタスクを実行するために連携する(work together)かについて説明している。これは動作可能(operable)である。
【0011】
本出願の実施形態の第1の態様および第1の態様の第1の実装を参照して、本出願の実施形態の第1の態様の第2の実装では、タスクスケジューラがターゲットタスクを実行するために少なくとも1つのハードウェアアクセラレータをスケジューリングした後、タスクスケジューラはさらに、その後必要になったときにターゲットタスクが実行された後に生成されたデータが別のハードウェアアクセラレータによって直接呼び出されることができるように、ターゲットタスクの実行された後に生成されたデータを格納する(例えば、メモリDDRにデータを格納する)ようハードウェアアクセラレータに指示する。
【0012】
前述の本出願の実装では、各ハードウェアアクセラレータは、ターゲットタスクを処理した後、処理されたデータを格納する(例えば、処理されたデータをメモリに格納する)。この方法では、別のハードウェアアクセラレータが処理されたデータをさらに処理する必要がある場合、処理されたデータはコピーされる必要はなく、直接呼び出されることができる。これは、データ処理量を削減し、時間を短縮し、間接的にシステム性能を向上させる。
【0013】
本出願の実施形態の第1の態様または第1の態様の第1から第2の実装を参照して、本出願の実施形態の第1の態様の第3の実装では、各ハードウェアアクセラレータは1つまたは複数のタスクを実行し得る。この場合、各ハードウェアアクセラレータは1つの実行キューに対応し、ハードウェアアクセラレータによって実行されることになるタスクは各実行キューに順に格納される。ターゲットタスクを実行する複数のハードウェアアクセラレータがある場合、ターゲットタスクの識別子が、ターゲットタスクのための各ハードウェアアクセラレータに対応する実行キューに格納される。
【0014】
前述の本出願の実装では、ハードウェアアクセラレータは、対応する実行キューに配置されたタスクの識別子に基づいて、各タスクが処理される順序を識別する。これは柔軟である。
【0015】
本出願の実施形態の第1の態様の第3の実装を参照して、本出願の実施形態の第1の態様の第4の実装では、対応するターゲットタスクを実行するようハードウェアアクセラレータをスケジューリングした後、タスクスケジューラは、ターゲットタスクを実行する対応するハードウェアアクセラレータによって返される指示(indication)メッセージを受信する。指示メッセージは、ハードウェアアクセラレータがターゲットタスクを実行したことを示す。この場合、タスクスケジューラは、ハードウェアアクセラレータに対応する実行キューからターゲットタスクの識別子を削除し得る。
【0016】
前述の本出願の実装では、叙述のように、タスクが実行された後、対応するタスクの識別子は実行キューから削除される。実行キューは動的に維持される。これは柔軟(flexible)である。
【0017】
本出願の実施形態の第1の態様または第1の態様の第1から第4の実装を参照して、本出願の実施形態の第1の態様の第5の実装では、タスクセット内の各タスクは、ターゲットタスクのものと同様の処理方法で処理される。タスクセット内の各タスクが実行された後、タスクスケジューラは、各タスクが実行された後にすべてのデータを取得し、そのデータを格納する(例えば、データをメモリに格納する)。タスクセット内のすべてのタスクは、スケジューリングされたタスクを形成する。元のスケジューリングされたタスクは、タスクセット内のすべてのタスクが実行された後にのみ完了する。1つのスケジューリングされたタスクは、センサ(例えば、カメラ)を使用することにより端末装置によって取得されたデータフロー(生データと呼ばれることがある)が一連の関連するハードウェアアクセラレータによって指定された機能を持つ出力データ(例えば、障害物を感知するために使用されるデータおよび別のデバイスに送信されるために使用されるデータ)を取得するために処理される、特定の実装プロセスである。
【0018】
前述の本出願の実装では、上述のように、MDCシナリオでは、1つのタスクセット内のすべてのタスクが処理された後にのみ、1つのスケジューリングされたタスクが完了する。これは実用的である。
【0019】
本出願の実施形態の第1の態様の第5の実装を参照して、本出願の実施形態の第1の態様の第6の実装では、タスクセットは複数のタスクを含み、複数のタスクを形成するデータは、複数のチャネルを介して取得され得、端末装置(例えば、車両)が、搭載されたカメラ装置(例えば、車両に搭載されたカメラ)を使用することによってデータを取得することを含むが、これに限定されない。この場合、複数のタスクを形成する取得されたデータは画像データまたはビデオデータである。端末装置がカメラを使用することによってデータを取得した後、データはタスクに分割され(例えば、データフレームのように分割され)、分割されたタスクはタスクセットを形成する。
【0020】
前述の本出願の実装では、タスクセットを形成するデータを取得するためのチャネルが記述されている。これは普遍的に適用可能である。
【0021】
本出願の実施形態の第1の態様の第5から第6の実装を参照して、本出願の実施形態の第1の態様の第7の実装では、1つのスケジューリングされたタスクは、具体的には、AIモジュール(例えば、AIプロセッサ)がフィードバックデータを取得するためにコンピューティングを実行することであり得る。フィードバックデータは、端末装置(例えば、車両)上でユーザの操作をガイドするために使用され得る。本出願のこの実施形態では、AIモジュールもハードウェアアクセラレータの一種である。
【0022】
前述の本出願の実施形態では、上述のように、スケジューリングされたタスクが実行された後に取得されるデータは、AIモジュールによって計算されたフィードバックデータであり得、そのフィードバックデータはさらに端末装置上でユーザの操作をガイドするために使用され得る。これは実用的である。
【0023】
本出願の実施形態の第1の態様の第7の実装を参照して、本出願の実施形態の第1の態様の第8の実装では、端末装置が車両である場合、一部の適用シナリオでは、フィードバックデータは、車線境界線(lane line)および/または停止線を感知するために使用されるデータであり得、指定された車線を走行するまたは指定された駐車エリアで停止するように車両所有者を案内する(guide)ために使用される。代替的には、フィードバックデータは、安全領域を感知するために使用されるデータであり得、この車両を他の車両から安全な距離に保つように車両所有者を案内するために使用される。代替的には、フィードバックデータは障害物(例えば障害物からの距離)を感知するために使用されるデータであり得、事前に安全対策(例えば、停止や方向転換)を講じるように車両所有者を案内するために使用される。フィードバックデータの種類および機能はここでは限定されない。対応するフィードバックデータは、実際の適用シナリオに基づいて取得され得る。したがって、車両所有者は、対応するフィードバックデータに基づいて車両を操作するように案内され、それによって運転の安全性および運転性能を向上させる。
【0024】
前述の本出願の実施形態では、フィードバックデータの適用シナリオが具体的に記述されている。これは多様化している。
【0025】
本出願の実施形態の第2の態様は、タスクスケジューラを提供する。タスクスケジューラは、第1の態様または第1の態様の可能な実装のうちのいずれか1つによる方法を実装する機能を有する。機能はハードウェアによって実装され得る、または対応するソフトウェアを実行するハードウェアによって実装され得る。ハードウェアまたはソフトウェアは、前述の機能に対応する1つまたは複数のモジュールを含む。
【0026】
本出願の実施形態の第3の態様は、制御システムを提供する。制御システムは、特にタスクスケジューラおよびハードウェアアクセラレータを含み得るが、これに限定されない。タスクスケジューラは:ターゲットタスクを取得し(例えば、メモリからターゲットタスクを取得し)、依存関係に基づいて、ターゲットタスクに関連付けられた第1の関連付けられたタスクを決定し、依存関係はタスクセット内のタスクの実行順序を示し、ターゲットタスクはタスクセット内のタスクであり;第1の関連付けられたタスクが実行されたと決定されるとき、ターゲットタスクを実行するようにハードウェアアクセラレータをスケジューリングする;ように構成される。ハードウェアアクセラレータは、ターゲットタスクを実行するように構成される。
【0027】
本出願の実施形態の第3の態様を参照して、本出願の実施形態の第3の態様の第1の実装では、タスクスケジューラは、少なくとも1つの実行キューを含み得るが、それに限定されない。ターゲットタスクの識別子が各実行キューに格納される。少なくとも1つのハードウェアアクセラレータは、少なくとも1つの実行キューに格納されているターゲットタスクの識別子を使用することによってターゲットタスクを実行するように構成される。各ハードウェアアクセラレータは、1つの実行キューに対応する。
【0028】
本出願の実施形態の第3の態様および本出願の実施形態の第3の態様の第1の実装を参照して、本出願の実施形態の第3の態様の第2の実装では、タスクスケジューラはさらに、タスクセット内の各タスクが実行された後に取得されたデータを格納するように構成される。タスクセット内のすべてのタスクは、スケジューリングされたタスクを形成する。
【0029】
本出願の実施形態の第3の態様の第2の実装を参照して、本出願の実施形態の第3の態様の第3の実装では、タスクセット内のタスクを形成するデータは、端末装置によって、搭載されたカメラ装置を使用することによって取得される。制御システムは端末装置に配置され得る(例えば、車両上のカメラが画像データを取得し、その画像データを車両上の制御システムに送信する)。代替的には、制御システムは端末装置に配置されていない場合もある(例えば、ユーザの携帯電話のカメラが画像データを取得し、その画像データを、携帯電話と通信接続している車両に送信し、制御システムは車両に配置されている)。
【0030】
本出願の実施形態の第3の態様の第2から第3の実装を参照して、本出願の実施形態の第3の態様の第4の実装では、タスクセット内の各タスクが実行された後に取得されたデータは、AIモジュール(例えば、AIプロセッサ)によって計算されたフィードバックデータであり得る。フィードバックデータは端末装置の操作を案内するために使用され、AIモジュールはハードウェアアクセラレータの一種でもある。
【0031】
本出願の実施形態の第3の態様または第3の態様の第1から第4の実装を参照して、本出願の実施形態の第3の態様の第5の実装では、タスクスケジューラはさらにスケジューリングエンジンおよびエグゼキュータを含み得る。スケジューリングエンジンは、メモリからターゲットタスクおよび依存関係を呼び出すように構成される。エクゼキュータは、ハードウェアアクセラレータへのインターフェイスを提供するように構成される。実行キューは、ターゲットタスクの識別子を順にバッファするために使用される。具体的には、スケジューリングエンジン、エクゼキュータ、および実行キューを含むタスクスケジューラは、第1の態様または第1の態様の可能な実装のうちのいずれか1つによる方法を実装する機能を有する。
【0032】
本出願の実施形態の第4の態様は、タスクスケジューラを提供する。タスクスケジューラは、メモリ、プロセッサ、およびバスシステムを含み得る。メモリはプログラムを格納するように構成される。プロセッサは、メモリに格納されたプログラムを呼び出し、本出願の実施形態の第1の態様または第1の態様の可能な実装のいずれか1つによる方法を実行するように構成される。
【0033】
本出願の第5の態様は、コンピュータ可読記憶媒体を提供する。コンピュータ可読記憶媒体は命令を格納する。命令がコンピュータ上で実行されるとき、コンピュータは第1の態様または第1の態様の可能な実装のうちのいずれか1つよるに方法を実行することを可能にされる。
【0034】
本出願の実施形態の第6の態様は、コンピュータプログラムを提供する。コンピュータプログラムがコンピュータ上で実行されるとき、コンピュータは、第1の態様または第1の態様の可能な実装のいずれか1つによる方法を実行することを可能にされる。
【図面の簡単な説明】
【0035】
【
図1】タスクのためにソフトウェアによってHACをスケジューリングすることの概略図である。
【0036】
【
図2】本出願の一実施形態による制御システムの概略図である。
【0037】
【
図3】本出願の一実施形態によるハードウェアアクセラレータのスケジューリングのための方法の概略図である。
【0038】
【
図4】本出願の一実施形態による各ハードウェアアクセラレータと実行キューとの間の関係の概略図である。
【0039】
【
図5】本出願の一実施形態によるタスクセット内のタスク間の関連関係の概略図である。
【0040】
【
図6】本出願の一実施形態によるイベント概念が導入された後のタスクとイベントとの間の関連関係の概略図である。
【0041】
【
図7】本出願の一実施形態によるタスク間の依存関係が2次元チャートである概略図である。
【0042】
【
図8】MDCシナリオにおける現在の制御システムの構造の概略図である。
【0043】
【
図9】本出願の一実施形態によるMDCシナリオにおける制御システムの構造の概略図である。
【0044】
【
図10】本出願の一実施形態によるMDCシナリオにおけるスケジューリングされたタスクの記述の概略図である。
【0045】
【
図11】本出願の一実施形態によるMDCの実際の適用シナリオの概略図である。
【0046】
【
図12】本出願の一実施形態によるタスクスケジューラの概略図である。
【0047】
【
図13】本出願の一実施形態によるタスクスケジューラの別の概略図である。
【発明を実施するための形態】
【0048】
本出願の実施形態は、ハードウェアアクセラレータをスケジューリングする方法およびタスクスケジューラを提供する。タスクスケジューラはCPUと各ハードウェアアクセラレータの間に接続される。タスクスケジューラは、ハードウェアスケジューリングを介して、タスク間の依存関係に基づいて、各タスクを実行するためにHACをスケジューリングするように構成される。各タスクの配信およびタスク実行後のレポートは、どちらも直接ハードウェアアクセスによって実行される。これは、タスクの配信およびタスクが処理された後のレポートの遅延を短縮し、システムの処理性能を間接的に向上させる。
【0049】
以下は、本出願の実施形態を添付の図面を参照して説明する。当業者は、技術の発展および新たなシナリオの出現により、本出願の実施形態で提供される技術的解決策が同様の技術的問題にも適用可能であることを学ぶことができる。
【0050】
本出願の本明細書、特許請求の範囲および添付図面において、「第1」、「第2」等の用語は、類似の対象を区別することを意図しているが、必ずしも特定の順番又は順序を示すものではない。このような方法で使用される用語は、適切な状況では交換可能であることを理解すべきであるが、これは、同じ属性を持つ対象が本出願の実施形態で記述されている場合に使用される単なる識別方法である。加えて、用語「含む(include)」、「含む(contain)」およびその他の変形は、非排他的包含をカバーすることを意味するため、一連のユニットを含むプロセス、方法、システム、製品、または装置は、必ずしもそれらのユニットに限定されず、そのようなプロセス、方法、製品、または装置に明示的にリストされていないまたはそれらに固有の他のユニットを含む場合がある。
【0051】
本出願の実施形態を説明する前に、まず、制御システムにおける本出願で説明するタスクスケジューラの位置を説明する。
図2に示すように、タスクスケジューラはCPUと各ハードウェアアクセラレータの間に位置する。各ハードウェアアクセラレータは、タスクスケジューラに対応するインターフェイスがあり。このインターフェイスは、タスクスケジューラ上のタスクエグゼキュータ(簡単にエグゼキュータと呼ぶこともある)によって提供される。タスクスケジューラは複数の実行キューを有し得る。各実行キューは1つのハードウェアアクセラレータに対応し(いくつかの実施形態では、実行キューは、メモリまたは対応するハードウェアアクセラレータにも存在する場合があるが、これはここでは限定されず、
図2は単なる例である)、実行順序内のタスクの識別子を格納するために使用される。実行されることになるタスク、タスクが実行された後に取得されるデータ、タスク間の依存関係などは、すべてメモリDDRに格納され得る(いくつかの実装では、別の位置に格納されることもあり、例えば、タスクスケジューラのストレージユニットに直接格納されるが、これはここでは限定されず、
図2は単なる例である)。関連データがメモリに格納される場合、タスクスケジューラがターゲットタスクを実行するように少なくとも1つのハードウェアアクセラレータをスケジューリングした後、タスクスケジューラは、ハードウェアアクセラレータに、ターゲットタスクが実行された後に生成されたデータを格納するよう指示し得る。この方法では、ターゲットタスクが実行された後に生成されたデータは、その後必要になったときに別のハードウェアアクセラレータによって直接呼び出される可能性があり、コピーする必要はない。これは、データ処理量を削減し、時間を短縮し、間接的にシステム性能を向上させる。タスクスケジューラは、タスクスケジューラ上のスケジューリングエンジンを使用して、メモリおよび各ハードウェアアクセラレータと情報を交換し得る(例えば、ハードウェアアクセラレータから返された指示メッセージを受信し、メモリ内の関連データを照会し、ハードウェアアクセラレータに指示を送信する)。例えば、カメラから収集されたデータはメモリに格納される。データ(すなわち、ターゲットタスク)はハードウェアアクセラレータ0およびハードウェアアクセラレータ1によって処理される必要がある。タスクスケジューラは、カメラによって収集された前述のデータをメモリから取得し、ハードウェアアクセラレータ0に指示を配信して、ハードウェアアクセラレータ0にデータを処理するように指示する。データを処理した後、ハードウェアアクセラレータ0は、ハードウェア信号ケーブルを使用してタスクスケジューラに通知し、処理されたデータをメモリに格納し得る。次に、タスクスケジューラは、ハードウェアアクセラレータ1に指示を配信して、さらなる処理のためにハードウェアアクセラレータ0によって処理された前述のデータをメモリから呼び出すようハードウェアアクセラレータ1に指示する。データを処理した後、ハードウェアアクセラレータ1は、タスクスケジューラに通知し、処理されたデータをメモリに再び格納する。本出願のこの実施形態では、タスク配信およびタスクが処理された後のレポートの両方が、直接ハードウェアアクセスによって実行される。これは、タスク配信およびタスクが処理された後のレポートの処理遅延を大幅に減少させ、チップの処理性能を間接的に向上させる。データはメモリに格納されるため、データキャッシュ領域が共有され得、繰り返しコピーする必要がない。これは、データコピーの遅延を減少させ、データ処理性能を向上させる。
【0052】
本出願の本実施形態で提供されるハードウェアアクセラレータをスケジューリングする方法は、
図2の制御システムに基づいて実行され得る。この方法では、タスクスケジューラは、タスク間の依存関係に基づいた純粋なハードウェアスケジューリングを直接実装し、CPUリソースを占有する必要がない。詳細は
図3を参照されたい。
【0053】
301:タスクスケジューラはターゲットタスクを取得する。
【0054】
タスクスケジューラは、まずターゲットタスクを取得する、例えば、メモリ(例えば、DDR)からターゲットタスクを取得する。ターゲットタスクは、タスクセットにおいて実行されることになるタスクである。タスクセットは複数のタスクを含む。複数のタスクを形成するデータは、複数のチャネルを通じて取得され得、端末装置(例えば、車両)が搭載されたカメラ装置(例えば、車両に搭載されたカメラ)を使用してデータを取得することを含むが、これに限定されない。この場合、複数のタスクを形成する取得されたデータは画像データまたはビデオデータである。端末装置がカメラを使用してデータを取得した後、データはタスクに分割され(例えば、データフレームのように分割され)、分割されたタスクがタスクセットを形成する。
【0055】
302:タスクスケジューラは、依存関係に基づいて、ターゲットタスクに関連付けられた第1の関連付けられたタスクを決定する。
【0056】
ターゲットタスクを取得した後、タスクスケジューラは、依存関係に基づいて、ターゲットタスクに関連付けられた第1の関連付けられたタスクを決定し得る。第1の関連付けられたタスクは、ターゲットタスクが実行される前に依存関係に基づいて実行される必要があるタスクである。第1の関連付けられたタスクは、タスクセット内の1つのタスクである場合もあれば、タスクセット内の複数のタスクである場合もある。第1の関連付けられたタスクの量は、依存関係に基づいて具体的に決定される。加えて、複数の第1の関連付けられたタスクがある場合、依存関係はさらに、複数の第1の関連付けられたタスクの実行順序を含む。例えば、それぞれタスク1およびタスク2である2つの第1の関連付けられたタスクがある場合、依存関係に基づいてタスク1およびタスク2を実行する順序は次のようになる:タスク1はタスク2の前に実行される。タスク1およびタスク2の両方が実行される場合、ターゲットタスクが実行条件を満たしていると決定される。本出願のこの実施形態で説明されている順序は、さらに、同時実行を含み得ることが留意されるべきである。前述の例は、引き続き例として使用される。タスク1およびタスク2が依存関係に基づいて同時に実行される必要がある場合、タスク1およびタスク2が同時に実行され、2つのタスクが両方とも実行された後、ターゲットタスクは実行条件を満たしていると決定される。
【0057】
303:第1の関連付けられたタスクが実行されたとタスクスケジューラが決定する場合、タスクスケジューラは、ターゲットタスクを実行するように少なくとも1つのハードウェアアクセラレータをスケジューリングする。
【0058】
タスクスケジューラは、依存関係に基づいて、ターゲットタスクに関連付けられた第1の関連付けられたタスクを決定し、さらに第1の関連付けられたタスクが実行されたことを決定した後、タスクスケジューラは、ターゲットタスクの実行に関連する少なくとも1つのハードウェアアクセラレータを決定し、ターゲットタスクを実行するように少なくとも1つのハードウェアアクセラレータをスケジューリングする。ターゲットタスクを実行する1つまたは複数のハードウェアアクセラレータがあり得ることが留意されるべきである。ターゲットタスクを実行する複数のハードウェアアクセラレータがある場合、複数のハードウェアアクセラレータはターゲットタスクを順に実行する。わかりやすくするため、以下では説明のための例を用いる。タスクスケジューラが、ターゲットタスクを取得した後に、ターゲットタスクがハードウェアアクセラレータ1、ハードウェアアクセラレータ2、およびハードウェアアクセラレータ3によって実行される必要があると決定し、実行順序が、ターゲットタスクがハードウェアアクセラレータ1によって最初に実行され、実行を通じて取得されたデータ1がハードウェアアクセラレータ2によって実行され、次に実行を通じて取得されたデータ2がハードウェアアクセラレータ3によって実行されることである場合、ハードウェアアクセラレータ3による実行を通じて取得されたデータ3は、すべてのハードウェアアクセラレータ1~3がターゲットタスクを実行した後に生成されたデータ(データ3はターゲットデータと呼ばれることもある)である。
【0059】
本出願のいくつかの実装では、複数のハードウェアアクセラレータがターゲットタスクを順に実行することは、複数のハードウェアアクセラレータが同時にターゲットタスクを実行する場合を含み得ることが留意されるべきである。前述の例は、引き続き例として使用される。タスクスケジューラが、ターゲットタスクを取得した後、ハードウェアアクセラレータ1、ハードウェアアクセラレータ2、およびハードウェアアクセラレータ3によってターゲットタスクが別々に実行される必要があると決定する場合、ターゲットタスクはハードウェアアクセラレータ1~3によって同時に実行されてもよく、ハードウェアアクセラレータ1~3は互いに競合しない。
【0060】
本出願のいくつかの実装では、タスクスケジューラがターゲットタスクを実行するためのハードウェアアクセラレータの数、ハードウェアアクセラレータの種類、実行順序などの情報をどのように決定するかも依存関係に記録される場合があることがさらに留意されるべきである。このように、タスクスケジューラは、依存関係から、ターゲットタスクに関連付けられた第1の関連付けられたタスクを決定するだけでなく、依存関係に基づいて、ターゲットタスクを実行するためのハードウェアアクセラレータを決定することができる。
【0061】
さらに、本出願のいくつかの実装では、タスクスケジューラがターゲットタスクを実行するように少なくとも1つのハードウェアアクセラレータをスケジューリングした後、タスクスケジューラはさらに、ターゲットタスクが実行された後に生成されたデータを格納する(例えば、メモリDDRにデータを格納する)ようハードウェアアクセラレータに指示することが留意されるべきである。この方法では、ターゲットタスクが実行された後に生成されたデータは、その後必要になったときに別のハードウェアアクセラレータによって直接呼び出される可能性があり、コピーする必要はない。これは、データ処理量を削減し、時間を短縮し、間接的にシステム性能を向上させる。わかりやすくするため、前述の例は引き続き説明のための例として使用される。タスクスケジューラが、ターゲットタスクを取得した後、ハードウェアアクセラレータ1、ハードウェアアクセラレータ2、およびハードウェアアクセラレータ3によってターゲットタスクが順に実行される必要があると決定し、実行順序が、ターゲットタスクがハードウェアアクセラレータ1によって最初に実行され、実行を通じて取得されたデータ1がハードウェアアクセラレータ2によって実行され、その後実行を通じて取得されたデータ2がハードウェアアクセラレータ3によって実行されることである場合、データ3は、ハードウェアアクセラレータ3による実行を通じて取得される。この場合、タスクスケジューラは、ターゲットタスクが実行された後に取得されたデータ1を格納する(例えば、データ1をメモリDDRに格納する)ようにハードウェアアクセラレータ1に指示し、その後、タスクスケジューラは、実行を継続するためにメモリからデータ1を呼び出すようにハードウェアアクセラレータ2に指示する。タスクスケジューラはさらに、データ1が実行された後に取得されたデータ2を格納する(例えば、データ2をメモリDDRに引き続き格納する)ようにハードウェアアクセラレータ2に指示する。最後に、タスクスケジューラは、実行を継続するためにメモリからデータ2を呼び出すようハードウェアアクセラレータ3に指示し、タスクスケジューラは、さらに、データ2が実行された後に取得されたデータ3を格納するようハードウェアアクセラレータ3に指示する。毎回ターゲットタスクを実行するハードウェアアクセラレータを区別するために、ターゲットタスクの元の識別子が、ターゲットタスクを実行するハードウェアアクセラレータに関する対応する情報を伝達し(carry)得る(元の識別子と、その情報を伝達する元の識別子の両方はターゲットタスクの識別子と呼ばれることがある)、またはターゲットタスクを実行するハードウェアアクセラレータに関する情報は別々に格納され得ることが留意されるべきである。これは特にここでは限定されない。一例が説明のために使用される。ターゲットタスクがハードウェアアクセラレータ1~3によって順に実行され、ターゲットタスクの識別子がM002であると仮定する場合、識別子M002-1は、取得されたデータ1がハードウェアアクセラレータ1によってターゲットタスクM002が実行された後に取得されたデータであることを示すために使用され得る。同様に、M002-1-2は、取得されたデータ2がハードウェアアクセラレータ1およびハードウェアアクセラレータ2によってターゲットタスクが順に実行された後に取得されたことを示すために使用される。識別子M002-1-2-3は、取得されたデータ3がハードウェアアクセラレータ1~3によってターゲットタスクが順に実行された後に取得されたことを示すために使用される。ターゲットタスクがハードウェアアクセラレータ1~3によって同時に実行される場合、同様に、識別子M002-1、M002-2、およびM002-3は、取得されたデータがハードウェアアクセラレータ1、ハードウェアアクセラレータ2、およびハードウェアアクセラレータ3によってターゲットタスクが別々に実行された後に取得されたことをそれぞれ示すために使用され得る。
【0062】
本出願のいくつかの実装では、各ハードウェアアクセラレータが1つ以上のタスクを実行する場合があることが留意されるべきである。この場合、各ハードウェアアクセラレータは1つの実行キューに対応し、ハードウェアアクセラレータによって実行されることになるタスクは各実行キューに順に格納される。ターゲットタスクを実行する複数のハードウェアアクセラレータがある場合、ターゲットタスクの識別子(ターゲットタスクの元の識別子であり得る、またはハードウェアアクセラレータによってターゲットタスクが実行された後の対応する識別子であり得る)は、ターゲットタスクのための各ハードウェアアクセラレータに対応する実行キューに格納される。これはここでは限定されない。わかりやすくするため、例がここでは説明のために使用される。
図4に示すように、ターゲットタスクに関連付けられた3つの第1の関連付けられたタスク:タスク1、タスク2、およびタスク3があることが想定され、タスク1の依存関係およびタスク2の依存関係に基づいて、タスク1およびタスク2の両方がハードウェアアクセラレータ1によって実行され、ハードウェアアクセラレータ1が最初にタスク1を実行し、その後タスク2を実行する必要があると決定され、ターゲットタスクの依存関係に基づいて、ターゲットタスクもハードウェアアクセラレータ1およびハードウェアアクセラレータ3によって順に実行されると決定され、タスク3の依存関係に基づいて、タスク3がハードウェアアクセラレータ2によって実行されると決定される。この場合、タスク1の識別子Q001、タスク2の識別子Q002、およびターゲットタスクの識別子M002が、ハードウェアアクセラレータ1に対応する実行キュー1に順に配置される(タスク1もタスク2も実行されていないと仮定する)。タスク3の識別子Q003がハードウェアアクセラレータ2に対応する実行キュー2に格納される(タスク3は実行されていないと仮定する)。ターゲットタスクがハードウェアアクセラレータ1によって実行された後に取得されたデータの識別子M002-1はハードウェアアクセラレータ3に対応する実行キュー3に格納される。
【0063】
図4に示すように、各ハードウェアアクセラレータに対応する1つの実行キューがあり、実行キューは、タスクセット内にあり、対応するハードウェアアクセラレータによって実行されることになるタスクの識別子を格納することが留意されるべきである。本出願のいくつかの実装では、同時に複数のタスクセットがある場合、例えば3つのタスクセットがあると仮定すると、各ハードウェアアクセラレータは3つの実行キューに対応する。
図2に示すように、1つのハードウェアアクセラレータに対応する3つの実行キューは、それぞれ3つのタスクセットに対応する。m個のタスクセットがある場合、各ハードウェアアクセラレータにm個の実行キューがある。
【0064】
本出願のいくつかの実装では、実行キューはタスクスケジューラ内にあるストレージ領域であり得る、またはメモリ内にあるストレージ領域であり得る、または各ハードウェアアクセラレータから対応して分割されるストレージ領域であり得ることが留意されるべきである。これは特にここでは限定されない。
【0065】
本出願のいくつかの実装では、対応するターゲットタスクを実行するようにハードウェアアクセラレータをスケジューリングした後、タスクスケジューラは、ターゲットタスクを実行する対応するハードウェアアクセラレータによって返される指示メッセージを受信することがさらに留意されるべきである。指示メッセージは、ハードウェアアクセラレータがターゲットタスクを実行したことを示す。この場合、タスクスケジューラは、ハードウェアアクセラレータに対応する実行キューからターゲットタスクの識別子を削除し得る。理解しやすいように、
図4が依然として説明のための例として使用される。タスク1がハードウェアアクセラレータ1によって実行された後、ハードウェアアクセラレータ1は、タスク1が実行されたことを示すために、指示メッセージをタスクスケジューラに返す。この場合、タスクスケジューラは、実行キューからタスク1の識別子Q001を削除する。同様に、その後、タスク2が実行キュー1に示す順序で実行される。タスク2がハードウェアアクセラレータ1によって実行された後、タスク2の識別子Q002が実行キューから削除され、その後、元のターゲットタスクが実行キュー1に示された順序で実行される。ターゲットタスクがハードウェアアクセラレータ1によって実行された後、ターゲットタスクの識別子M002が実行キューから削除される。加えて、タスクを実行するたびに、ハードウェアアクセラレータ1は、実行されたタスクに対応するデータを格納する(例えば、メモリDDRにデータを格納する)。ターゲットタスクがハードウェアアクセラレータ1によって実行された後、取得されたデータ1が格納される。タスク1、タスク2、およびタスク3がすべて実行された後、タスクスケジューラは、ハードウェアアクセラレータ3にデータ1を実行するように指示する(実行キュー3のM002-1の前に他のタスクの識別子がないことが前提)。
【0066】
本出願のいくつかの実装では、ターゲットタスクが実行される前に最初に実行される必要があるタスクおよびこれらのタスクの実行順序(すなわち、第1の関連付けられたタスク)はターゲットタスクの依存関係に基づいて決定され得、ターゲットタスクが実行された後に実行条件を満たすタスク(第2の関連付けられたタスクと呼ばれる場合もある)が依存関係からさらに決定され得ることが留意されるべきである。例が説明のために使用される。第2の関連付けられたタスクがタスクmであると仮定する。タスクmを実行するための前提条件が、ターゲットタスクが実行されたことである場合、タスクmの依存関係において、ターゲットタスクはタスクmの第1の関連付けられたタスクである。タスクmが実行されるとき、タスクmは上記のように新しいターゲットタスクとして処理される。詳細はここでは再度説明しない。類推すると、タスクセット内の各タスクは独自の依存関係を有し、タスクセット内のすべてのタスクは、前述のスケジューリング方法で各タスクの依存関係に基づいて実行され得る。
【0067】
前述の解決策をよりよく理解するために、以下はタスクセット内のタスク間の特定の依存関係を説明するために
図5を例として使用する。タスクセットは7つのタスクを含むことが仮定され、これらはそれぞれTS1~TS7と表記され、それらの実行順序および依存関係が
図5に示される。TS7がTS1からを実行された後にのみ、タスクセット全体が完了する。より良くかつより明確に理解するために、「イベント(event)」の概念が導入される。
図6に示すように、b0~b5は6個のイベントである。したがって、タスクTS1~TS7のグループは「イベントタスクグループ」と呼ぶこともある。
図6に示した意味については、表1のタスクの説明および表2のイベントの説明を参照されたい。
【表1】
【表2】
【0068】
上記のタスク間の関連関係に基づいて、各タスクと他のタスク間の依存関係が取得され得る。各タスクは1つの依存関係に対応し得る、または、タスクセット内のすべてのタスク間の関連関係が依存関係(例えば、
図7に示す2次元チャート)を形成し得ることが留意されるべきである。これはここでは限定されない。
【0069】
加えて、イベントベースのタスクスケジューリングプロセスは、具体的には次のようになり得る:ソフトウェアは、最初にb0をトリガしてタスクTS1を開始および実行する。タスクTS1が実行された後、イベントb1がトリガされる。イベントb1は、同時に実行されるようにタスクリストのTS2およびTS3をスケジューリングする。タスクTS2が実行された後、イベントb2およびb4が通知される。イベントb2は、実行されるようにタスクリストのTS4をスケジューリングする。タスクTS3が実行された後、イベントb3およびb4が通知される。イベントb4が条件を満たす場合、タスクリストのTS6が実行されるようにスケジューリングされる。タスクTS6が実行された後、イベントb5が通知される。タスクTS4が実行される場合、イベントb3が通知される。イベントb3が条件を満たす場合、タスクリストのTS5が実行されるようにスケジューリングされる。イベントb5が条件を満たす場合、タスクリストのTS7が実行されるようにスケジューリングされる。タスクTS7が実行された後、イベントタスクグループ全体のタスクが完了する。
【0070】
前述の説明に基づいて、本出願のいくつかの実装では、各タスクの依存関係は2次元チャートの方法でメモリに格納され得る。
図7は、1つのタスクセット内の各タスクの1つの依存関係の2次元チャート、すなわち
図7のタスクグラフ0である。タスクグラフnは、n番目のタスクセット内の各タスクの1つの依存関係の2次元チャート(
図7には詳細には示されていない)を表す。
図7では、タスクグラフ0は、タスクセットに7つのタスクがあることを示し、これらのタスクはそれぞれt0~t6である。タスクグラフ0の上部は、タスクt0~t6の実行順序(矢印)と関連関係を表している。例としてt4を用いる。t4を実行するための前提条件は、t1およびt2の両方が実行されたことである。タスクグラフ0の中央部分は実行キュー内のタスクの識別子の配列順序を表し、識別子はタスクの実行順序の「先頭」から「末尾」まで矢印方向に配列される。タスクグラフ0の下部は、各実行キューに対応するエグゼキュータが、タスクスケジューラと各ハードウェアアクセラレータとの間のインターフェイスを提供し、実行キュー内のタスクの実行順序において、対応するハードウェアアクセラレータに実行命令を配信することを表す。
【0071】
本出願の前述の実装では、タスクスケジューラはまずターゲットタスクを取得し(例えば、はメモリからターゲットタスクを取得し)、ターゲットタスクと関連付けられたタスクとの間の依存関係を取得する。依存関係に基づいて、関連付けられたタスク内の第1の関連付けられたタスク(例えば、ターゲットタスクを実行するための前提条件は、タスク1、タスク2などがすべて成功裏に実行されていることである)が成功裏に実行されたと決定される場合、ターゲットタスクが実行条件を満たしていることを示す。この場合、タスクスケジューラは、ターゲットタスクを実行するようにターゲットタスクの実行に関連するハードウェアアクセラレータ
(1つまたは複数であり得る)をスケジューリングする。本出願のこの実施形態では、タスクスケジューラがCPUと各ハードウェアアクセラレータとの間に接続される。タスクスケジューラは、ハードウェアスケジューリングを介して、タスク間の依存関係に基づいて、各タスクを実行するようHACをスケジューリングするように構成される。各タスクの配信は、直接ハードウェアアクセスによって実行される。これは、タスクの配信の遅延を短縮し、間接的にシステムの処理性能を向上させる。
【0072】
以下は、制御システムがMDCシナリオにおける制御システムである例を使用して、ハードウェアアクセラレータをスケジューリングするための前述の方法を説明する。MDCシナリオでは、現在の制御システムにおけるハードウェアアクセラレータ(いくつかのハードウェアアクセラレータのみが表示されている、例えば、ビデオデコーディングアクセラレータ、ビジョン前処理アクセラレータ、画像デコーディングアクセラレータ、画像エンコーディングアクセラレータ、およびAIモジュール)の位置が
図8に示される。メインコントロールCPUは、対応するタスクを実行するように各ハードウェアアクセラレータをスケジューリングする。音声、画像、またはビデオが、外部センサまたはPCIeインターフェイスから入力され、ストレージのためにメモリに送信され得る。代替的には、音声、画像、またはビデオが、画像デコーディング(JPEGデコーディング、JPEGD)アクセラレータまたはビデオデコーディング(Video Decoding、VEDC)アクセラレータなどのハードウェアアクセラレータによって処理された後、ビジョン前処理がビジョン前処理(Vision Pre-Processing、VPC)アクセラレータによって実行され、その後さらなる処理のためにAIモジュールに送信される。MDCシナリオでは、1つのスケジューリングされたタスクは、センサ(例えば、カメラ)を使用することによって端末装置(例えば、車両)によって取得されたデータフロー(生でーあと呼ばれることもある)が一連の関連するハードウェアアクセラレータによって処理されて、指定された機能を持つ出力データ(例えば、障害物を感知するために使用されるデータおよび別のデバイスに送信されるために使用されるデータ)を取得する特定の実装プロセスである。本出願のいくつかの実装では、1つのスケジューリングされたタスクは、フロントエンドタスクおよびバックエンドタスクに具体的に分けられ得る。フロントエンドタスクは、主にデータ入力を担当し、主に複数のタスク、例えば、マルチセンサソース(画像、ビデオなど)情報フローの収集、画像処理、クロッピング(cropping)、再構築(reassembling)、サイズ調整などのデータ処理、およびそのプロセスにおけるデータ格納とデータ転送を含む。異なるタスクを処理するハードウェアアクセラレータは、連携するようにスケジューリングされる必要がある。バックエンドタスクは、処理されたフロントエンドタスクによって取得されたデータを計算することを主に担当する。すなわち、フロントエンドタスクによって処理されたデータが取得された後、AIモジュールのAI CPUは、データの計算、分析、トレーニング、予測、および調整などの後続タスクを実行するように通知される。本出願の他のいくつかの実装では、1つのスケジューリングされたタスクはフロントエンドタスクのみを含み得ることが留意されるべきである。例えば、タスクスケジューラが、入力データに対する画像処理、クロッピング、再構築、サイズ調整などの処理を実行するように各ハードウェアアクセラレータを呼び出した後、処理されたデータは、別の端末装置(携帯電話やパソコンなど)に送信され、別の端末装置は、AIコンピューティングを実行し、その後計算結果を端末装置に返す。
【0073】
図9はMDCシナリオにおける制御システムのタスクスケジューラの位置を示す。タスクスケジューラは、各ハードウェアアクセラレータ、例えば、
図9のビデオデコーディングアクセラレータ、ビジョン前処理アクセラレータ、画像デコーディングアクセラレータ、または画像エンコーディングをスケジューリングするように、各ハードウェアアクセラレータへのインターフェイスを提供する。MDCシナリオでは、1つのスケジューリングされたタスクのタスクフロー(タスクセットとも呼ばれることがある)が、複数のタスクに分割され、並列処理または逐次処理が複数のハードウェアアクセラレータによって実行される。本出願の本実施形態におけるハードウェアアクセラレータをスケジューリングする方法は、スケジューリングされたタスクの処理性能を向上させるために使用される。タスクセット内のタスクが実行された後、タスクスケジューラは、タスクが実行された後に生成されたデータを格納する(例えば、データをメモリに格納する)。タスクセット内のタスクは、1つのスケジューリングされたタスクを形成する。元のスケジューリングされたタスクは、タスクセット内のすべてのタスクが実行された後にのみ完了する。前述のスケジューリング方法によれば、1つのスケジューリングされたタスクにおけるターゲットタスクは、具体的には、タスクスケジューラが、AIモジュールの計算後にフィードバックデータを取得するために、AIコンピューティングを実行するようにAIモジュール(例えば、AI CPU)に指示することであり得る。フィードバックデータは、車両上のユーザの操作をガイドするために使用され得る。具体的には、いくつかの適用シナリオでは、フィードバックデータは、車線境界線および/または停止線を感知するために使用されるデータであり得、車両所有者が指定された車線を走行するまたは指定された駐車エリアで停止するように案内するために使用される。代替的には、フィードバックデータは、安全領域を感知するために使用されるデータであり得、この車両を他の車両から安全な距離に保つように車両所有者を案内するために使用される。代替的には、フィードバックデータは障害物(例えば障害物からの距離)を感知するために使用されるデータであり得、事前に安全対策(例えば、停止や方向転換)を講じるように車両所有者を案内するために使用される。フィードバックデータの種類および機能はここでは限定されない。対応するフィードバックデータは、実際の適用シナリオに基づいて取得され得る。したがって、車両所有者は、対応するフィードバックデータに基づいて車両を操作するように案内され、それによって運転の安全性および運転性能を向上させる。
【0074】
スケジューリングされたタスクをよりよく理解するために、以下はMACの適用シナリオを参照して説明を提供する。
図10を参照されたい。車両に搭載された各種センサ(一般的なレーダー、カメラ、レーザーレーダー、および慣性測定ユニットなど)は、まず各種センサデータを取得する。加えて、マップが、ロケーションメッセージを取得するまたはローカルマップを取得するために使用される。データは生データと呼ばれることがある。次に、生データは、処理されたデータ(すなわち、
図10のセンシング(sensing(感知))データ)を取得するために、処理のために対応するハードウェアアクセラレータにタスクスケジューラによって割り当てられる。取得されたセンシングデータの特定の目的は、異なるハードウェアアクセラレータによって異なる。例えば、レーダーセンシングのためのアクセラレータ(1つまたは複数であり得る)が生データを処理した後に出力されるセンシングデータは、障害物を感知するために使用され得、視覚的な車線センシングのためのアクセラレータ(1つまたは複数であり襟)が生データを処理した後に出力されるセンシングデータは、車線境界線を感知するために使用され得る。生データから、タスクスケジューラによって各ハードウェアアクセラレータをスケジューリングすることによって取得されたセンシングデータまでの各プロセスは、スケジューリングされたタスクの特定の実行プロセスである。最後に、ユーザが直感的に読み取ることができるデータ(例えば、ディスプレイインターフェイスに表示されるシミュレートされた車線境界線またはシミュレートされた安全領域)は、各センシングデータの融合(fusion)または空間認識によって取得される。
【0075】
本出願のいくつかの実装では、タスクセット内の各タスクを形成するデータは、搭載されたセンサデバイス(例えば、カメラ)を使用することにより車両によって取得され得ることが留意されるべきである。
【0076】
本出願のいくつかの実装では、1つのスケジューリングされたタスク内の分割されたタスク間の依存関係は
図7の2次元チャートを用いて表され得ることが留意されるべきである。2次元チャートはメモリに格納され得る。
【0077】
以下は、本出願の本実施形態で説明した方法が適用される実際のシナリオを説明する。
図11は、サラウンドビューステッチング(surround-view stitching)およびイメージセンシング部の典型的なデータフローグラフを示す。一方向矢印の線は、データフローのフロー方向を示す。双方向矢印の線は、タスクスケジューラと各ハードウェアアクセラレータとの間にインターフェイスがあることを示す。タスクスケジューラは、これらのインターフェイスを介して各ハードウェアアクセラレータをスケジューリングし得る。
図11に示すように、タスクスケジューラは、画像処理アクセラレータ1~4、ビジョン前処理アクセラレータ1~3、およびAIモジュール1~2のいずれか1つをスケジューリングし得る。車両の前後左右にそれぞれ設置された4つの魚眼カメラは、まず画像データを収集するように構成されている。タスクスケジューラは、画像処理アクセラレータ1~4をスケジューリングして、対応する分岐(branches)の画像データに対して画像処理を行い、その後、4チャンネルの画像データに対して画像歪み補正およびサラウンドビューステッチングを行い、1チャンネルのパノラマを出力する。パノラマは3か所に出力される(すなわち、3つのタスクセットが形成される)。第1のチャネル(すなわち、第1のタスクセット)がビジョン前処理アクセラレータ1に送信されて処理されたデータを取得し、その後処理されたデータはAIモジュール1に計算のために出力される。計算されたフィードバックデータは、車線境界線および停止線を感知するために使用される。同様に、第2のチャネル(すなわち、第2のタスクセット)が別のビジョン前処理アクセラレータ2に送信されて処理されたデータを取得し、その後処理されたデータは別のAIモジュール2に計算のために出力される。計算されたフィードバックデータは、車両が走行する安全領域を感知するために使用される。第3のチャネル(すなわち、第3のタスクセット)は、画像のエンコーディング、圧縮、およびストレージのためにビデオエンコーディングアクセラレータに直接送信される。各タスクセットに含まれる各タスクは、前述のスケジューリング方法に従って処理され得る。詳細は、
図3に対応する本実施形態の方法を参照されたい。詳細はここでは説明しない。
【0078】
図3に対応する実施形態によれば、本出願のこの実施形態を実装するための上述の解決策をよりよく説明するために、以下は上述の解決策を実装するように構成されたタスクスケジューラを提供する。詳しくは、
図12は、本出願の一実施形態によるタスクスケジューラの構造の概略図である。タスクスケジューラ1200は、取得モジュール1201、決定モジュール1202、およびスケジューリングモジュール1203を含む。取得モジュール1201は、ターゲットタスクを取得するように構成される。決定モジュール1202は、依存関係に基づいて、ターゲットタスクに関連付けられた第1の関連付けられたタスクを決定するように構成される。依存関係は、タスクセット内のタスクの実行順序を示す。スケジューリングモジュール1203は、決定モジュール1202が第1の関連付けられたタスクが実行されたと決定するときに、ターゲットタスクを実行するよう少なくとも1つのハードウェアアクセラレータをスケジューリングするように構成される。
【0079】
可能な設計では、スケジューリングモジュール1203がターゲットタスクを実行するために少なくとも1つのハードウェアアクセラレータをスケジューリングするとき、少なくとも1つのハードウェアアクセラレータがターゲットタスクを順に実行する。
【0080】
可能な設計では、少なくとも1つのハードウェアアクセラレータのそれぞれが実行キューに対応する。ターゲットタスクの識別子が、各ハードウェアアクセラレータに対応する実行キューに格納される。
【0081】
可能な設計では、スケジューリングモジュール1203はさらに:スケジューリングモジュール1203がターゲットタスクを実行するように少なくとも1つのハードウェアアクセラレータをスケジューリングした後、少なくとも1つのハードウェアアクセラレータによって返された指示メッセージを受信し、その指示メッセージは少なくとも1つのハードウェアアクセラレータがターゲットタスクを実行したことを示し、少なくとも1つのハードウェアアクセラレータに対応する実行キューからターゲットタスクの識別子を削除する、ように構成される。
【0082】
可能な設計では、スケジューリングモジュール1203は、さらに:タスクセット内の各タスクが実行された後に取得されたデータを格納するように構成される。タスクセット内のすべてのタスクは、スケジューリングされたタスクを形成する。
【0083】
可能な設計では、タスクセット内のタスクを形成するデータは、端末装置に搭載されたカメラ装置を使用することにより端末装置によって取得される。
【0084】
可能な設計では、タスクセット内の各タスクが実行された後に取得されるデータは、AIモジュールによって計算されたフィードバックデータを含む。フィードバックデータは、端末装置の操作を案内するために使用される。AIモジュールは、少なくとも1つのハードウェアアクセラレータに属する。
【0085】
可能な設計では、端末装置は車両である。フィードバックデータは、車線境界線および/または停止線を感知するために使用されるデータ、または安全エリアを感知するために使用されるデータ、障害物を感知するために使用されるデータを含む。フィードバックデータの種類および機能はここでは限定されない。対応するフィードバックデータは、実際のアプリケーションシナリオに基づいて取得され得る。したがって、車両所有者はフィードバックデータに基づいて車両を操作するように案内され、それによって運転の安全性および運転性能を向上させる。
【0086】
タスクスケジューラ1200におけるモジュール/ユニット間の情報交換および実行プロセスなどの内容は、本出願における
図3に対応する方法の実施形態と同じ概念に基づいていることが留意されるべきである。具体的な内容については、本出願の上述の方法の実施形態の説明を参照されたい。詳細はここでは説明しない。
【0087】
本出願の一実施形態は、さらにタスクスケジューラを提供する。
図13は、本出願の一実施形態によるタスクスケジューラの構造の概略図である。説明を容易にするため、本出願の本実施形態に関連する部分のみを示す。開示されていない具体的な技術的詳細については、本出願の実施形態における方法の部分を参照されたい。
図12に対応する実施形態で説明したタスクスケジューラのモジュールは、タスクスケジューラ1300に展開され得、
図12に対応する実施形態のタスクスケジューラの機能を実装するように構成される。具体的には、タスクスケジューラ1300は、1つまたは複数のサーバによって実装される。タスクスケジューラ1300は、構成または性能が異なるために大きく異なる場合があり、1つまたは複数の中央処理装置(central processing units、CPU)1322(例えば、1つまたは複数のプロセッサ)、メモリ1332、およびアプリケーションプログラム1342またはデータ1344を格納する1つまたは複数の記憶媒体1330(例えば、1つまたは複数の大容量記憶装置)を含み得る。メモリ1332および記憶媒体1330は、一時記憶または永続記憶であり得る。記憶媒体1330に格納されたプログラムは、1つまたは複数のモジュール(図には示されていない)を含み得、各モジュールは、ハードウェアアクセラレータのための一連の命令操作を含み得る。さらに、中央処理装置1322は、記憶媒体1330と通信し、記憶媒体1330内の一連の命令操作をタスクスケジューラ1300上で実行するように構成され得る。例えば、中央処理装置1322は、ターゲットタスクを取得し、依存関係に基づいて、ターゲットタスクに関連付けられた第1の関連付けられたタスクを決定するように構成され得る。依存関係は、タスクセット内のタスクの実行順序を示す。第1の関連付けられたタスクが実行されたことを決定する場合、中央処理装置1322はターゲットタスクを実行するように少なくとも1つのハードウェアアクセラレータをスケジューリングする。
【0088】
タスクスケジューラ1300はさらに、1つまたは複数の電源1326、1つまたは複数の有線または無線ネットワークインターフェイス1350、1つまたは複数の入出力インターフェイス1358、および/またはWindows Server(商標)、Mac OS X(商標)、Unix(商標)、Linux(商標)、FreeBSD(商標)などの1つまたは複数のオペレーティングシステム1341を含み得る。
【0089】
本出願の本実施形態では、
図3に対応する実施形態のタスクスケジューラによって実行されるステップが、
図13に示す構造に基づいて実装され得る。詳細はここでは説明しない。
【0090】
加えて、記載されている装置の実施形態はあくまで一例であることが留意されるべきである。別々の部分として記述されるユニットは、物理的に分かれていてもそうでなくてもよく、ユニットとして表示される部分は、物理的なユニットであってもそうでなくてもよく、1つの位置に配置されていてもよく、または複数のネットワークユニットに分散されていてもよい。いくつかまたはすべてのモジュールは、実施形態の解決策の目的を達成するために、実際のニーズにしたがって選択され得る。加えて、本出願によって提供される装置の実施形態の添付図面では、モジュール間の接続関係は、モジュールが相互に通信接続を持つことを示しており、これは1つ以上の通信バスまたは信号ケーブルとして具体的に実装され得る。
【0091】
上述の実装の説明に基づいて、当業者は、本出願が必要なユニバーサルハードウェアに加えてソフトウェアによって、または専用の集積回路、専用のCPU、専用のメモリ、専用のコンポーネントなどを含む専用のハードウェアによって実装され得ることを明確に理解することができる。概して、コンピュータプログラムによって実行することができる機能は、対応するハードウェアを使用することによって簡単に実装することができる。さらに、同じ機能を実現するために使用される特定のハードウェア構造は、例えば、アナログ回路、デジタル回路、または専用回路の形態の、さまざまな形態のものであり得る。しかし、本出願については、ソフトウェアプログラムの実装はほとんどの場合、より優れた実装である。このような理解に基づき、本出願の技術的な解決策は本質的に、または、従来の技術に貢献する部分は、ソフトウェア製品の形で実装され得る。コンピュータソフトウェア製品は、コンピュータのフロッピー(登録商標)ディスク、USBフラッシュドライブ、リムーバブルハードディスク、ROM、RAM、磁気ディスク、または光ディスクなどの可読記憶媒体に格納され、本出願の実施形態に記載されている方法を実行するようにコンピュータデバイス(これは、パーソナルコンピュータ、トレーニングデバイス、またはネットワークデバイスであり得る)に指示するためのいくつかの命令を含む。
【0092】
上述の実施形態の全てまたはいくつは、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせによって実装され得る。ソフトウェアを使用して実施形態を実装する場合、実施形態の全てまたは一部はコンピュータプログラム製品の形で実装され得る。
【0093】
コンピュータプログラム製品は、1つ以上のコンピュータ命令を含む。コンピュータプログラム命令がコンピュータにロードされて実行されるとき、本出願の実施形態に従った手順または機能が全てまたは部分的に生成される。コンピュータには、汎用コンピュータ、専用コンピュータ、コンピュータネットワーク、またはその他のプログラム可能な装置であり得る。コンピュータ命令は、コンピュータ可読記憶媒体に格納され得るまたはコンピュータ可読記憶媒体から別のコンピュータ可読記憶媒体に送信され得る。例えば、コンピュータの命令は、ウェブサイト、コンピュータ、トレーニングデバイス、またはデータセンターから別のウェブサイト、コンピュータ、トレーニングデバイス、またはデータセンターに有線(例えば、同軸ケーブル、光ファイバ、またはデジタル加入者線(DSL))または無線(赤外線、ラジオ、またはマイクロ波)で送信され得る。コンピュータ可読記憶媒体は、コンピュータによってアクセス可能な任意の使用可能な媒体、または1つ以上の使用可能な媒体を統合したトレーニング装置もしくはデータセンターなどのデータストレージデバイスであり得る。使用可能な媒体は、磁気媒体(例えば、フロッピー(登録商標)ディスク、ハードディスク、または磁気テープなど)、光媒体(例えば、DVD)、半導体媒体(例えば、ソリッドステートディスク(Solid State Disk、SSD))等であり得る。