JP6435980B2 - 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム - Google Patents

並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム Download PDF

Info

Publication number
JP6435980B2
JP6435980B2 JP2015090520A JP2015090520A JP6435980B2 JP 6435980 B2 JP6435980 B2 JP 6435980B2 JP 2015090520 A JP2015090520 A JP 2015090520A JP 2015090520 A JP2015090520 A JP 2015090520A JP 6435980 B2 JP6435980 B2 JP 6435980B2
Authority
JP
Japan
Prior art keywords
threads
threshold
computer
parallel
processing time
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
JP2015090520A
Other languages
English (en)
Other versions
JP2016207076A (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 JP2015090520A priority Critical patent/JP6435980B2/ja
Priority to US15/089,820 priority patent/US9940173B2/en
Publication of JP2016207076A publication Critical patent/JP2016207076A/ja
Application granted granted Critical
Publication of JP6435980B2 publication Critical patent/JP6435980B2/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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)

Description

本発明は、並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラムに関する。
複数の計算機を有する並列計算機は、複数のプロセスを並列に実行することによりプログラムを並列処理する。ここで、プロセスとは、並列処理の単位である。各計算機は複数のCPUコアを有し、各計算機では1つ以上のプロセスが並列実行される。プロセス間の通信は、MPI(Message Passing Interface)を用いて行われる。
各プロセスは部分的に複数のスレッドで実行される。例えば、ループ変数Iを1〜1000まで変化させて繰り返し実行されるループがプログラムにあり、スレッド数が4である場合には、I=1〜250、I=251〜500、I=501〜750、I=751〜1000の4つのスレッドで並列に処理が行われる。1つのスレッドには1つのCPUコアが割り当てられる。
プロセス数及びスレッド数は、並列計算機のユーザが指定することが可能である。ただし、スレッド数は、CPUコア数以内である。また、プロセス毎に1つ以上のスレッドが割り当てられた複数のプロセスによる並列処理は、ハイブリッド並列処理と呼ばれる。
並列処理を効率よく行うためには、プロセス毎の処理時間を均等化することが重要となる。また、プロセスの処理時間は、スレッド数に依存する。そこで、プロセス毎の処理時間に基づいてプロセスのスレッド数を動的に再設定することにより、プロセス毎の処理時間を均等化する技術がある。
また、実行される一連の部品プログラム列とそのタイミングと部品プログラムの性能値とを基にシミュレーションによって計算機システムの性能値を予測することで、要求性能を満たす計算機システムの設計を支援する技術がある。
また、各スレッドが測定した性能メトリックをメモリの対応する領域及び親スレッドに対応する領域に記憶し、プロセス完了時にプロファイラがメモリをスキャンして性能メトリックを合計することで、スレッド又はプロセスレベルでの分析を可能とする技術がある。
特開2011−180725号公報 特開2004−272582号公報 特開平9−237203号公報
しかしながら、プロセスに割り当てるスレッド数を変更することでプロセスの処理時間を均等化することは可能となるが、スレッド数を変更してもプログラムの処理時間が短くならない場合もあり、スレッド数の変更が無駄になるという問題がある。例えば、複数のスレッドにより並列に処理される部分が少ない場合には、スレッド数を変更してもプログラムの処理時間はほとんど短くならない。
本発明は、1つの側面では、プロセスに割り当てるスレッド数の無駄な変更をなくすことを目的とする。
本願の開示する並列計算機は、1つの態様において、複数の計算機と前記複数の計算機を管理する管理装置とを有する。前記管理装置は、第1の判定部と、第2の判定部と、第3の判定部と、第4の判定部と、調整部とを有する。前記第1の判定部は、プロセス毎にスレッド数が割り当てられた複数のプロセスが前記複数の計算機で並列に実行されたときの並列化の度合いを示す並列化率が第1の閾値より大きいか否かを判定する。前記第2の判定部は、前記複数のプロセスが前記複数の計算機で並列に実行されたときにメモリが利用されていた時間の割合を示すメモリビジー率が第2の閾値より小さいか否かを判定する。前記第3の判定部は、プロセス毎の浮動小数点演算数の差を示す演算数差が第3の閾値より大きいか否かを判定する。前記第4の判定部は、プロセス毎の処理時間の差を示す処理時間差が第4の閾値より大きいか否かを判定する。前記調整部は、前記並列化率が前記第1の閾値より大きく、前記メモリビジー率が前記第2の閾値より小さく、前記演算数差が前記第3の閾値より大きく、かつ、前記処理時間差が前記第4の閾値より大きい場合に、各プロセスへ割り当てるスレッド数を調整する。
1実施態様によれば、プロセスに割り当てるスレッド数の無駄な変更をなくすことができる。
図1は、実施例に係る並列計算機によるスレッド数変更処理の流れを示す図である。 図2は、プロセスに割り当てるスレッド数の変更が有効か否かを判定する方法を説明するための図である。 図3は、並列化率を説明するための図である。 図4は、スレッド再割当の一例を示す図である。 図5は、実施例に係る並列計算機の構成を示す図である。 図6は、ハードディスク装置が記憶するプログラム及びファイルを示す図である。 図7は、プロファイル情報から算出された情報の一例を示す図である。 図8は、再割当プログラムの機能構成を示す図である。 図9Aは、計算機に割り当てるプロセスを変更しない例を示す図である。 図9Bは、計算機に割り当てるプロセスを変更する例を示す図である。 図10は、再割当プログラムの処理のフローを示すフローチャートである。 図11は、第1決定部によるスレッド数決定処理のフローを示すフローチャートである。 図12は、第2決定部によるスレッド数決定処理のフローを示すフローチャートである。
以下に、本願の開示する並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
まず、実施例に係る並列計算機によるスレッド数変更処理の流れについて説明する。図1は、実施例に係る並列計算機によるスレッド数変更処理の流れを示す図である。図1に示すように、実施例に係る並列計算機は、ソースプログラム23を入力して翻訳を行い、実行可能バイナリ24を出力する(ステップS1)。
そして、並列計算機は、実行可能バイナリ24を入力して実行し、プログラムの情報収集を行う(ステップS2)。そして、並列計算機は、収集した情報すなわちプロファイル情報を解析してプロセスに割り当てるスレッド数の変更が有効か否かを判定する(ステップS3)。
そして、並列計算機は、プロセスに割り当てるスレッド数の変更が有効と判定した場合には、プロセス毎のスレッド数を決定し(ステップS4)、ホストファイル26とスレッド定義ファイル27を出力する(ステップS5)。
ここで、ホストファイル26は、プロセスを計算機に割り当てるときに使用されるファイルであり、ホストファイル26を使用しない場合には、並列計算機の割当ポリシーに従ってプロセスが計算機に割り当てられる。スレッド定義ファイル27は、プロセス毎にスレッド数を指定するとともにスレッドのCPUコアへの割当を指定する場合に使用されるファイルである。スレッド定義ファイル27を使用しない場合には、プロセス毎のスレッド数はユーザが指定した値になり、並列計算機の割当ポリシーに従ってスレッドがCPUコアに割り当てられる。
このように、実施例に係る並列計算機は、プロファイル情報を解析してプロセスに割り当てるスレッド数の変更が有効か否かを判定し、有効と判定した場合に、プロセスに割り当てるスレッド数の変更を行う。したがって、実施例に係る並列計算機は、プロセスに割り当てるスレッド数の無駄な変更をなくすことができる。
また、実施例に係る並列計算機は、スレッド数の変更にともなって、必要であれば、計算機に割り当てるプロセスの変更及びCPUコアへ割り当てるスレッドの変更を行う。したがって、実施例に係る並列計算機は、スレッド数の変更に適したスレッド割当を行うことができる。
次に、プロセスに割り当てるスレッド数の変更が有効か否かを判定する方法について説明する。図2は、プロセスに割り当てるスレッド数の変更が有効か否かを判定する方法を説明するための図である。
図2に示すように、実施例に係る並列計算機は、実行可能バイナリ24を実行してプロファイル情報25を収集する。そして、実施例に係る並列計算機は、プロファイル情報25から並列化率、メモリビジー率、プロセス毎の浮動小数点演算数及びプロセス毎の処理時間を算出する。
ここで、並列化率は、スレッドが並列で処理を行った割合である。プログラム内でスレッドにより並列処理される部分が多くないとスレッド数を変更しても効果はでないため、並列化率がスレッド数の変更が有効か否かの判定に用いられる。
並列化率は、以下の式で定義される。単位は%である。
並列化率=100×全スレッドの並列処理経過時間の合計/(全スレッドの並列処理経過時間の合計+マスタースレッドの逐次処理経過時間)
全スレッドの並列処理経過時間は、プロセスに割り当てられた複数のスレッドが並列に処理を行った部分で経過した時間である。マスタースレッドの逐次処理経過時間は、プロセスに割り当てられた複数のスレッドのうち1つのスレッドだけが処理を行った部分で経過した時間である。
図3は、並列化率を説明するための図である。図3において、ソースプログラム23のdoループ#0〜doループ#2の部分が複数のスレッドで並列に処理が行われた部分であり、他の部分は1つのスレッドで逐次処理が行われた部分である。全体の処理時間に対する処理時間の割合がdoループ#0では40%であり、doループ#1では30%であり、doループ#2では10%であるとすると、並列化率は、80%となる。
メモリビジー率は、メモリアクセスがボトルネックになっていないことを確認するために、スレッド数の変更が有効か否かの判定に用いられる。メモリアクセスがボトルネックになっている場合には、ボトルネックが処理時間を決める要因になるため、スレッド数を変更しても効果が得られない。
浮動小数点演算は負荷の高い演算であり、プロセス毎に浮動小数点演算数に差がないとスレッド数を変更しても効果が得られない。このため、浮動小数点演算数がスレッド数の変更が有効か否かの判定に用いられる。
プロセス毎の処理時間が不均等な場合に、処理時間を均等にすることによって、全体の処理時間を短縮することができる。このため、プロセス毎の処理時間がスレッド数の変更が有効か否かの判定に用いられる。
実施例に係る並列計算機では、再割当プログラム10が、並列化率、メモリビジー率、プロセス毎の浮動小数点演算数及びプロセス毎の処理時間に基づいて、プロセスに割り当てるスレッド数の変更が有効か否かを判定する。そして、再割当プログラム10は、有効と判定した場合には、ホストファイル26及びスレッド定義ファイル27を出力することで、プロセスに割り当てるスレッド数、計算機に割り当てるプロセスを調整する。
そして、実施例に係る並列計算機は、次に実行可能バイナリ24を実行するときに、ホストファイル26及びスレッド定義ファイル27を入力して実行する。したがって、実施例に係る並列計算機は、プログラムの処理時間を短縮することができる。
図4は、スレッド再割当の一例を示す図である。図4では、プロセス#0とプロセス#1で表される2つのプロセスへのスレッド再割当が行われた場合を示す。図4に示すように、再割当前は、プロセス#0及びプロセス#1にそれぞれ4つのスレッドが割り当てられ、プロセス#0とプロセス#1の処理時間には差がある。一方、再割当後は、プロセス#0及びプロセス#1にそれぞれ6つ及び2つのスレッドが割り当てられ、プロセス#0とプロセス#1の処理時間が均等化され、処理時間が短縮される。
次に、実施例に係る並列計算機の構成について説明する。図5は、実施例に係る並列計算機の構成を示す図である。図5に示すように、並列計算機1は、複数の計算機2と管理用計算機5とを有する。計算機2は、情報処理を行う装置である。管理用計算機5は、複数の計算機2を管理し、並列計算機1におけるプログラムの実行を管理する計算機である。
計算機2は、CPU3と、メモリ4とを有する。CPU3は、メモリ4からプログラムを読み出して処理を行う処理装置であり、複数のコア31とハードウェアモニタ32とを有する。コア31は、演算処理を行う装置であり、スレッドに割り当てられるCPUコアである。
ハードウェアモニタ32は、メモリビジー率と浮動小数点演算数を算出するための情報を収集及び蓄積する装置である。メモリ4は、CPU3で実行されるプログラム、プログラム実行の途中結果等を記憶するRAM(Random Access Memory)である。
なお、ここでは説明の便宜上、計算機2が1つのCPU3を有する場合を示したが、計算機2は、複数のCPU3を有してもよい。
管理用計算機5は、CPU6と、メモリ7と、ハードディスク装置8とを有する。CPU6は、メモリ7からプログラムを読み出して処理を行う処理装置である。メモリ7は、CPU6で実行されるプログラム、プログラム実行の途中結果等を記憶するRAMである。
ハードディスク装置8は、並列計算機1で実行されるプログラム、並列計算機1で使用されるファイル等を記憶する磁気記憶装置である。図6は、ハードディスク装置8が記憶するプログラム及びファイルを示す図である。図6に示すように、ハードディスク装置8は、コンパイラ21、ライブラリ22、再割当プログラム10、ソースプログラム23、実行可能バイナリ24、プロファイル情報25、ホストファイル26、スレッド定義ファイル27を記憶する。
コンパイラ21は、ソースプログラム23をコンパイルして実行可能ライブラリ24を生成する。コンパイラ21は、計算機2でも管理用計算機5でも実行される。ライブラリ22は、実行可能バイナリ24が実行されたときにプロファイル情報25を収集する機能、プロファイル情報25から並列化率、メモリビジー率、浮動小数点演算数及び処理時間を算出する機能等を有するプログラムである。
再割当プログラム10は、並列化率、メモリビジー率、浮動小数点演算数及び処理時間に基づいて、スレッド数の変更が有効か否かを判定し、有効と判定した場合に、ホストファイル26とスレッド定義ファイル27を出力する。再割当プログラム10は、管理用計算機5で実行される。
ソースプログラム23は、複数の計算機2で並列処理されるプログラムのソースコードである。実行可能バイナリ24は、ソースプログラム23からコンパイラ21によって生成される実行可能プログラムであり、複数の計算機2で並列に実行される。
プロファイル情報25は、実行可能バイナリ24が実行されたときに収集される情報であり、ハードウェアモニタ32又はライブラリ22によって収集される。プロファイル情報25から、並列化率、メモリビジー率、プロセス毎の浮動小数点演算数及びプロセス毎の処理時間が算出される。
図7は、プロファイル情報25から算出された情報の一例を示す図である。図7は、4つのプロセスで並列処理されたプログラムの並列化率、メモリビジー率、プロセス毎の浮動小数点演算数及びプロセス毎の処理時間を示す。図7に示すように、並列化率は、92%である。メモリビジー率は、4%である。
浮動小数点演算数については、プロセス番号が0であるプロセスは1.19E+10回すなわち119億回であり、プロセス番号が1であるプロセスは2.46E+10回であり、プロセス番号が2であるプロセスは3.51E+10回である。プロセス番号が3であるプロセスは2.19E+10回である。
処理時間については、プロセス番号が0であるプロセスは22秒であり、プロセス番号が1であるプロセスは48秒であり、プロセス番号が2であるプロセスは70秒であり、プロセス番号が3であるプロセスは44秒である。
ホストファイル26は、計算機2へのプロセスの割当を記憶するファイルである。スレッド定義ファイル27は、プロセスに対するスレッド数の割当、スレッドのCPUコアへの割当を記憶するファイルである。
次に、再割当プログラム10の機能構成について説明する。図8は、再割当プログラム10の機能構成を示す図である。図8に示すように、再割当プログラム10は、判定部11と、スレッド数決定部12とを有する。
判定部11は、プロセスへのスレッド数の再割当が有効か否かを判定する。判定部11は、第1判定部11aと、第2判定部11bと、第3判定部11cと、第4判定部11dとを有する。
第1判定部11aは、並列化率が第1の閾値より大きいか否かを判定する。第2判定部11bは、メモリビジー率が第2の閾値より小さいか否かを判定する。第3判定部11cは、プロセス毎の浮動小数点演算数の差が第3の閾値より大きいか否かを判定する。ここで、プロセス毎の浮動小数点演算数の差は、最大の浮動小数点演算数と最小の浮動小数点演算数の差である。第4判定部11dは、プロセス毎の処理時間の差が第4の閾値より大きいか否かを判定する。ここで、プロセス毎の処理時間の差は、最大の処理時間と最小の処理時間の差である。
判定部11は、並列化率が第1の閾値より大きく、メモリビジー率が第2の閾値より小さく、プロセス毎の浮動小数点演算数の差が第3の閾値より大きく、かつ、プロセス毎の処理時間の差が第4の閾値より大きい場合に、スレッド数の再割当が有効と判定する。
スレッド数決定部12は、判定部11がスレッド数の再割当が有効と判定した場合に、プロセスへ割り当てるスレッド数を決定する。スレッド数決定部12は、第1決定部12aと、第2決定部12bとを有する。
第1決定部12aは、全ての計算機2で実行されるプロセス全体でプロセスの処理時間が均等になるようにプロセス毎のスレッド数を決定する。具体的には、第1決定部12aは、「プロセス毎の処理時間」を合計して「プロセス全体の処理時間の合計」を算出する。そして、第1決定部12aは、「プロセス毎の処理時間」及び「プロセス全体の処理時間の合計」から「プロセス毎の時間比率」を以下の式に基づいて算出する。
「プロセス毎の時間比率」=「プロセス毎の処理時間」÷「プロセス全体の処理時間の合計」
そして、第1決定部12aは、「使用可能な全CPUコア数(スレッド数)」と「プロセス毎の時間比率」から「プロセス毎の暫定必要スレッド数」(小数点以下切り捨て)を以下の式に基づいて算出する。
「プロセス毎の暫定必要スレッド数」=「使用可能な全CPUコア数」×「プロセス毎の時間比率」
そして、第1決定部12aは、「使用可能な全CPUコア数」と「プロセス毎の暫定必要スレッド数の合計」から「余りスレッド数」を以下の式に基づいて算出する。
「余りスレッド数」=「使用可能な全CPUコア数」−「プロセス毎の暫定必要スレッド数の合計」
そして、第1決定部12aは、「余りスレッド数」が0の場合には、「プロセス毎の暫定必要スレッド数」を「プロセス毎の必要スレッド数」とする。一方、「余りスレッド数」が0よりも大きい場合には、第1決定部12aは、「プロセス毎の暫定必要スレッド数」の算出時の小数点以下の値の大きい順に余りスレッドを割り当てる。もし、最後の1スレッドを割り当てるときに小数点以下の値が同じ場合は、第1決定部12aは、「プロセス毎の暫定必要スレッド数」が少ない方に割り当て、それも同じ場合は、プロセス番号が小さい方に割り当てる。そして、第1決定部12aは、割り当てたスレッド数を、「プロセス毎の必要スレッド数」とする。
そして、第1決定部12aは、計算機2に割り当てたスレッド数の合計が計算機2当たりのCPUコア数と同じ場合は、その計算機2に割り当てるプロセスは、変更しない。図9Aは、計算機2に割り当てるプロセスを変更しない例を示す図である。図9Aでは、計算機#0及び計算機#1で表される計算機2がそれぞれ8個のコア31を有する。そして、再割当前は、計算機#0で動作するプロセス#00及びプロセス#01にそれぞれ4個のスレッドが割り当てられ、計算機#1で動作するプロセス#10及びプロセス#11にそれぞれ4個のスレッドが割り当てられている。
そして、スレッド数の再割当後、プロセス#00には6個のスレッドが割り当てられ、プロセス#01には2個のスレッドが割り当てられたとする。この場合、計算機#0に割り当てられたスレッド数の合計は8で計算機2当たりのCPUコア数と同じである。したがって、第1決定部12aは、計算機#0に割り当てるプロセスは変更しない。また、スレッド数の再割当後、プロセス#10には5個のスレッドが割り当てられ、プロセス#11には3個のスレッドが割り当てられたとする。この場合、計算機#1に割り当てられたスレッド数の合計は8で計算機2当たりのCPUコア数と同じである。したがって、第1決定部12aは、計算機#1に割り当てるプロセスは変更しない。
一方、図9Bは、計算機2に割り当てるプロセスを変更する例を示す図である。図9Bでは、再割当前は、計算機#0で動作するプロセス#00及びプロセス#01にそれぞれ4個のスレッドが割り当てられ、計算機#1で動作するプロセス#10及びプロセス#11にそれぞれ4個のスレッドが割り当てられている。
そして、スレッド数の再割当後、プロセス#00には6個のスレッドが割り当てられ、プロセス#01には4個のスレッドが割り当てられ、プロセス#10には4個のスレッドが割り当てられ、プロセス#11には2個のスレッドが割り当てられたとする。この場合、計算機#0に割り当てられたスレッド数の合計は10で計算機2当たりのCPUコア数を超える。したがって、第1決定部12aは、計算機#0に割り当てるプロセスを変更する。
すなわち、第1決定部12aは、計算機#0にプロセス#00とプロセス#11を割り当て、計算機#1にプロセス#10とプロセス#01を割り当て、計算機#0及び計算機#1に割り当てられたスレッド数の合計を8とする。
このように、計算機2に割り当てたスレッド数の合計が計算機2当りのCPUコア数と違う計算機2がある場合は、第1決定部12aは、計算機2に割り当てるプロセスを再設定する。具体的には、第1決定部12aは、「プロセス毎の必要スレッド数」と「プロセス番号」を用いてプロセスのソート(降順)を行う。そして、第1決定部12aは、「プロセス毎の必要スレッド数」の合計が「計算機当たりのスレッド数」となるよう、先頭または後尾から順にプロセスの組み合わせを行う。そして、第1決定部12aは、全ての計算機2において「プロセス毎の必要スレッド数」の合計が「計算機当たりのスレッド数」となった場合は、処理を終了する。一方、いずれかの計算機2において「プロセス毎の必要スレッド数」の合計が「計算機当たりのスレッド数」とならない場合は、第1決定部12aは、プロセス毎のスレッド数を決定することなく、第2決定部12bが、プロセス毎のスレッド数を決定する。
第2決定部12bは、各計算機2で計算機2内のプロセスの処理時間が均等になるようにプロセス毎のスレッド数を決定する。具体的には、第2決定部12bは、計算機2毎に以下を行う。まず、第2決定部12bは、「プロセス毎の処理時間」を合計し、「計算機2内の処理時間の合計」を算出する。そして、第2決定部12bは、「プロセス毎の処理時間」及び「計算機2内の処理時間の合計」から「プロセス毎の時間比率」を算出する。
そして、第2決定部12bは、1計算機2あたりのCPUコア数を基に、「プロセス毎の時間比率」から「プロセス毎の暫定必要スレッド数」(小数点以下切り捨て)を算出する。そして、第2決定部12bは、「1計算機2あたりのCPUコア数」から、「プロセス毎の暫定必要スレッド数」の合計を減算し、「余りスレッド数」を算出する。
そして、第2決定部12bは、「余りスレッド数」が0の場合、「プロセス毎の暫定必要スレッド数」を「プロセス毎の必要スレッド数」とする。一方、「余りスレッド数」が0よりも大きい場合、第2決定部12bは、「プロセス毎の暫定必要スレッド数」の算出時の小数点以下の値の大きい順に余りスレッドを割り当てる。もし、最後の1スレッドを割り当てるときに小数点以下の値が同じ場合は、第2決定部12bは、暫定必要スレッド数が少ない方に割り当て、それも同じ場合は、「プロセス番号」が小さい方に割り当てる。そして、第2決定部12bは、割り当てたスレッド数を、「プロセス毎の必要スレッド数」とする。
次に、再割当プログラム10の処理のフローについて説明する。図10は、再割当プログラム10の処理のフローを示すフローチャートである。図10に示すように、再割当プログラム10は、プロファイル情報25から算出された並列化率、メモリビジー率、浮動小数点演算数及び処理時間を取得する(ステップS11)。
そして、再割当プログラム10は、並列化率は第1の閾値より大きいか否かを判定し(ステップS12)、大きくない場合には、処理を終了し、大きい場合には、メモリビジー率が第2の閾値より小さいか否かを判定する(ステップS13)。
そして、再割当プログラム10は、メモリビジー率が第2の閾値より小さくない場合には、処理を終了し、小さい場合には、プロセス毎の浮動小数点演算数の差が第3の閾値より大きいか否かを判定する(ステップS14)。
そして、再割当プログラム10は、プロセス毎の浮動小数点演算数の差が第3の閾値より大きくない場合には、処理を終了し、大きい場合には、プロセス毎の処理時間の差が第4の閾値より大きいか否かを判定する(ステップS15)。
そして、再割当プログラム10は、プロセス毎の処理時間の差が第4の閾値より大きくない場合には、処理を終了する。一方、大きい場合には、再割当プログラム10は、プロセス毎のスレッド数を決定し(ステップS16)、ホストファイル26とスレッド定義ファイル27を出力する(ステップS17)。
このように、再割当プログラム10は、並列化率、メモリビジー率、浮動小数点演算数及び処理時間に基づいてスレッド数の再割当の有効性を判定するので、無駄なスレッド数の変更をなくすことができる。
次に、第1決定部12aによるスレッド数決定処理のフローについて説明する。図11は、第1決定部12aによるスレッド数決定処理のフローを示すフローチャートである。図11に示すように、第1決定部12aは、各プロセスの処理時間を取得する(ステップS21)。
そして、第1決定部12aは、プロセス全体の処理時間の合計を算出し(ステップS22)、プロセス毎の時間比率を算出する(ステップS23)。そして、第1決定部12aは、プロセス毎の暫定必要スレッド数を算出し(ステップS24)、余りスレッド数を算出する(ステップS25)。そして、第1決定部12aは、プロセス毎の必要スレッド数を算出し(ステップS26)、プロセスを組み合わせて計算機2に割り当てる(ステップS27)。
このように、第1決定部12aは、プロセス全体で処理時間を均等化することで、プログラムの処理時間を短縮することができる。
次に、第2決定部12bによるスレッド数決定処理のフローについて説明する。図12は、第2決定部12bによるスレッド数決定処理のフローを示すフローチャートである。図12に示すように、第2決定部12bは、各プロセスの処理時間を取得し(ステップS31)、対象計算機番号に0を設定する(ステップS32)。
そして、第2決定部12bは、対象計算機番号が全計算機数より小さいか否かを判定し(ステップS33)、小さくない場合には、処理を終了し、小さい場合には、対象の計算機2内のプロセスの処理時間の合計を算出する(ステップS34)。
そして、第2決定部12bは、プロセス毎の時間比率を算出し(ステップS35)、プロセス毎の暫定必要スレッド数を算出し(ステップS36)、余りスレッド数を算出する(ステップS37)。そして、第2決定部12bは、プロセス毎の必要スレッド数を算出し(ステップS38)、対象計算機番号に1を加え(ステップS39)、ステップS33へ戻る。
このように、第2決定部12bは、各計算機2内でプロセスの処理時間を均等化することで、プログラムの処理時間を短縮することができる。
上述してきたように、実施例では、第1判定部11aが、並列化率が第1の閾値より大きいか否かを判定し、第2判定部11bが、メモリビジー率が第2の閾値より小さいか否かを判定する。そして、第3判定部11cが、プロセス毎の浮動小数点演算数の差が第3の閾値より大きいか否かを判定し、第4判定部11dが、プロセス毎の処理時間の差が第4の閾値より大きいか否かを判定する。そして、判定部11は、並列化率が第1の閾値より大きく、メモリビジー率が第2の閾値より小さく、プロセス毎の浮動小数点演算数の差が第3の閾値より大きくかつプロセス毎の処理時間の差が第4の閾値より大きい場合に、スレッド数の再割当が有効と判定する。したがって、再割当プログラム10は、無駄なスレッド数の変更をなくすことができる。
また、実施例では、第1決定部12aが、プロセス全体で処理時間を均等化するようにプロセス毎のスレッド数を決定するので、プログラムの処理時間を短縮することができる。
また、実施例では、第2決定部12bが、各計算機2内でプロセスの処理時間を均等化するようにプロセス毎のスレッド数を決定するので、プログラムの処理時間を短縮することができる。
また、実施例では、第1判定部11aは、全スレッドの並列処理経過時間の合計/(全スレッドの並列処理経過時間の合計+マスタースレッドの逐次処理経過時間)に基づいて算出された並列化率を用いる。したがって、第1判定部11aは、プログラムの並列性が高いか否かを正確に判定することができる。
1 並列計算機
2 計算機
3 CPU
4 メモリ
5 管理用計算機
6 CPU
7 メモリ
8 ハードディスク装置
10 再割当プログラム
11 判定部
11a 第1判定部
11b 第2判定部
11c 第3判定部
11d 第4判定部
12 スレッド数決定部
12a 第1決定部
12b 第2決定部
21 コンパイラ
22 ライブラリ
23 ソースプログラム
24 実行可能バイナリ
25 プロファイル情報
26 ホストファイル
27 スレッド定義ファイル
31 コア

