{"created":"2021-03-01T06:18:43.784254+00:00","id":2129,"links":{},"metadata":{"_buckets":{"deposit":"10000244-965c-4f75-926b-68b6feeebaed"},"_deposit":{"id":"2129","owners":[],"pid":{"revision_id":0,"type":"depid","value":"2129"},"status":"published"},"_oai":{"id":"oai:repository.dl.itc.u-tokyo.ac.jp:00002129","sets":["110:315:316","9:233:280"]},"item_7_biblio_info_7":{"attribute_name":"書誌情報","attribute_value_mlt":[{"bibliographicIssueDates":{"bibliographicIssueDate":"2006-09-13","bibliographicIssueDateType":"Issued"},"bibliographic_titles":[{}]}]},"item_7_date_granted_25":{"attribute_name":"学位授与年月日","attribute_value_mlt":[{"subitem_dategranted":"2006-09-13"}]},"item_7_degree_grantor_23":{"attribute_name":"学位授与機関","attribute_value_mlt":[{"subitem_degreegrantor":[{"subitem_degreegrantor_name":"University of Tokyo (東京大学)"}]}]},"item_7_degree_name_20":{"attribute_name":"学位名","attribute_value_mlt":[{"subitem_degreename":"博士(科学)"}]},"item_7_description_5":{"attribute_name":"抄録","attribute_value_mlt":[{"subitem_description":"近年、並列・分散計算環境は急激に普及している。素子の発熱などの問題により単体計算機の性能向上が妨げられている現在、高性能な計算機を現実的なコスト性能比で構築するためには、多数の計算機を用いた並列計算を用いなければならない。また、計算機は急速にコモデティ化しているため、普及型CPUを多数集めて構成した大規模計算機や、パーソナルコンピュータを一般的なネットワークで接続したPCクラスタといった構成が多く使われている。また、ネットワーク技術の発展により、複数のクラスタを結合させたグリッドや、個人の遊休計算機を使用するデスクトップグリッドなど、より広域に広がった分散計算環境も実用的な存在となってきた。さらに、単体CPU内においてもマルチコアプロセッサが一般的なものとして普及を始めている。このように、近年の計算機はさまざまなレベルの並列性を持ち、大量の計算リソースを一度に利用できる並列環境を利用することも比較的簡単になりつつある。しかし、現在のソフトウェア開発においてこのような環境を十分に活用することは依然として難しい。これは、並列プログラムを作る際に、(1)いかに実行効率が良好な設計を行なえるか//(2)いかに正しく実装するか//の二つの側面において、未解決な問題点が存在しているためである。//(1) 実行効率の良いプログラムを設計するためには、あるアルゴリズムがある環境ではどれくらいの時間で実行できるのか、を正確に把握するための計算量モデルが必要になってくる。これまでにいくつかの並列計算量モデルが提案されてはいるが、これらは単純過ぎて現実の計算環境を表現できていなかったり、特定の環境や特定のアルゴリズムに限定したモデルになってしまっていたりと、満足できるものにはなっていない。アルゴリズム設計において必要とされるのは、特定の環境における実行時間の精密な見積もりよりは、現在のさまざまな計算環境とこれから使用可能になるであろう計算環境とで、対象アルゴリズムがどのような振る舞いを示すのか、を定性的に示すようなモデルである。現在、シングルコア、マルチコアSMPからデスクトップグリッドまで、規模もネットワーク構成も大きく異なる多種の計算環境が利用可能であり、これら並列環境の構成方式のトレンドも日々変化している。このような多種多様な環境を、何らかのモデル化によって統一的に扱い、与えられたアルゴリズムが共通にどのような振る舞いを起こすのか、という実行性能予測を可能にするような計算量モデルが求められているのである。そこで、計算コストは通信コストであるという基本理念の元に構築した新しい並列計算量モデル「アクセス計算量モデル」を提案し、その有効性を実証することを試みた。アクセス計算量モデルの提案では、単体計算機内部のメモリ階層から、LAN、インターネットといったグローバルなネットワークを用いた通信までを、統一的にかつ簡潔に表現し、ネットワークトポロジなど並列計算環境の具体的な構造に依存しない、一般性の高い計算モデルを構築しようと考えた。アクセス計算量モデルでは、メモリがある密度で広がる空間を考え、計算はメモリ上の任意の地点で、任意の密度で行えるとする。計算を行うものを計算実体と呼ぶことにするが、これはレジスタなどの記憶を持たず、メモリ上に現在いる「場所」と、プログラム中の実行箇所を示す「プログラムカウンタ」の状態のみを保持している。メモリ空間には何らかの距離の指標が定義されており、計算実体からメモリ上のある地点に存在するデータヘアクセスする際には、その距離に従ったアクセスコストがかかるものとする。計算の過程は、演算に必要なデータを計算実体のある場所まで移動し、そこで演算を行い、演算結果を所定のメモリ位置に通信によって書き込む、という一連の流れで表現される。計算にかかるコストは、この通信にかかる時間コストのみであり、演算にはコストがかからないとする。計算自体は同一点でいくらでも行うことができるが、通信路には容量があり、通信路の混雑によって計算に必要なデータが届かないため、同一点でいくらでも多くの計算を同時に実行できるわけではない。本論文では、このような概念に基づくモデルを提案した。より詳細に、1次元のメモリ空間と、局所的な負荷が表現できる通信路からなるモデルを定め、そのようなモデル上でのプログラムを表現できる仮想機械を定義、設計した。また、よく知られた並列アルゴリズムであるbitonic sort、merge sort、FFTについて解析的に計算量を求め、実計算機上の実行結果を用いた評価を通して、モデルの妥当性と実用性を示した。//(2) バグのない並列プログラムを書くことは、それ自身難しいことである。並列計算環境はマルチコアやマルチプロセッサなどの共有メモリ型からPCクラスタ、ベクトル計算機やデスクトップグリッドまでさまざまな種類があり、それぞれの構成において計算性能を上げやすいプログラミングモデル、通信ライブラリが異なっている。ある環境である問題を並列に解きたいときにどのような計算モデルや通信ライブラリを選択するのか、あるいは複数の手法を組み合わせていかなければならないのか、という決断はプログラマに深い知識と経験を要求する。また、別の計算環境が使えるようになったり、計算機の規模が大きくなったりという変化があったとき、プログラムの変更が必要になるようでは生産性も低く、バグも入りやすい。さまざまな環境で同一のプログラムが正しく動く、というプログラミング手法が求められるのである。さらに、大規模問題を解くためには長期間、多数の計算機を使う必要があるが、長期間同じ計算機を占有し続けられる状況は珍しく、多くの場合は使用可能な計算機が増減する。また、多数の計算機を使うとどこかで故障が発生する確率が高まるため、部分的な故障で計算全体が停止してしまうようなプログラムでは計算が進まない。よって、動的な計算資源の増減への対応、耐故障性の実現などが求められるのであるが、深い知識と多大な労力が必要となるため、プログラマが自分で実現することは難しい。プログラマの負担を減らすための一つの方法に、並列計算フレームワークがある。ある問題領域に適用範囲を絞り、その問題に特有の並列化手法を専門家があらかじめ実装しておくことで、プログラマは並列化手法の詳細について悩むことなく並列プログラムを書くことができる。また、このフレームワークは並列環境の差異を隠蔽し、それぞれの環境で効率のよい実装を使い分けるなどして実装されているため、ひとつのプログラムで、さまざまな環境で効率よく計算することが可能になる。耐故障性の導入なども、問題領域を絞ることでプログラマへの負担を軽減した形で実現できる。科学技術計算などの構造が単純な問題においてはこのようなフレームワークが存在し、高性能計算を簡単なものにしているが、より複雑な構造を持つ問題、例えば組合せ最適化やゲーム木探索などに代表される探索問題については、まだ研究が不十分な点も多い。探索問題は実社会においても応用範囲が広く、規模が大きくなると莫大な計算量を必要とするため、並列計算の技法を用いて実用的な時間でより大きな問題を解けるようにすることが強く求められている。探索問題において特に問題になるのは、共通の部分問題に依存した多くの部分問題が存在する点である。単純に並列化を行うと、これらの共通問題を別々の計算機で重複して計算してしまうため、無駄な計算が増えて探索性能の向上に結びつかない。このような共通部分問題を効率よく発見し、計算結果を再利用しながら並列計算を行うような手法が求められている。そこで、このような性質を持つ探索問題をターゲットとする並列計算フレームワークを設計・構築し、並列プログラム開発のための基盤技術とすることを試みた。提案する並列探索手法は、親タスクが子タスクを再帰的に生成し、子タスクの計算結果を使って親タスクの結果を計算するような構造の問題を対象とし、分散ハッシュ表(DHT)の考え方を用いて部分問題を管理する。対象とする問題領域では、部分問題は共通性が発見できるよう一意にコード化されるので、ハッシュ表を用いて共通部分問題を効率よく発見し、計算結果を再利用しながら探索を進める。DHTは近年研究が盛んであるが、多数の計算機でファイルなどの情報を保持するための手法として捉えられていることが多い。また、DHTの考え方を探索に用いる研究もあったが、分散システムの重要な特性である耐故障性能について考慮したものは存在していなかった。今回の提案では、故障時には失われた部分問題を必要とする親問題が子問題を再実行し、必要な探索途中結果をDHT上に再構成する、という方法で耐故障性を実現する。本論文では、提案する手法が、共通部分問題を含む問題領域において良い探索効率を与えること、故障が発生した際も性能悪化が少ないことを、既存の分散計算手法であるマスタワーカとの比較シミュレーションによって示した。また、提案する手法をフレームワークとして利用できるようにインタフェースを整理し、実装を行い、シンプルな探索問題を用いて評価を行った。このような2つの領域の研究の両方がそろって初めて、現在身近になり、これからさらに普及し続けると考えられる並列計算環境を「活用」することができると考えている。本論文では、新しい並列計算量理論と、共通部分計算を持つ探索問題の大規模耐故障並列化フレームワークの提案を行うことで、並列プログラムをさまざまな環境で効率よく、正しく簡単に実装できるような基盤技術を拡充することができた。","subitem_description_type":"Abstract"}]},"item_7_dissertation_number_26":{"attribute_name":"学位授与番号","attribute_value_mlt":[{"subitem_dissertationnumber":"乙第16590号"}]},"item_7_full_name_3":{"attribute_name":"著者別名","attribute_value_mlt":[{"nameIdentifiers":[{"nameIdentifier":"6161","nameIdentifierScheme":"WEKO"}],"names":[{"name":"ヨコヤマ, ダイサク"}]}]},"item_7_identifier_registration":{"attribute_name":"ID登録","attribute_value_mlt":[{"subitem_identifier_reg_text":"10.15083/00002123","subitem_identifier_reg_type":"JaLC"}]},"item_7_select_21":{"attribute_name":"学位","attribute_value_mlt":[{"subitem_select_item":"doctoral"}]},"item_7_subject_13":{"attribute_name":"日本十進分類法","attribute_value_mlt":[{"subitem_subject":"007","subitem_subject_scheme":"NDC"}]},"item_7_text_22":{"attribute_name":"学位分野","attribute_value_mlt":[{"subitem_text_value":"Science(Kagaku)(科学)"}]},"item_7_text_24":{"attribute_name":"研究科・専攻","attribute_value_mlt":[{"subitem_text_value":"Graduate School of Frontier Sciences (新領域創成科学研究科)"}]},"item_7_text_27":{"attribute_name":"学位記番号","attribute_value_mlt":[{"subitem_text_value":"第16590号"}]},"item_creator":{"attribute_name":"著者","attribute_type":"creator","attribute_value_mlt":[{"creatorNames":[{"creatorName":"横山, 大作"}],"nameIdentifiers":[{"nameIdentifier":"6160","nameIdentifierScheme":"WEKO"}]}]},"item_files":{"attribute_name":"ファイル情報","attribute_type":"file","attribute_value_mlt":[{"accessrole":"open_date","date":[{"dateType":"Available","dateValue":"2017-05-31"}],"displaytype":"detail","filename":"K-216590.pdf","filesize":[{"value":"3.0 MB"}],"format":"application/pdf","licensetype":"license_note","mimetype":"application/pdf","url":{"label":"K-216590.pdf","url":"https://repository.dl.itc.u-tokyo.ac.jp/record/2129/files/K-216590.pdf"},"version_id":"cdc6e474-1040-443e-96f8-68c1b059a458"}]},"item_language":{"attribute_name":"言語","attribute_value_mlt":[{"subitem_language":"jpn"}]},"item_resource_type":{"attribute_name":"資源タイプ","attribute_value_mlt":[{"resourcetype":"thesis","resourceuri":"http://purl.org/coar/resource_type/c_46ec"}]},"item_title":"大量のコンピューティングリソースを活用するためのソウトウェア基盤","item_titles":{"attribute_name":"タイトル","attribute_value_mlt":[{"subitem_title":"大量のコンピューティングリソースを活用するためのソウトウェア基盤"}]},"item_type_id":"7","owner":"1","path":["280","316"],"pubdate":{"attribute_name":"公開日","attribute_value":"2012-02-28"},"publish_date":"2012-02-28","publish_status":"0","recid":"2129","relation_version_is_last":true,"title":["大量のコンピューティングリソースを活用するためのソウトウェア基盤"],"weko_creator_id":"1","weko_shared_id":null},"updated":"2022-12-19T03:43:41.953734+00:00"}