JP6171658B2 - 並列処理最適化プログラム、並列処理最適化方法および情報処理装置 - Google Patents

並列処理最適化プログラム、並列処理最適化方法および情報処理装置 Download PDF

Info

Publication number
JP6171658B2
JP6171658B2 JP2013150945A JP2013150945A JP6171658B2 JP 6171658 B2 JP6171658 B2 JP 6171658B2 JP 2013150945 A JP2013150945 A JP 2013150945A JP 2013150945 A JP2013150945 A JP 2013150945A JP 6171658 B2 JP6171658 B2 JP 6171658B2
Authority
JP
Japan
Prior art keywords
cores
parallel processing
threads
performance
processing
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.)
Expired - Fee Related
Application number
JP2013150945A
Other languages
English (en)
Other versions
JP2015022574A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013150945A priority Critical patent/JP6171658B2/ja
Priority to US14/310,679 priority patent/US10223168B2/en
Publication of JP2015022574A publication Critical patent/JP2015022574A/ja
Application granted granted Critical
Publication of JP6171658B2 publication Critical patent/JP6171658B2/ja
Expired - Fee Related 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)

Description

本発明は、並列処理最適化プログラム、並列処理最適化方法および情報処理装置に関する。
近年、複数のコアを搭載したマルチコア・プロセッサが主流となっている。このようなマルチコア・プロセッサは、複数コアで並列処理を行うことで処理性能を高められる。マルチコア・プロセッサは、微細化技術の進歩とともに、チップに搭載されるコア数が増加する傾向にあり、数十コアが搭載されたものも販売されている。
特開2001−282553号公報 国際公開第2004/044745号 特開2006−24088号公報
ところで、並列処理を行うプログラムには、マルチコア・プロセッサの全てのコアで並列処理を行うことで高性能化を達成できるものがある。また、一部のコアを停止させる方が、高い性能が得られるプログラムもある。例えば、コア間の同期が多いプログラムや、メモリバンド幅ネックのプログラムでは、一部のコアを停止させる方が高い性能を得られる場合がある。
一側面では、高効率で並列処理を実行可能なコア数を速やかに求めることができる並列処理最適化プログラム、並列処理最適化方法および情報処理装置を提供することを目的とする。
本発明の一側面によれば、並列処理最適化プログラムは、コンピュータに、並列処理を実行可能なコア数の範囲内で、並列して実行する所定数の処理を割り振る処理数を変えて同程度ずつコアに割り振る場合に、処理が実行されるコア数を特定する処理を実行させる。また、並列処理最適化プログラムは、コンピュータに、並列処理を実行可能なコア数の範囲内で、特定したコア数のなかから、処理性能の最も高いコア数を並列処理を実行するコア数と決定する処理を実行させる。
本発明の一側面によれば、高効率で並列処理を実行可能なコア数を速やかに求めることができる。
図1は、情報処理装置の概略的な構成の一例を示した図である。 図2は、情報処理装置におけるハードウェアとソフトウェアとの関係を説明するための図である。 図3は、並列処理が可能な処理を示す図である。 図4は、並列処理プログラムと並列処理最適化プログラムをスタティックリンクさせる一例を示す図である。 図5Aは、NPB EPのコア数毎の性能の評価結果の一例を示す図である。 図5Bは、NPB FTのコア数毎の性能の評価結果の一例を示す図である。 図6は、実行された並列処理最適化プログラムの機能的な構成を示す図である。 図7は、NPB FTのコア数毎の性能の評価結果の一例を示す図である。 図8は、評価結果の一例を示す図である。 図9は、実施例1に係る並列処理最適化処理の手順の一例を示すフローチャートである。 図10は、実施例1に係る試行パターン特定処理の手順の一例を示すフローチャートである。 図11は、実施例2に係るプロセッサの構成を模式的に示した図である。 図12Aは、NPB EPのコア数毎の性能の評価結果の一例を示す図である。 図12Bは、NPB FTのコア数毎の性能の評価結果の一例を示す図である。 図13は、NPB FTのコア数毎の性能の評価結果の一例を示す図である。 図14は、評価結果の一例を示す図である。 図15は、実施例2に係る並列処理最適化処理の手順の一例を示すフローチャートである。 図16は、実施例2に係る試行パターン特定処理の手順の一例を示すフローチャートである。 図17は、実施例3に係る並列処理最適化処理の手順の一例を示すフローチャートである。
以下に、本発明にかかる並列処理最適化プログラム、並列処理最適化方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[全体構成]
実施例1に係る情報処理装置10の構成について説明する。図1は、情報処理装置の概略的な構成の一例を示した図である。
情報処理装置10は、例えば、パーソナルコンピュータやサーバコンピュータ、ワークステーションなどの情報処理を行う装置である。なお、情報処理装置10は、例えば、スマートフォン、タブレット端末、PDA(Personal Digital Assistants)などの携帯端末であってもよい。図1に示すように、情報処理装置10は、プロセッサ20と、DISK21と、RAM(Random Access Memory)22とを有する。これらプロセッサ20、DISK21、RAM22は、バス23を介して接続される。なお、情報処理装置10は、図1に示した機能部以外にも既知の情報処理装置10が有する各種の機能部を有することとしてもかまわない。例えば、情報処理装置10は、通信インタフェースや、キーボード、マウスなどの操作部、表示部などその他の機能部を有することとしてもかまわない。
プロセッサ20は、複数のコア24を有し、演算処理を実行するマルチコア・プロセッサである。プロセッサ20は、各コア24により並列に演算処理を実行可能とされている。なお、図1の例では、プロセッサ20が4個のコア24を有する場合を示したが、コア24の数はこれに限定されるものではない。マルチコア・プロセッサは、微細化技術の進歩とともに、チップに搭載されるコア数が増加している。例えば、インテル社製のXeon Phi Coprocessor 5110Pは、コア24が60個の搭載されている。
DISK21は、各種の情報を記憶するデバイスである。例えば、DISK21は、OS(Operating System)30と、並列処理プログラム31と、並列処理最適化プログラム32とを記憶する。このDISK21としては、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)などが挙がられる。なお、DISK21に代えて、フラッシュメモリなどの不揮発性の半導体メモリを各種の情報を記憶するデバイスとして用いてもよい。
OS30は、多くのアプリケーションソフトから共通して利用される基本的な機能を提供し、コンピュータ全体を管理するソフトウェアである。OS30は、情報処理装置10の起動時にプロセッサ20により実行される。
並列処理プログラム31は、情報処理装置10において実行されるアプリケーションソフトである。並列処理プログラム31には、並列処理が可能な処理が含まれている。例えば、並列処理プログラム31には、ループ処理など並列処理が可能な処理が含まれている。
並列処理最適化プログラム32は、並列処理の制御および最適化を行うプログラムである。例えば、並列処理最適化プログラム32は、並列処理を実行する際に処理を実行させるコア数を最適化する。
RAM21は、各種のデータを一時的に記憶するデバイスである。RAM21には、OS30やアプリケーションソフトが利用する各種のデータが展開されて記憶される。
次に、図2を用いて、情報処理装置10におけるハードウェアとソフトウェアとの関係について説明する。図2は、情報処理装置におけるハードウェアとソフトウェアとの関係を説明するための図である。なお、図2に示す例では、ソフトウェアとして、OS30と、並列処理プログラム31と、並列処理最適化プログラム32とが示されている。
OS30は、コンピュータ全体を管理しており、アプリケーションプログラムおよびハードウェアの監視や、割りこみ処理など、OS30としての基本機能を提供する。例えば、OS30は、プロセッサ20の各コア24の状況の監視やコア24に対する割りこみ処理などの機能を提供する。
並列処理プログラム31は、所定のプログラム記述言語で記述されたソースコード40をコンパイラ41によりコンパイルすることにより作成される。並列処理プログラム31は、ループ処理などの並列処理が可能な処理が含まれる。
図3は、並列処理が可能な処理の一例を示す図である。図3の例では、変数iの初期値をゼロとし、処理を1回行う毎に変数iの値を1つずつ加算し、変数iの値がNよりも小さい間、処理を繰り返すループ処理が示されている。このような処理をN回繰り返し行うループ処理は、N回繰り返す処理をそれぞれ最大でN等分に分割して並列に処理させることが可能である。以下では、このようなループ処理などで繰り返し行われる処理の繰り返し回数をイタレーション数とも言う。図3の例は、イタレーション数がNのループ処理である。
図2に戻り、並列処理最適化プログラム32は、例えば、ライブラリとして提供される。並列処理最適化プログラム32は、ソースコード40をコンパイルする際に並列処理プログラム31とリンクされる。並列処理最適化プログラム32は、並列処理プログラム31が並列処理を実行する際に呼び出され、OS30を介してプロセッサ20の各コア24への処理の割り振りを制御する。なお、並列処理プログラム31と並列処理最適化プログラム32のリンクは、スタティックリンクであってもよく、ダイナミックリンクであってよい。
図4は、並列処理プログラムと並列処理最適化プログラムをスタティックリンクさせる一例を示す図である。例えば、既存の並列処理ライブラリ42に対して、修正を行って並列処理最適化プログラム32を作成する。この既存の並列処理ライブラリ42としては、例えば、OpenMPが挙がられる。そして、コンパイラ41によりソースコード40をコンパイルする際のリンク先を並列処理最適化プログラム32に変更してコンパイルを行う。これにより、並列処理最適化プログラム32では、並列処理を行う際に並列処理最適化プログラム32が実行される。
ところで、並列処理の性能を評価するベンチマークとしては、NPB(NAS Parallel Benchmarks)がある。以下では、コア24が60個のプロセッサ20を用いて、NPB3.3 OpenMP版のEP,FTにより性能の評価を行った例を説明する。なお、入力サイズは、ClassBとする。
図5Aは、NPB EPのコア数毎の性能の評価結果の一例を示す図である。図5Aの横軸は、並列処理を実行させたコア数を示す。図5Aの縦軸は、コア数が1での性能に対する相対性能を示す。相対性能は、例えば、各コア数での性能値を、コア数が1での性能値で除算した値である。図5Aに示すように、NPB EPでは、並列処理を行うコア数が多いほど高い性能が得られる。図5Aの例では、コア数が60の場合に最も高い性能が得られている。
図5Bは、NPB FTのコア数毎の性能の評価結果の一例を示す図である。図5Bの横軸は、並列処理を実行させたコア数を示す。図5Bの縦軸は、コア数が1での性能に対する相対性能を示す。図5Bに示すように、NPB FTでは、コア数に比例して一律に性能が高くならず、特定のコア数で性能が飽和して低下する。例えば、図5Bの例では、コア数が33の場合に性能がピークとなる。このように特定のコア数で並列処理を行った方が高い性能が得られるプログラムもある。例えば、コア間の同期が多いプログラムや、メモリバンド幅ネックのプログラムでは、特定のコア数で並列処理を行った方が高い性能を得られる場合がある。
次に、図6を用いて、実行された並列処理最適化プログラム32の機能的な構成について説明する。図6は、実行された並列処理最適化プログラムの機能的な構成を示す図である。図6に示すように、並列処理最適化プログラム32は、OS30を介してプロセッサ20の各コア24への処理の割り振りを制御しており、特定部50と、決定部51と、プロセッサ制御部52とを有する。
特定部50は、各種の特定を行う。例えば、特定部50は、性能の評価対象とするコア数を特定する。
ここで、例えば、イタレーション数Nを256とし、プロセッサ20のコア数を60とした場合を例にして説明する。並列処理では、複数のコアに処理を割り振った場合、並列処理を行う全てのコア24で処理が完了するまでの時間により処理性能が定まる。すなわち、並列処理では、最も遅く処理が完了するコア24での実行時間により処理性能が定まる。
また、並列処理では、並列して実行可能な処理を各コア24に同程度ずつ割り振ったとしてもコア24あたりの処理数が不均一になることが多い。特に、イタレーション数Nがコア数に対してあまり大きくない場合、コア24あたりの処理数の違いより処理性能が階段状になる。例えば、イタレーション数Nが256のループ処理を同程度ずつコアに割り振るものとして、例えば、52個のコア24で並列処理を行うものとした場合、コア当たりに割り振られる最大のイタレーション数は、5個である。また、イタレーション数Nが256のループ処理を同程度ずつコアに割り振るものとして、例えば、60個のコア24で並列処理を行うものとした場合も、コア当たりに割り振られる最大のイタレーション数は、5個である。この場合、割り振られる最大のイタレーション数が共に5個であるため、52個のコア24で並列処理した場合と60個のコア24で並列処理した場合の処理性能は、略同等となる。すなわち、並列処理で処理を行うコア数が変わっても、最大のイタレーション数が同じ場合、処理性能は、略同等となる。
一方、並列処理で処理を行うコア数が多いほど、消費電力は多くなる。
そこで、特定部50は、並列処理を実行可能なコア数の範囲内で、イタレーション数の処理を、割り振る処理数を変えて同程度ずつコア24に割り振る場合に、処理が実行されるコア数を特定する。例えば、特定部50は、イタレーション数Nを256とし、プロセッサ20のコア数を60とし、割り振る処理数をaとした場合、処理が実行されるコア数を次のように特定する。
特定部50は、割り振る処理数aを1から順に1つずつ変化させ、イタレーション数Nを割り振る処理数aで除算し、除算した値の少数点以下を切り上げた値Xを、値Xが1以上である間それぞれ求める。これにより、例えば、a=1の場合は、X=256、a=2の場合は、X=128、a=3の場合は、X=86、a=4の場合は、X=64、a=5の場合は、X=52、a=6の場合は、X=43・・・とそれぞれ求まる。この値Xは、a個程度ずつ処理をコア24に割り振る場合に、並列処理が実行されるコア数である。
しかし、プロセッサ20のコア数は、60個である。よって、値Xが並列処理を実行可能なコア数である60を超えている場合、並列処理できない。そこで、特定部50は、値Xが60以下の範囲内で、値Xを特定する。例えば、上述の例では、値Xは、52、43、37、32、29、26、24、22、20、19、・・・、1と特定される。この特定された値Xが、それぞれ処理が実行されるコア数である。以下、特定部50により特定された各値Xを試行パターンと呼ぶ。
図7は、NPB FTのコア数毎の性能の評価結果の一例を示す図である。図7の例は、並列処理を実行するコア数を1〜60の範囲で変えて同程度ずつコア24に処理を割り振った場合の並列処理を実行したコア数毎の性能の一例である。図7の横軸は、並列処理を実行させたコア数を示す。図7の縦軸は、コア数が1での性能に対する相対性能を示す。図7に示すように、イタレーション数Nがコア数に対してあまり大きくない場合、コア24あたりの処理数の違いより処理性能が階段状になる。例えば、図7では、コア数が43〜51の範囲は、性能が同程度である。また、コア数が52〜60の範囲も、性能が同程度である。特定部50は、この階段状に性能が変わる各コア数を試行パターンとして求めている。例えば、特定部50は、図7において丸を付した52、43、37、32、29のコア数を特定している。
図6に戻り、決定部51は、各種の決定を行う。例えば、決定部51は、特定部50により特定されたコア数のなかから、処理性能の最も高いコア数を並列処理を実行するコア数と決定する。一例として、決定部51は、試行パターンの各コア数のなかから、ヒルクライム法により、並列処理を実行するコア数と決定する。例えば、決定部51は、試行パターンの各コア数のなかから、コア数の多い順に、コア数のコア24を用いてイタレーション数Nの処理を並列に実行して性能の評価を行う。そして、決定部51は、コア数の多い順に性能を順次比較する。そして、決定部51は、少ないコア数の性能が多いコア数の性能を最初に下回った際の多い側のコア数を並列処理を実行するコア数と決定する。
例えば、図7の例では、決定部51は、52個のコア24によりイタレーション数Nの処理を並列に実行して性能の評価を行う。次に、決定部51は、43個のコア24によりイタレーション数Nの処理を並列に実行して性能の評価を行う。そして、決定部51は、コア数が52個の場合の性能と、コア数が43個の場合の性能を比較する。図7の例では、コア数が43個の場合の性能は、コア数が52個の場合の性能よりも下回っている。この場合、決定部51は、並列処理を実行するコア数を52個と決定する。
なお、決定部51は、特定部50により特定された試行パターンの各コア数でイタレーション数Nの処理を並列に実行して性能を求め、処理性能の最も高いコア数を並列処理を実行するコア数と決定してもよい。
プロセッサ制御部52は、プロセッサ20を制御して決定部51で決定されたコア数で並列処理を実行させる。
ここで、決定部51により決定されるコア数の評価結果の一例を説明する。図8は、評価結果の一例を示す図である。なお、図8は、コア数に対する性能が図7に示す関係である場合の評価結果である。試行回数は、決定部51が並列処理を実行するコア数を決定するまでに性能の評価を行った回数である。精度は、処理性能の最も高い性能を決定できたかの予測精度を示し、決定されたコア数での処理性能を最大性能で除算した値である。
図8の「ヒルクライム」は、決定部51が試行パターンの各コア数のなかから、ヒルクライム法により、並列処理を実行するコア数と決定した場合の評価結果であり、試行回数が2、精度が0.98である。図8の「全探索」は、決定部51が試行パターンの各コア数の性能を求め、処理性能の最も高いコア数を並列処理を実行するコア数と決定した場合の評価結果であり、試行回数が28、精度が0.98である。
また、図8には、試行パターンを特定しないで、並列処理を実行するコア数を従来のように決定した場合の評価結果も示している。図8の「従来のヒルクライム」は、図7に示す1〜60の各コア数のなかから、ヒルクライム法により、並列処理を実行するコア数と決定した場合の評価結果であり、試行回数が2、精度が0.95である。また、図8の「従来の全探索」は、図7に示す1〜60の全てのコア数の性能を求め、処理性能の最も高いコア数を並列処理を実行するコア数と決定した場合の評価結果であり、試行回数が60、精度が1.00である。
このように、並列処理最適化プログラム32は、試行パターンを特定して試行パターンの各コア数のなかから、並列処理を実行するコア数と決定することにより、ヒルクライム法を用いた場合でも、処理性能の高いコア数を高い精度で求めることができる。また、並列処理最適化プログラム32は、試行パターンを特定して試行パターンの各コア数のなかから、並列処理を実行するコア数と決定することにより、全探索を用いた場合でも、より短期間で処理性能の高いコア数を求めることができる。また、並列処理最適化プログラム32は、各コア24に同程度の処理を割り振る場合、少ない数で割り振れるコア数を特定するため、消費電力を少なく抑えることができる。すなわち、並列処理最適化プログラム32は、高効率で並列処理を実行可能なコア数を速やかに求めることができる。
[処理の流れ]
次に、本実施例に係る情報処理装置10が並列処理最適化プログラム32を実行した際に並列処理に適したコア数を決定する並列処理最適化処理の流れについて説明する。図9は、実施例1に係る並列処理最適化処理の手順の一例を示すフローチャートである。この並列処理最適化処理は、例えば、並列処理プログラム31が並列処理を実行するタイミングで実行される。
図9に示すように、特定部50は、試行パターンを特定する試行パターン特定処理を実行して、試行パターンを特定する(S10)。この試行パターン特定処理の詳細は、後述する。
決定部51は、特定された試行パターンの各コア数のなかから、性能が未評価である最も多いコア数を特定する(S11)。決定部51は、特定したコア数での並列処理の性能を計測する(S12)。例えば、決定部51は、イタレーション数Nの処理を並列に実行して1イタレーション当たりの処理時間を計測する。
決定部51は、計測した性能が前回計測された性能よりも悪化しているか判定する(S13)。例えば、決定部51は、計測した処理時間が前回計測された処理時間よりも長い場合、性能が悪化していると判定する。性能が悪化していない場合(S13否定)、上述のS11の処理へ移行する。
一方、性能が悪化している場合(S13肯定)、決定部51は、前回計測したコア数を処理性能の最も高いコア数と決定する(S14)。プロセッサ制御部52は、決定されたコア数で並列処理が実行されるように制御し(S15)、処理を終了する。
次に、試行パターン特定処理の流れについて説明する。図10は、実施例1に係る試行パターン特定処理の手順の一例を示すフローチャートである。この試行パターン特定処理は、例えば、図9に示す並列処理最適化処理のS10から実行される。
図10に示すように、特定部50は、並列処理プログラム31から並列処理のイタレーション数Nを受け取る(S20)。また、特定部50は、変数aを1に初期化する(S21)。
特定部50は、イタレーション数Nを変数aで除算し、除算結果の値の少数点以下を切り上げた値Xを算出する(S23)。特定部50は、値Xが1以上であるか判定する(S24)。値Xが1以上ではない場合(S24否定)、処理を終了して呼び出し元の処理に戻る。この試行パターン特定処理で特定された値Xが、試行パターンのコア数となる。
一方、値Xが1以上である場合(S24肯定)、特定部50は、値Xがプロセッサ20のコア数以下であるか否かを判定する(S25)。値Xがプロセッサ20のコア数以下ではない場合(S25否定)、後述するS28の処理へ移行する。
一方、値Xがプロセッサ20のコア数以下である場合(S25肯定)、特定部50は、試行パターンに値Xが既にあるか否かを判定する(S26)。試行パターンに値Xが既にある場合(S26肯定)、後述するS28の処理へ移行する。
一方、試行パターンに値Xがない場合(S26否定)、特定部50は、試行パターンに値Xを試行するコア数として加える(S27)。そして、特定部50は、変数aに1加算し、S23の処理へ移行する。
[効果]
上述してきたように、本実施例に係る情報処理装置10は、並列処理を実行可能なコア24の数の範囲内で、並列して実行する所定数の処理を、割り振る処理数を変えて同程度ずつコアに割り振る場合に、処理が実行されるコア数を特定する。そして、情報処理装置10は、特定したコア数のなかから、処理性能の最も高いコア数を並列処理を実行するコア数と決定する。これにより、情報処理装置10は、高効率で並列処理を実行可能なコア数を速やかに求めることができる。
また、情報処理装置10は、特定したコア数のなかから、コア数の多い順に性能の評価を行って性能を順次比較し、少ないコア数の性能が多いコア数の性能を最初に下回った際の多い側のコア数を並列処理を実行するコア数と決定する。これにより、情報処理装置10は、並列処理を実行するコア数をより速やかに求めることができる。
次に、実施例2について説明する。実施例2に係る情報処理装置10の構成は、実施例1と略同一であるため、同一部分については同一の符号を付し、主に異なる部分について説明する。
図11は、実施例2に係るプロセッサの構成を模式的に示した図である。実施例2に係るプロセッサ20は、例えば、SMT(Simultaneous Multithreading)搭載しており、各コア24に並列に処理を実行可能な複数のスレッド25を有する。このスレッド25は、それぞれプログラムの処理を実行可能な機構であり、ハードウェアスレッドなどとも呼ばれる。各コア24内のスレッド25は、コア内のメモリなどの資源を共有して処理を実行する。なお、図11の例では、コア24内に2つのスレッド25を有する場合を示したが、スレッド25の数はこれに限定されるものではない。例えば、インテル社製のXeon Phi Coprocessor 5110Pは、コア24毎に4つのスレッド25が搭載されている。
ところで、並列処理プログラム31には、並列して処理を実行するスレッド25の数が多いほど高性能化を達成できるものがある。また、一部のコア24や一部のスレッド25を停止させる方が、高い性能が得られるプログラムもある。例えば、スレッド25は、コア内の資源を共有するため、動作させるスレッド数を制限した方が高い性能を得られる場合がある。
図12Aは、NPB EPのコア数毎の性能の評価結果の一例を示す図である。図12Aの横軸は、並列処理を実行させたコア数を示す。図12Aの縦軸は、動作させるスレッド数が2、コア数が1での性能に対する相対性能を示す。図12Aには、各コア24で2つのスレッド25を動作させた場合と、各コア24で4つのスレッド25を動作させた場合の性能が示されている。図12Aに示すように、NPB EPでは、各コア24で4つのスレッド25を動作させた場合の方が性能が高く、また、並列処理を行うコア数が多いほど高い性能が得られる。図12Aの例では、スレッド数が4でコア数が60の場合に最も高い性能が得られている。
図12Bは、NPB FTのコア数毎の性能の評価結果の一例を示す図である。図12Bの横軸は、並列処理を実行させたコア数を示す。図12Bの縦軸は、動作させるスレッド数が2、コア数が1での性能に対する相対性能を示す。図12Bには、各コア24で2つのスレッド25を動作させた場合と、各コア24で4つのスレッド25を動作させた場合の性能が示されている。図12Bに示すように、NPB FTでは、各コア24で動作させるスレッド数が2、4の場合で共に、コア数に比例して一律に性能が高くならず、特定のコア数で性能が飽和して低下する。また、図12Bの例では、各コア24で動作させるスレッド数が2の場合の方が高い性能が得られている。動作させるスレッド数を制限した方が高い性能を得られるプログラムもある。
そこで、実施例2にかかる特定部50は、コア24の並列処理を実行可能なスレッド数および並列処理を実行可能なコア数の範囲内で、処理が実行されるスレッド数およびコア数を特定する。例えば、特定部50は、各コア24で動作させるスレッド数を変えて、イタレーション数の処理を、動作させるスレッド25に同程度ずつ割り振る場合に処理が実行されるスレッド数およびコア数を特定する。例えば、特定部50は、イタレーション数Nを256とし、プロセッサ20のコア数を60とし、各コア24で動作させるスレッド数をbとし、スレッド25に割り振る処理数をaとした場合、処理が実行されるスレッド数およびコア数を次のように特定する。
特定部50は、動作させるスレッド数bを1から順に1つずつ変化させ、スレッド数b毎に、割り振る処理数aを1から順に1つずつ変化させる。そして、特定部50は、割り振る処理数aとスレッド数bを乗算した値でイタレーション数Nを除算し、除算した値の少数点以下を切り上げた値Xを、値Xが1以上である間それぞれ求める。これにより、例えば、スレッド数b=4とすると、a=1の場合は、X=64、a=2の場合は、X=32・・・とそれぞれ求まる。また、スレッド数b=3とすると、a=1の場合は、X=86、a=2の場合は、X=43・・・とそれぞれ求まる。この値Xは、コア24でスレッド数bのスレッド25を動作させ、各スレッド25にa個程度ずつ処理を割り振る場合に、並列処理が実行されるコア数である。
そして、特定部50は、値Xがプロセッサ20のコア数以下の範囲内で、値Xを特定する。例えば、プロセッサ20のコア数が60個である場合、スレッド数b毎のコア数は、以下のように求まる。以下、特定部50により特定されたスレッド数毎の各値Xを試行パターンと呼ぶ。
スレッド数b=1:X=52、43、37、32、29、・・・1
スレッド数b=2:X=43、32、26、22、19、・・・1
スレッド数b=3:X=43、29、22、18、15、・・・1
スレッド数b=4:X=32、22、16、13、11、・・・1
図13は、NPB FTのコア数毎の性能の評価結果の一例を示す図である。図13の例は、各コア24で動作させるスレッド数を1〜4として、それぞれ並列処理を実行するコア数を1〜60の範囲で変えて同程度ずつコア24に処理を割り振った場合の並列処理を実行したコア数毎の性能の一例である。図13の横軸は、並列処理を実行させたコア数を示す。図13の縦軸は、動作させるスレッド数が1、コア数が1での性能に対する相対性能を示す。図13に示すように、イタレーション数Nがコア数に対してあまり大きくない場合、コア24あたりの処理数の違いにより処理性能が階段状になる。
決定部51は、特定部50により特定されたスレッド数およびコア数のなかから、処理性能の最も高いスレッド数およびコア数を並列処理を実行するスレッド数およびコア数と決定する。一例として、決定部51は、試行パターンのスレッド数およびコア数のなかから、スレッド数毎に、ヒルクライム法により、最も性能の高いコア数を求める。そして、決定部51は、スレッド数毎の最も性能の高いコア数での性能を比較し、性能が最も高いコア数を並列処理を実行するコア数と決定する。例えば、決定部51は、試行パターンのスレッド数およびコア数をスレッド数が多いものから、スレッド数毎に、コア数の多い順に、コア数のコア24を用いてイタレーション数Nの処理を並列に実行して性能の評価を行う。そして、決定部51は、スレッド数毎に、コア数の多い順に性能を順次比較し、少ないコア数の性能が多いコア数の性能を最初に下回った際の多い側のコア数を当該スレッド数の最も良い性能のコア数と特定する。そして、決定部51は、少ないスレッド数の最も良い性能が多いスレッド数の最も良い性能を最初に下回った際の多い側のスレッド数およびコア数を、並列処理を実行するスレッド数およびコア数と決定する。
例えば、図13の例では、決定部51は、スレッド数が4の場合について、32個のコア24によりイタレーション数Nの処理を並列に実行して性能の評価を行う。次に、決定部51は、22個のコア24によりイタレーション数Nの処理を並列に実行して性能の評価を行う。そして、決定部51は、コア数が32個の場合の性能と、コア数が22個の場合の性能を比較する。図13の例では、コア数が22個の場合の性能は、コア数が32個の場合の性能よりも下回っている。この場合、決定部51は、スレッド数が4の場合について、最も良い性能のコア数を32個と決定する。
決定部51は、スレッド数が3の場合について、43個のコア24によりイタレーション数Nの処理を並列に実行して性能の評価を行う。次に、決定部51は、29個のコア24によりイタレーション数Nの処理を並列に実行して性能の評価を行う。そして、決定部51は、コア数が43個の場合の性能と、コア数が29個の場合の性能を比較する。図13の例では、コア数が29個の場合の性能は、コア数が43個の場合の性能よりも下回っている。この場合、決定部51は、スレッド数が3の場合について、最も良い性能のコア数を43個と決定する。
決定部51は、スレッド数が4、コア数を52個の場合の性能と、スレッド数が3、コア数を43個の場合の性能と比較する。図13の例では、スレッド数が3、コア数を43個の場合の性能は、スレッド数が4、コア数を52個の性能を下回っていない。
この場合、スレッド数が少ないとより性能が高くなる可能性がある。そこで、決定部51は、スレッド数が2の場合について、43個のコア24によりイタレーション数Nの処理を並列に実行して性能の評価を行う。次に、決定部51は、32個のコア24によりイタレーション数Nの処理を並列に実行して性能の評価を行う。そして、決定部51は、コア数が43個の場合の性能と、コア数が32個の場合の性能を比較する。図13の例では、コア数が32個の場合の性能は、コア数が43個の場合の性能よりも下回っている。この場合、決定部51は、スレッド数が2の場合について、最も良い性能のコア数を43個と決定する。
決定部51は、スレッド数が3、コア数を43個の場合の性能と、スレッド数が2、コア数を43個の場合の性能と比較する。図13の例では、スレッド数が2、コア数を43個の場合の性能は、スレッド数が3、コア数を43個の性能を下回っている。
この場合、決定部51は、スレッド数が3、コア数が43を、並列処理を実行するスレッド数およびコア数と決定する。
なお、決定部51は、特定部50により特定された試行パターンの各スレッド数およびコア数でイタレーション数Nの処理を並列に実行して性能を求め、処理性能の最も高いコア数を並列処理を実行するコア数と決定してもよい。
ここで、決定部51により決定されるコア数の評価結果の一例を説明する。図14は、評価結果の一例を示す図である。なお、図14は、スレッド数およびコア数に対する性能が図13に示す関係である場合の評価結果である。試行回数は、決定部51が並列処理を実行するスレッド数およびコア数を決定するまでに性能の評価を行った回数である。精度は、処理性能の最も高い性能を決定できたかの予測精度を示し、決定されたスレッド数、コア数での処理性能を最大性能で除算した値である。
図14の「ヒルクライム」は、決定部51が試行パターンの各スレッド数およびコア数のなかから、ヒルクライム法により、並列処理を実行するコア数と決定した場合の評価結果であり、試行回数が6、精度が1.00である。図14の「全探索」は、決定部51が試行パターンの各スレッド数およびコア数の性能を求め、処理性能の最も高いものを並列処理を実行するスレッド数およびコア数と決定した場合の評価結果であり、試行回数が79、精度が1.00である。
また、図14には、試行パターンを特定しないで、並列処理を実行するコア数を従来のように決定した場合の評価結果も示している。図14の「従来のヒルクライム」は、スレッド数が1〜4について、図13に示す1〜60の各コア数のなかから、ヒルクライム法により、並列処理を実行するコア数と決定した場合の評価結果であり、試行回数が44、精度が0.99である。また、図13の「従来の全探索」は、スレッド数が1〜4について、図13に示す1〜60の全てのコア数の性能を求め、処理性能の最も高いコア数を並列処理を実行するコア数と決定した場合の評価結果であり、試行回数が240、精度が1.00である。
このように、並列処理最適化プログラム32は、試行パターンの各スレッド数およびコア数のなかから、並列処理を実行するスレッド数およびコア数を決定することにより、ヒルクライム法を用いた場合でも、処理性能の高いコア数を高い精度で求めることができる。また、並列処理最適化プログラム32は、試行パターンの各スレッド数およびコア数のなかから、並列処理を実行するコア数と決定することにより、全探索を用いた場合でも、より短期間で処理性能の高いコア数を求めることができる。また、並列処理最適化プログラム32は、各コア24に同程度の処理を割り振る場合、少ない数で割り振れるコア数を特定するため、消費電力を少なく抑えることができる。すなわち、並列処理最適化プログラム32は、高効率で並列処理を実行可能なコア数を速やかに求めることができる。
[処理の流れ]
次に、実施例2に係る情報処理装置10が並列処理最適化プログラム32を実行した際に並列処理に適したコア数を決定する並列処理最適化処理の流れについて説明する。図15は、実施例2に係る並列処理最適化処理の手順の一例を示すフローチャートである。実施例2に係る並列処理最適化処理の一部は、図9に示した実施例1に係る並列処理最適化処理と同一であるため、同一部分については同一の符号を付し、主に異なる処理について説明する。
決定部51は、性能が未評価の最も大きいスレッド数を性能の評価対象のスレッド数とする(S15)。例えば、決定部51は、スレッド数が1〜4の全てで性能が未評価の場合、最も大きい4を評価対象のスレッド数とする。決定部51は、この評価対象のスレッド数のコア数についてS11〜S13の処理を行う。このS11〜S13の処理により、評価対象のスレッド数での最も良い性能のコア数が特定される。
そして、決定部51は、評価対象のスレッド数での最も良い性能が、評価対象のスレッド数よりも1つ多いスレッド数での最も良い性能よりも悪化しているか判定する(S16)。性能が悪化していない場合(S16否定)、上述のS15の処理へ移行する。
一方、性能が悪化している場合(S16肯定)、決定部51は、評価対象のスレッド数よりも1つ多いスレッド数での最も良い性能のコア数を、並列処理を実行するスレッド数およびコア数と決定する(S17)。
次に、実施例2に係る試行パターン特定処理の流れについて説明する。図16は、実施例2に係る試行パターン特定処理の手順の一例を示すフローチャートである。実施例2に係る試行パターン特定処理の一部は、図10に示した実施例1に係る試行パターン特定処理と同一であるため、同一部分については同一の符号を付し、主に異なる処理について説明する。
特定部50は、変数a、変数bをそれぞれ1に初期化する(S30)。特定部50は、変数aと変数bを乗算した値でイタレーション数Nを除算し、除算結果の値の少数点以下を切り上げた値Xを算出する(S31)。
値Xが1以上ではない場合(S24否定)、特定部50は、変数bがコア24で動作可能な最大のスレッド数Sであるか否かを判定する(S32)。変数bが最大のスレッド数Sである場合(S32肯定)、処理を終了する。
一方、変数bが最大のスレッド数Sではない場合(S32否定)、特定部50は、変数aを1に初期化し、変数bに1を加算して(S33)、S31の処理へ移行する。
また、試行パターンに値Xがない場合(S26否定)、特定部50は、試行パターンに、スレッド数が変数bの値の場合に試行するコア数として値Xを加える(S34)。すなわち、スレッド数が変数b、コア数が値Xを試行パターンに加える。
[効果]
上述してきたように、本実施例に係る情報処理装置10は、コア24の並列処理を実行可能なスレッド数および並列処理を実行可能なコア数の範囲内で、処理が実行されるスレッド数およびコア数を特定する。そして、情報処理装置10は、特定したスレッド数およびコア数のなかから、処理性能の最も高いスレッド数およびコア数を並列処理を実行するスレッド数およびコア数と決定する。これにより、情報処理装置10は、高効率で並列処理を実行可能なスレッド数およびコア数を速やかに求めることができる。
また、情報処理装置10は、特定したスレッド数およびコア数をスレッド数が多いものから、スレッド数毎に、コア数の多い順に性能の評価を行って性能を順次比較する。情報処理装置10は、少ないコア数の性能が多いコア数の性能を最初に下回った際の多い側のコア数を当該スレッド数の最も良い性能のコア数と特定する。そして、情報処理装置10は、少ないスレッド数の最も良い性能が多いスレッド数の最も良い性能を最初に下回った際の多い側のスレッド数およびコア数を並列処理を実行するスレッド数およびコア数と決定する。これにより、情報処理装置10は、並列処理を実行するスレッド数およびコア数をより速やかに求めることができる。
次に、実施例3について説明する。実施例3に係る情報処理装置10の構成は、実施例2と略同一であるため、同一部分については同一の符号を付し、主に異なる部分について説明する。
実施例3に係る決定部51は、特定部50により特定されたスレッド数およびコア数のなかから、所定の予測モデルを用いて、並列処理を実行するスレッド数およびコア数と決定する。例えば、決定部51は、実行するスレッド数を変えて1つのコア24の各スレッドに1イタレーションを割り振って処理を実行して、各スレッド数での処理性能を計測する。例えば、決定部51は、実行中のメモリスループットを測定する。そして、決定部51は、測定されたメモリスループットをスレッド数で除算して、スレッド数毎に、1スレッドあたりのメモリスループットを求める。決定部51は、1スレッドあたりのメモリスループットが最も少ないスレッド数を並列処理を実行するスレッド数と決定する。
また、決定部51は、決定したスレッド数での1スレッドあたりのメモリスループットに決定したスレッド数を乗算してコアあたりのメモリスループットを求める。このメモリスループットは、コア数に比例して増加し、メモリスループットがピークに達するとこれ以上実行コア数を増やしても性能が向上しない。そこで、決定部51は、情報処理装置10において可能なピークのメモリスループットをコアあたりのメモリスループットで割り、ピークのメモリスループットに達するコア数を算出する。例えば、コアあたりのメモリスループットが20であり、ピークのメモリスループットが100である場合、決定部51は、100/20=5をピークのメモリスループットに達するコア数と算出する。
なお、決定部51は、メモリスループットに代えて、メモリのバンド幅を求めてもよい。例えば、コアあたりのバンド幅が3%であり、最大利用できるバンド幅が100%である場合、決定部51は、100/3=33.3を最大利用できるバンド幅に達するコア数と算出する。
そして、決定部51は、試行パターンの、並列処理を実行するスレッド数のコア数のなかから、ピークの性能となるコア数以内で、最大のコア数を並列処理を実行するコア数と特定する。例えば、並列処理を実行するスレッド数が1であり、試行パターンのスレッド数が1のコア数が52、43、37、32、29、・・・1であり、ピークの性能となるコア数が33.3であるものとする。この場合、決定部51は、コア数が33.3以内で最大の32を並列処理を実行するコア数と特定する。
[処理の流れ]
次に、実施例3に係る情報処理装置10が並列処理最適化プログラム32を実行した際に並列処理に適したコア数を決定する並列処理最適化処理の流れについて説明する。図17は、実施例3に係る並列処理最適化処理の手順の一例を示すフローチャートである。実施例3に係る並列処理最適化処理の一部は、図15に示した実施例2に係る並列処理最適化処理と同一であるため、同一部分については同一の符号を付し、主に異なる処理について説明する。
決定部51は、実行するスレッド数を変えて1コア24のスレッドに1イタレーションを割り振って処理を実行して、各スレッド数での処理性能を計測する(S50)。そして、決定部51は、各スレッド数での処理性能に基づき、並列処理を実行するスレッド数sと、ピークの性能となるコア数mを算出する(S51)。
決定部51は、試行パターンのスレッド数sの各コア数を少ない順に並べ、コア数の少ない順にT、T、T・・・Tとする(S52)。決定部51は、変数nを0に初期化する(S53)。そして、決定部51は、変数nに1を加算する(S54)。
決定部51は、T<コア数m<Tn+1を満たすか否かを判定する(S55)。T<コア数m<Tn+1を満たさない場合(S55否定)、S54の処理へ移行する。
一方、T<コア数m<Tn+1を満たす場合(S55肯定)、決定部51は、Tのコア数を、並列処理を実行するコア数と決定する(S56)。プロセッサ制御部52は、スレッド数sおよび決定したコア数で、残りのイタレーションの処理が並列実行されるように制御し(S57)、処理を終了する。
[効果]
上述してきたように、本実施例に係る情報処理装置10は、特定したスレッド数およびコア数のなかから、所定の予測モデルを用いて、並列処理を実行するスレッド数およびコア数を決定する。これにより、情報処理装置10は、並列処理を実行するスレッド数およびコア数をより速やかに求めることができる。
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
例えば、上記の実施例では、並列処理を実行する際に並列処理を実行するスレッド数、コア数を決定する場合について説明したが、開示のシステムはこれに限定されない。例えば、並列処理が定期的に行われるなど、実行される並列処理が事前にわかっている場合、並列処理の実行前にスレッド数、コア数を決定してもよい。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、並列処理最適化プログラム32の特定部50と、決定部51と、プロセッサ制御部52の各処理部が適宜統合されてもよい。また、各処理部の処理が適宜複数の処理部の処理に分離されてもよい。さらに、並列処理最適化プログラム32は複数のプログラムにより構成され、複数の装置に分散配置されてもよい。
なお、上記した並列処理最適化プログラム32については、必ずしも最初からDISK21に記憶させることを要しない。
例えば、情報処理装置10に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、情報処理装置10がこれらからプログラムを読み出して実行するようにしてもよい。
さらには、公衆回線、インターネット、LAN、WANなどを介して情報処理装置10に接続される「他のコンピュータ(またはサーバ)」などにプログラムを記憶させておく。そして、情報処理装置10がこれらからプログラムを読み出して実行するようにしてもよい。
10 情報処理装置
20 プロセッサ
24 コア
25 スレッド
31 並列処理プログラム
32 並列処理最適化プログラム
50 特定部
51 決定部
52 プロセッサ制御部

