第 223 回 PTT のお知らせ


日時: 1996年 10月17日 (木) 18:30 から
場所: 東京農工大学 工学部 電子情報工学科 7号棟 1階 1F 室
中央線 東小金井駅 南口から,西へ向かって,徒歩8分程度です.
農工大の東門に建物の掲示があります.
WWWを見られる方は,

に案内図があります.

話者: 冨澤眞樹(農工大・電子情報工学科・コンピュータサイエンスコース)
題目: 初心者の並列プログラミング行動の観測
概要:
  並列処理についてよく知らない学部生に並列プログラミングの課題を与えて
みる。彼らは,どんな風に並列プログラムを書いてゆくだろうか.このような
動機で,並列プログラミング実験をした.課題はサーチ,ソート,数値計算と
した.被験者は全員で9人,得られた並列プログラムは20本,一つのプログラ
ムの大きさは数十から150行程度,一人当たりのプログラミング時間はおよそ
10時間程度であった.実験で収集したデータは,課題に対する並列プログラム
とそのレポート,被験者との質疑応答の記録,自動的に記録したプログラムの
履歴である.これらの実験データから,次のことが分かった.ほとんどの被験
者は,比較的容易に並列言語を習得し,はじめから並列プログラムを書くこと
ができる.並列プログラムの構造としては,分割統治,機能分割,並列再帰の
三つが見られた.排他制御については,プログラミングの途中でその必要性を
理解してる.

食事: 今回もありません.東小金井駅近辺のモスバーガーなどをご利用ください.


第 223 回 PTTメモ


日時: 1996年 10月17日 (木) 18:30 から
場所: 東京農工大学 工学部 電子情報工学科 7号棟 1階 1F 室
題目: 初心者の並列プログラミング行動の観測
話者: 冨澤眞樹(農工大・電子情報工学科・コンピュータサイエンスコース)
出席者: 榊原毅, 岩崎英哉, 岩沢京子, 森永智之, 加藤泰志, 早川栄一, 佐藤隆士, 高野了成, 石坂淳(農工大), 和田英一, 下國治(富士通研), 清水大志, 今村俊幸(原研), 石畑清(明大), 立山義祐, 田中哲朗(東大), 河合泰彦(東芝), 小口和広(電通大), 伊知地宏(富士ゼロックス)
質疑応答:
  並列処理についてよく知らない学部生にプログラミング課題と並列言語の
仕様書を与える.彼らは,どんな風に並列プログラムを書いてゆくだろうか.
このような動機で,並列プログラミング実験を計画した.実験の目的は,並列
プログラミング思考を探る手がかりを得ることである.なお,本報告は文献
[1]の内容を詳細化したものである.

 実験方法は,被験者に並列言語C//の言語仕様書だけを与え,課題を行わせ
た.想定する並列計算機のアーキテクチャや並列度の上限値などの物理的な条
件は与えていない.実験期間は,一人につき5日間とした.1日目は予備調査に
当て,残りの4日間は一日一題のペースで課題を行う.実験上,特に注意した
ことは,被験者間の会話を禁止すること,質疑応答は口頭でなくすべて指定用
紙を通しておこなうことである.使用した言語は我々が開発したC//[2]である.
C//は,C言語に並列手続き呼出し,排他制御,OR型選択などの並列プリミティ
ブを付加した言語である.課題はサーチ,ソート,数値計算とした.実験期間
が長くとれないので,比較的容易に並列化ができる課題を選択した.

 被験者は全員で9人,得られた並列プログラムは20本,ひとつのプログラム
の大きさは数十から150行程度,一人当たりの平均プログラミング時間はのべ
20時間程度であった.実験で収集したデータは,課題に対する並列プログラム
とそのレポート,被験者との質疑応答の記録,RCSを利用して自動的に記録し
たプログラムの履歴である.

 これらの実験データから次のことが分かった.すべての被験者は,はじめか
