-

拡張ガイド¶

+

6. 拡張ガイド¶

+

(註: 以下ã®å†…容㯠moller ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã‚ˆã£ã¦å¤‰ã‚ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚)

+
+

6.1. mollerã«ã‚ˆã‚‹ãƒãƒ«ã‚¯å®Ÿè¡ŒÂ¶

+

ãƒãƒ«ã‚¯å®Ÿè¡Œã¨ã¯ã€å¤§åž‹ã®ãƒãƒƒãƒã‚­ãƒ¥ãƒ¼ã«æŠ•å…¥ã—ãŸä¸€ã¤ã®ãƒãƒƒãƒã‚¸ãƒ§ãƒ–ã®ä¸­ã§ã€è¤‡æ•°ã®å°ã•ã„タスクを並行ã—ã¦å®Ÿè¡Œã™ã‚‹ã¨ã„ã†ã‚‚ã®ã§ã™ã€‚動作ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã¨ã—ã¦ã¯ã€æ¬¡ã®ã‚ˆã†ã«N個ã®ã‚¿ã‚¹ã‚¯ã‚’ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§å®Ÿè¡Œã—åŒæ™‚ã«å‡¦ç†ã•ã›ã€waitæ–‡ã«ã‚ˆã‚Šã™ã¹ã¦ã®ã‚¿ã‚¹ã‚¯ãŒçµ‚了ã™ã‚‹ã¾ã§å¾…ã¡ã¾ã™ã€‚

+
task param_1 &
+task param_2 &
+     ...
+task param_N &
+wait
+
+
+

ã“ã®ã¨ãã€ãƒãƒƒãƒã‚¸ãƒ§ãƒ–ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸãƒŽãƒ¼ãƒ‰ãƒ»ã‚³ã‚¢ã‚’é©å®œåˆ†é…ã—ã€param_1〜param_N ã®ã‚¿ã‚¹ã‚¯ãŒãã‚Œãžã‚Œåˆ¥ã®ãƒŽãƒ¼ãƒ‰ãƒ»ã‚³ã‚¢ã§å®Ÿè¡Œã•ã‚Œã‚‹ã‚ˆã†ã«é…ç½®ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ã¾ãŸã€å¤šæ•°ã®ã‚¿ã‚¹ã‚¯ãŒã‚る時ã«ã€å‰²å½“ã¦ãƒªã‚½ãƒ¼ã‚¹ã«å¿œã˜ã¦æœ€å¤§N個ã®ã‚¿ã‚¹ã‚¯ãŒå®Ÿè¡Œã•ã‚Œã‚‹ã‚ˆã†å®Ÿè¡Œã‚’調整ã™ã‚‹ã“ã¨ã‚‚å¿…è¦ã§ã™ã€‚

+

moller ã§ç”Ÿæˆã—ãŸã‚¸ãƒ§ãƒ–スクリプトを以下ã§ã¯ moller scriptã¨å‘¼ã¶ã“ã¨ã«ã—ã¾ã™ã€‚ +moller script ã§ã¯ã€ã‚¿ã‚¹ã‚¯ã®ä¸¦è¡Œå®Ÿè¡Œã¨åˆ¶å¾¡ã«ã¯ GNU parallel [1]を利用ã—ã¾ã™ã€‚GNU parallel 㯠param_1〜param_N ã®ãƒªã‚¹ãƒˆã‚’å—å–ã‚Šã€ã“れらを引数ã¨ã—ã¦ã‚³ãƒžãƒ³ãƒ‰ã‚’並行ã—ã¦å®Ÿè¡Œã™ã‚‹ãƒ„ールã§ã™ã€‚ +以下㯠GNU parllel を使ã£ãŸå®Ÿè¡Œã‚¤ãƒ¡ãƒ¼ã‚¸ã§ã€list.dat ã®å„行㫠param_1〜param_N を列挙ã—ã¦ãŠãã¾ã™ã€‚

+
cat list.dat | parallel -j N task
+
+
+

åŒæ™‚実行数ã«ã¤ã„ã¦ã¯ã€ãƒãƒƒãƒã‚¸ãƒ§ãƒ–ã«å‰²å½“ã¦ã‚‰ã‚ŒãŸãƒŽãƒ¼ãƒ‰æ•°ãƒ»ã‚³ã‚¢æ•°ã‚’実行時ã«ç’°å¢ƒå¤‰æ•°ç­‰ã‹ã‚‰å–å¾—ã—ã€å„タスクã®ä¸¦åˆ—度(ノード数・プロセス数・スレッド数)ã®æŒ‡å®š(nodeパラメータ)ã‚’å…ƒã«è¨ˆç®—ã—ã¾ã™ã€‚

