FAQ

講義「並列プログラミング(PVM)」に関するFAQを載せています。参考にしてください。
  • 環境設定
  • コンパイル
  • プログラミング
  • 実行時エラー
  • その他の質問
  • 環境設定の質問


    【質問】
    「.cshrc」を書き換えるとログインできなくなった。
    「ls」や「emacs」コマンドを実行できなくなった。
    【原因】
    .cshrc内のpathの設定が誤っている。具体的には「set path ... 」の行の$pathが抜けている場合が多い。正しくは、以下の通り。
    set path=( $path $PVM_ROOT/lib $PVM_ROOT/bin/$PVM_ARCH )
    pathの環境変数には既にシステムに必要な「ls」や「emacs」への絶対パスが設定されており、これに新たなパスを追加する場合はpath自身も引数として与える必要がある。
    「set path=( $PVM_ROOT/lib $PVM_ROOT/bin/$PVM_ARCH )」
    の様に記述するとPVMのパスしか設定がされなくなる(lsなどのコマンドのパスが削除される)
    【対処】
    pathが通ってないのでGNOMEセッションでログインできなくなる事もある。この場合、近くの端末を借りて自身のアカウントにスイッチする。もしくは[Ctrl]+[Alt]+[F1]でコンソール画面に切り替えてログインする。
    % su -l [ユーザ名]
    以下のようにしてフルパスでEmacsかviを指定して起動し、~/.cshrcを編集する。コンソールでEmacsを起動する場合は、-nwオプションは指定する。
    % /usr/bin/emacs .cshrc -nw
    元の端末で再ログインする。コンソールで編集した場合は、[Ctrl]+[Alt]+[F7]
    ページ先頭へ戻る

    【質問】
    PVMでスレーブホストをaddできない。
    【原因】
    (1)「~/.rhosts」にマシン名を追加していない。
    (2)マシンが既に接続リミットに達ししている。
    (3)マシンが起動していない。Linuxが立ち上がっていない。
    【対処】
    (1)の場合、「~/.rhosts」に正しくホスト名を記入する。[l]と[1](小文字のエルと数字の一)などの似ている文字の打ち間違い。
    (2)の場合、誰も使用していLinuxの端末を探す。端末はログイン画面が表示されていればOK。
    ページ先頭へ戻る

    【質問】
    PVMが起動できない。
    【原因】
    (1)「~/.cshrc」のPVM_ARCHのバッククォーテーションマーク「`」が間違っている。
    (2)前回立ち上げたpvmをhaltしてない。
    【対処】
    (1)「`」は[Shift]+[@]で入力する。[Shift]+[7]ではないので注意。
    (2)ゾンビプロセスを終了する。
    まず、「ps」コマンドでプロセスIDを確認する。
    % ps -a
    「kill」コマンドでpvmのプロセスを終了する。
    % kill [プロセスID]
    プロセスが終了できなければ再起動をかける。
    ページ先頭へ戻る

    【質問】
    .cshrcがない。
    【原因】

    【対処】
    隣の人からコピーをして作成する。
    ページ先頭へ戻る

    【質問】
    .cshrcのどこに4行を記述したらいいかわからない。
    【対処】
    レジュメの通り、set path=…"の行より後に書く。
    stty erase ^H kill ^U intr ^Cendif
    の行の間に追加してください。
    ページ先頭へ戻る

    【質問】
    「source」コマンドが実行できない。
    【原因】
    環境設定で、.cshrcに追加する4行の記述ミス。
    【対処】
    記述した4行に書き間違いがないか確認する。
    ページ先頭へ戻る

    コンパイルの質問


    【質問】
    math.hをインクルードするとコンパイルできない。
    【原因】
    Makefile.aimkのOPTIONSに「-lm」を追加していない。sin()関数やcos()関数を使う場合、-lmを指定してlibm.aをリンクしなければならない。
    【対処】
    Makefile.aimkのOPTIONSに「-lm」を追加する。
    ページ先頭へ戻る

    【質問】
    「aimk」コマンドが実行できない。
    【原因】
    (1)「~/.cshrc」の環境変数pathの設定が誤っている。
    (2)HP上の「Makefile.aimk」ファイルやプログラムをコピー&ペーストしている。
    (3)違うプログラムの「Makefile.aimk」を使用している。
    (4)PVMを格納するディレクトリ名を間違えている。
    【対処】
    (1)環境設定のFAQを参照。
    (2)HP上の「Makefile.aimk」ファイルとプログラムをダウンロードする。NetscapeNavigatorではリンクを右クリックし「リンクターゲットに名前をつけて保存」を選択する。
    (3)スレーブプログラムのすぐ下の「Makefile.aimk」をダウンロードする。
    (4)~/pvm3/bin/LINUXができているか確認する。
    ページ先頭へ戻る

    プログラミングの質問


    【質問】
    別のスレーブプログラムが起動される。
    【原因】
    関数pvm_spawn()の引数に"sum_master_s"等と記述しているため。サンプルプログラムを使ってそのまま改良しようとすると見落とすので注意。
    【対処】
    関数pvm_spawn()の引数に正しいスレーブ名を記述する。
    ページ先頭へ戻る

    【質問】
    正常にPVMプログラムを実行できない。
    【原因】
    ヘッダファイルなどで宣言した配列や変数を、send()関数を用いることなくスレーブにて呼び出そうとするため。実行時はマスタとスレーブは別々のプログラムとして実行されるので、同じ名前のヘッダファイルをインクルードしたからといって、その中の変数は同期していない。
    【対処】
    ヘッダファイル上で変数を宣言しないで(グローバル変数を使わないで)スレーブで使用したいときはその都度send()関数で送る。
    ページ先頭へ戻る

    【質問】
    char型の変数のsend()ができない。
    【原因】
    pvm_pkchar()関数は無い。
    【対処】
    1バイトのデータ送信用にpvm_pkbyte()関数が用意されているので、これを用いる。
    ページ先頭へ戻る

    【質問】
    二次元配列をsendできない。
    【原因】
    a[m][n]の配列をsendする場合、pvm_pkint(a[m][n], n, 1)等とするとsendできない。pvm_pkint()関数は第一引数で示されたアドレスから第二引数の数送信する関数であることを理解すること。
    【対処】
    (1)a[m]から始まる配列をn回sendする。
    (2)aを一次元配列に展開する。
    ページ先頭へ戻る

    【質問】
    crypt()関数が使用できない
    【原因】

    【対処】
    調査中。
    ページ先頭へ戻る

    実行時エラーの質問


    【質問】
    「テキストファイルがビジー状態です」と表示されて実行できない。
    【原因】
    実行中に、[Ctrl]+[c]で強制終了した場合など、実行ファイルが完全に終了できない場合がある。
    【対処】
    コンパイルし直す。
    % aimk clean; aimk
    ページ先頭へ戻る

    【質問】
    PVMプログラムが実行できない。
    【原因】
    (1)実行中に、[Ctrl]+[z]でプログラムを中断し、プロセスが残ってしまっているため。
    (2)実行するときに、マスター・プログラム名に.cまで入力している。
    【対処】
    (1)「ps」コマンドでプロセスIDを確認する。
    % ps -a
    「kill」コマンドでpvmのプロセスを終了する。
    % kill [プロセスID]
    プロセスが終了できなければ再起動をかける。
    (2)コンパイルして得られたバイナリファイルを指定するのであり、.cまで入力しない。
    ページ先頭へ戻る

    【質問】
    pvmを起動すると、以下の様なメッセージが表示されて実行できない。
    libpvm [pid1555] mksocs() connect: Connection refused
    libpvm [pid1555]        socket address tried: /tmp/filewL8c9c
    pvmd already running.
    libpvm [pid1555] mksocs() connect: Connection refused
    libpvm [pid1555]        socket address tried: /tmp/filewL8c9c
    libpvm [pid1555] mksocs() connect: Connection refused
    libpvm [pid1555]        socket address tried: /tmp/filewL8c9c
    libpvm [pid1555] mksocs() connect: Connection refused
    libpvm [pid1555]        socket address tried: /tmp/filewL8c9c
    libpvm [pid1555]: pvm_mytid(): Can't contact local daemon
    
    【原因】
    調査中。
    【対処】
    調査中。
    一度ログアウトして、ログインし直すのが最良と思われる。
    ページ先頭へ戻る

    その他の質問


    【質問】
    パスワードを忘れた。
    【原因】
    暗記力の問題??
    【対処】
    情報システム科窓口(アクロスウィング2F)に行き再発行してもらう。授業のための再発行では即時に発行可能。
    ページ先頭へ戻る

    【質問】
    telnetの使い方がわからない。
    【原因】

    【対処】
    SR8000へ接続するために % telnet IPアドレス と入力する。
    ページ先頭へ戻る

    【質問】
    パスワードの変更の仕方がわからない
    【原因】

    【対処】
    telnetでSR8000へ接続してから % passwd と入力する。
    ページ先頭へ戻る