オンライン講習会の手引き「GPUプログラミング入門」
東京大学情報基盤センター
2020年12月
質問は星野まで：hoshino(at)cc.u-tokyo.ac.jp

2

はじめに
• 東京大学情報基盤センター（以下，本センター）では2020年12月22日に第148回お試しアカウント付き並列プログラミング講習会「OpenACCとMPIによるマルチGPUプログラミング入門」を開催します。
– 本講習会では，Reedbushシステムを利用した実習を実施します。
– 本講習会は，Zoomを用いたオンライン講習会として実施予定です。

• 本資料は，オンライン講習会受講のための事前準備について記載します。
– 本講習会においては，Reedbushシステムへログインできるようになっていることを前提とします。

3

お願い等

• ハンズオンのためのPC，Zoom及びスパコンへ接続するためのネットワーク環境は各受講者でご準備ください。
• PCは Windows/Microsoft Update，Apple Security Updateなどで最新のセキュリティアップデートを行ってください。
• 必ずウィルス対策ソフトウェアをインストールし，ウィルス検索を実行して問題がないことを事前に確認してから受講してください。
– セキュリティ対策未実施の場合はオンライン講習会受講を認めません。

• OSは、Windows、Macどちらでも構いませんが、SSHを用いてセンターのスーパーコンピューターへ接続ができることが必要です（後述）。
• 演習の実施に当たり，受講生にセンターのスーパーコンピューターを1月間利用できる無料アカウント（お試しアカウント）を発行します。

4

1. 自分のパソコンへのSSH環境の準備
2. Reedbushスパコンへのログイン
3. 演習ファイルのダウンロード
4. 講習会で使うコミュニケーションツール(Zoom, Slack)の設定

Intro5

1. 自分のパソコンへのSSH環境の準備
1.1 SSHを使うためのターミナルの準備– スパコンへの接続にはSSH(Secure Shell)を使います– SSHを使える環境を準備します• Windows の方は以下などをインストール– WSL（Windows Subsystem for Linux, windows10以降）– Cygwin （次ページよりインストール方法の説明あり。60-90分かかるので、お早めに。）– PuTTY• Mac の方はターミナルにデフォルトで入っているはず1.2 SSHで使う公開鍵の作成– sshにはパスワード認証方式と公開鍵認証方式がありますが、公開鍵認証方式を使います
上記が済んでいる方は 2. Reedbushスパコンへのログインへ

Cygwin: Windows上のUNIXライクな環境
https://www.cygwin.com/• 利用者ガイド– https://cygwin.com/cygwin-ug-net.html• まずやるべきこと– インストーラ（setup-x86_64/32.exe）を予め入手– インターネットに接続し，インストーラをダブルクリック– 以下指示に従ってインストールを進めてください

以下しばらくはCygwinの話
Mac/Linuxの方はスキップしてください指示に従ってください
https://www.cygwin.com/

1

2

ダウンロード元のサイトを選択してください。
「jp」ドメインの方がよさそうです3

4

まずはデフォルト機能のインストールからhttps://www.cygwin.com/• 基本的な機能はデフォルトのインストールでOKですが，本講習会で必要なものが抜けている可能性があります。
– 従ってマニュアルでインストールする必要があります– インストーラをダブルクリックすれば後で追加も可能です• 本講習会では下記が必須です（デフォルトのインストールでは抜けている可能性あり：特にopenssh）– openssh (for all users)– openssl (for all users)• インストールされているかどうかは確認が可能です“openssh”の確認（1/3）
Type “openssh”

“openssh”の確認（2/3）“Keep”と出てきたら“openssh”はインストール済み

“openssh”の確認（3/3）“Skip” が現れたら「未インストール」を意味する

以下「openssh」を例にマニュアルインストールの実施方法を紹介する

“openssh”のインストール（1/3）

プルダウンメニューをクリック

“openssh”のインストール（2/3）

適切なバージョンを選択（通常は最新版）

“openssh”のインストール（3/3）