+

ノード・コアã¸ã®ã‚¿ã‚¹ã‚¯ã®é…ç½®ã«ã¤ã„ã¦ã¯ã‚¸ãƒ§ãƒ–スケジューラã«ã‚ˆã£ã¦æ–¹æ³•ãŒç•°ãªã‚Šã¾ã™ã€‚SLURMç³»ã®ã‚¸ãƒ§ãƒ–スケジューラã§ã¯ã€ãƒªã‚½ãƒ¼ã‚¹ã®æŽ’他利用ã®ã‚ªãƒ—ションを使ã†ã“ã¨ã§ã€ãƒãƒƒãƒã‚¸ãƒ§ãƒ–内部ã§ç™ºè¡Œã•ã‚ŒãŸè¤‡æ•°ã® srun をジョブスケジューラãŒé©å®œé…ç½®ã—ã¦å®Ÿè¡Œã—ã¾ã™ã€‚具体的ãªæŒ‡å®šæ–¹æ³•ã¯ãƒ—ラットフォームã®è¨­å®šã«ä¾å­˜ã—ã¾ã™ã€‚

+

一方ã€PBSç³»ã®ã‚¸ãƒ§ãƒ–スケジューラã¯ãã®ã‚ˆã†ãªä»•çµ„ã¿ãŒãªãã€ãƒªã‚½ãƒ¼ã‚¹ã®é…分をmoller script内部ã§å‡¦ç†ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚moller scriptã§ã¯ã€ãƒãƒƒãƒã‚¸ãƒ§ãƒ–ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸè¨ˆç®—ノードã¨ã‚³ã‚¢ã‚’スロットã«åˆ†å‰²ã—ã€GNU parallel ã§ä¸¦è¡Œå‡¦ç†ã•ã‚Œã‚‹ã‚¿ã‚¹ã‚¯ã«åˆ†é…ã—ã¾ã™ã€‚スロットã¸ã®åˆ†å‰²ã¯ã€å®Ÿè¡Œæ™‚ã«å–å¾—ã•ã‚Œã‚‹å‰²å½“ã¦ãƒŽãƒ¼ãƒ‰ãƒ»ã‚³ã‚¢ã¨ã‚¿ã‚¹ã‚¯ã®ä¸¦åˆ—度指定ã‹ã‚‰è¨ˆç®—ã—ã€ãƒ†ãƒ¼ãƒ–ルã®å½¢ã§ä¿æŒã—ã¾ã™ã€‚タスク内部ã§ã¯ã€mpirun (mpiexec) ã®å¼•æ•°ã‚„環境変数を通ã˜ã¦è¨ˆç®—ノードã®æŒ‡å®šã¨å‰²å½“コアã®ãƒ”ン留ã‚ã‚’è¡Œã„プログラムを実行ã—ã¾ã™ã€‚ã“ã®å‡¦ç†ã¯ä½¿ç”¨ã™ã‚‹MPI実装ã«ä¾å­˜ã—ã¾ã™ã€‚

+

å‚考文献

+

[1] O. Tange, GNU Parallel - The command-Line Power Tool, ;login: The USENIX Magazine, February 2011:42-47.

+
-

他システムã§ä½¿ã†ã«ã¯Â¶

-

(TBA)

+

6.2. mollerã®å‹•ä½œã«ã¤ã„ã¦Â¶

+
+

mollerã§ç”Ÿæˆã•ã‚Œã‚‹ã‚¹ã‚¯ãƒªãƒ—トã®æ§‹æˆÂ¶

+

mollerã¯ã€å…¥åŠ›ã•ã‚ŒãŸYAMLファイルã®å†…容をもã¨ã«ã€ãƒãƒ«ã‚¯å®Ÿè¡Œã®ãŸã‚ã®ã‚¸ãƒ§ãƒ–スクリプトを生æˆã—ã¾ã™ã€‚生æˆã•ã‚Œã‚‹ã‚¸ãƒ§ãƒ–スクリプトã¯å…ˆé ­ã‹ã‚‰é †ã«æ¬¡ã®ã‚ˆã†ãªæ§‹æˆã«ãªã£ã¦ã„ã¾ã™ã€‚