Claims (7)

  1. コンピュータに、
    並列処理を実行可能なコア数の範囲内で、並列して実行する所定数の処理を、割り振る最大処理数を変えて、それぞれ当該最大処理数以下の範囲で、かつ、処理が割り振られるコアの数が最も少なくなるようにコアに割り振る場合に、前記最大処理数数毎に、処理が割り振られるコア数を特定し、
    特定したコア数のなかから、処理性能の最も高いコア数を並列処理を実行するコア数と決定する
    処理を実行させることを特徴とする並列処理最適化プログラム。
  2. 前記コアは、並列処理を実行可能な複数のスレッドを有し、
    前記特定する処理は、コアの並列処理を実行可能なスレッド数および並列処理を実行可能なコア数の範囲内で、各コアで動作させるスレッド数および前記最大処理数を変えて、それぞれ当該最大処理数以下の範囲で、かつ、処理が割り振られるコアの数が最も少なくなるようにスレッドに前記所定数の処理を割り振る場合に、処理が割り振られるスレッド数およびコア数を特定し、
    前記決定する処理は、特定したスレッド数およびコア数のなかから、処理性能の最も高いスレッド数およびコア数を並列処理を実行するスレッド数およびコア数と決定する
    ことを特徴とする請求項1に記載の並列処理最適化プログラム。
  3. 前記特定する処理は、特定したコア数のなかから、コア数の多い順に性能の評価を行って性能を順次比較し、少ないコア数の性能が多いコア数の性能を最初に下回った際の多い側のコア数を並列処理を実行するコア数と決定する
    ことを特徴とする請求項1に記載の並列処理最適化プログラム。
  4. 前記特定する処理は、特定したスレッド数およびコア数をスレッド数が多いものから、スレッド数毎に、コア数の多い順に性能の評価を行って性能を順次比較し、少ないコア数の性能が多いコア数の性能を最初に下回った際の多い側のコア数を当該スレッド数の最も良い性能のコア数と特定し、少ないスレッド数の最も良い性能が多いスレッド数の最も良い性能を最初に下回った際の多い側のスレッド数およびコア数を並列処理を実行するスレッド数およびコア数と決定する
    ことを特徴とする請求項2に記載の並列処理最適化プログラム。
  5. 前記決定する処理は、特定したスレッド数およびコア数のなかから、所定の予測モデルを用いて、並列処理を実行するスレッド数およびコア数を決定する
    ことを特徴とする請求項2に記載の並列処理最適化プログラム。
  6. コンピュータが、
    並列処理を実行可能なコア数の範囲内で、並列して実行する所定数の処理を、割り振る最大処理数を変えて、それぞれ当該最大処理数以下の範囲で、かつ、処理が割り振られるコアの数が最も少なくなるようにコアに割り振る場合に、前記最大処理数数毎に、処理が割り振られるコア数を特定し、
    特定したコア数のなかから、処理性能の最も高いコア数を並列処理を実行するコア数と決定する
    処理を実行することを特徴とする並列処理最適化方法。
  7. 並列処理を実行可能な複数のコアと、
    並列処理を実行可能なコア数の範囲内で、並列して実行する所定数の処理を、割り振る最大処理数を変えて、それぞれ当該最大処理数以下の範囲で、かつ、処理が割り振られるコアの数が最も少なくなるようにコアに割り振る場合に、前記最大処理数数毎に、処理が割り振られるコア数を特定する特定部と、
    前記特定部により特定されたコア数のなかから、処理性能の最も高いコア数を並列処理を実行するコア数と決定する決定部と、
    を有することを特徴とする情報処理装置。