「Skip」のかわりにバージョン番号が出てきたら“openssh” のインストール準備完了（インストールは完了していない）「次へ」をクリックしてインストールを実行“ssh-keygen (OpenSSH)” ：インストールの確認$ ssh-keygen --hssh-keygen: unknown option -- usage: ssh-keygen [-q] [-b bits] [-C comment] [-f output_keyfile] [-m format][-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa][-N new_passphrase] [-O option] [-w provider]ssh-keygen -p [-f keyfile] [-m format] [-N new_passphrase][-P old_passphrase]ssh-keygen -i [-f input_keyfile] [-m key_format]
ssh-keygen -e [-f input_keyfile] [-m key_format]
ssh-keygen -y [-f input_keyfile](…)
ssh-keygen -L [-f input_keyfile]ssh-keygen -A [-f prefix_path]ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]file ...
ssh-keygen -Q -f krl_file file ...
ssh-keygen -Y find-principals -s signature_file -f allowed_signers_file
ssh-keygen -Y check-novalidate -n namespace -s signature_file
ssh-keygen -Y sign -f key_file -n namespace file ...
ssh-keygen -Y verify -f allowed_signers_file -I signer_identity-n namespace -s signature_file [-r revocation_file]“ssh (OpenSSH)” ：インストールの確認$ sshusage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface][-b bind_address] [-c cipher_spec] [-D [bind_address:]port][-E log_file] [-e escape_char] [-F configfile] [-I pkcs11][-i identity_file] [-J [user@]host[:port]] [-L address][-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port][-Q query_option] [-R address] [-S ctl_path] [-W host:port][-w local_tun[:remote_tun]] destination [command]

17

1. 自分のパソコンへのSSH環境の準備
1.1 SSHを使うためのターミナルの準備
1.2 SSHで使う公開鍵の作成

2. Reedbushスパコンへのログイン
3. 演習ファイルのダウンロード
4. 講習会で使うコミュニケーションツール(Zoom, Slack)の設定

18

1.2 SSHで使う公開鍵の作成• SSH公開鍵認証（SSH Public Key Authentication,SSH=Secure Shell）に基づく– パスワード認証よりも安全，と言われている• 手順– Windows：Cygwinなどを立ち上げる，Mac・Unix：Terminal起動– 公開鍵が作成済みかどうかを確認• 過去に作ったものがあれば、それを使って構わない– ssh-keygen コマンドを使い、PC上で鍵（秘密鍵，公開鍵）を生成する• 秘密鍵，公開鍵のペアができる。公開鍵をスパコンなどに置き、自分のPCの秘密鍵と照合する。秘密鍵は移動してはならない。他人に見せてもいけない。
• パスフレーズ（Passphrase）：鍵認証のためのパスワードを設定する

19

PC上の鍵（秘密鍵，公開鍵）を確認$ cd .ssh$ ls

id_rsaid_rsa.pub$ cat id_rsa.pub⇒秘密鍵（Private Key）
⇒公開鍵（Public Key）

公開鍵未作成の場合には
id_rsa, id_rsa.pub が出てこないssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDa6InmOYYaCrWjQDukjiNEfdW8veUwJyZtEI3oDu0A28
eey6p0wbtI7JB09xnI17O7HG4yYvOM81+/nlAHy5tAfJly0dsPzjTgdTBLdgi3cSf5pWEY6U96
yaEr0Ei8Wge1HkXrhcwUjGDVTzvT0Refe6zLdRziL/KNmmesSQfR5lsZ/ihsjMgFxGaKsHHq/I
ErCtHIIIf9V/Ds2yj6vkAaWH6asBn+ZsRiRFvwHPhkYAnp/j3LY6b8Qfqg0p4WZRenh/HgySWTYIGi8x67VzMaUlm9qlK0QFMCaK2rivX1fmbwyWJ/vrWDqiek6YXoxLDu+GPeQ4CPvxJcZnqF9g
f3 nakajima@KNs-NEW-VAIO

20

PC上で鍵（秘密鍵，公開鍵）を生成$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): Return
Enter passphrase (empty for no passphrase): Your Favorite Passphrase Return
Enter same passphrase again: Same Passphrase
ReturnYour identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vt88O+PTcscHkOyabvxGjeRsMWLAWds+ENsDcReNwKo nakajima@KNs-NEW-VAIO
The key's randomart image is:+---[RSA 2048]----+|. o=oo.o+ ||+ O... .|
操作手順
|
.+o+.
|
|
+oB.
|
• ssh-keygen –t rsa <Return>|
So *o*|• <Return>
|.E
B.o |
|
.. = . o |• お好きなPassphrase <Return>|.=oB o +|• 同じPassphrase <Return>|.+o+*O ..|+----[SHA256]-----+

21

1. 自分のパソコンへのSSH環境の準備
2. Reedbushスパコンへのログイン
3. ログイン後テスト
4. 講習会で使うコミュニケーションツール
(Zoom, Slack)の設定

22

