数理最適化セミナーのご案内

5.6.4 解法 wls におけるスレッド数上限

オプション名

モデリング言語/nuopt.prm オプション名
PySIMPLE Problem.options.threads
C++SIMPLE なし
RSIMPLE なし
nuopt.prm wls:threads

設定値

整数値
デフォルト値 1
最小値 -1
最大値 無制限


意味
$-1$ 適切なスレッド数を自動的に設定する
$0$ 単一のスレッドで実行する
$1$ 単一のスレッドで実行する
$>= 2$ 指定された値のスレッド数で実行する

詳細
  • 解法 wls は並列処理を行うことができ,異なる初期値,異なる内部パラメータ設定を用いて探索を行います.探索同士での情報のやりとり(通信)も行い,マルチコア環境において複数試行を効果的に行うことができます.
  • 本オプション値は解法 wls における並列処理のスレッド数上限(並列数上限)を定めます.
  • 本求解オプションは「試行回数」と合わせて利用できます.例えば,「試行回数」を 8 回,「スレッド数上限」を 2 に設定する場合,PySIMPLE では以下のよう記述します.
    problem.options.tryCount = 8;  # problemはProblemクラスのインスタンス
    problem.options.threads  = 2;
    上記のように設定することにより,各スレッドで試行回数を$4 = \frac{8}{2}$ 回とする実行が行われます.終了条件を「計算時間上限」とする場合,単一のスレッドでの実行と比べおよそ半分の実行時間で計算が完了します.
  • 推奨されるスレッド数は,実行する計算機の物理コア数以下となります.同時マルチスレッディング技術により論理コア数が物理コア数よりも多くなっている場合があります,この場合も物理コア数以下に設定することが推奨されます.
  • 本求解オプションのデフォルト値は 1 となっているため,並列化を有効にする場合は 2 以上の値を設定してください.
  • 解法 wls の並列化計算は基本的に非決定的(計算する度に計算過程が異なるため結果も異なる)であるため,再現性が重要となるアプリケーションには推奨されません.
  • [ADVANCED] 解法 wls の並列化計算における各スレッドの探索は,「初期値」と「探索戦略」の組合せが自動的に設定されます.
    • 「探索戦略」とは探索における内部パラメータ設定を表し,「実行可能解の発見を促進する」等,探索ごとの性格に対応します.各スレッドで異なる探索戦略を用いることで,並列化計算における探索性能の向上を図ります.
    • 現時点では 3 パターンの探索戦略が実装されています.
    • 「試行回数」の設定値が 1 の場合,3 パターンの探索戦略が各スレッドで実行されます.スレッドが残っている場合は,初期値を変えて探索戦略を割り振ります.
      • 例えば,「試行回数」を 1 回,「スレッド数上限」を 5 に設定する場合,各スレッドにおける探索は以下のように設定されます.
        スレッド 1:[T1, S1]
        スレッド 2:[T1, S2]
        スレッド 3:[T1, S3]
        スレッド 4:[T2, S1]
        スレッド 5:[T2, S2]
        ここで [T, S] は,「初期値が T」であり,「探索戦略が S」であることを表します.例えばスレッド 1 では,初期値は T1,探索戦略は S1 となります.
    • 「試行回数」の設定値が 2 以上の場合,「試行回数」による複数試行を優先して割り振ります.スレッドが残っている場合は,まだ試していない探索設定を割り振ります.
      • 例えば,「試行回数」を 6 回,「スレッド数上限」を 5 に設定する場合,以下のとおりに探索設定が割り振られます.
        スレッド 1:[T1, S1] -> [T6, S1]
        スレッド 2:[T2, S1] -> [T1, S2]
        スレッド 3:[T3, S1] -> [T1, S3]
        スレッド 4:[T4, S1] -> [T7, S1]
        スレッド 5:[T5, S1] -> [T2, S2]
        ここで [T, S] -> [T', S'] は,[T, S] の実行完了後に [T', S'] が実行されることを表します.各実行は全スレッドの探索終了を待ち,全スレッドで同時に完了します.
関連
  • 5.6.3 解法 wls における試行回数
  • 5.2.3 計算時間上限
  • 5.2.2 反復回数上限

 

 

上に戻る