らC//で並列プログラムを書くことができる.Cで逐次プログラムを書き,それ
をC//で並列化するという我々の予想ははずれた.サーチ課題は,一つの要素
だけ1であり,その他は零であるn×nの2次元配列を与え,1である要素を見つ
け出す課題である.この課題に対するプログラム構造は,行や列を単位とした
並列処理がほとんどであるが,同一のものはなかった.並列度は2からn^2まで
あった.我々の予想としては,みな同じような並列プログラムになると思って
いたが,実際はすべて違っていた.ソート課題は,与えられた数値を昇順にソー
トする課題である.この課題に対するプログラム構造では,領域を二分割して
各領域は逐次でソートするものがほとんどであるが,クイックソートなど既知
のソートアルゴリズムを並列化した並列再帰もあった.数値計算の課題は,
f(x)=0を解く課題である.この課題に対するプログラム構造は,ニュートン法
を基本としてx軸上で領域分割するものであった.ただし,その分割法は,再
帰的に細分化しながら分割,ループで一定区間に分割,y軸を境に2分割などが
見られた.すべての課題を通して得られた並列プログラムの構造は,C//の基
本的な枠組みであるfork-join型が半分以上であるが,データパラレル的な構
造や,並列再帰も見られた.また,排他制御については,プログラミングの途
中でその必要性を理解して使用している.並列度は,2から6程度がほとんどで
あるが,細粒度の並列プログラムでは1000程度のものもあった.

 今回の実験により,C//の習得は容易であり,並列プログラミングはさほど
困難でないこと分かった.得られた並列プログラムの構造は多様であるが,並
列度は比較的小さい.すなわち,今回の被験者と実験環境では,並列プログラ
ミングを自力で習得することはできるが,効率を意識して並列プログラムを書
くことは難しいと思われる.しかし,並列プログラム構造には,機能分割,分
割統治,並列再帰といった構造が見られ,代表的な並列プログラム構造は被験
者が発見することができると言える.このことは,並列プログラミング教育に
生かせると思う.実験環境の問題点としては,被験者が自分の並列プログラム
の速度向上を知ることができないという点に尽きると思う.このため,並列プ
ログラミングの目的が元来高速化であるのに対して並列化が目的となったしまっ
た.今後,可能ならば実際の並列計算機を使用して,並列プログラミングに対
して速度向上のフィードバックがえら得るような実権環境で,今回のような並
列プログラミング実験をしてみたい.

[1]豊福一正 ほか:“並列プログラミング実験”,第52回情報処理学会
全国大会,Vol.6,pp.199-200(平成8年前期)
[2]冨澤眞樹 ほか:“発注受領型分散制御機構をもつ密結合並列計算機用
言語C//の設計と実現”,信学論(D1),Vol.J75-D-I, No.11,
pp.1025-1036(1992-11).

質疑応答:

Q:並列化は並列マシンのアーキテクチャに依存するので,C//が想定したマシ
ンでは実行効率が悪くなるプログラムでも,ベクトル計算機などのアーキテク
チャに適した並列プログラムもあるのではないか.

A:その通りである.しかし,今回の実験では,被験者にはC//の言語仕様だけ
をあたえ,どのような並列プログラムを書くかを知りたかった.特定のアーキ
テクチャを示していないので,逆に実験結果からは,データパラレルやベクト
ル計算機に適した並列プログラムが得られたことは,そのような並列プログラ
ミング思考は初心者にも可能であるという結論が得られる.

Q:もともと並列プログラミングの目的は,処理の高速化である.しかし,今回
の並列プログラミング実験は,高速化ではなく,並列化が目的となっており,
元来の並列プログラミングの目的とはずれているのではないか?

A: 今回の実験環境では,被験者の並列プログラムを実際に並列実行できる環
境が得られなかった.このため今回は,被験者がどれだけ並列にプログラムを
書けるかという,並列化を目的とした.機会があれば,被験者が自分の並列プ
ログラムの速度向上を確認しながら実験できる環境で実験してみたい.

コメント:並列プログラミングや並列処理に対しての初心者ではなくある程度
の知識をもった人を被験者にして,コンテスト方式で実験をしたほうがよいの
ではないか.CSコースの教授陣などに参加してもらえばよい.

A:そうできればよいと思う.今回の被験者は,C言語もそれほど使いこなして
いな.C言語のかなりの使い手や,並列処理に詳しい人を被験者にして,実験
できれば面白いと思う.