2. Reedbushスパコンへのログイン• 手順– ①スパコンポータルサイトにログインする• センターから供給された利用者ＩＤ（t00XYZ）と「初期パスワード」を使用• ポータルサイトにログイン後，パスワード（Password）変更を求められる，字数，使用文字等に色々規則があるので注意すること– ②スパコンポータルサイトに「公開鍵」を登録する– ③ＰＣからsshによってスパコンにログインする①スパコンポータルサイトにログイン（1/3）
情報基盤センターから送付されたファイル

t00XYZ

01234567

情報基盤センターから送付された利用者
ID（t00XYZ）

情報基盤センターから送付された初期パスワード（8桁）

23

24

①スパコンポータルサイトにログイン（2/3）
https://reedbush-www.cc.u-tokyo.ac.jp/

情報基盤センターから送付された利用者
ID（t00XYZ）
情報基盤センターから送付された初期パスワード

25①初期パスワードの変更（3/3）

情報基盤センターから送付された初期パスワード
変更後のパスワードを入力（2回）
パスワード規約• 8文字以上，現在と3文字以上異なる• 2世代前までと異なる• 英字（小文字，大文字），数字，特殊文字各1字以上• Linux辞書に登録されている語は不可• 全角文字不可26②公開鍵登録（id_rsa.pub）（1/2）

1. 「公開鍵アップロード」を選択
2. 「id_rsa.pub」を貼り付ける
3. 「作成」をクリック

27②公開鍵登録（id_rsa.pub）（2/2）$ cd .ssh公開鍵のコピー手順$ ls• ターミナル（cygwinなど）を開く
id_rsa• cd .ssh <Return>
id_rsa.pub• cat id_rsa.pub <Return>$ cat id_rsa.pub • “ssh-rsa”にカーソルを合わせ• 最後の行まで選択して「Copy」によって記憶
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDa6InmOYYaCrWjQDukjiNEfdW8veUwJyZtEI3oDu0A28
eey6p0wbtI7JB09xnI17O7HG4yYvOM81+/nlAHy5tAfJly0dsPzjTgdTBLdgi3cSf5pWEY6U96
yaEr0Ei8Wge1HkXrhcwUjGDVTzvT0Refe6zLdRziL/KNmmesSQfR5lsZ/ihsjMgFxGaKsHHq/I
ErCtHIIIf9V/Ds2yj6vkAaWH6asBn+ZsRiRFvwHPhkYAnp/j3LY6b8Qfqg0p4WZRenh/HgySWTYIGi8x67VzMaUlm9qlK0QFMCaK2rivX1fmbwyWJ/vrWDqiek6YXoxLDu+GPeQ4CPvxJcZnqF9g
f3 nakajima@KNs-NEW-VAIO

28③PCからログイン（1/2）$ ssh t00XYZ@ofp.jcahpc.jp
Enter passphrase for key '/home/user/.ssh/id_rsa:

Your Passphrase

Return1. ssh t00XYZ@reedbush-u.cc.u-tokyo.ac.jp <Return>2. 鍵生成時に打ち込んだPassphrase <Return>③PCからログイン（2/2）

29

hoshino@ZBOX-NCV6E3AUM2:~$ ssh reedbush
Last login: Wed Apr 22 18:48:56 2020 from p2653182-ipngn6302funabasi.chiba.ocn.ne.jp*****************************************************************************
Reedbushsystem will be SHUT DOWN on Fri May 29, 2020, at 09:00
Reedbushsystem will be STARTEDon Fri May 29, 2020, at 17:00
Reedbush-U
system will be TERMINATED on Tue Jun 30, 2020, at 09:00
For more information about this service, see
https://www.cc.u-tokyo.ac.jp/supercomputer/schedule.php
https://www.cc.u-tokyo.ac.jp/guide/hpc/rbh/*****************************************************************************[RB:~]$

ログインに成功したら，今後のメインテ
ナンスのスケジュールなどが表示される

30

SSH公開鍵認証の手順（1/4）①PC上での秘密鍵・公開鍵作成$> ssh-keygen –t rsa

OBCX

id_rsa
秘密鍵/Private Key+ Passphrase

id_rsa.pub
公開鍵/Public KeyOFP31+ Password

id_rsa
秘密鍵/Private Key+ Passphrase

id_rsa.pub
公開鍵/Public KeytABCCC+ Password

Portal SiteOBCXtXYZZZOBCX

Portal Site
OFP

SSH公開鍵認証の手順（2/4）②スパコンポータルサイトへのログイン

OFP

32

SSH公開鍵認証の手順（3/4）③公開鍵（id_rsa.pub）の登録
公開鍵/Public Key

id_rsa.pub
id_rsa
秘密鍵/Private Key+ Passphrase

公開鍵/Public Key

Portal Site
OBCX

id_rsa.pub

OBCX