+
    +
  1. ヘッダ

    +

    ジョブスケジューラã¸ã®æŒ‡ç¤ºãŒè¨˜è¿°ã•ã‚Œã¾ã™ã€‚platform セクションã«æŒ‡å®šã—ãŸå†…容ãŒã€ã‚¸ãƒ§ãƒ–スケジューラã®ç¨®é¡žã«å¿œã˜ãŸå½¢å¼ã«æ•´å½¢ã•ã‚Œã¦å‡ºåŠ›ã•ã‚Œã¾ã™ã€‚ã“ã®å‡¦ç†ã¯ãƒ—ラットフォームä¾å­˜ã§ã™ã€‚

    +
  2. +
  3. プロローグ

    +

    prologue セクションã«æŒ‡å®šã—ãŸå†…容ã§ã™ã€‚code ブロックã®ä¸­èº«ãŒãã®ã¾ã¾è»¢è¨˜ã•ã‚Œã¾ã™ã€‚

    +
  4. +
  5. 関数ã®å®šç¾©

    +

    ジョブスクリプト内部ã§ä½¿ã†é–¢æ•°ãŠã‚ˆã³å¤‰æ•°ã®å®šç¾©ãŒå‡ºåŠ›ã•ã‚Œã¾ã™ã€‚関数ã®æ¦‚è¦ã«ã¤ã„ã¦ã¯æ¬¡ç¯€ã§èª¬æ˜Žã—ã¾ã™ã€‚ã“ã®ç®‡æ‰€ã¯ãƒ—ラットフォームä¾å­˜ã§ã™ã€‚

    +
  6. +
  7. コマンドライン引数ã®å‡¦ç†

    +

    SLURMç³»ã®ã‚¸ãƒ§ãƒ–スケジューラã§ã¯ã€ãƒªã‚¹ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã®æŒ‡å®šã‚„タスクã®å†å®Ÿè¡Œãªã©ã®ã‚ªãƒ—ション指定を sbatch コマンドã®å¼•æ•°ã¨ã—ã¦ä¸Žãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚PBSç³»ã®ã‚¸ãƒ§ãƒ–スケジューラã§ã¯å¼•æ•°ã®æŒ‡å®šã¯ç„¡è¦–ã•ã‚Œã‚‹ãŸã‚ã€ã‚ªãƒ—ション指定ã¯ã‚¸ãƒ§ãƒ–スクリプトを編集ã—ã¦ãƒ‘ラメータをセットã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚

    +
  8. +
  9. タスクã®è¨˜è¿°

    +

    jobs セクションã«è¨˜è¿°ã•ã‚Œã‚‹ã‚¿ã‚¹ã‚¯ã®å†…容を出力ã—ã¾ã™ã€‚タスクãŒè¤‡æ•°ã‚ã‚‹å ´åˆã¯ã‚¿ã‚¹ã‚¯ã”ã¨ã«ä»¥ä¸‹ã®å‡¦ç†ã‚’実行ã—ã¾ã™ã€‚

    +
    +

    parallel = false ã®å ´åˆã¯ run ブロックã®ä¸­èº«ãŒãã®ã¾ã¾è»¢è¨˜ã•ã‚Œã¾ã™ã€‚

    +

    parallel = true (デフォルト) ã®å ´åˆã€task_タスクå ã¨ã„ã†é–¢æ•°ãŒç”Ÿæˆã•ã‚Œã€ä¸¦åˆ—実行ã®ãŸã‚ã®å‰å‡¦ç†ã¨ run ブロックã®å†…容ãŒå‡ºåŠ›ã•ã‚Œã¾ã™ã€‚並列計算ã®ãŸã‚ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰(srun 〠mpiexec ã¾ãŸã¯ mpirun)ã¯ãƒ—ラットフォームã«å¿œã˜ãŸã‚³ãƒžãƒ³ãƒ‰ã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚関数定義ã«ç¶šã„ã¦ä¸¦åˆ—実行ã®ã‚³ãƒžãƒ³ãƒ‰ãŒæ›¸ã出ã•ã‚Œã¾ã™ã€‚

    +
    +
  10. +
  11. エピローグ

    +

    epilogue セクションã«æŒ‡å®šã—ãŸå†…容ã§ã™ã€‚code ブロックã®ä¸­èº«ãŒãã®ã¾ã¾è»¢è¨˜ã•ã‚Œã¾ã™ã€‚

    +
  12. +
