comparison paper/appendix1.tex @ 28:46a09e9020a3

modify chapter1
author sugi
date Thu, 05 Feb 2015 04:23:37 +0900
parents a27c97e0bb15
children 9d3fadcc379d
comparison
equal deleted inserted replaced
27:a27c97e0bb15 28:46a09e9020a3
19 \end{center} 19 \end{center}
20 \caption{TORQUE の構成} 20 \caption{TORQUE の構成}
21 \label{fig:torque} 21 \label{fig:torque}
22 \end{figure} 22 \end{figure}
23 23
24 ユーザーはマスターを用いてTORQUEを利用する。ジョブを記述したシェルスクリプトを用意し、スケジューラーに投入する。投入するタイミングで、利用したいマシン台数、CPUコア数を指定することができる。(ソースコード \ref {src:torque}) 24 ユーザーはマスターを用いてTORQUEを利用する。ジョブを記述したシェルスクリプトを用意し、スケジューラーに投入する。投入するタイミングで、利用したいマシン台数、CPUコア数を指定することができる。
25
26 TORQUE は、ジョブに必要なマシンが揃い次第、受け取ったジョブを実行する。 25 TORQUE は、ジョブに必要なマシンが揃い次第、受け取ったジョブを実行する。
27 26
28 \subsubsection {TORQUE のジョブの書き方} 27 \subsubsection {TORQUE のジョブの書き方}
29 TORQUEのジョブは、シェルスクリプトにより記述する。 28 TORQUEのジョブは、シェルスクリプトにより記述する。
30 TORQUEのジョブは実行される際に、環境変数が与えられる。 29 TORQUEのジョブは実行される際に、環境変数が与えられる。
30 これらの環境変数は、ジョブを投入する際にオプションでも変更することができる。
31 31
32 \begin{itemize} 32 \begin{itemize}
33 \item {\ttfamily PBS\_NODEFILE}\\ 33 \item {\ttfamily PBS\_NODEFILE}\\
34 すべての参加マシンが列挙されているファイルへのパス 34 すべての参加マシンが列挙されているファイルへのパス
35 \item {\ttfamily PBS\_NUM\_NODES}\\ 35 \item {\ttfamily PBS\_NUM\_NODES}\\
37 \item{\ttfamily PBS\_NUM\_PPN}\\ 37 \item{\ttfamily PBS\_NUM\_PPN}\\
38 参加マシン一台あたりのコア数 38 参加マシン一台あたりのコア数
39 \item{\ttfamily PBS\_JOBNAME}\\ 39 \item{\ttfamily PBS\_JOBNAME}\\
40 ジョブの名前 40 ジョブの名前
41 \end{itemize} 41 \end{itemize}
42 これらの環境変数は、ジョブを投入する際にオプションでも変更することができる。
43 42
43 ソースコード \ref{src:torque1}はスレーブに、{\ttfamily PBS\_NODEFILE} に記述されているマシン名の順番にログインさせ、hostnameコマンドを実行させる例題である。
44 \begin{lstlisting}[label=src:torque1, caption=指定されたマシンにログインして hostname コマンドを走らせる例] 44 \begin{lstlisting}[label=src:torque1, caption=指定されたマシンにログインして hostname コマンドを走らせる例]
45 function run() { 45 function run() {
46 while read node 46 while read node
47 do 47 do
48 ssh $node hostname < /dev/null 48 ssh $node hostname < /dev/null
50 wait 50 wait
51 } 51 }
52 run < $PBS_NODEFILE 52 run < $PBS_NODEFILE
53 \end{lstlisting} 53 \end{lstlisting}
54 54
55 ソースコード \ref{src:torque1}はスレーブに、{\ttfamily PBS\_NODEFILE} に記述されているマシン名の順番にログインさせ、hostnameコマンドを実行させる例題である。 55 {\ttfamily PBS\_NODEFILE} の中に含まれるマシン名はコア数分重複しているので扱う際に注意が必要である。
56 56
57 ジョブを投入するには、 qsub コマンドを用いる。(ソースコード \ref{src:torque2})
57 \begin{table}[html] 58 \begin{table}[html]
58 \lstinputlisting[label=src:torque, caption=10台(1台あたり4コア)で走らせる例]{source/Torque.sh} 59 \lstinputlisting[label=src:torque2, caption=10台(1台あたり4コア)で走らせる例]{source/Torque.sh}
59 \end{table} 60 \end{table}
60 61
62 実際にAliceのリングトポロジーによる実験を行うタスクはソースコード \ref{src:torque5}である
63
64 \begin{lstlisting}[label=src:torque5, caption=Alice でリングトポロジーの実験に使ったジョブ]
65 #!/bin/bash
66 #
67 # Alice Ring Topology
68 #
69 #PBS -q dque
70 #PBS -N AliceRingTopology
71 #PBS -l walltime=00:05:00
72
73 alicepath=/home/mass/share/student/k138563
74 node_num=`expr $PBS_NUM_NODES - 1` # TopologyManager の分を1引く
75 port=10000 # 利用するポート番号
76 count=100 # リングを回る回数
77 size=4096 # リングを回すメッセージのサイズ
78
79 function run() {
80 read serv
81 ssh $serv "ruby $alicepath/ring.rb $node_num > /tmp/ring.dot" < /dev/null
82 ssh $serv killall java < /dev/null
83 # トポロジーマネージャーの起動
84 ssh $serv java -cp $alicepath/Alice.jar alice.topology.manager.TopologyManager -p $port -conf /tmp/ring.dot < /dev/null &
85 cnt=0
86 while read node # 用意されたスレーブがなくなるまで繰り返す
87 do
88 ssh $node killall java < /dev/null
89 # トポロジーマネージャーに対して参加表明を行う
90 ssh $node java -cp $alicepath/Alice.jar alice.test.topology.ring.RingTopology -host $serv -port $port -p $port -count $count -size $size -nodeNum $node_num < /dev/null &
91 cnt=`expr $cnt + 1`
92 done
93 wait
94 }
95
96 uniq $PBS_NODEFILE /tmp/nodes #重複しているノード名の削除
97 run < /tmp/nodes
98 \end{lstlisting}
61 99
62 \newpage 100 \newpage
63 \def\thesection{付録\Alph{section}} 101 \def\thesection{付録\Alph{section}}
64 \section[ Topology Manager]{Topology Manager} 102 \section[ Topology Manager]{Topology Manager}
65 Aliceは複数のノードで構成され、相互に接続される。通信するノードはURLにより直接指定するのではなくTopology Managerで管理する。 103 Aliceは複数のノードで構成され、相互に接続される。通信するノードはURLにより直接指定するのではなくTopology Managerで管理する。