12月1日 自動献立作成と並列データ処理・分散アルゴリズムの技術
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[専門ゼミ 榊原]]
*目次 [#z96c75e6]
#CONTENTS
*目的 [#c6533a8e]
1台のコンピューターでは難しい大規模な処理を実現できる。1...
--
*セットアップの手順 [#c6533a8e]
**VirtualBoxのインストールはこちら[#va3949fc]
https://www.oracle.com/jp/virtualization/technologies/vm/...
----
**[[CentOSを一からインストールしたい方はこちら>CentOSイン...
----
**CentOS作業 [#g5c34cc2]
CentOSがインストールされているものとする.(実験で使った...
画面左上の「アプリケーション」から「端末」を開く.(お気...
#ref(zu1.png,,40%)
まず,sudoが正常に機能するか確認するために
sudo echo test
と入力.tpuのパスワードが要求されるので,パスワード「tpu...
&color(red){以下のエラーが出たとき};
''sudoercファイル内にありません。この事象は記録・報告され...
su
usermod -G wheel tpu
su tpu
と入力すると,sudoが機能するようになる.
***vimのコマンド [#s33f450a]
これから使用するvimというエディターについて.「通常モード...
#ref(zu2.png,,40%)
&color(red){「挿入モード(文字入力モード)」から「通常モ...
すぐ確認できるように写真に撮るなど残しておくことをオスス...
***SELinuxの無効化設定 [#ef7b1bdf]
無効化する理由は、プログラムが動かなくなったり,インスト...
sudo vim /etc/selinux/config
と入力すると,
#ref(zu3.png,,70%)
図のようになるので,''vimのコマンド''を使い「挿入モード(...
''SELINUX=enforcing''をコメントアウト(先頭に''#''をつけ...
SELINUX=disabled
と入力し,「通常モード」にし(''Escキー''),&color(red){...
&color(red){E45のエラーが出た(読み取り専用になってて編集...
:w !sudo tee %
を入力して、「続けるにはENTERを押すかコマンドを入力してく...
そのあと
:q!
を押して編集を終了する。(参考:https://genchan.net/it/serv...
&color(red){E45のエラーが出た(読み取り専用になってて編集...
手動でもSELinuxを停止する.
sudo setenforce 0
と入力.次にSELinuxの動作状態を確認する.
getenforce
と入力.「Permissive」か「Disabled」と表示されていればOK...
***ファイアウォールの無効化 [#gbcd2172]
sudo systemctl disable firewalld
sudo systemctl stop firewalld
と入力.
ファイアウォールが停止したか確認する.
systemctl status firewalld
と入力.「Active:inactive(dead)」と表示されていればOK.
***JavaJDK,Mpich,C言語のインストール [#qe649f90]
sudo yum -y install java-1.8.0-openjdk-devel mpich mpich...
と入力.
インストールが終わり,''完了しました!''と表示されていれ...
.bashrcのファイルを変更し,bash環境の設定を変更する.
vim .bashrc
と入力.ファイルの最後に
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0.-openjdk
を追加し&color(red){ファイルを保存};して終了する.←vimの...
.bashrcのファイルの変更を反映するために
source .bashrc
と入力.
***IPアドレスの設定 [#w7865e65]
nmcli con mod enp0s3 ipv4.method manual ipv4.addresses 1...
と入力(''XXXの部分は学籍番号の下3桁にする'').
1915077の場合は192.168.11.77となる
>&color(red){注意};~
このとき、192.168.0.1は使わない.
nmcli con mod enp0s3 ipv4.gateway 192.168.11.1
nmcli con down enp0s3
nmcli con up enp0s3
と入力.設定したIPアドレスで動作しているか確認する.
nmcli device show enp0s3
と入力.確認したら「''Ctrl+C''」で抜ける.
#ref(zu4.png,,40%)
マスターPCに通信できるか確認する.
ping 192.168.11.200(master0の場合)
ping 192.168.11.201(master1の場合)
ping 192.168.11.202(master2の場合)
ping 192.168.11.203(master3の場合)
と入力.
以下のように表示されていれば通信できている(master1の場合)...
PING 192.168.11.201 (192.168.11.201) 56 (84) bytes of dat...
64 bytes from 192.168.11.201: icmp_seq=1 ttl=64 time=0.11...
64 bytes from 192.168.11.201: icmp_seq=2 ttl=64 time=0.15...
表示されていなければ,~
・LANケーブルが接続されているか確認してみる~
・再起動してみる
***ホスト名の設定 [#b2cd5b53]
''XXX''はIPアドレス設定した番号を入力する.1915077の場合...
sudo hosstname slaveXXX
echo "slaveXXX" | sudo tee /etc/hostname > /dev/null
hostname
と順に入力.「slaveXXX」と表示されていればOK.
次に,IP番号とホスト名を対応させるために,/etc/hostsファ...
sudo vim /etc/hosts
と入力.
WWはmasterのIPアドレス、Wはmaster番号、XXXは自分の学籍番...
既にある行はそのままで、その後に以下の行を追加する.
192.168.11.20WW masterWW
192.168.11.XXX slaveXXX
192.168.11.YYY slaveYYY
…
並列処理で使うPC分入力する.
&color(red){E45のエラーが出た(読み取り専用になってて編集...
:w !sudo tee %
を入力して、「続けるにはENTERを押すかコマンドを入力してく...
そのあと
:q!
を押して編集を終了する。(参考:https://genchan.net/it/serv...
&color(red){E45のエラーが出た(読み取り専用になってて編集...
下図は例である。
#ref(zu5.png,,40%)
***sshの設定 [#m1751ac3]
以下のコマンドをmaster側で入力する。
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub -o "StrictHostKeyChecki...
sshpass -p "tpu" ssh-copy-id -i ~/.ssh/id_rsa.pub -o "St...
sshpass -p "tpu" ssh-copy-id -i ~/.ssh/id_rsa.pub -o "St...
>&color(red){↑slaveの台数分実行};
動かないとき
ssh-add ~/.ssh/id_rsa
マスターPCとスレーブPCでsshできることを確認する.(WWWは通...
ssh masterWWW(slaveXXX)
と入力.sshを抜けるときは
exit
と入力.
***masterPCの初期設定(Mpichをダウンロードした後一度だけ...
共有ディレクトリの作成
mkdir /home/tpu/share
と入力.
共有ディレクトリの設定
sudo vim /etc/export
と入力.以下を最後の行に追加する.
/home/tpu/share 192.168.0.0/24(rw,no_root_squash)
ドメイン名の設定
sudo vim /etc/idmapd.conf
と入力.
Domainのコメントアウトを外す.
#ref(n5.PNG,,40%)
***マウント [#gf695941]
マウントとは,slavePCでmasterPCの特定のフォルダを操作・利...
slaveからmasterPCに通信できるか確認する
ping master0
slavePCがmasterPCをマウントできるように''masterPC''で
sudo systemctl start rpcbind
sudo systemctl start nfs-server
sudo systemctl start nfs-lock
sudo start nfs-idmap
sudo systemctl enable nfs-server
sudo systemctl reload nfs-server
と入力.
自分のPCに戻り、exitでshhを解除しマスター側の共有ディレク...
$ mkdir /home/tpu/share
slave側で、以下のコマンドを打ってマウントする。( X : 使っ...
slave側で操作する必要があるため、[tpu@slaveXX]になってい...
$ sudo mount --types nfs masterX:/home/tpu/share /home/t...
&color(red){T-x. access deniedの場合}; &br;
「mount.nfs: access denied by server while mounting maste...
以前の実験のmount情報が残っているため、master側のshareフ...
新しいshareフォルダを作成する(mkdir /home/tpu/share)
&color(red){T-x.(終わり)}; &br;
以下のコマンドで確認し、
$ df –k
一番下に次のように表示されればいい
192.168.11.20X:/home/tpu/share 430897664 847872 4300...
slave側で以下のコマンドで共有ディレクトリを作成するために...
$ sudo vim /etc/fstab
最後の行に以下を追加する。「share」の後は改行せずスペース...
192.168.11.20X:/home/tpu/share /home/tpu/share
nfs rsize=8192,wsize=8192,hard,intr 0 0
確認方法は、以下のコマンドを入力し
$ sudo umount /home/tpu/share
$ sudo mount –a
$ df –k
一番下につぎのようにでればいい。
192.168.11.20X:/home/tpu/share 430897664 847872 4300...
&color(red){T-y. マウント時のエラー対処}; &br;
(1)「mount -a」の応答が帰ってこないslaveがある場合、59のn...
→59の一部ができなくなっているときは間違えてmasterのfstab...
(2) 後のshareフォルダで別masterのマウントが判明した場合&br;
・63「umount」でマウント解除&br;
・それでも「master is busy」と出る場合は、slaveの仮想マシ...
→デスクトップのshareがなくなり解除される&br;
&color(red){T-y.(終わり)}; &br;
***並列分散の設定 [#j30a980c]
マスターPCにSSHで接続する。
$ ssh masterX
hostファイルを書き換える(マスターPCにSSH接続したまま)。&br;
このhostファイルの中に記述されているPCを用いて並列処理が...
並列したいpcを変更したいときslaveの番号を変える。または増...
→Xは自分が接続するmaster番号,YYは学籍番号下2桁
$ sudo vim /home/tpu/share/host
masterX
slaveYY
*sapmleプログラムの実行方法[#va3949fc]
masterのpcの共有ディレクトリのshareの中にmontecarlo.cがあ...
名前をmontecarloXX.c(XXは学籍番号下2桁)に変える。(これはm...
slave側のpcで、sshでmasterに接続した状態で以下のコマンド...
$ cd /home/tpu/share
次に、以下のコマンドでファイルをコンパイルする(XXは学籍番...
$ mpicc montecarloXX.c -o montecarloXX -lm
以下のコマンドで実行するとプログラムが実行する。実行する...
$ mpirun --hostfile host -np 1 ./montecarloXX
-npの後の数字で、使うPCの数が決まる。つまり、-np 2だと2台...
***サンプルプログラムの結果の見方[#va3949fc]
piがモンテカルロ法によって導き出された円周率の値で、Error...
#ref(zu6.png,,60%)
*課題[#va3949fc]
モンテカルロ法によって円周率を求めるプログラムを、1台、2...
#ref(zu7.png,,50%)
*参考にしたもの[#va3949fc]
よくわからなかったらこちらを参考にしてください。↓ &br;
#ref(mpichによる分散処理.pdf)
終了行:
[[専門ゼミ 榊原]]
*目次 [#z96c75e6]
#CONTENTS
*目的 [#c6533a8e]
1台のコンピューターでは難しい大規模な処理を実現できる。1...
--
*セットアップの手順 [#c6533a8e]
**VirtualBoxのインストールはこちら[#va3949fc]
https://www.oracle.com/jp/virtualization/technologies/vm/...
----
**[[CentOSを一からインストールしたい方はこちら>CentOSイン...
----
**CentOS作業 [#g5c34cc2]
CentOSがインストールされているものとする.(実験で使った...
画面左上の「アプリケーション」から「端末」を開く.(お気...
#ref(zu1.png,,40%)
まず,sudoが正常に機能するか確認するために
sudo echo test
と入力.tpuのパスワードが要求されるので,パスワード「tpu...
&color(red){以下のエラーが出たとき};
''sudoercファイル内にありません。この事象は記録・報告され...
su
usermod -G wheel tpu
su tpu
と入力すると,sudoが機能するようになる.
***vimのコマンド [#s33f450a]
これから使用するvimというエディターについて.「通常モード...
#ref(zu2.png,,40%)
&color(red){「挿入モード(文字入力モード)」から「通常モ...
すぐ確認できるように写真に撮るなど残しておくことをオスス...
***SELinuxの無効化設定 [#ef7b1bdf]
無効化する理由は、プログラムが動かなくなったり,インスト...
sudo vim /etc/selinux/config
と入力すると,
#ref(zu3.png,,70%)
図のようになるので,''vimのコマンド''を使い「挿入モード(...
''SELINUX=enforcing''をコメントアウト(先頭に''#''をつけ...
SELINUX=disabled
と入力し,「通常モード」にし(''Escキー''),&color(red){...
&color(red){E45のエラーが出た(読み取り専用になってて編集...
:w !sudo tee %
を入力して、「続けるにはENTERを押すかコマンドを入力してく...
そのあと
:q!
を押して編集を終了する。(参考:https://genchan.net/it/serv...
&color(red){E45のエラーが出た(読み取り専用になってて編集...
手動でもSELinuxを停止する.
sudo setenforce 0
と入力.次にSELinuxの動作状態を確認する.
getenforce
と入力.「Permissive」か「Disabled」と表示されていればOK...
***ファイアウォールの無効化 [#gbcd2172]
sudo systemctl disable firewalld
sudo systemctl stop firewalld
と入力.
ファイアウォールが停止したか確認する.
systemctl status firewalld
と入力.「Active:inactive(dead)」と表示されていればOK.
***JavaJDK,Mpich,C言語のインストール [#qe649f90]
sudo yum -y install java-1.8.0-openjdk-devel mpich mpich...
と入力.
インストールが終わり,''完了しました!''と表示されていれ...
.bashrcのファイルを変更し,bash環境の設定を変更する.
vim .bashrc
と入力.ファイルの最後に
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0.-openjdk
を追加し&color(red){ファイルを保存};して終了する.←vimの...
.bashrcのファイルの変更を反映するために
source .bashrc
と入力.
***IPアドレスの設定 [#w7865e65]
nmcli con mod enp0s3 ipv4.method manual ipv4.addresses 1...
と入力(''XXXの部分は学籍番号の下3桁にする'').
1915077の場合は192.168.11.77となる
>&color(red){注意};~
このとき、192.168.0.1は使わない.
nmcli con mod enp0s3 ipv4.gateway 192.168.11.1
nmcli con down enp0s3
nmcli con up enp0s3
と入力.設定したIPアドレスで動作しているか確認する.
nmcli device show enp0s3
と入力.確認したら「''Ctrl+C''」で抜ける.
#ref(zu4.png,,40%)
マスターPCに通信できるか確認する.
ping 192.168.11.200(master0の場合)
ping 192.168.11.201(master1の場合)
ping 192.168.11.202(master2の場合)
ping 192.168.11.203(master3の場合)
と入力.
以下のように表示されていれば通信できている(master1の場合)...
PING 192.168.11.201 (192.168.11.201) 56 (84) bytes of dat...
64 bytes from 192.168.11.201: icmp_seq=1 ttl=64 time=0.11...
64 bytes from 192.168.11.201: icmp_seq=2 ttl=64 time=0.15...
表示されていなければ,~
・LANケーブルが接続されているか確認してみる~
・再起動してみる
***ホスト名の設定 [#b2cd5b53]
''XXX''はIPアドレス設定した番号を入力する.1915077の場合...
sudo hosstname slaveXXX
echo "slaveXXX" | sudo tee /etc/hostname > /dev/null
hostname
と順に入力.「slaveXXX」と表示されていればOK.
次に,IP番号とホスト名を対応させるために,/etc/hostsファ...
sudo vim /etc/hosts
と入力.
WWはmasterのIPアドレス、Wはmaster番号、XXXは自分の学籍番...
既にある行はそのままで、その後に以下の行を追加する.
192.168.11.20WW masterWW
192.168.11.XXX slaveXXX
192.168.11.YYY slaveYYY
…
並列処理で使うPC分入力する.
&color(red){E45のエラーが出た(読み取り専用になってて編集...
:w !sudo tee %
を入力して、「続けるにはENTERを押すかコマンドを入力してく...
そのあと
:q!
を押して編集を終了する。(参考:https://genchan.net/it/serv...
&color(red){E45のエラーが出た(読み取り専用になってて編集...
下図は例である。
#ref(zu5.png,,40%)
***sshの設定 [#m1751ac3]
以下のコマンドをmaster側で入力する。
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub -o "StrictHostKeyChecki...
sshpass -p "tpu" ssh-copy-id -i ~/.ssh/id_rsa.pub -o "St...
sshpass -p "tpu" ssh-copy-id -i ~/.ssh/id_rsa.pub -o "St...
>&color(red){↑slaveの台数分実行};
動かないとき
ssh-add ~/.ssh/id_rsa
マスターPCとスレーブPCでsshできることを確認する.(WWWは通...
ssh masterWWW(slaveXXX)
と入力.sshを抜けるときは
exit
と入力.
***masterPCの初期設定(Mpichをダウンロードした後一度だけ...
共有ディレクトリの作成
mkdir /home/tpu/share
と入力.
共有ディレクトリの設定
sudo vim /etc/export
と入力.以下を最後の行に追加する.
/home/tpu/share 192.168.0.0/24(rw,no_root_squash)
ドメイン名の設定
sudo vim /etc/idmapd.conf
と入力.
Domainのコメントアウトを外す.
#ref(n5.PNG,,40%)
***マウント [#gf695941]
マウントとは,slavePCでmasterPCの特定のフォルダを操作・利...
slaveからmasterPCに通信できるか確認する
ping master0
slavePCがmasterPCをマウントできるように''masterPC''で
sudo systemctl start rpcbind
sudo systemctl start nfs-server
sudo systemctl start nfs-lock
sudo start nfs-idmap
sudo systemctl enable nfs-server
sudo systemctl reload nfs-server
と入力.
自分のPCに戻り、exitでshhを解除しマスター側の共有ディレク...
$ mkdir /home/tpu/share
slave側で、以下のコマンドを打ってマウントする。( X : 使っ...
slave側で操作する必要があるため、[tpu@slaveXX]になってい...
$ sudo mount --types nfs masterX:/home/tpu/share /home/t...
&color(red){T-x. access deniedの場合}; &br;
「mount.nfs: access denied by server while mounting maste...
以前の実験のmount情報が残っているため、master側のshareフ...
新しいshareフォルダを作成する(mkdir /home/tpu/share)
&color(red){T-x.(終わり)}; &br;
以下のコマンドで確認し、
$ df –k
一番下に次のように表示されればいい
192.168.11.20X:/home/tpu/share 430897664 847872 4300...
slave側で以下のコマンドで共有ディレクトリを作成するために...
$ sudo vim /etc/fstab
最後の行に以下を追加する。「share」の後は改行せずスペース...
192.168.11.20X:/home/tpu/share /home/tpu/share
nfs rsize=8192,wsize=8192,hard,intr 0 0
確認方法は、以下のコマンドを入力し
$ sudo umount /home/tpu/share
$ sudo mount –a
$ df –k
一番下につぎのようにでればいい。
192.168.11.20X:/home/tpu/share 430897664 847872 4300...
&color(red){T-y. マウント時のエラー対処}; &br;
(1)「mount -a」の応答が帰ってこないslaveがある場合、59のn...
→59の一部ができなくなっているときは間違えてmasterのfstab...
(2) 後のshareフォルダで別masterのマウントが判明した場合&br;
・63「umount」でマウント解除&br;
・それでも「master is busy」と出る場合は、slaveの仮想マシ...
→デスクトップのshareがなくなり解除される&br;
&color(red){T-y.(終わり)}; &br;
***並列分散の設定 [#j30a980c]
マスターPCにSSHで接続する。
$ ssh masterX
hostファイルを書き換える(マスターPCにSSH接続したまま)。&br;
このhostファイルの中に記述されているPCを用いて並列処理が...
並列したいpcを変更したいときslaveの番号を変える。または増...
→Xは自分が接続するmaster番号,YYは学籍番号下2桁
$ sudo vim /home/tpu/share/host
masterX
slaveYY
*sapmleプログラムの実行方法[#va3949fc]
masterのpcの共有ディレクトリのshareの中にmontecarlo.cがあ...
名前をmontecarloXX.c(XXは学籍番号下2桁)に変える。(これはm...
slave側のpcで、sshでmasterに接続した状態で以下のコマンド...
$ cd /home/tpu/share
次に、以下のコマンドでファイルをコンパイルする(XXは学籍番...
$ mpicc montecarloXX.c -o montecarloXX -lm
以下のコマンドで実行するとプログラムが実行する。実行する...
$ mpirun --hostfile host -np 1 ./montecarloXX
-npの後の数字で、使うPCの数が決まる。つまり、-np 2だと2台...
***サンプルプログラムの結果の見方[#va3949fc]
piがモンテカルロ法によって導き出された円周率の値で、Error...
#ref(zu6.png,,60%)
*課題[#va3949fc]
モンテカルロ法によって円周率を求めるプログラムを、1台、2...
#ref(zu7.png,,50%)
*参考にしたもの[#va3949fc]
よくわからなかったらこちらを参考にしてください。↓ &br;
#ref(mpichによる分散処理.pdf)
ページ名: