IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ユニスト(ウルサン ナショナル インスティテュート オブ サイエンス アンド テクノロジー)の特許一覧

特表2024-542890スレッド割り当て方法、スレッド割り当て装置、及びコンピュータ読み取り可能な記録媒体
<>
  • 特表-スレッド割り当て方法、スレッド割り当て装置、及びコンピュータ読み取り可能な記録媒体 図1
  • 特表-スレッド割り当て方法、スレッド割り当て装置、及びコンピュータ読み取り可能な記録媒体 図2
  • 特表-スレッド割り当て方法、スレッド割り当て装置、及びコンピュータ読み取り可能な記録媒体 図3
  • 特表-スレッド割り当て方法、スレッド割り当て装置、及びコンピュータ読み取り可能な記録媒体 図4
  • 特表-スレッド割り当て方法、スレッド割り当て装置、及びコンピュータ読み取り可能な記録媒体 図5
  • 特表-スレッド割り当て方法、スレッド割り当て装置、及びコンピュータ読み取り可能な記録媒体 図6
  • 特表-スレッド割り当て方法、スレッド割り当て装置、及びコンピュータ読み取り可能な記録媒体 図7
  • 特表-スレッド割り当て方法、スレッド割り当て装置、及びコンピュータ読み取り可能な記録媒体 図8
  • 特表-スレッド割り当て方法、スレッド割り当て装置、及びコンピュータ読み取り可能な記録媒体 図9
  • 特表-スレッド割り当て方法、スレッド割り当て装置、及びコンピュータ読み取り可能な記録媒体 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-18
(54)【発明の名称】スレッド割り当て方法、スレッド割り当て装置、及びコンピュータ読み取り可能な記録媒体
(51)【国際特許分類】
   G06F 9/50 20060101AFI20241111BHJP
【FI】
G06F9/50 120
G06F9/50 150C
G06F9/50 150A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024532926
(86)(22)【出願日】2022-05-17
(85)【翻訳文提出日】2024-05-31
(86)【国際出願番号】 KR2022007074
(87)【国際公開番号】W WO2023132414
(87)【国際公開日】2023-07-13
(31)【優先権主張番号】10-2022-0002525
(32)【優先日】2022-01-07
(33)【優先権主張国・地域又は機関】KR
(81)【指定国・地域】
(71)【出願人】
【識別番号】515351884
【氏名又は名称】ユニスト(ウルサン ナショナル インスティテュート オブ サイエンス アンド テクノロジー)
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】ベク、ウンキ
(72)【発明者】
【氏名】パク、ジンス
(72)【発明者】
【氏名】パク、ソンボム
(72)【発明者】
【氏名】ハン、ミョンギュン
(57)【要約】
本発明は、アクティブ(Active)コアの数に基づいて複数のスレッドグループを生成し、スレッドあたりの演算量に基づいて複数のスレッドグループのそれぞれに割り当てるスレッドの数を決定し、複数のスレッドのそれぞれの優先順位と、前記決定された数に基づいてスレッドグループのそれぞれにスレッドを割り当て、アクティブコアのそれぞれにスレッドグループを割り当てる、スレッド割り当て方法を提供する。
【選択図】図1