Claims (6)

  1. 複数の計算機と前記複数の計算機を管理する管理装置とを有する並列計算機において、
    前記管理装置は、
    プロセス毎にスレッド数が割り当てられた複数のプロセスが前記複数の計算機で並列に実行されたときの並列化の度合いを示す並列化率が第1の閾値より大きいか否かを判定する第1の判定部と、
    前記複数のプロセスが前記複数の計算機で並列に実行されたときにメモリが利用されていた時間の割合を示すメモリビジー率が第2の閾値より小さいか否かを判定する第2の判定部と、
    プロセス毎の浮動小数点演算数の差を示す演算数差が第3の閾値より大きいか否かを判定する第3の判定部と、
    プロセス毎の処理時間の差を示す処理時間差が第4の閾値より大きいか否かを判定する第4の判定部と、
    前記並列化率が前記第1の閾値より大きく、前記メモリビジー率が前記第2の閾値より小さく、前記演算数差が前記第3の閾値より大きく、かつ、前記処理時間差が前記第4の閾値より大きい場合に、各プロセスへ割り当てるスレッド数を調整する調整部と
    を有することを特徴とする並列計算機。
  2. 前記調整部は、各プロセスへ割り当てるスレッド数を調整した際に、各計算機へのプロセスの割り当てを調整することを特徴とする請求項1に記載の並列計算機。
  3. 前記調整部は、各計算機のコア数の制約のため各計算機へのプロセスの割り当てを調整することができない場合には、各計算機内で各プロセスへ割り当てるスレッド数を調整することを特徴とする請求項2に記載の並列計算機。
  4. 前記並列化率は、全スレッドにより並列に処理が行われた時間のプロセスの処理時間に対する割合に基づくことを特徴とする請求項1、2又は3に記載の並列計算機。
  5. 並列処理を行う複数の計算機を管理する管理装置によるスレッド再割当判定方法において、
    プロセス毎にスレッド数が割り当てられた複数のプロセスが前記複数の計算機で並列に実行されたときの並列化の度合いを示す並列化率が第1の閾値より大きいか否かを判定し、
    前記複数のプロセスが前記複数の計算機で並列に実行されたときにメモリが利用されていた時間の割合を示すメモリビジー率が第2の閾値より小さいか否かを判定し、
    プロセス毎の浮動小数点演算数の差を示す演算数差が第3の閾値より大きいか否かを判定し、
    プロセス毎の処理時間の差を示す処理時間差が第4の閾値より大きいか否かを判定し、
    前記並列化率が前記第1の閾値より大きく、前記メモリビジー率が前記第2の閾値より小さく、前記演算数差が前記第3の閾値より大きく、かつ、前記処理時間差が前記第4の閾値より大きい場合に、各プロセスへ割り当てるスレッド数を調整する
    ことを特徴とするスレッド再割当判定方法。
  6. 並列処理を行う複数の計算機を管理するコンピュータに、
    プロセス毎にスレッド数が割り当てられた複数のプロセスが前記複数の計算機で並列に実行されたときの並列化の度合いを示す並列化率が第1の閾値より大きいか否かを判定し、
    前記複数のプロセスが前記複数の計算機で並列に実行されたときにメモリが利用されていた時間の割合を示すメモリビジー率が第2の閾値より小さいか否かを判定し、
    プロセス毎の浮動小数点演算数の差を示す演算数差が第3の閾値より大きいか否かを判定し、
    プロセス毎の処理時間の差を示す処理時間差が第4の閾値より大きいか否かを判定し、
    前記並列化率が前記第1の閾値より大きく、前記メモリビジー率が前記第2の閾値より小さく、前記演算数差が前記第3の閾値より大きく、かつ、前記処理時間差が前記第4の閾値より大きい場合に、各プロセスへ割り当てるスレッド数を調整する
    処理を実行させることを特徴とするスレッド再割当判定プログラム。