+
+
+

moller scriptã®é–¢æ•°ã®æ¦‚è¦Â¶

+

moller script ã®å†…部ã§ä½¿ç”¨ã™ã‚‹ä¸»ãªé–¢æ•°ã®æ¦‚è¦ã‚’以下ã«èª¬æ˜Žã—ã¾ã™ã€‚

+
    +
  • run_parallel

    +

    タスクã®å†…容を記述ã—ãŸé–¢æ•°(タスク関数)を並行実行ã™ã‚‹é–¢æ•°ã§ã™ã€‚並列度ã€ã‚¿ã‚¹ã‚¯é–¢æ•°ã€ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«åを引数ã«å–ã‚Šã¾ã™ã€‚内部ã§ã¯ _find_multiplicity 関数を呼んã§å¤šé‡åº¦ã‚’計算ã—ã€GNU parallel ã‚’èµ·å‹•ã—ã¦ã‚¿ã‚¹ã‚¯ã‚’並行実行ã—ã¾ã™ã€‚GNU parallel ã®å¤šæ®µå‡¦ç†ã«å¯¾å¿œã™ã‚‹ãŸã‚ã«ã€ã‚¿ã‚¹ã‚¯é–¢æ•°ã¯ _run_parallel_task 関数ã§ãƒ©ãƒƒãƒ—ã•ã‚Œã¾ã™ã€‚

    +

    プラットフォームä¾å­˜æ€§ã¯ _find_multiplicity ãŠã‚ˆã³ _setup_run_parallel 関数ã¨ã—ã¦ããり出ã—ã¦ã„ã¾ã™ã€‚

    +
  • +
  • _find_multiplicity

    +

    並列実行ã®å¤šé‡åº¦ã‚’ã€å‰²å½“ã¦ãƒªã‚½ãƒ¼ã‚¹(ノード数・コア数)ã¨ã‚¿ã‚¹ã‚¯ã®ä¸¦åˆ—度指定ã‹ã‚‰è¨ˆç®—ã—ã¾ã™ã€‚PBSç³»ã®ã‚¸ãƒ§ãƒ–スケジューラã§ã¯ã€ã•ã‚‰ã«è¨ˆç®—ノード・コアをスロットã«åˆ†å‰²ã—ã€ãƒ†ãƒ¼ãƒ–ルã§ä¿æŒã—ã¾ã™ã€‚ +実行時ã«ç’°å¢ƒã‹ã‚‰å–å¾—ã™ã‚‹æƒ…å ±ã¯æ¬¡ã®é€šã‚Šã§ã™ã€‚

    +
      +
    • SLURMç³»

      +
      +
      +
      割当ã¦ãƒŽãƒ¼ãƒ‰æ•° _nnodes

      SLURM_NNODES

      +
      +
      割当ã¦ã‚³ã‚¢æ•° _ncores

      SLURM_CPUS_ON_NODE

      +
      +
      +
      +
    • +
    • PBSç³»

      +
      +
      +
      割当ã¦ãƒŽãƒ¼ãƒ‰ _nodes[]

      PBS_NODEFILE ã§æŒ‡å®šã•ã‚Œã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰è¨ˆç®—ノードã®ãƒªã‚¹ãƒˆã‚’å–å¾—

      +
      +
      ノード数 _nnodes

      _nodes[] ã®é …目数

      +
      +
      割当ã¦ã‚³ã‚¢æ•° _ncores
      +
      以下ã®é †ã«æ¤œç´¢ã•ã‚Œã¾ã™ã€‚
        +
      • NCPUS (PBS Professional)

      • +
      • OMP_NUM_THREADS

      • +
      • platform セクション㮠core 指定(スクリプト中㫠moller_core変数ã¨ã—ã¦æ›¸ãè¾¼ã¾ã‚Œã‚‹)

      • +
      • ヘッダ㮠ncpus ã¾ãŸã¯ ppn パラメータ

      • +
      +
      +
      +
      +
      +
      +
    • +
    +
  • +
  • _setup_run_parallel

    +

    GNU parallel ã«ã‚ˆã‚‹ä¸¦è¡Œå®Ÿè¡Œã‚’開始ã™ã‚‹å‰ã«ã„ãã¤ã‹å‡¦ç†ã‚’追加ã™ã‚‹ãŸã‚ã«å‘¼ã°ã‚Œã¾ã™ã€‚PBSç³»ã§ã¯ã‚¹ãƒ­ãƒƒãƒˆã«åˆ†å‰²ã•ã‚ŒãŸãƒŽãƒ¼ãƒ‰ãƒ»ã‚³ã‚¢ã®ãƒ†ãƒ¼ãƒ–ルをタスク関数ã‹ã‚‰å‚ç…§ã§ãるよㆠexport ã—ã¾ã™ã€‚SLURMç³»ã§ã¯å®Ÿè¡Œã™ã‚‹å†…容ã¯ã‚ã‚Šã¾ã›ã‚“。

    +
  • +