【特許請求の範囲】
【請求項1】
コンピューティングデバイスに含まれる複数のコアのうちアクティブ(Active)コアの数に基づいて複数のスレッドグループを生成する段階;
前記複数のスレッドグループのそれぞれのスレッドあたりの演算量に基づいて、現在の周期内で実行する複数のスレッドのうち前記複数のスレッドグループのそれぞれに割り当てるスレッドの数を決定する段階;
前記複数のスレッドのそれぞれの優先順位と、前記決定された数に基づいて前記複数のスレッドグループのそれぞれに少なくとも1つのスレッドを割り当てる段階;及び
前記アクティブコアのそれぞれに前記複数のスレッドグループのそれぞれを割り当てる段階;を含む、スレッド割り当て方法。
【請求項2】
前記スレッドの数を決定する段階は、
前記複数のスレッドグループのそれぞれに割り当てるスレッドの数を初期化する段階;及び
前記スレッド当たりの演算量が大きい順に、前記複数のスレッドグループのそれぞれに割り当てるスレッドの数を増やす段階;を含むことを特徴とする請求項1に記載のスレッド割り当て方法。
【請求項3】
前記スレッドの数を増やす段階は、
前記複数のスレッドグループのそれぞれに前記複数のスレッドがすべて割り当てられるまで繰り返されることを特徴とする請求項2に記載のスレッド割り当て方法。
【請求項4】
前記少なくとも1つのスレッドを割り当てる段階は、
前記複数のスレッドグループのそれぞれに割り当てるスレッドの数に基づいて、前記スレッドあたりの演算量を計算する段階;
前記スレッド当たりの演算量に基づいて前記複数のスレッドグループをソートする段階;及び
前記ソートされた順に前記複数のスレッドグループのそれぞれに前記少なくとも1つのスレッドを割り当てる段階;を含むことを特徴とする請求項1に記載のスレッド割り当て方法。
【請求項5】
前記少なくとも1つのスレッドを割り当てる段階は、
前記複数のスレッドのそれぞれに対して予め付与されたリソースおよびスレッドIDのうち少なくとも1つに基づいて、前記複数のスレッドのそれぞれに対する優先順位を設定する段階;を含むことを特徴とする請求項4に記載のスレッド割り当て方法。
【請求項6】
前記優先順位は、
前記予め付与されたリソースが少ないほど高く設定され、前記スレッドIDの値が小さいほど高く設定されることを特徴とする請求項5に記載のスレッド割り当て方法。
【請求項7】
前記複数のスレッドグループのそれぞれを割り当てる段階は、
割り当てられていない少なくとも1つのスレッドグループのうち、前記スレッド当たりの演算量が最も大きいスレッドグループを選択する段階;
前記選択されたスレッドグループに含まれた少なくとも1つのスレッドのそれぞれのコア割り当て記録に基づいて、割り当てられていないアクティブコアのそれぞれに対する前記選択されたスレッドグループのマイグレーションコストを算出する段階;及び
前記算出されたマイグレーションコストが最も小さいアクティブコアに前記選択されたスレッドグループを割り当てる段階;を含むことを特徴とする請求項1に記載のスレッド割り当て方法。
【請求項8】
前記マイグレーションコストを算出する段階は、
相異なるプロセッサ間のマイグレーションの第1コストと、相異なるコア間のマイグレーションの第2コストとに基づいて、前記マイグレーションコストを算出し、前記第2コストより前記第1コストにさらに大きい重みを付与することを特徴とする請求項7に記載のスレッド割り当て方法。
【請求項9】
前記複数のアクティブコアのそれぞれに前記複数のスレッドグループのそれぞれが割り当てられるようにスケジューリング周期を設定する段階をさらに含むことを特徴とする請求項1に記載のスレッド割り当て方法。
【請求項10】
前記スケジューリング周期を設定する段階は、
前記複数のスレッドに対する性能データを取得する段階;及び
前記性能データに基づいて前記スケジューリング周期を調整する段階;を含むことを特徴とする請求項9に記載のスレッド割り当て方法。
【請求項11】
コンピューティング装置に含まれている複数のコアのうちアクティブ(Active)コアの数に基づいて複数のスレッドグループを生成する生成部;
前記複数のスレッドグループのそれぞれのスレッドあたりの演算量に基づいて、現在の周期内で実行する複数のスレッドのうち、前記複数のスレッドグループのそれぞれに割り当てるスレッドの数を決定する設定部;
前記複数のスレッドのそれぞれの優先順位と、前記決定された数に基づいて前記複数のスレッドグループのそれぞれに少なくとも1つのスレッドを割り当てるスレッド割り当て部;及び
前記アクティブコアの各々に前記複数のスレッドグループのそれぞれを割り当てるグループ割り当て部;を含む、スレッド割り当て装置。
【請求項12】
前記設定部は、
前記複数のスレッドグループのそれぞれに割り当てるスレッドの数を初期化し、前記スレッド当たりの演算量が大きい順に前記複数のスレッドグループのそれぞれに割り当てるスレッドの数を増加させることを特徴とする請求項11に記載のスレッド割り当て装置。
【請求項13】
前記スレッド割り当て部は、
前記複数のスレッドグループのそれぞれに割り当てるスレッドの数に基づいて前記スレッドあたりの演算量を算出し、前記スレッドあたりの演算量に基づいて前記複数のスレッドグループをソートし、前記ソートされた順に前記複数のスレッドグループのそれぞれに前記少なくとも1つのスレッドを割り当てることを特徴とする請求項11に記載のスレッド割り当て装置。
【請求項14】
前記スレッドグループ割り当て部は、
割り当てられていない少なくとも1つのスレッドグループのうち、前記スレッド当たりの演算量が最も大きいスレッドグループを選択し、前記選択されたスレッドグループに含まれた少なくとも1つのスレッドのそれぞれのコア割り当て記録に基づいて、割り当てられていないアクティブコアのそれぞれに対する前記選択されたスレッドグループのマイグレーションコストを算出し、前記算出されたマイグレーションコストが最も小さいアクティブコアに前記選択されたスレッドグループを割り当てることを特徴とする請求項11に記載のスレッド割り当て装置。
【請求項15】
前記複数のアクティブコアのそれぞれに前記複数のスレッドグループのそれぞれが割り当てられるようにスケジューリング周期を設定するスケジューリング部;をさらに含むことを特徴とする請求項11に記載のスレッド割り当て装置。
【請求項16】
コンピュータプログラムを格納しているコンピュータ読み取り可能な非一時的記録媒体であって、
前記コンピュータプログラムは、プロセッサによって実行されると、
コンピューティングデバイスに含まれる複数のコアのうちアクティブ(Active)コアの数に基づいて複数のスレッドグループを生成する段階;
前記複数のスレッドグループのそれぞれのスレッドあたりの演算量に基づいて、現在のサイクル内で実行する複数のスレッドのうち、前記複数のスレッドグループのそれぞれに割り当てるスレッドの数を決定する段階;
前記複数のスレッドのそれぞれの優先順位と、前記決定された数に基づいて前記複数のスレッドグループのそれぞれに少なくとも1つのスレッドを割り当てる段階;及び
前記アクティブコアのそれぞれに前記複数のスレッドグループのそれぞれを割り当てる段階;を含む方法を前記プロセッサが実行するようにするための命令語を含む、コンピュータ読み取り可能な記録媒体。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はスレッド割り当て方法に関し、より具体的には、コンピューティングデバイスに含まれる複数のコアにスレッドを割り当てる方法に関するものである。
【背景技術】
【0002】
従来のスレッド割り当て技法は、コアに割り当てられたスレッドに演算リソースが不均衡に割り当てられたり、スレッド間のハードウェアリソースが衝突したりする。
【0003】
例えば、従来はコア数がスレッド数の約数ではない場合、一部のコアに他のコアよりも多くのスレッドが割り当てられ、コアの性能が著しく低下することがある。また、コア数が多くなるほどスレッド間のリソース不均衡が大きくなるため、より大きな性能低下が発生することもある。
【0004】
さらに、異種コアの場合、異種コア間の性能差が考慮されずにスレッド割り当てが実行されるという問題がある。
【発明の概要】
【0005】
本発明が解決しようとする技術的課題は、コンピューティング装置に含まれる多数のコアのうちアクティブ(Active)コアに対応するようにスレッドグループを生成し、生成されたスレッドグループを通じてスレッドをアクティブコアに割り当てるスレッド割り当て方法を提供することである。
【課題を解決するための手段】
【0006】
本発明の一実施例によるスレッド割り当て方法は、コンピューティングデバイスに含まれる複数のコアのうちアクティブ(Active)コアの数に基づいて複数のスレッドグループを生成する段階;前記複数のスレッドグループのそれぞれのスレッドあたりの演算量に基づいて、現在の周期内で実行する複数のスレッドのうち前記複数のスレッドグループのそれぞれに割り当てるスレッドの数を決定する段階;前記複数のスレッドのそれぞれの優先順位と、前記決定された数に基づいて前記複数のスレッドグループのそれぞれに少なくとも1つのスレッドを割り当てる段階;及び前記アクティブコアのそれぞれに前記複数のスレッドグループのそれぞれを割り当てる段階;を含む。
【0007】
また、前記スレッドの数を決定する段階は、前記複数のスレッドグループのそれぞれに割り当てるスレッドの数を初期化する段階;及び前記スレッド当たりの演算量が大きい順に前記複数のスレッドグループのそれぞれに割り当てるスレッドの数を増やす段階を含むことができる。
【0008】
また、前記スレッドの数を増やす段階は、前記複数のスレッドグループのそれぞれに前記複数のスレッドがすべて割り当てられるまで繰り返されることを特徴とする。
【0009】
また、前記少なくとも1つのスレッドを割り当てる段階は、前記複数のスレッドグループのそれぞれに割り当てるスレッドの数に基づいて、前記スレッドあたりの演算量を計算する段階;前記スレッド当たりの演算量に基づいて前記複数のスレッドグループをソートする段階;及び前記ソートされた順に前記複数のスレッドグループのそれぞれに前記少なくとも1つのスレッドを割り当てる段階を含むことができる。
【0010】
また、前記少なくとも1つのスレッドを割り当てる段階は、前記複数のスレッドのそれぞれに対して予め付与されたリソースおよびスレッドIDのうち少なくとも1つに基づいて、前記複数のスレッドのそれぞれに対する優先順位を設定する段階を含むことができる。
【0011】
また、前記優先順位は、前記予め付与されたリソースが少ないほど高く設定され、前記スレッドIDの値が小さいほど高く設定されることを特徴とす。
【0012】
また、前記マイグレーションコストを算出する段階は、相異なるプロセッサ間のマイグレーションの第1コストと、相異なるコア間のマイグレーションの第2コストとに基づいて、前記マイグレーションコストを算出し、前記第2コストより前記第1コストにさらに大きい重みを付与することを特徴とす。
【0013】
また、前記複数のスレッドグループのそれぞれを割り当てる段階は、割り当てられていない少なくとも1つのスレッドグループのうち、前記スレッド当たりの演算量が最も大きいスレッドグループを選択する段階;前記選択されたスレッドグループに含まれた少なくとも1つのスレッドのそれぞれのコア割り当て記録に基づいて、割り当てられていないアクティブコアのそれぞれに対する前記選択されたスレッドグループのマイグレーションコストを算出する段階;及び前記算出されたマイグレーションコストが最も小さいアクティブコアに前記選択されたスレッドグループを割り当てる段階を含むことができる。
【0014】
また、前記マイグレーションコストを算出する段階は、相異なるプロセッサ間のマイグレーションの第1コストと、相異なるコア間のマイグレーションの第2コストとに基づいて、前記マイグレーションコストを算出し、前記第2コストより前記第1コストにさらに大きい重みを付与することを特徴とする。
【0015】
また、前記複数のアクティブコアのそれぞれに前記複数のスレッドグループのそれぞれが割り当てられるようにスケジューリング周期を設定する段階を含むことができる。
【0016】
また、前記スケジューリング周期を設定する段階は、前記複数のスレッドに対する性能データを取得する段階;及び前記性能データに基づいて前記スケジューリング周期を調整する段階を含むことができる。
【0017】
本発明のまた他の実施例によるスレッド割り当て装置は、コンピューティング装置に含まれている複数のコアのうちアクティブ(Active)コアの数に基づいて複数のスレッドグループを生成する生成部;前記複数のスレッドグループのそれぞれのスレッドあたりの演算量に基づいて、現在の周期内で実行する複数のスレッドのうち、前記複数のスレッドグループのそれぞれに割り当てるスレッドの数を決定する設定部;前記複数のスレッドのそれぞれの優先順位と、前記決定された数に基づいて前記複数のスレッドグループのそれぞれに少なくとも1つのスレッドを割り当てるスレッド割り当て部;及び前記アクティブコアの各々に前記複数のスレッドグループのそれぞれを割り当てるグループ割り当て部;を含む。
【0018】
また、前記設定部は、前記複数のスレッドグループのそれぞれに割り当てるスレッドの数を初期化し、前記スレッド当たりの演算量が大きい順に前記複数のスレッドグループのそれぞれに割り当てるスレッドの数を増加させることができる。
【0019】
また、前記スレッド割り当て部は、前記複数のスレッドグループのそれぞれに割り当てるスレッドの数に基づいて前記スレッドあたりの演算量を算出し、前記スレッドあたりの演算量に基づいて前記複数のスレッドグループをソートし、前記ソートされた順に前記複数のスレッドグループのそれぞれに前記少なくとも1つのスレッドを割り当ことができる。
【0020】
また、前記スレッドグループ割り当て部は、割り当てられていない少なくとも1つのスレッドグループのうち、前記スレッド当たりの演算量が最も大きいスレッドグループを選択し、前記選択されたスレッドグループに含まれた少なくとも1つのスレッドのそれぞれのコア割り当て記録に基づいて、割り当てられていないアクティブコアのそれぞれに対する前記選択されたスレッドグループのマイグレーションコストを算出し、前記算出されたマイグレーションコストが最も小さいアクティブコアに前記選択されたスレッドグループを割り当できる。
【0021】
また、前記複数のアクティブコアのそれぞれに前記複数のスレッドグループのそれぞれが割り当てられるようにスケジューリング周期を設定するスケジューリング部;をさらに含むことができる。
【0022】
本発明のもう一つの側面は、コンピュータプログラムを保存しているコンピューターが読み取れる記録媒体として、前記コンピュータプログラムがプロセッサによって実行されると、コンピューティングデバイスに含まれる複数のコアのうちアクティブ(Active)コアの数に基づいて複数のスレッドグループを生成する段階;前記複数のスレッドグループのそれぞれのスレッドあたりの演算量に基づいて、現在の周期内で実行する複数のスレッドのうち前記複数のスレッドグループのそれぞれに割り当てるスレッドの数を決定する段階;前記複数のスレッドのそれぞれの優先順位と、前記決定された数に基づいて前記複数のスレッドグループのそれぞれに少なくとも1つのスレッドを割り当てる段階;及び前記アクティブコアのそれぞれに前記複数のスレッドグループのそれぞれを割り当てる段階;を含む方法を、前記プロセッサが実行するようにするための命令を含んでいる可能性がある。
【0023】
本発明のもう一つの側面は、コンピューターが読み取れる記録媒体に保存されているコンピュータープログラムであり、前記コンピュータープログラムがプロセッサによって実行されると、コンピューティングデバイスに含まれる複数のコアのうちアクティブ(Active)コアの数に基づいて複数のスレッドグループを生成する段階;前記複数のスレッドグループのそれぞれのスレッドあたりの演算量に基づいて、現在の周期内で実行する複数のスレッドのうち前記複数のスレッドグループのそれぞれに割り当てるスレッドの数を決定する段階;前記複数のスレッドのそれぞれの優先順位と、前記決定された数に基づいて前記複数のスレッドグループのそれぞれに少なくとも1つのスレッドを割り当てる段階;及び前記アクティブコアのそれぞれに前記複数のスレッドグループのそれぞれを割り当てる段階;を含む方法を、前記プロセッサが実行するようにするための命令を含んでいる可能性があります。
【発明の効果】
【0024】
上述した本発明の一側面によれば、スレッド割り当て方法を提供することにより、コンピューティング装置に含まれる複数のコアのうちアクティブ(Active)コアに対応するようにスレッドグループを生成し、生成されたスレッドグループを通じてスレッドをアクティブコアに割り当てることができる。
【図面の簡単な説明】
【0025】
図1図1は、本発明の一実施例によるスレッド割り当て装置のブロック図である。
図2図2は、図1の生成部で生成されるスレッドグループの一実施例を示す図である。
図3図3図6は、図1の設定部において、割り当てるスレッドの数を決定する過程の一実施例を示す図である。
図4図3図6は、図1の設定部において、割り当てるスレッドの数を決定する過程の一実施例を示す図である。
図5図3図6は、図1の設定部において、割り当てるスレッドの数を決定する過程の一実施例を示す図である。
図6図3図6は、図1の設定部において、割り当てるスレッドの数を決定する過程の一実施例を示す図である。
図7図7図8は、図1のスレッド割り当て部において、スレッドグループにスレッドを割り当てる過程の一実施例を示す図である。
図8図7図8は、図1のスレッド割り当て部において、スレッドグループにスレッドを割り当てる過程の一実施例を示す図である。
図9図9は、図1のグループ割り当て部において、アクティブコアにスレッドグループを割り当てる過程の一実施例を示す図である。
図10図10は、本発明の一実施例によるスレッド割り当て方法のフローチャートである。
【発明を実施するための形態】
【0026】
この発明の利点や特徴、およびそれらを達成する方法は、添付された図面とともに詳細に述べられている実施例を参照することで明確になるでしょう。しかし、この発明は以下で開示される実施例に限定されるものではなく、異なるさまざまな形態で実装されることができます。単にこの実施例は、この発明の開示を完全にするために提供され、この発明が属する技術分野に通常の知識を持つ者に発明の範囲を完全に明らかにするためのものであり、この発明は請求項の範囲によって定義されるだけです。
【0027】
この発明の実施例を説明する際に、公知の機能や構成に関する具体的な説明がこの発明の要旨を不必要に曖昧にすると判断される場合には、その詳細な説明を省略します。そして、後述する用語は、この発明の実施例での機能を考慮して定義された用語であり、これは使用者、操作者の意図、または慣習によって異なることがあります。したがって、その定義はこの明細書全体にわたる内容をもとになされるべきです。
【0028】
以下、添付図面を参照して本発明の好ましい実施例を詳細に説明する。
【0029】
図1は、本発明の第1実施例によるスレッド割り当て装置のブロック図である。
【0030】
図1を参照すると、スレッド割り当て装置100は、スレッド割り当てモジュール110とスケジューリング部130とを含むことができる。
【0031】
このとき、スレッド割り当てモジュール110は、生成部111、設定部113、スレッド割り当て部115、およびグループ割り当て部117を含むことができる。
【0032】
生成部111は、コンピューティング装置に含まれる複数のコアのうちアクティブ(Active)コアの数に基づいて複数のスレッドグループを生成することができる。
【0033】
ここで、コンピューティング装置は、CPU(Central Processing Unit)、GPU(Graphic Processing Unit)、およびNPU(Network Processing Unit)などのプロセッサを1つ以上含み、各プロセッサは複数のコアを含むことができる。
【0034】
これにより、コンピューティング装置は、メモリに格納されたアプリケーションプログラムが実行されると、アプリケーションプログラムに対する演算を実行することができるように、複数のコアのうち、複数のアクティブコアに前記アプリケーションプログラムに対するスレッドを割り当てることができる。
【0035】
この場合、アクティブコアのそれぞれには少なくとも1つのスレッドが割り当てられ、アプリケーションプログラムの演算を実行することができる。
【0036】
設定部113は、複数のスレッドグループのそれぞれのスレッド当たりの演算量に基づいて、現在の周期内で実行する複数のスレッドのうち、複数のスレッドグループのそれぞれに割り当てるスレッドの数を決定することができる。
【0037】
ここで、スレッド当たりの演算量は、スレッドグループに割り当てる少なくとも1つのスレッドのそれぞれに対する演算量であり得る。このために、スレッド当たりの演算量は、スレッドグループに割り当てるスレッドの数に基づいてスレッドグループの演算容量から算出されることができる。例えば、スレッド当たりの演算量は、スレッドグループの演算容量をスレッドグループに割り当てるスレッドの数で割った値であってもよい。
【0038】
このとき、演算容量は、アクティブコアの演算容量に対応するように設定されることができる。一実施例において、演算容量はアクティブコアのタイプに基づいて設定されることができる。
【0039】
これにより、設定部113は、複数のスレッドグループのそれぞれに割り当てるスレッドの数を初期化することができる。
【0040】
これにより、設定部113は、スレッド当たりの演算量が大きい順に複数のスレッドグループのそれぞれに割り当てるスレッドの数を増加させることができる。
【0041】
これに関して、設定部113は、複数のスレッドグループのそれぞれに複数のスレッドがすべて割り当てられるまで、複数のスレッドグループのそれぞれに割り当てるスレッドの数を増やす過程を繰り返すことができる。
【0042】
一方、周期はスケジューリング周期であって、アクティブコアに割り当てられたスレッドグループがアプリケーションプログラムに対する演算を実行する時間間隔であることができる。このために、周期はスケジューリング部130によって設定されることができる。スケジューリング部130がスケジューリング周期を設定する過程については、以下に詳細に説明する。
【0043】
スレッド割り当て部115は、複数のスレッドのそれぞれの優先順位と、前記決定された数に基づいて複数のスレッドグループのそれぞれに少なくとも1つのスレッドを割り当てることができる。
【0044】
このとき、前記決定された数は、複数のスレッドのそれぞれに割り当てるスレッドの数であることができる。さらに、優先順位は、複数のスレッドのそれぞれに対して予め付与されたリソースおよびスレッドIDのうち少なくとも1つに基づいて設定されることができる。
【0045】
ここで、リソースは各スレッドに付与されている演算量であり、スレッドIDは各スレッドに付与された固有番号であることができる。したがって、一実施例において、優先順位は予め付与されたリソースが少ないほど高く設定され、スレッドIDの値が小さいほど高く設定されることができる。
【0046】
一方、スレッド割り当て部115は、複数のスレッドグループのそれぞれに割り当てるスレッドの数に基づいて、複数のスレッドグループのそれぞれのスレッド当たりの演算量を算出することができる。
【0047】
ここで、スレッド当たりの演算量は、スレッドグループに割り当てる予定の少なくとも1つのスレッドのそれぞれに対する演算量であることができる。このために、スレッド当たりの演算量は、スレッドグループに割り当てる予定のスレッドの数に基づいてスレッドグループの演算容量から算出されることができる。
【0048】
例えば、スレッド当たりの演算量は、スレッドグループの演算容量をスレッドグループに割り当てる予定のスレッドの数で割った値であってもよい。
【0049】
これにより、スレッド割り当て部115は、スレッド当たりの演算量に基づいて複数のスレッドグループをソートし、ソートされた順に複数のスレッドグループのそれぞれに少なくとも1つのスレッドを割り当てることができる。
【0050】
このとき、スレッド割り当て部115は、スレッド当たりの演算量が等しい複数のスレッドグループに対して、スレッドグループに付与されたIDの値が小さいスレッドグループを先にソートすることができる。
【0051】
これにより、スレッド割り当て部115は、並べられた複数のスレッドグループに、優先順位に応じた少なくとも1つのスレッドを割り当てることができる。このとき、スレッド割り当て部115は、設定部113によって各スレッドグループに決定された数だけスレッドを割り当てることができる。
【0052】
グループ割り当て部117は、アクティブコアのそれぞれに複数のスレッドグループのそれぞれを割り当てることができる。
【0053】
このために、グループ割当部117は、複数のスレッドグループのそれぞれに対するスレッド当たりの演算量と、マイグレーションコストに基づいてアクティブコアにスレッドグループを割り当てることができる。
【0054】
このとき、マイグレーションコストは、各スレッドに対するコア割り当て記録に基づいて算出されることができる。ここで、コア割り当て記録は、前のスケジューリング周期でスレッドが割り当てられたコアを記録したものであることができる。
【0055】
したがって、マイグレーションコストは、スレッドが前のスケジューリング周期で割り当てられた第1コアとは異なる第2コアに割り当てられる場合に発生することができる。このとき、第2コアが第1コアと同じプロセッサに含まれた場合、第2コアが第1コアとは異なるプロセッサに含まれた場合よりも小さい値のマイグレーションコストが発生することができる。
【0056】
言い換えれば、グループ割り当て部117は、相異するプロセッサ間のマイグレーションに対する第1コストと、相異するコア間のマイグレーションに対する第2コストとに基づいてマイグレーションコストを算出することができる。このとき、グループ割当部117は、第2コストよりも前記第1コストに大きな重みを付与してマイグレーションコストを算出することができる。
【0057】
一実施例において、いずれかのアクティブコアに対するいずれかのスレッドグループのマイグレーションコストは、前記スレッドグループに割り当てられた少なくとも1つのスレッドのそれぞれが前記アクティブコアに割り当てられる場合に発生するマイグレーションコストの合計であることができる。
【0058】
これに基づいて、グループ割り当て部117は、以下のような一実施例により、複数のアクティブコアのそれぞれに複数のスレッドグループのそれぞれを割り当てることができる。
【0059】
一実施例において、グループ割り当て部117は、アクティブコアに割り当てられていないの少なくとも1つのスレッドグループのうち、スレッド当たりの演算量が最も大きいスレッドグループを選択することができる。
【0060】
これにより、グループ割り当て部117は、選択されたスレッドグループに含まれた少なくとも1つのスレッドのそれぞれのコア割り当て記録に基づいて、割り当てられていないアクティブコアのそれぞれに対する前記選択されたスレッドグループのマイグレーションコストを算出することができる。
【0061】
このとき、グループ割当部117は、算出されたマイグレーションコストが最も小さいアクティブコアに、前記選択されたスレッドグループを割り当てることができる。
【0062】
これに関して、グループ割当部117は、アクティブコアに割り当てられていないスレッドグループが存在しなくなるまでスレッドグループを選択し、マイグレーションコストを算出してアクティブコアにスレッドグループを割り当てる過程を繰り返すことができる。
【0063】
一方、スケジューリング部130は、アクティブコアのそれぞれに複数のスレッドグループのそれぞれが割り当てられるようにスケジューリング周期を設定することができる。一実施例において、スケジューリング部130は、アプリケーションプログラムが実行されると、初期のスケジューリング周期を予め設定された最小周期(例えば、0.125ms)に設定することができる。
【0064】
これにより、スケジューリング部130は、複数のスレッドに対する性能データを取得し、取得した性能データに基づいてスケジューリング周期を調整することができる。
【0065】
一実施例において、スケジューリング部130は、新しい性能データが以前の性能データよりも高く示される場合にスケジューリング周期を2倍に増やすことができる。また、スケジューリング部130は、新たな性能データが以前の性能データより低く示される場合には、アプリケーションプログラムが終了するまでスケジューリング周期を前のスケジューリング周期に固定することができる。この場合、スケジューリング部130は、アプリケーションプログラムに対して固定されたスケジューリング周期を記録し、前記アプリケーションプログラムが再実行された場合に記録されたスケジューリング周期に従ってスレッドを割り当てることができる。
【0066】
一方、一実施例において、スケジューリング部130は、性能モニタリング装置から性能データを取得することができる。そのために、性能モニタリング装置は、コンピューティング装置によって実行されたアプリケーションプログラムに対して予め設定された周期ごとに信号を要請することができる。
【0067】
それにより、性能モニタリング装置は、一定の周期に従って信号を要請し、コンピューティング装置から受信した信号間の間隔に基づいて性能データを生成することができる。
【0068】
例えば、性能モニタリング装置は、受信信号間の間隔が短くなるほど性能データが高い性能を示すように生成し、間隔が長くなるほど性能データが低い性能を示すように生成することができる。
【0069】
一実施例において、性能モニタリング装置は、一定の周期に従ってコンピューティング装置からハートビート(Heartbeats)信号を受信することができる。
【0070】
ここで、ハートビート信号は、任意の装置が特定のネットワークとの接続が維持されるように送信する信号であることができる。この場合、ハートビート信号の生成には従来公知の技術を用いることができる。
【0071】
これにより、性能モニタリング装置は、ハートビート信号間の間隔が短くなるほど性能データが高い性能を示すように生成し、間隔が長くなるほど性能データが低い性能を示すように生成することができる。
【0072】
図2は、図1の生成部で生成されるスレッドグループの一実施例を示す図である。
【0073】
図2を参照すると、プロセッサに含まれる複数のコア210、230と、生成部111によって生成された複数のスレッドグループ310を確認することができる。
【0074】
このように、スレッドグループ310は、複数のアクティブコア210に対応するように複数生成されることができる。このとき、スレッドグループ310は、アクティブコア210の数と同じ数で生成されることができる。さらに、スレッドグループ310は、アクティブコア210のタイプと同じタイプで生成されることができる。
【0075】
一実施例において、生成部111は、高性能アクティブコア211、Hの3個と低性能アクティブコア213、Lの2個がアクティブコア210として設定されると、高性能スレッドグループ311、TG1~TG3の3つと低性能スレッドグループ313、TG4~TG5の2つを生成することができる。
【0076】
図3図6は、図1の設定部において、割り当てるスレッドの数を決定する過程の一実施例を示す図である。
【0077】
図3を参照すると、複数のスレッドグループ310のそれぞれの計算容量(Computation capacity)、複数のスレッドグループ310のそれぞれに対して割り当てられると予測されたスレッド数(Thread count)、およびスレッド当たりの演算量(Per-thread computation capacity)を確認することができる。
【0078】
このとき、高性能スレッドグループ311、TG1~TG3は演算容量がそれぞれCに設定され、低性能スレッドグループ313、TG4~TG5は演算容量がそれぞれ0.8Cに設定されることができる。
【0079】
これに関して、複数のスレッドグループ310のそれぞれが生成された直後に、複数のスレッドグループ310のそれぞれに割り当てられると予想されるスレッドの数が1に初期化されたことを確認することができる。
【0080】
これにより、設定部113は、スレッド当たりの演算量が大きい順に、第1高性能スレッドグループ311、TG1に割り当てるスレッドの数を増加させることができる。
【0081】
図4を参照すると、第1高性能スレッドグループ311、TG1に割り当てるスレッドの数が増加したことを確認することができる。
【0082】
これにより、第1高性能スレッドグループ311、TG1に対するスレッド当たりの演算量は0.5Cと予測されることができる。
【0083】
次に、設定部113は、スレッド当たりの演算量が大きい順に、第2高性能スレッドグループ311、TG2に割り当てるスレッドの数を増加させることができる。
【0084】
図5を参照すると、第2高性能スレッドグループ311、TG2に割り当てるスレッドの数が増加したことを確認することができる。
【0085】
これにより、第2高性能スレッドグループ311、TG2に対するスレッドあたりの演算量は0.5Cと予測されることができる。
【0086】
次に、設定部113は、スレッド当たりの演算量が大きい順に、第3高性能スレッドグループ311、TG3に割り当てるスレッドの数を増加させることができる。
【0087】
図6を参照すると、第3高性能スレッドグループ311、TG3に割り当てるスレッドの数が増加したことを確認することができる。
【0088】
これにより、第3高性能スレッドグループ311、TG3に対するスレッドあたりの演算量は0.5Cと予測されることができる。
【0089】
このとき、設定部113は、現在周期内に実行する複数のスレッドの個数が8個の場合に、現在の状態で、複数のスレッドグループ310のそれぞれに割り当てるスレッドの個数を増加させる過程を終了することができる。
【0090】
すなわち、設定部113は、高性能スレッドグループ311、TG1~TG3のそれぞれに割り当てるスレッドの数を2つに決定し、低性能スレッドグループ313、TG4~TG5のそれぞれに割り当てるスレッドの個数を1つに決定することができる。
【0091】
図7図8は、図1のスレッド割り当て部においてスレッドグループにスレッドを割り当てる過程の一実施例を示す図である。
【0092】
図7を参照すると、ソートされたスレッドグループ310と優先順位に基づいて矢印の方向に並べられた複数のスレッドを確認することができる。このとき、多数のスレッドはチルダで形象化された。
【0093】
図6をさらに参照すると、高性能スレッドグループ311、TG1~TG3のそれぞれに対するスレッド当たりの演算量よりも大きいスレッド当たりの演算量が算出された低性能スレッドグループ313、TG4~TG5のそれぞれが先にソートされたことを確認することができる。
【0094】
また、スレッド当たりの演算量が等しい場合には、スレッドグループのIDの値が小さいスレッドグループが先にソートされたことを確認することができる。
【0095】
図8を参照すると、複数のソートされたスレッドグループに、優先順位による少なくとも1つのスレッドが割り当てられたことを確認することができる。
【0096】
図9は、図1のグループ割り当て部において、アクティブコアにスレッドグループを割り当てる過程の一実施例を示す図である。
【0097】
図9を参照すると、複数のアクティブコア210のそれぞれに複数のスレッドグループ310のそれぞれが割り当てられたことを確認することができる。
【0098】
このとき、複数のスレッドグループのそれぞれに対するスレッド当たりの演算量とマイグレーションコストとに基づいて、複数のアクティブコア210のそれぞれに複数のスレッドグループ310のそれぞれが割り当てられたことと理解することができる。
【0099】
図10は、本発明の一実施例によるスレッド割り当て方法のフローチャートである。
【0100】
図10を参照すると、生成部111は、コンピューティング装置に含まれる複数のコアのうちアクティブコア210の個数に基づいて複数のスレッドグループ310を生成することができる(S100)。
【0101】
このとき、設定部113は、複数のスレッドグループ310のそれぞれのスレッド当たりの演算量に基づいて、現在の周期内で実行する複数のスレッドのうち、複数のスレッドグループ310のそれぞれに割り当てるスレッドの数を決定することができる。
【0102】
これにより、スレッド割り当て部115は、複数のスレッドのそれぞれの優先順位と、前記決定された数に基づいて、複数のスレッドグループ310のそれぞれに少なくとも1つのスレッドを割り当てることができる(S300)。
【0103】
これで、グループ割り当て部117は、アクティブコア210のそれぞれに複数のスレッドグループ310のそれぞれを割り当てることができる(S400)。
【0104】
この文書のさまざまな実施例は、機器(例:コンピュータ)で読むことができる保存媒体(例:メモリ(内蔵メモリまたは外部メモリ))に保存された命令を含むソフトウェア(例:プログラム)として実装することができます。機器は、保存媒体から保存された命令を呼び出し、呼び出された命令に従って動作可能な装置として、開示された実施例による電子装置(例:デバイス)を含むことができます。前記の命令がプロセッサ(例:プロセッサ)によって実行される場合、プロセッサは直接、または前記プロセッサの制御下で他の構成要素を利用して前記命令に対応する機能を実行することができます。命令は、コンパイラまたはインタプリタによって生成または実行されるコードを含むことができます。機器で読むことができる保存媒体は、非一時的(non-transitory)保存媒体の形で提供されることがあります。ここで、「非一時的」とは、保存媒体が信号を含まず、具体的であるということを意味し、データが保存媒体に反映的または一時的に保存されることを区別しません。
【0105】
一つの実施例によれば、この文書に開示されたさまざまな実施例に基づく方法は、コンピュータプログラム製品(computer program product)に含まれて提供されることができます。
【0106】
以上、本発明の実施形態を具体的な実施例として説明したが、これは例示に過ぎず、本発明はこれに限定されず、本明細書に開示された技術的思想に従う最も広い範囲を有するものと解釈されるべきである。当業者は、開示された実施例を組合せ/置換して摘示されていない形状のパターンを実施することができるが、これも本発明の範囲から逸脱しないであろう。さらに、当業者は、本明細書に基づいて開示された実施例を容易に変更または変形することができ、そのような変更または変形も本発明の権利範囲に属することは明らかである。

図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
【国際調査報告】