JP2015090520A 2015-04-27 2015-04-27 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム Active JP6435980B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015090520A JP6435980B2 (ja) 2015-04-27 2015-04-27 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム
US15/089,820 US9940173B2 (en) 2015-04-27 2016-04-04 System, management device and method of controlling a plurality of computers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015090520A JP6435980B2 (ja) 2015-04-27 2015-04-27 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム

Publications (2)

Publication Number Publication Date
JP2016207076A JP2016207076A (ja) 2016-12-08
JP6435980B2 true JP6435980B2 (ja) 2018-12-12

Family

ID=57146799

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015090520A Active JP6435980B2 (ja) 2015-04-27 2015-04-27 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム

Country Status (2)

Country Link
US (1) US9940173B2 (ja)
JP (1) JP6435980B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108093151B (zh) * 2016-11-22 2020-03-06 京瓷办公信息系统株式会社 图像形成装置及非临时性的计算机可读取的记录介质
WO2022070427A1 (ja) * 2020-10-02 2022-04-07 日本電気株式会社 画像処理装置、画像処理方法及びコンピュータ可読媒体
CN116700999B (zh) * 2023-08-07 2023-10-03 上海观安信息技术股份有限公司 数据处理方法、装置、计算机设备及存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838976A (en) * 1995-11-28 1998-11-17 Hewlett-Packard Co. System and method for profiling code on symmetric multiprocessor architectures
JP4032339B2 (ja) * 2001-09-25 2008-01-16 株式会社日立情報システムズ モンテカルロシミュレーション並列処理システムと方法およびプログラムと記録媒体
JP3867013B2 (ja) * 2002-05-17 2007-01-10 東芝テック株式会社 プログラミング支援プログラム
JP2004272582A (ja) 2003-03-07 2004-09-30 Toshiba Corp 計算機システムの性能予測プログラムおよび設計支援システム
JP5326314B2 (ja) * 2008-03-21 2013-10-30 富士通株式会社 プロセサおよび情報処理装置
US8528001B2 (en) * 2008-12-15 2013-09-03 Oracle America, Inc. Controlling and dynamically varying automatic parallelization
JP5521644B2 (ja) * 2010-02-26 2014-06-18 日本電気株式会社 ハイブリッド並列処理システム、方法、及びプログラム
JP2011197846A (ja) * 2010-03-18 2011-10-06 Fujitsu Ltd 情報処理装置、並列計算制御方法、プログラム及び並列計算システム
JP5708003B2 (ja) * 2011-02-14 2015-04-30 富士通株式会社 演算処理装置、計算ノード、並列計算機システム、演算処理方法および演算処理プログラム
US8990830B2 (en) * 2011-07-19 2015-03-24 International Business Machines Corporation Thread management in parallel processes
JP5900061B2 (ja) * 2012-03-19 2016-04-06 富士通株式会社 試験方法、試験装置及びプログラム
JP6070078B2 (ja) * 2012-11-01 2017-02-01 日本電気株式会社 ハイブリッド並列処理システム、ハイブリッド並列処理方法およびコンピュータプログラム
US9547530B2 (en) * 2013-11-01 2017-01-17 Arm Limited Data processing apparatus and method for processing a plurality of threads