+

å„タスクã«å¯¾å¿œã™ã‚‹ã‚¿ã‚¹ã‚¯é–¢æ•°ã®æ§‹æˆã«ã¤ã„ã¦ã¯æ¬¡ã®é€šã‚Šã§ã™ã€‚

+
    +
  • タスク関数ã®å¼•æ•°ã¯ 1) 並列度指定(ノード数・プロセス数・スレッド数) 2) 実行ディレクトリ 3) GNU parallel ã®ã‚¹ãƒ­ãƒƒãƒˆID ã§ã™ã€‚

  • +
  • _setup_taskenv ã§å®Ÿè¡Œç’°å¢ƒã®è¨­å®šã‚’è¡Œã„ã¾ã™ã€‚ã“ã®é–¢æ•°ã¯ãƒ—ラットフォームä¾å­˜ã§ã™ã€‚PBSç³»ã§ã¯ã‚¹ãƒ­ãƒƒãƒˆIDã«åŸºã¥ã„ã¦è¨ˆç®—ノード・コアをテーブルã‹ã‚‰å–å¾—ã—ã¾ã™ã€‚SLURMç³»ã§ã¯å®Ÿè¡Œã™ã‚‹å†…容ã¯ã‚ã‚Šã¾ã›ã‚“。

  • +
  • ç›´å‰ã«å®Ÿè¡Œã™ã‚‹ã‚¿ã‚¹ã‚¯ãŒæ­£å¸¸çµ‚了ã—ãŸã‹ã©ã†ã‹ã‚’ _is_ready 関数を呼んã§ãƒã‚§ãƒƒã‚¯ã—ã¾ã™ã€‚正常終了ã—ã¦ã„ã‚‹å ´åˆã¯ã‚¿ã‚¹ã‚¯ã®å‡¦ç†ã‚’継続ã—ã¾ã™ã€‚ãれ以外ã®å ´åˆã¯ -1 ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã§ã‚¿ã‚¹ã‚¯ã®å‡¦ç†ã‚’中断ã—ã¾ã™ã€‚

  • +
  • code ブロックã®å†…容を転記ã—ã¾ã™ã€‚ãã®éš›ã«ã€ä¸¦åˆ—計算ã®ãŸã‚ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰(srun 〠mpiexec ã¾ãŸã¯ mpirun)ã¯ãƒ—ラットフォームã«å¿œã˜ãŸã‚³ãƒžãƒ³ãƒ‰ã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚

  • +
+
+
+
+

6.3. mollerã‚’ä»–ã®ã‚·ã‚¹ãƒ†ãƒ ã§ä½¿ã†ã«ã¯Â¶

+

mollerã«ã¯ç¾åœ¨ã€ç‰©æ€§ç ”スーパーコンピュータシステム ohtaka ãŠã‚ˆã³ kugui å‘ã‘ã®è¨­å®šãŒç”¨æ„ã•ã‚Œã¦ã„ã¾ã™ã€‚mollerã‚’ä»–ã®ã‚·ã‚¹ãƒ†ãƒ ã§ä½¿ã†ãŸã‚ã®æ‹¡å¼µã‚¬ã‚¤ãƒ‰ã‚’以下ã§èª¬æ˜Žã—ã¾ã™ã€‚

+
+

クラス構æˆÂ¶

+

mollerã®æ§‹æˆã®ã†ã¡ãƒ—ラットフォームä¾å­˜ã®éƒ¨åˆ†ã¯ platform/ ディレクトリã«ã¾ã¨ã‚ã¦ã„ã¾ã™ã€‚ +クラス構æˆã¯æ¬¡ã®ã¨ãŠã‚Šã§ã™ã€‚