Portal Site
OFP

同じ公開鍵を複数のスパコンに登録可能

OFP

33

SSH公開鍵認証の手順（3/4）③公開鍵（id_rsa.pub）の登録

id_rsa
秘密鍵/Private Key+ Passphrase

Portal Site
OFP

Portal Site
OBCX

同じ公開鍵を複数のスパコンに登録可能
id_rsa.pub
公開鍵/Public Key

OBCX
id_rsa.pub
公開鍵/Public Key

OFP

34

SSH公開鍵認証の手順（4/4）④PCからスパコンへのログイン
秘密鍵（id_rsa）＋Passphrase$> ssh tXYZZZ@obcx.cc.u-tokyo.ac.jp

id_rsa.pub
公開鍵/Public Key

id_rsa
秘密鍵/Private Key+ Passphrase$> ssh tABCCC@ofp.jcahpc.jp

OBCX
id_rsa.pub
公開鍵/Public Key

id_rsa
秘密鍵/Private Key+ Passphrase

OFP

SSH Public Key Authentication
SSH公開鍵認証• id_rsa

35

SSH= Secure Shell– Private Key（秘密鍵） ：PC上
– 文字通り「秘密」にしておくこと• 他の人に送ってはいけない• 基本的には作成した場所からコピーしたり移動することもしないこと• id_rsa.pub– Public Key（公開鍵）：スパコン上– コピー可能，他の人にe-mailで送ることも可能• もし複数のPCからスパコンにログインする場合は，各PCごとに「公開鍵・秘密鍵」のペアをssh-keygenによって作成– 各スパコンに複数の公開鍵を登録することは可能– スパコン上の公開鍵のうちの一つがPC上の「秘密鍵＋Passphrase」とマッチすると確認されるとログインできる

36

SSH公開鍵認証の手順（4/4）④PCからスパコンへのログイン
秘密鍵（id_rsa）＋Passphrase
id_rsaid_rsa.pub

秘密鍵/Private Key

公開鍵/Public Key+ Passphrase

OBCX
id_rsa
秘密鍵/Private Key

id_rsa.pub
公開鍵/Public Key+ Passphrase

OFP

37

id_rsaid_rsa

秘密鍵/Private Key

秘密鍵/Private Key+ Passphrase+ Passphrase

id_rsa.pub

id_rsa.pub公開鍵/Public Key

公開鍵/Public Key

Portal Site
OFP$> ssh-keygen –t rsa

Portal Site
OBCX

複数のPCからスパコンへログインする場合には各PCで「公開鍵・秘密鍵」のペア作成
id_rsa.pub
公開鍵/Public Key

OBCX
id_rsa.pub
公開鍵/Public Key

OFP

38

スパコンには複数の公開鍵を登録できる

スパコンには複数の公開鍵を登録できる$ cd .ssh$ ls authorized_keys

authorized_keys

39.ssh/authorized_keysには登録された公開鍵が格納されている。このファイルの後ろに新たな公開鍵（new_public.key）を付け加えることができる。

$ cat authorized_keys
ssh-rsa
HGCAB3NzaC1yc2EAAAABIwAAAQEA1r0Hr8M1JIJBO2n9S0GQm0xzGCwh3PpcJo7Z8oDr6HCAXhbK
zHA0ibRMJFCwDJCRGNJlYiHEYHWzouuXGNa9teso7aXYkq2PxbO76C60ZCPoLqf/jQRqnUSnjHJ4UgmDdlQWaAks+q/2ExOwjBB6GZmaHGijTximOFGiM1DI78OHkHC8pFzjvP2kT9yRvykvOVvlG10V
Yi+5CawYfuROiRBjfUS47RSOlCzjNP20pYO57DUCfOv+/8B1+l1wilbjKQHjuNp5XuclFfFdGaxf
JchD/sB5sRxtYfz80xzwGmN8pVecpUjd//xAqdYYHmLAKUE2oH8MnBIRybpWGVie6w64
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDa6InmOYYaCrWjQDukjiNEfdW8veUwJyZtEI3oDu0A28eey6p0wbtI7JB09xnI17O7HG4yYvOM81+/nlAHy5tAfJly0dsPzjTgdTBLdgi3cSf5pWEY6U96yaEr
0Ei8Wge1HkXrhcwUjGDVTzvT0Refe6zLdRziL/KNmmesSQfR5lsZ/ihsjMgFxGaKsHHq/IErCtHI
IIf9V/Ds2yj6vkAaWH6asBn+ZsRiRFvwHPhkYAnp/j3LY6b8Qfqg0p4WZRenh/HgySWTYIGi8x67
VzMaUlm9qlK0QFMCaK2rivX1fmbwyWJ/vrWDqiek6YXoxLDu+GPeQ4CPvxJcZnqF9gf3$ cp authorized_keys tmp$ cat tmp new_public.key > authorized_keys

