同志社大学工学部知識工学科/
Innovative Computing Laboratory,
University of Tennessee
廣安 知之
6月はすでに夏です.
今年の日本の6月はワールドカップで沸きに沸いたようですね.こちらでのワールドカップの観戦は大変でした.だって深夜ですからね.仕事して,仮眠して,ごそごそ起きだしてテレビにかじりつき,また仮眠して,大学のオフィスへ.しかも周りのモチベーションの低い中でこの生活を続けるのはかなり大変でした.USAは良いチームだったと思うのですが,こちらの人たちがそれにやっと気づいたころには,敗退していたという最悪のタイミングでした.それから,私の住んでいるアパートメントの上の階の住人はどうやらブラジル人だったようです.準決勝あたりから,盛り上がっている声が聞こえ始めました.常連国の余裕ですね.そのまま優勝してしまい,2階の住人たちの盛り上がりは最高潮に達したのでありました.
Knoxvilleは5月末からすでに夏です.気温も上がりますが,小学校なども夏休みに突入してしまいます.大学は夏学期があるのですが,開講されるクラスはそれほど多くはないようです.大学の学生は故郷に帰る人,インターンシップにでかける人などそれぞれです.スタッフもこの辺りからそれぞれ長期休暇を取り始めました.キャンパスには人影がまばらで暑い中でゆっくりと時間が過ぎていく感じがします.
Knoxvilleの夏の風は気まぐれで激しいのです.昼間は気温が30度近くまで上がります.まあ,暑いのですが東京や京都,大阪のようなムシムシした暑さではないので助かります.驚くのは夕方時々訪れる夕立です.ここの夕立は本当に激しいです.急に空が曇り,雷ととともに大粒の雨が降り始めます.電気の瞬断はしばしばで,大学も時々停電になります.1度は大学の近くのメインの通りの信号機も停止していました.
NetSolveをご存知ですか?
さて,今回は私の受け入れ先であるICL1)が開発しているNetSolve2)のお話です.すでにみなさんご存知のように,NetSolveはGrid RPCと呼ばれるミドルウエアの一つです.グリッドコンピューティングはこの1年で非常に話題にされることが多くなりました.NthDimensionでも何度か話題に取り上げられているようですね3,4).文科省でさえグリッドを叫ぶようになりました5).グリッドとは何かという話題は別の機会にするとして,HPCでのグリッドの利用を考えるとRPCの利用が中心となるのではないかと思われます.今回はこのNetSolveの話題です.
NetSolveの基本構成
NetSolveの基本構成は極めてシンプルです.仕事を依頼するクライアント(Client),数値計算ライブラリが実行されるサーバー(Server),クライアントとサーバーをつなぐエージェント(Agent)から構成されます.図1にその概要を示します.
図1 NetSolve
管理者はサービスをサーバーにデーモンとして立ち上げます.その際に,登録エージェントを指定しておくことで,起動時にサーバーとサービス情報が指定エージェントに登録されるわけです.それではユーザーがどのように処理を行うのか,例として巨大なベクトルデータの要素をソートする作業を行うことを考えましょう.まずクライアントはエージェントにaベクトルのsort()作業を行いたいことをエージェントに問い合わせます.エージェントは登録されているサービスに対応するサーバーの中から負荷情報などを基に適当なサーバーを選択し,その情報をクライアントに伝達します.その後,クライアントとサーバーはRPCによりデータ送信および結果の受け取りを行います.
このように,NetSolveはアーキテクチャにエージェントを持ちエージェントがクライアントの要求するサービスを検索して,そのサービスを提供するサーバーをクライアントに知らせるという仕組みになっています.これは,サービスとそれを提供するサーバーが増大した際に特に有効です.この仕組みにより,ユーザーは直接必要なサービスの所在を知る必要がありません.グリッド環境ではあのサービスはあそこのサーバー,このサービスはこのサーバーというように所在があちこちに点在する可能性があります.それに対してユーザーはいちいちサーバーの所在をしらなくても希望のライブラリを実行することができるのです.文字通りのグリッドサービスをNetSolveは提供します.また,ユーザーは実行時にライブラリの実行ファイルを必要としません.実行ファイルが存在するのはクライアント側ではなくサーバー側だからです.
NetSolveの使い方についてはマニュアルやチュートリアルをご覧下さい.
現在のバージョンのNetSolveはC, Fortran, Mathematica, MatLabのインターフェースを有しています.CやFortranでの使用時にはクライアント側でプログラムのコンパイルが必要ですが,MathematicaやMatLabでの使用時にはコンパイルは必要ではありません.すなわち,卓上計算機感覚でHPCが行えるわけです.
グリッドでの使用時にはセキュリティが気になるところでしょう.NetSolveではKerberosを使用することが可能です.
NetSolveの新バージョン
NetSolve v1.4.1 が6月5日に発表されました.これはメジャーバージョンの変更ではなく,パッチバージョンと呼ばれるいくつかのバグのフィックスとモジュールの追加バージョンとなっています.旧バージョンをお使いの方はバージョンアップをされた方が良いでしょう.ダウンロードはhttp://icl.cs.utk.edu/netsolveから可能です.
1.4からの主な変更点は以下の通りです.
今後のNetSolve
以下は予想される今後のNetSolveの開発項目です.
どのようにNetSolveは開発されているのでしょうか?
NetSolveはJack Dongarra6)を中心に現在,約10名の開発者を中心に開発されています.研究室のスタッフもしますし,大学院生の研究員もいます.1995年から開発者の入れ替えは行われているようですが,Jackの直接指導による形態は変わりません.基本的には2週間に1度のミーティングにより,進捗状況や問題点,今後の方針などが詳細に討議されます. 私もこのミーティングに参加させていただいているのですが,やはりJackの意向がNetSolveに強く反映されています.これまでにはっきりとどのようなシステムにNetSolveをしたいのかJackからは聞いたことがないのですが,私が個人的に感じるのは,1)Generalなシステムの構築と2)開発を必要以上に急がない,ただし着実という2点です.多くの優秀な開発者はとかくシステムの性能や機能の向上を図りたがりますが,その際にユーザの利便性は失われがちです.Jackは常に構築システムはGeneralな利用に適しているのかということを気にしているように感じます.その表れが,Agentを有しているNetSolveのアーキテクチャであり,ユーザーは実行ファイルを持たなくても目的のライブラリが使用できるシステムにあると思います.基本的なアーキテクチャは簡単なものですが,これらにこだわっているシステムはそれほど多くはないと思われます.また,Jackほどの有名人になると,もっと希望すればもっともっと高い地位や日銭が稼げそうな気がするのですが,まったくそれらに頓着していません.それはシステム開発にも反映されています.日本であればこれだけの業績のある教授であれば学生・開発者には要求が非常に高いものになるものと思われるのですが,私の目にはそれほど多くを要求しているようには思えません.どちらかというと急にではなく,着実に少しずつでも開発を続けたいように感じられます.それを実現するために,資金集めと人材の投入が行われています.単純なシステムは思いつくのは簡単ですが,それをきちんと実現し,継続的にサポートしていくのは実際には至難の業です.よく他人のオープンソースに依存して,その開発が終わってしまったらどうするのかという質問がされますが,Jack Dongarraの開発しているNetSolveは世の中の趨勢に従いフェードアウトすることはあるかもしれませんが,現在の状況ではこれから発展することはあれども,急に開発が打ち切られる可能性は極めて低いように感じられます.
おわりに
今回はICLで開発されているNetSolveを簡単にご紹介しました.これらはあくまでも個人的な情報ですので,正確な情報はNetSolveのページ2)から入手ください.
すでに述べたとおりHPC分野におけるグリッドの利用を考えたときに,RPCの使用は必須です.セキュリティ的にKerberosのみに対応していることや,オーバーヘッドがまだまだ大きいことなど解決すべき問題もまだまだありますが,NetSolveはNinf7)とともにその選択肢の一つです.グリッドが特に注目されていますが,もちろんローカルなネットワーク内やWANでの使用も可能です.また,最近ではGlobus8)の利用が注目されていますが,Condor-G9)のインターフェースを介してその利用を可能にするようです.また,GGF10)ではGrid RPCのワークショップが開催され,グリッドでのRPCインターフェースを統一しようとする動きがあります11).NetSolveではこのインターフェースに対応したものをGridSolveと呼ぶようです.GridSolveの開発はすでに完了済みでNSFのNMIパッケージ12)の次期バージョンにGridSolveが含まれる予定です.
みなさん一度NetSolveを使ってみてください.
参考文献
1)The Innovative Computing Laboratory , http://icl.cs.utk.edu/
2) NetSolve, http://icl.cs.utk.edu/netsolve/
3) グリッドコンピューティング,NthDimension, In depth,http://www.clubsse.com/nd/hpcworld/topic200109.html
4) グリッドコンピューティングの展開,NthDimension, In depth ,http://www.clubsse.com/nd/hpcworld/topic200205.html
5)スパコン結んで「超スパコン」開発へ 文科省方針,朝日新聞,http://www.asahi.com/tech/asahinews/K2002053000061.html
6)Jack Dongarra, http://www.netlib.org/utk/people/JackDongarra/
7)Ninf, http://ninf.apgrid.org/
8)Globus,http://www.globus.org/
9)Condor-G,http://www.cs.wisc.edu/condor/condorg/
10)GGF,http://www.gridforum.org/
11)http://www.eece.unm.edu/~apm/docs/APM_GridRPC_0702.pdf
12)NSF NMI,http://www.gridforum.org/