+
Platform (base.py)
+ |
+ +-- BaseSlurm (base_slurm.py) ------- Ohtaka (ohtaka.py)
+ |
+ +-- BasePBS (base_pbs.py) --+-------- Kugui (kugui.py)
+ |                           |
+ |                           `-------- Pbs (pbs.py)
+ |
+ `-- BaseDefault (base_default.py) --- DefaultPlatform (default.py)
+
+
+

プラットフォームã®é¸æŠžã«ã¤ã„ã¦ã¯ãƒ•ã‚¡ã‚¯ãƒˆãƒªãŒç”¨æ„ã•ã‚Œã¦ã„ã¾ã™ã€‚register_platform(登録å, クラスå) ã§ã‚¯ãƒ©ã‚¹ã‚’ファクトリã«ç™»éŒ²ã—〠platform/__init__.py ã«ã‚¯ãƒ©ã‚¹ã‚’ import ã—ã¦ãŠãã¨ã€å…¥åŠ›ãƒ‘ラメータファイル㮠platform.system パラメータã«æŒ‡å®šã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚

+
+
+

SLURM系ジョブスケジューラ¶

+

SLURMç³»ã®ã‚¸ãƒ§ãƒ–スケジューラを利用ã—ã¦ã„ã‚‹å ´åˆã€BaseSlurm クラスを元ã«ã‚·ã‚¹ãƒ†ãƒ å›ºæœ‰ã®è¨­å®šã‚’è¡Œã„ã¾ã™ã€‚ +並列計算を実行ã™ã‚‹ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã‚’ç½®ãæ›ãˆã‚‹æ–‡å­—列㯠parallel_command() メソッドã®æˆ»ã‚Šå€¤ã§ä¸Žãˆã¾ã™ã€‚リソースã®æŽ’他利用を行ã†ãŸã‚ã® srun ã®ãƒ‘ラメータをã“ã“ã«æŒ‡å®šã—ã¾ã™ã€‚ +具体例㯠ohtaka.py ã‚’å‚ç…§ã—ã¦ãã ã•ã„。

+
+
+

PBS系ジョブスケジューラ¶

+

PBSç³»ã®ã‚¸ãƒ§ãƒ–スケジューラ (PBS Professional, OpenPBS, Torque ãªã©)を利用ã—ã¦ã„ã‚‹å ´åˆã€BasePBS クラスを元ã«ã‚·ã‚¹ãƒ†ãƒ å›ºæœ‰ã®è¨­å®šã‚’è¡Œã„ã¾ã™ã€‚

+

PBSç³»ã§ã¯ãƒãƒƒãƒã‚¸ãƒ§ãƒ–ã®ãƒŽãƒ¼ãƒ‰æ•°ã®æŒ‡å®šã®ä»•æ–¹ã«2通りã‚ã‚Šã€PBS Professional 㯠select=N:ncpus=n ã¨ã„ã†æ›¸å¼ã§æŒ‡å®šã—ã¾ã™ãŒã€Torque ãªã©ã¯ node=N:ppn=n ã¨è¨˜è¿°ã—ã¾ã™ã€‚後者ã®æŒ‡å®šã‚’用ã„ã‚‹å ´åˆã¯ self.pbs_use_old_format = True をセットã—ã¾ã™ã€‚

+

計算ノードã®ã‚³ã‚¢æ•°ã¯ node パラメータã§æŒ‡å®šã§ãã¾ã™ãŒã€å¯¾è±¡ã‚·ã‚¹ãƒ†ãƒ ã‚’é™å®šã—ã¦ã‚³ã‚¢æ•°ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã‚’設定ã—ã¦ãŠãã“ã¨ã‚‚ã§ãã¾ã™ã€‚kugui.py ã§ã¯ãƒŽãƒ¼ãƒ‰ã‚ãŸã‚Š128コアを設定ã—ã¦ã„ã¾ã™ã€‚

+
+
+

ç´°ã‹ã„カスタマイズãŒå¿…è¦ãªå ´åˆÂ¶

+

基底クラスをå‚ç…§ã—ã¦å¿…è¦ãªãƒ¡ã‚½ãƒƒãƒ‰ã‚’å†å®šç¾©ã—ã¾ã™ã€‚メソッド構æˆã¯æ¬¡ã®ã‚ˆã†ã«ãªã£ã¦ã„ã¾ã™ã€‚