40

id_rsaid_rsa

秘密鍵/Private Key

秘密鍵/Private Key+ Passphrase+ Passphrase

id_rsa.pub

id_rsa.pub

公開鍵/Public Key

公開鍵/Public Key

Portal Site
OFP$> ssh-keygen –t rsa

Portal Site
OBCX

各スパコンに複数の鍵を登録する
id_rsa.pub
公開鍵/Public Key

id_rsa.pub
公開鍵/Public Key

id_rsa.pub
公開鍵/Public Key

id_rsa.pub
公開鍵/Public Key41

1. 自分のパソコンへのSSH環境の準備
2. Reedbushスパコンへのログイン
3. 演習ファイルのダウンロード
4. 講習会で使うコミュニケーションツール(Zoom, Slack)の設定

42

PCからログイン$ ssh t00XYZ@reedbush.cc.u-tokyo.ac.jp
Enter passphrase for key '/home/user/.ssh/id_rsa:

Your Passphrase

Return1. ssh t00XYZ@reedbush.cc.u-tokyo.ac.jp <Return>2. 鍵生成時に打ち込んだPassphrase <Return>43

ログインしたら$ pwd/home/gt00/t00XYZ
$ cdw
$ pwd

(= cd /lustre/gt00/t00XYZ ワークディレクトリへのショートカットコマンド）/lustre/gt00/t00XYZ
$ cd
$ pwd

/home/t00XYZ

1. ログインしたら「/home/gt00/8t00XYZ」に入る
2. /homeは容量が少ないので「/lustre/gt00/t00XYZ」に移動すること• 「cd」でホームに戻れます44
44

サンプルファイルのコピーとテスト実行$ cdw

Work Directoryに移動する$ cp /lustre/gt00/share/openacc_mpi_samples.tar.gz .
共有ディレクトリにあるサンプルプログラムをコピーする$ tar zxvf openacc_mpi_samples.tar.gz
サンプルプログラムを展開するれる可能性があります）（サンプルプログラムは講習会当日までに更新さ$ cd openacc_mpi_samples/openacc_hello/01_hello_acc

フォルダに移動する$ module load pgi/19.10
PGIコンパイラを使えるように環境構築する$ makeテストプログラムをコンパイルし$ qsub run.sh
ジョブを投げる（しばらくするとrun.sh.o**** run.sh.e****というファイルができる。.o**** に計算結果が書き込まれる）45

Reedbushからファイルをコピー＃Reedbush にログインしていない自分の端末のターミナルで以下を実行$ scp t00XYZ@reedbush.cc.u-tokyo.ac.jp:/lustre/gt00/t00XYZ/ファイル名 .//lustre/gt00/t00XYZ下にあるファイルを，PC上のCurrent Directory下にコピーする。ファイルでなくフォルダをコピーする場合は、scp –r とする。

Reedbushへファイルをコピー＃Reedbush にログインしていない自分の端末のターミナルで以下を実行$ scp ./ファイル名 t00XYZ@reedbush.cc.u-tokyo.ac.jp:/lustre/gt00/t00XYZ/

PC上のCurrent Directory下にあるファイルを /lustre/gt00/t00XYZ 下にコピーする。ファイルでなくフォルダをコピーする場合は、scp –r とする。

45

46

ポータルサイトでのマニュアル等閲覧（1/2）

47

ポータルサイトでのマニュアル等閲覧（2/2）

48

1. 自分のパソコンへのSSH環境の準備
2. Reedbushスパコンへのログイン
3. 演習ファイルのダウンロード
4. 講習会で使うコミュニケーションツール
(Zoom, Slack)の設定

Zoomの準備• ダウンロード：https://zoom.us/download#client_4meeting• クライアントを事前にインストールしてください。
– 今回、各自のZoomアカウントを作る必要はありません。

• インストール済みの方は、必ず最新バージョンに更新してください。
• 使い方：
https://utelecon.github.io/zoom/how_to_use

Slackの登録• 質疑応答には、Slackを使います。
• 講習会開始2時間前までに準備してください。
– 会議室に入室するためのリンクは事前にお送りしています。
– 専用アプリもありますが、今回の講習会のみであれば、Webブラウザで十分です。

• 本講習会に関連する質問は、Slack中の#第148回-マルチgpuプログラミング入門
チャンネルでお願いします。