Also Published As

Publication number Publication date
US9940173B2 (en) 2018-04-10
JP2016207076A (ja) 2016-12-08
US20160314019A1 (en) 2016-10-27

Similar Documents

Publication Publication Date Title
US8813073B2 (en) Compiling apparatus and method of a multicore device
JP6241300B2 (ja) ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム
JP6171658B2 (ja) 並列処理最適化プログラム、並列処理最適化方法および情報処理装置
US20120084789A1 (en) System and Method for Optimizing the Evaluation of Task Dependency Graphs
US20150227397A1 (en) Energy efficient assignment of workloads in a datacenter
KR101471749B1 (ko) 클라우드 서비스의 가상자원 할당을 위한 퍼지 로직 기반의 자원평가 장치 및 방법
Yao et al. LsPS: A job size-based scheduler for efficient task assignments in Hadoop
JP6435980B2 (ja) 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム
JP2012118669A (ja) 負荷分散処理システム及び負荷分散処理方法
KR101392584B1 (ko) 리소스 모니터링을 이용한 동적 데이터 처리 장치 및 그 방법
CN108139929B (zh) 用于调度多个任务的任务调度装置和方法
KR101661475B1 (ko) 이기종 클러스터 상에서 하둡 부하 분산 방법, 이를 수행하기 위한 기록 매체 및 하둡 맵리듀스 시스템
Mishra et al. Communication-aware job scheduling using slurm
US10089151B2 (en) Apparatus, method, and program medium for parallel-processing parameter determination
KR101998278B1 (ko) 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법
Mohammed et al. SimAS: A simulation‐assisted approach for the scheduling algorithm selection under perturbations
Wang et al. On optimal budget-driven scheduling algorithms for MapReduce jobs in the hetereogeneous cloud
WO2013058396A1 (ja) タスク配置装置及びタスク配置方法
Wang et al. On scheduling algorithms for mapreduce jobs in heterogeneous clouds with budget constraints
KR101470695B1 (ko) 그리드 컴퓨팅 스케쥴링을 위한 생물지리학적 최적화 방법 및 시스템
KR102195886B1 (ko) 분산 처리 시스템 및 이의 동작 방법
KR102376155B1 (ko) 병렬계산 가속기 할당률 결정 장치 및 방법
KR101109009B1 (ko) 비정규 리덕션의 병렬화 방법
Hwang et al. Achieving fairness-aware two-level scheduling for heterogeneous distributed systems
Farhat et al. Towards stochastically optimizing data computing flows

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180912

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181029

R150 Certificate of patent or registration of utility model

Ref document number: 6435980

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150