+
    +
  • setup

    +

    platform セクションã®ãƒ‘ラメータã®å–り出ã—ãªã©ã‚’è¡Œã„ã¾ã™ã€‚

    +
  • +
  • parallel_command

    +

    並列計算ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ (srun, mpiexec, mpirun) ã‚’ç½®ãæ›ãˆã‚‹æ–‡å­—列を返ã—ã¾ã™ã€‚

    +
  • +
  • generate_header

    +

    ジョブスケジューラオプションã®æŒ‡å®šã‚’記述ã—ãŸãƒ˜ãƒƒãƒ€ã‚’生æˆã—ã¾ã™ã€‚

    +
  • +
  • generate_function

    +

    moller script 内部ã§ä½¿ç”¨ã™ã‚‹é–¢æ•°ã®å®šç¾©ã‚’生æˆã—ã¾ã™ã€‚変数ãŠã‚ˆã³é–¢æ•°ã®å®Ÿä½“ã¯ãã‚Œãžã‚Œä»¥ä¸‹ã®ãƒ¡ã‚½ãƒƒãƒ‰ã§ä½œã‚‰ã‚Œã¾ã™ã€‚

    +
      +
    • generate_variable

    • +
    • generate_function_body

    • +
    +

    ãã‚Œãžã‚Œã®é–¢æ•°ã¯åŸ‹ã‚è¾¼ã¿æ–‡å­—列ã¨ã—ã¦ã‚¯ãƒ©ã‚¹å†…ã§å®šç¾©ã•ã‚Œã¦ã„ã¾ã™ã€‚

    +
  • +
+
+
+

æ–°ã—ã„タイプã®ã‚¸ãƒ§ãƒ–スケジューラã«å¯¾å¿œã•ã›ã‚‹ã«ã¯Â¶

+

moller scriptã®å‹•ä½œã®ã†ã¡ãƒ—ラットフォームä¾å­˜ãªç®‡æ‰€ã¯ã€ä¸¦è¡Œå®Ÿè¡Œã®å¤šé‡åº¦ã®è¨ˆç®—ã€ãƒªã‚½ãƒ¼ã‚¹é…ç½®ã«é–¢ã™ã‚‹éƒ¨åˆ†ã€ä¸¦åˆ—計算ã®ã‚³ãƒžãƒ³ãƒ‰ã§ã™ã€‚

+
    +
  • 割当ã¦ãƒŽãƒ¼ãƒ‰ãƒ»ãƒŽãƒ¼ãƒ‰æ•°ãƒ»ãƒŽãƒ¼ãƒ‰ã‚ãŸã‚Šã®ã‚³ã‚¢æ•°ã‚’実行時ã«ç’°å¢ƒå¤‰æ•°ç­‰ã‹ã‚‰å–å¾—ã™ã‚‹æ–¹æ³•

  • +
  • 並列計算を実行ã™ã‚‹ã‚³ãƒžãƒ³ãƒ‰ (mpiexecç­‰) ã¨ã€å®Ÿè¡Œãƒ›ã‚¹ãƒˆã‚„コア割当ã®æŒ‡å®šã®ã—ã‹ãŸ

  • +
+

ã“れらをもã¨ã«moller script内ã§ä½¿ã†é–¢æ•°ã‚’作æˆã—ã¾ã™ã€‚ +printenv コマンドã§ã‚¸ãƒ§ãƒ–スクリプト内ã§æœ‰åŠ¹ãªç’°å¢ƒå¤‰æ•°ã®ä¸€è¦§ã‚’å–å¾—ã§ãã¾ã™ã€‚

+
+
+

トラブルシューティング¶

+

moller script内㮠_debug 変数を 1 ã«ã‚»ãƒƒãƒˆã™ã‚‹ã¨ã€ãƒãƒƒãƒã‚¸ãƒ§ãƒ–実行時ã«ãƒ‡ãƒãƒƒã‚°å‡ºåŠ›ãŒæ›¸ã出ã•ã‚Œã¾ã™ã€‚ã‚‚ã—ジョブãŒã†ã¾ã実行ã•ã‚Œãªã„ã¨ãã¯ã€ãƒ‡ãƒãƒƒã‚°å‡ºåŠ›ã‚’有効ã«ã—ã¦ã€å†…部パラメータãŒæ­£ã—ãセットã•ã‚Œã¦ã„ã‚‹ã‹ã‚’確èªã—ã¦ã¿ã¦ãã ã•ã„。

+
@@ -56,14 +234,25 @@

Moller Users Guide

ナビゲーション

Contents:

-