JP2013150945A 2013-07-19 2013-07-19 並列処理最適化プログラム、並列処理最適化方法および情報処理装置 Expired - Fee Related JP6171658B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013150945A JP6171658B2 (ja) 2013-07-19 2013-07-19 並列処理最適化プログラム、並列処理最適化方法および情報処理装置
US14/310,679 US10223168B2 (en) 2013-07-19 2014-06-20 Parallel processing optimization method, and information processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013150945A JP6171658B2 (ja) 2013-07-19 2013-07-19 並列処理最適化プログラム、並列処理最適化方法および情報処理装置

Publications (2)

Publication Number Publication Date
JP2015022574A JP2015022574A (ja) 2015-02-02
JP6171658B2 true JP6171658B2 (ja) 2017-08-02

Family

ID=52344249

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013150945A Expired - Fee Related JP6171658B2 (ja) 2013-07-19 2013-07-19 並列処理最適化プログラム、並列処理最適化方法および情報処理装置

Country Status (2)

Country Link
US (1) US10223168B2 (ja)
JP (1) JP6171658B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015050474A1 (en) * 2013-10-03 2015-04-09 Huawei Technologies Co., Ltd Method and system for assigning a computational block of a software program to cores of a multi-processor system
GB201319591D0 (en) * 2013-11-06 2013-12-18 Microsoft Corp Network Access
US9696787B2 (en) * 2014-12-10 2017-07-04 Qualcomm Innovation Center, Inc. Dynamic control of processors to reduce thermal and power costs
JP6528531B2 (ja) * 2015-05-12 2019-06-12 富士通株式会社 コンパイラプログラム、コンパイル方法、及び情報処理装置
CN106919452B (zh) * 2015-12-28 2020-11-27 中兴通讯股份有限公司 多核异构系统及其硬件资源的管理方法
WO2018198745A1 (ja) 2017-04-27 2018-11-01 日本電気株式会社 計算資源管理装置、計算資源管理方法、及びコンピュータ読み取り可能な記録媒体
US11112514B2 (en) 2019-02-27 2021-09-07 Saudi Arabian Oil Company Systems and methods for computed resource hydrocarbon reservoir simulation and development
US11886960B2 (en) * 2019-05-07 2024-01-30 International Business Machines Corporation Elastic training of machine learning models via re-partitioning based on feedback from the training algorithm
US11573803B2 (en) 2019-05-07 2023-02-07 International Business Machines Corporation Parallel training of machine learning models
DE102020132291A1 (de) 2020-12-04 2022-06-09 Dinnovative Gmbh Antimikrobielles Filtermaterial
US11934291B2 (en) * 2021-02-23 2024-03-19 Kyocera Document Solutions Inc. Measurement of parallelism in multicore processors
US12013743B2 (en) * 2021-10-29 2024-06-18 Verizon Patent And Licensing Inc. Software-based power management for virtualization platforms
WO2024209580A1 (ja) * 2023-04-05 2024-10-10 日本電信電話株式会社 リソース制御装置、リソース制御システム、リソース制御方法、および、リソース制御プログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3839259B2 (ja) 2000-01-25 2006-11-01 富士通株式会社 マルチスレッド制御方法、マルチスレッド制御装置、記録媒体、及びプログラム
WO2004044745A1 (ja) 2002-11-13 2004-05-27 Fujitsu Limited マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ
US7249268B2 (en) * 2004-06-29 2007-07-24 Intel Corporation Method for performing performance optimization operations for a processor having a plurality of processor cores in response to a stall condition
JP4740561B2 (ja) 2004-07-09 2011-08-03 富士通株式会社 トランスレータプログラム、プログラム変換方法およびトランスレータ装置
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US20070300239A1 (en) * 2006-06-23 2007-12-27 International Business Machines Corporation Dynamic application instance placement in data center environments
WO2009037731A1 (ja) * 2007-09-21 2009-03-26 Fujitsu Limited 翻訳装置と翻訳方法および翻訳プログラムとプロセッサコアの制御方法およびプロセッサ
US20110213950A1 (en) * 2008-06-11 2011-09-01 John George Mathieson System and Method for Power Optimization
US8571924B2 (en) * 2011-07-05 2013-10-29 Yahoo! Inc. High performance personalized advertisement serving by exploiting thread assignments in a multiple core computing environment

