MPIテストマシンの利用案内

本選に向けて、並列プログラミングライブラリMPIおよびスーパーコンピュー タのOSであるUnixに慣れてもらうための環境を用意しました。期間は本選直前 7月30日までです。テストマシンは本選で使用するマシンと環境は同じです。 ただし、CPU数の最大が16となっています。

マシンへの接続

インターネットから sshによってgro.cc.titech.ac.jpに接続します。具体的には、 資料を参照ください。

なお、今回発行する仮アカウントに関しては、受け取り後、2日以内に別の パスワードに変更してください。変更がなかった場合は、アカウントを停止 いたします。

OS環境:Unix

  1. 漢字コード

  2. 日本語の使用は想定していませんが、後述するエディタの環境を安定させるた めに日本語コードをEUCとしてください。TeraTermProの場合では、Setupメニュー のTerminaleで設定します。
  3. Unixのファイルシステム

  4. ファイル階層については基本的にはWindowsと同じと考えてください。Windows でいうところのフォルダはディレクトリと呼びます。また、ファイル 階層を次のように表現します。
      (絶対パスによる指定)
       /             ルートディレクトリ
      /home/usr1/    ルートディレクトリの下のhomeディレクトリの下のusr1ディレクトリ
      (相対パスによる指定)  
      ./             カレントディレクトリ
      ../bin/        カレントディレクトリから一つ上に上がったディレクトリbin
      ../program/a.c 一つ上位のディレクトリprogramの下にあるファイルa.c
    
  5. ファイル属性

  6. ファイルは次のような属性を持っています。

    以下はその例です。

  7. ファイル名に対する正規表現

  8. ファイル名を指定する際、以下のような略記(正規表現)が可能です。
      *.c         拡張子に「.c」を持つファイル全て
      program.*   名前に「program」を持つファイル全て。
      ABC*        ABCで始まるファイルすべて
      *10*.c      拡張子「.c」を持つファイルで名前の一部に10を含むファイルすべて
    
    なお、Linuxではファイル名は大文字、小文字は区別されます。また、漢字、 空白を含んだファイル名は使用しないでください。

シェルコマンド

Linuxではシェルインタープリタを通してOSに対する指示を与えるように なっています。ログイン直後はシェルインタープリタが動いています。 ここではシェルインタープリタが受け付けるコマンドの一部を紹介 します。
   [コマンドの形式]
   コマンド名            例) ls
   コマンド名 引数       例) ls -l
   コマンド名 ファイル名 例) cp a.c b.c
  exit            ログアウト(telnetでの接続を終了)

  passwd          パスワードの変更
  ls              カレントディレクトリ上のファイルリスト一覧
  ls -l           ファイルの属性も含め表示
  ls prog/        カレントディレクトリ直下のディレクトリprog内のファイルリスト一覧  
  ls ../          カレントディレクトリから一段上のディレクトリ上のファイルリスト一覧
  ls /usr/etc     絶対パスで指定

  cd ../          カレントディレクトリを一段上に移動
  cd prog/        カレントディレクトリ直下のディレクトリprogに移動
  cd /usr/etc     絶対パスで指定

  mkdir xxx       ディレクトリxxx を作成
  mkdir prog/a    ディレクトリprogの下にディレクトリa を作成
  rmdir xxx       ディレクトリxxx を削除(ただし下に他のファイルがある場合は不可

  cp file1 file2  ファイルfile1をファイルfile2という名前でコピー
  cp -r xxx yyy   ディレクトリxxx全体をディレクトリyyyと名前でコピー

  mv file1 file2  ファイルfile1をファイルfile2に変更
  mv xxx yyy      ディレクトリxxx をディレクトリyyy に変更

  rm file1        ファイルfile1を削除
  rm F*           Fで始まるファイルすべてを削除
  rm -r yyy       ディレクトリyyy以下のすべてのファイルを自分自身も含め削除

  less            テキストファイルの表示。スペースで前進。q で終了。

  !!              直前のコマンドを実行
  !c              cで始まる直前のコマンドを実行

  mule -nw       エディタ mule (emacs-like)をウィンドウ無しで開く(後述)。

  man man         オンラインマニュアルman を参照。すべてのコマンドについて調べることが可能。
  
  cc f.c -lmpi    MPIプログラム f.c をコンパイル。デフォルト実行ファイルは a.out
  mpirun -np 4 ./a.out  MPI用に生成された実行ファイル a.out を CPU数4 で実行。

ファイルの転送

ttssh の中の機能を使い、ファイル転送を行うこともできますが、一番簡単な方法は、 Unix環境で
   cat > ファイル名
とタイプし、何らかの方法で、転送したいソースプログラムを画面に貼り付け、Ctrl D(EOF)を 叩きます。これで、ファイルにプログラムが保存されます。

あるいは、エディタ mule を開き、そこにテキストを貼り付ける方法でもOKです。

もし、手元に scp (ssh copy)があれば、それを使うこともできます。

エディタ

プログラムの生産性にエディタの使いやすさが大きく影響します。 スーパーコンピュータ上には mule と呼ばれるエディタがあり、これが 唯一です。ですので、本選までに十分使い方に慣れてください。

エディタコマンドを紹介する前にキー入力に関する表記を確認しておきます。

   C-x    Cntrolキーを「押したまま」fのキーを叩く
   M-x    Escキーを叩いた「後」、xのキーを叩く
エディタコマンド一覧
   C-x C-c  エディタの終了。編集中のファイルがある時は確認を求められる
            のでY(es)、N(o)を答える。
   
   C-x C-f  ファイルをバッファに読み込む。ファイル名を入力。新規、既存
            どちらの場合も。
            (*-- ファイル展開機能 ファイル名を途中までタイプし
                 た状態で、スペースキーを叩くと該当する名前が表示される。--*)
   C-x C-s  バッファの中身をファイルに保存。

   C-x k    バッファの削除
   C-x 2    バッファを上下方向2つに分割
   C-x 1    バッファの分割を取り消す
   C-x o    分割されたバッファの間を移動

   C-f      カーソルを1文字分右へ移動
   C-b      カーソルを1文字分左へ移動
   C-a      カーソルを文頭へ移動
   C-e      カーソルを文末へ移動
   C-p      カーソルを前の行へ移動
   C-n      カーソルを次の行へ移動
   M-<      カーソルをバッファの先頭へ移動
   M->      カーソルをバッファの最後へ移動

   C-d      カーソルがある位置の文字を1文字削除
   C-k      カーソルがある位置から右全部を削除
   C-w      マーク位置からカーソル位置までを削除
            (*-- マーク C-space --*)

   C-y      C-kもしくはC-w で削除したものを貼りつける
   
   C-g      コマンドタイプ中、トラブった時、現状復帰を行う(必須)	

   M-x shell エディタ内にシェル環境を用意。終了する時は、シェル内でexitをタイプ。	

MPIプログラミング

MPIに関する簡単なチュートリアルを用意しました。 ここに掲載されているプログラムは、すべて、接続先マシンの/tmp/mpitutorialに あります。