拡張ガイド¶
+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実装ã«ä¾å˜ã—ã¾ã™ã€‚
+å‚考文献
+ +他システムã§ä½¿ã†ã«ã¯Â¶
-(TBA)
+6.2. mollerã®å‹•ä½œã«ã¤ã„ã¦Â¶
+mollerã§ç”Ÿæˆã•ã‚Œã‚‹ã‚¹ã‚¯ãƒªãƒ—トã®æ§‹æˆÂ¶
+mollerã¯ã€å…¥åŠ›ã•ã‚ŒãŸYAMLファイルã®å†…容をもã¨ã«ã€ãƒãƒ«ã‚¯å®Ÿè¡Œã®ãŸã‚ã®ã‚¸ãƒ§ãƒ–スクリプトを生æˆã—ã¾ã™ã€‚生æˆã•ã‚Œã‚‹ã‚¸ãƒ§ãƒ–スクリプトã¯å…ˆé ã‹ã‚‰é †ã«æ¬¡ã®ã‚ˆã†ãªæ§‹æˆã«ãªã£ã¦ã„ã¾ã™ã€‚
+-
+
ヘッダ
+ジョブスケジューラã¸ã®æŒ‡ç¤ºãŒè¨˜è¿°ã•ã‚Œã¾ã™ã€‚platform セクションã«æŒ‡å®šã—ãŸå†…容ãŒã€ã‚¸ãƒ§ãƒ–スケジューラã®ç¨®é¡žã«å¿œã˜ãŸå½¢å¼ã«æ•´å½¢ã•ã‚Œã¦å‡ºåŠ›ã•ã‚Œã¾ã™ã€‚ã“ã®å‡¦ç†ã¯ãƒ—ラットフォームä¾å˜ã§ã™ã€‚
+
+プãƒãƒãƒ¼ã‚°
+prologue セクションã«æŒ‡å®šã—ãŸå†…容ã§ã™ã€‚code ブãƒãƒƒã‚¯ã®ä¸èº«ãŒãã®ã¾ã¾è»¢è¨˜ã•ã‚Œã¾ã™ã€‚
+
+関数ã®å®šç¾©
+ジョブスクリプト内部ã§ä½¿ã†é–¢æ•°ãŠã‚ˆã³å¤‰æ•°ã®å®šç¾©ãŒå‡ºåŠ›ã•ã‚Œã¾ã™ã€‚関数ã®æ¦‚è¦ã«ã¤ã„ã¦ã¯æ¬¡ç¯€ã§èª¬æ˜Žã—ã¾ã™ã€‚ã“ã®ç®‡æ‰€ã¯ãƒ—ラットフォームä¾å˜ã§ã™ã€‚
+
+コマンドライン引数ã®å‡¦ç†
+SLURMç³»ã®ã‚¸ãƒ§ãƒ–スケジューラã§ã¯ã€ãƒªã‚¹ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã®æŒ‡å®šã‚„タスクã®å†å®Ÿè¡Œãªã©ã®ã‚ªãƒ—ション指定を sbatch コマンドã®å¼•æ•°ã¨ã—ã¦ä¸Žãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚PBSç³»ã®ã‚¸ãƒ§ãƒ–スケジューラã§ã¯å¼•æ•°ã®æŒ‡å®šã¯ç„¡è¦–ã•ã‚Œã‚‹ãŸã‚ã€ã‚ªãƒ—ション指定ã¯ã‚¸ãƒ§ãƒ–スクリプトを編集ã—ã¦ãƒ‘ラメータをセットã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
+
+タスクã®è¨˜è¿°
+jobs セクションã«è¨˜è¿°ã•ã‚Œã‚‹ã‚¿ã‚¹ã‚¯ã®å†…容を出力ã—ã¾ã™ã€‚タスクãŒè¤‡æ•°ã‚ã‚‹å ´åˆã¯ã‚¿ã‚¹ã‚¯ã”ã¨ã«ä»¥ä¸‹ã®å‡¦ç†ã‚’実行ã—ã¾ã™ã€‚
++
+parallel = false ã®å ´åˆã¯ run ブãƒãƒƒã‚¯ã®ä¸èº«ãŒãã®ã¾ã¾è»¢è¨˜ã•ã‚Œã¾ã™ã€‚
+parallel = true (デフォルト) ã®å ´åˆã€task_タスクå ã¨ã„ã†é–¢æ•°ãŒç”Ÿæˆã•ã‚Œã€ä¸¦åˆ—実行ã®ãŸã‚ã®å‰å‡¦ç†ã¨ run ブãƒãƒƒã‚¯ã®å†…容ãŒå‡ºåŠ›ã•ã‚Œã¾ã™ã€‚並列計算ã®ãŸã‚ã®ã‚ーワード(
+srun
ã€mpiexec
ã¾ãŸã¯mpirun
)ã¯ãƒ—ラットフォームã«å¿œã˜ãŸã‚³ãƒžãƒ³ãƒ‰ã«ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚関数定義ã«ç¶šã„ã¦ä¸¦åˆ—実行ã®ã‚³ãƒžãƒ³ãƒ‰ãŒæ›¸ã出ã•ã‚Œã¾ã™ã€‚
+エピãƒãƒ¼ã‚°
+epilogue セクションã«æŒ‡å®šã—ãŸå†…容ã§ã™ã€‚code ブãƒãƒƒã‚¯ã®ä¸èº«ãŒãã®ã¾ã¾è»¢è¨˜ã•ã‚Œã¾ã™ã€‚
+
+
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 ã«ã‚»ãƒƒãƒˆã™ã‚‹ã¨ã€ãƒãƒƒãƒã‚¸ãƒ§ãƒ–実行時ã«ãƒ‡ãƒãƒƒã‚°å‡ºåŠ›ãŒæ›¸ã出ã•ã‚Œã¾ã™ã€‚ã‚‚ã—ジョブãŒã†ã¾ã実行ã•ã‚Œãªã„ã¨ãã¯ã€ãƒ‡ãƒãƒƒã‚°å‡ºåŠ›ã‚’有効ã«ã—ã¦ã€å†…部パラメータãŒæ£ã—ãセットã•ã‚Œã¦ã„ã‚‹ã‹ã‚’確èªã—ã¦ã¿ã¦ãã ã•ã„。
Moller Users Guide
ナビゲーション
Contents:
--
-
- 網羅計算ツール (moller) +
- 3. ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«
- 4. コマンドリファレンス
- 5. ファイルフォーマット +
- 6. 拡張ガイド