Also Published As

Publication number Publication date
US20150025848A1 (en) 2015-01-22
US10223168B2 (en) 2019-03-05
JP2015022574A (ja) 2015-02-02

Similar Documents

Publication Publication Date Title
JP6171658B2 (ja) 並列処理最適化プログラム、並列処理最適化方法および情報処理装置
US8813073B2 (en) Compiling apparatus and method of a multicore device
US8707314B2 (en) Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations
JP6241300B2 (ja) ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム
EP2472398B1 (en) Memory-aware scheduling for NUMA architectures
US9442696B1 (en) Interactive partitioning and mapping of an application across multiple heterogeneous computational devices from a co-simulation design environment
US10310877B2 (en) Category based execution scheduling
KR20120066189A (ko) 매니코어 시스템에서 응용 프로그램의 상태를 동적으로 재구성하는 장치 및 방법
US20150154054A1 (en) Information processing device and method for assigning task
US20190065271A1 (en) Optimized allocation of tasks in heterogeneous computing systems
KR101177059B1 (ko) 병렬 제어 모듈을 동적으로 할당하는 방법
CN102520915A (zh) 非统一内存访问系统中线程化串行程序的方法及装置
CN108139929B (zh) 用于调度多个任务的任务调度装置和方法
CN105988855B (zh) 即时编译参数优化方法及装置
JP6435980B2 (ja) 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム
KR102022972B1 (ko) 이종 멀티 프로세싱 시스템 환경 기반 런타임 관리장치 및 방법
CN108885546A (zh) 一种基于异构系统的程序处理方法和装置
US12056475B2 (en) Offload server, offload control method, and offload program
Lin et al. Efficient workload balancing on heterogeneous gpus using mixed-integer non-linear programming
KR102376155B1 (ko) 병렬계산 가속기 할당률 결정 장치 및 방법
US12033235B2 (en) Offload server, offload control method, and offload program
Singh et al. Snowpack: Efficient parameter choice for GPU kernels via static analysis and statistical prediction
JP5949245B2 (ja) 情報処理装置、実行プログラムおよび実行方法
JP6387626B2 (ja) 情報処理システム、情報処理方法、および、スケジューリングプログラム
JP6322968B2 (ja) 情報処理装置、情報処理方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160405

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170421

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170619

R150 Certificate of patent or registration of utility model

Ref document number: 6171658

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees