IPA


開発成果一覧へ

 



2005年度下期 未踏ソフトウェア創造事業  採択案件評価書

 


1.担当PM

   高田 浩和 (株式会社ルネサステクノロジ システムコア技術統括部 CPU開発第二部)


2.採択者氏名

開発代表者

 佐々木 慶文 (石巻専修大学 理工学部 講師)

共同開発者

 なし


3.プロジェクト管理組織


  株式会社 オープンテクノロジーズ


4.委託金支払額


  5,576,444


5.テーマ名


  ユビキタス並列アプリケーション用プロトタイピング環境の開発

 


6.関連Webサイト


  なし


7.テーマ概要


 次世代ユビキタスコンピューティング環境においては、身近に存在する組込み機器による分散・協調並列処理がキーテクノロジとなることが予想され、そのような並列処理技術に基づくユビキタスアプリケーションを開発するためのプロトタイピング環境の整備が重要となる。これに対し、本研究代表者はこれまでに、ユビキタスコンピューティングクラスタと呼ぶプロトタイピング環境を開発してきた。

 本開発テーマは、上記の研究を発展させるものであり、将来、普及されることが予想されるマルチコア組込みCPUによる分散・協調並列処理に基づくユビキタスアプリケーションのためのプロトタイピング環境を開発するものである。プロトタイピング環境には、
    (i)マルチコア組込みCPUによるクラスタ計算機、
    (ii)プロトタイピング支援ツール(固定小数点演算関数の自動生成ツール)、
    (iii)プロトタイピング支援関数ライブラリ(画像照合関数ライブラリ)
を含む。このうち(ii)および(iii)については、一般的な組込みシステムの開発においても、支援ツールとして有用性が高いと考えられる。

 開発したプロトタイピング環境については、組込みCPUに基づく分散・協調並列処理という概念を広く普及させるとともに、誰もがプロトタイピングを行えるようにWEB上で公開する予定である。


8.採択理由


  申請者はこれまで、各種組み込みCPUを搭載した評価ボードによる組み込みLinuxクラスタシステムを構築し、分散・協調並列処理の研究を進めてきている。今回さらにその研究を発展させる形で、マルチコア組み込みCPUによるクラスタ計算機を開発し、画像処理アプリケーション等をクラスタ上で容易に作成するためのプロトタイピング支援環境を作成するとの提案である。組み込み機器に搭載されたCPUによる分散・協調並列処理は、ユビキタスコンピューテイング環境における並列処理クラスタの構築において重要な技術であるが、従来そのような組み込みCPUクラスタシステム上でのアプリケーション開発を支援するようなツールは無かった。これは、これまで科学技術計算のような一部のアプリケーションで使用されることの多かったクラスタシステムの幅広い応用にも道を拓く技術であると考えられ、開発の成果に期待し、採択とした。





9.開発目標


本プロジェクトにおける開発目標は以下のとおり。

      マルチコア組込みクラスタ計算機(ハードウェア的プロトタイピング環境)の開発・性能評価。

      高速な小数演算を実現するための固定小数点演算関数の開発・性能評価。主に、四則演算や画像処理・画像照合でよく用いられる三角関数、フーリエ変換などを行うための関数群を対象とする。

      画像処理・画像照合に基づくアプリケーションを短期間で開発するために有用な関数およびサンプルプログラムの開発・性能評価。主に、画像入出力、画像切り出し、幾何学的変換、照合を行うための関数群を対象とする。

      組込み機器による分散・協調並列処理という概念を広く普及させることを目的に、本プロジェクトの成果を公開するためのホームページを作成。

 


10.進捗概要


 未踏プロジェクトの下期開発期間(200512月から20068月)において、前半にマルチコア・クラスタの構築と固定小数点演算ライブラリの実装を、後半に固定小数点演算ライブラリの評価と拡張、画像処理ライブラリの整備とサンプルアプリケーションの開発と評価を行った。

 評価ボードの納入が5月まで遅れたものの、クラスタ機の構築は非常にスムーズに進み、6月の中間報告会ではクラスタ機上でのデモが動作した。当初はクラスタを構築することが今回の主な開発対象であったが、試作機が順調な立ち上がりを見せたことから、後半はライブラリ開発に重心を移し、高速な演算アルゴリズムの調査を行いながら性能評価を行ってライブラリを整備をすすめた。厳しいスケジュールであったが、最後の追い込みによって、当初の予定どおりライブラリの開発を完了し、画像処理アプリケーションとして、指紋認証アルゴリズムのサンプルプログラムを用いてその有効性を実証することができた。

 


11.成果


プロジェクトの開発成果は以下のようなものである。

      マルチコア組込みクラスタ計算機を構築し、その性能を評価するとともに、固定小数点演算関数ライブラリおよび画像処理・画像照合ライブラリの実機上での評価を本クラスタ計算機上で行った。

      固定小数点演算関数ライブラリについては、目標とした関数については開発を完了した。各関数の速度評価はすべて完了した。

      画像処理・画像照合関数ライブラリについては、開発および性能評価(固定小数点版のみ)が完了している。

      開発成果の告知と普及を目的に、ホームページを立ち上げた。基本的なページの作成は既に完了し定期的に更新を行っている。ライセンスに抵触しないプログラムについてはWeb公開する予定である。

 

 また、開発成果の特徴は以下のようなものとなっている。

      開発したライブラリは、一般的なC言語の関数と同様に利用できる。

      小数点位置を変数で管理できるため、固定小数点演算によるアプリケーションプログラムの作成が容易である。

      関数レベルでは浮動小数点演算の数倍から10倍程度高速であり、アプリケーションレベルでは数10倍程度の高速化が見込まれる。

      分散・協調並列処理の高速化を目的として作られているが、シングルノードのコンピュータでも全く同様に使用し、高速処理を行うことが可能である。

      ソースコードでも提供されるため、Linux OSCコンパイラが動作する環境であれば、機種依存性を考慮せずに使用することができると思われる。

      フリーである。

      実機上で演算性能を評価してあり、評価結果はホームページで公開されている。

 

以下に、その詳細を示す。

 

1.マルチコアクラスタ計算機の開発と性能評価

 組込みCPU による分散・協調並列処理プラットホームとして、マルチコア組込みCPU を用いたクラスタ計算機を開発した。

 図1にクラスタ計算機のアーキテクチャを示す。開発したクラスタ計算機は4台の計算ノードが100Mbpsの高速イーサネットで相互に接続された構成とした。各ノードには2つのM32R CPUコアを持つマルチコアCPUを搭載したCPUボードMappi-IIIを用いた。4台のうち1台の計算ノードは、ファイル共有、ユーザ管理を行うサーバノードとしても動作する。詳細仕様を表1に、開発したクラスタ計算機を図2に示す。

 開発したクラスタ計算機の最大の特徴は、マルチコア組込みCPUを搭載しているためネットワーク分散・協調並列処理とマルチスレッド処理によるメモリ共有型並列処理の両者を融合した並列処理が可能である点である。

 

1 開発したマルチコア組込みクラスタ計算機のアーキテクチャ

1 クラスタ計算機および計算ノードの仕様

 

2 開発したクラスタ計算機『M32RUCC

 

2.固定小数点演算関数ライブラリの開発および性能評価

 固定小数点演算関数ライブラリの開発は、(i) 関数の選定、(ii) アルゴリズムの調査・検討、(iii) 関数のコーディング、(iv) テスト、(v) 性能評価の手順で行った。

なお、今回のプロジェクトにおいて開発予定の関数については、ほぼすべての開発を完了した。
 今回開発した関数の一覧を表2に示す。

 

2 開発対象とした固定小数点演算関数一覧

 

 

(1)アルゴリズムの調査・検討

 四則演算(乗除算)であっても、様々なアルゴリズムが存在する。本プロジェクトでは、乗除算、sin / cos関数、atan関数、1次元および2次元フーリエ変換、型変換についてアルゴリズムの調査・検討を行った。検討の結果、各関数に用いるアルゴリズムは以下の通りに決定した。

      加減算: C言語の整数演算をそのまま使用

      除算: CORDICアルゴリズム

      三角関数: テーブル参照法(補間なし)、および チェビシェフ多項式近似アルゴリズム

      逆三角関数: CORDICアルゴリズム

      1次元および2次元フーリエ変換: DITFFT(*1)、およびSRFFT(*2)

 

*1) DIT (Decimation in Time)FFT

時間間引き、すなわち空間領域においてデータをインデックスが偶数と奇数で分割し、高速化するタイプのFFTであり、最も典型的なアルゴリズム。

 

*2) SR (Sprit Radix)FFT

時間間引きあるいは周波数間引きにおいて、偶数番目のデータについては基数2のFFTアルゴリズムを、奇数番目のデータについては基数4のFFTアルゴリズムを適用することにより、演算を効率化したFFTアルゴリズム。

 

(2)性能評価

 性能評価は、演算精度と演算速度の両方について行った。それぞれ関数性能評価用のプログラムを作成し、演算精度についてはデスクトップマシンを用いて評価を行ない、演算速度については4.1で示したクラスタ計算機により評価を行った。

 

演算精度評価

 演算精度の測定条件を以下に示す。

      同じ入力セットに対して開発したライブラリ関数とCの浮動小数点演算とで演算を行ない、次式に基づき誤差を求めた。

 

ただし、はそれぞれ誤差、固定小数点演算結果、浮動小数点演算による理論値を示す。

      フーリエ変換については、ランダム関数を使用して入力を生成した。開発した関数のダイナミックレンジの問題から、入力値の上限は256とした。

      フーリエ変換の浮動小数点演算による理論値はFFTW3ライブラリによって生成したものを用いた。

 

演算速度評価

 演算精度の測定条件および方法を以下に示す。

      まず一定数の入力セットに対して演算を実行したときの平均時間を求め、次にこのプログラムにおいて測定対象である固定小数点演算関数に関する記述をコメントアウトしたプログラムを実行することによりデータ生成等周辺処理に要する時間を推定し、これを差し引いたものを演算時間とした。

      時間測定はclock関数により行った (今後、gettimeofdayでの測定をやり直してみる予定)

      比較のために、浮動小数点演算による演算時間も同様の方法で求めている。

      アーキテクチャによる演算速度の違いを比較するために、開発したクラスタ計算機の他にARM9 (200MHz)を搭載したCPUボードで構築したクラスタ計算機により演算を行った場合の演算時間を求めている。表3に使用したクラスタ計算機の仕様を示す。

表4に演算速度の評価結果を示す。表4において、float / doubleとはCの浮動小数点演算を表す。また、float(PM) / double(PM)とあるのは、PM提供の高速浮動小数点演算演算ライブラリを表す。


 

 

 

 

 

3 演算速度比較用クラスタ計算機の仕様

 

 

 

 

 

4 開発した固定小数点演算関数の演算速度

 

T. 型変換および四則演算の演算速度

U. 三角関数および逆三角関数の演算速度

 

V. 1次元および2次元フーリエ変換関数の演算速度

 

3.画像処理・画像照合関数ライブラリの開発および性能評価

 画像処理・画像照合関数ライブラリの開発は固定小数点演算関数の場合と同様に、(i) 関数の選定、(ii) アルゴリズムの調査・検討、(iii) 関数のコーディング、(iv) テスト、(v) 性能評価、(vi) サンプルプログラムの作成、(vii)サンプルプログラムの性能評価の手順で行った。ただし、性能評価においては、固定小数点演算関数の場合とは性格が異なり、演算精度については評価が困難であることから演算速度についてのみ評価を行っている。なお、今回のプロジェクトにおいて開発予定の関数については、ほぼすべての開発を完了した。

 

 画像処理・画像照合関数ライブラリでは、開発者がこれまで開発してきた画像照合関連のアプリケーションを調査し、よく用いられている関数について開発を行うものとした。その結果、画像入出力(ビットマップ画像およびRAW画像)、画像の幾何学的変換(平行移動、回転移動、拡大縮小)、切り出し、照合の各機能を実現する関数を作成した。浮動小数点演算によるものと固定小数点演算によるものの両者を開発している。表5に開発対象とした関数の一覧を示す。

 

5 開発対象とした画像処理・画像照合関数一覧

 

 

(1)アルゴリズムの調査・検討
 複数のアルゴリズムが考えられる回転移動、拡大縮小、自動クロップ、照合についてアルゴリズムを検討した。固定小数点演算関数の場合と同様に、特に速度を重視してアルゴリズムを決定している。

      回転移動: 双線形補間による回転変換

      拡大縮小: 双線形補間による拡大縮小変換

      自動クロップ: 閾値による単純な背景と対象物の判別

      照合: 位相限定相関法

 

(2)関数のコーディング
 関数のコーディングにおいては、開発効率を上げるために、以下のような工夫を行っている。

      これまでに開発者が開発してきたアプリケーションから有用なコードを抜粋し、必要に応じて固定小数点演算化

      浮動小数点演算版と固定小数点演算版で共通化できる関数を検討し、浮動小数点演算版は固定小数点演算版を呼び出す形態とした。

      カラー画像と白黒濃淡画像では、基本的にプレーン数が異なるだけであるから、個別の関数を作成するのではなく共通の処理関数を作成し、ユーザから見える関数ではこの処理関数を呼び出す形式とした。

 

(3)性能評価
 演算速度に関する性能評価を行った。評価は表1で示したクラスタ計算機により行っている。演算精度の測定条件および方法を以下に示す。なお、今回のプロジェクトでは、固定小数点版の画像処理・画像照合関数についてのみ評価を行った。

      入出力画像サイズは128×128

      まず複数回の試行に対する平均時間を求め、次にこのプログラムにおいて測定対象である画像処理・画像照合関数に関する記述をコメントアウトしたプログラムを実行することによりデータ生成等周辺処理に要する時間を推定し、これを差し引いたものを演算時間とした。

      アーキテクチャによる演算速度の違いを比較するために、固定小数点演算関数の場合と同様に、表1および表3に示した性能を有する2種類のクラスタ計算機で評価を行った。表6に演算速度の評価結果を示す。

6 開発した画像処理・画像照合関数の演算速度

 

(4)サンプルプログラムの作成

 開発した画像処理・画像照合関数を用いてサンプルプログラムを作成した。図4に示すように、画像データベースと入力画像を照合し、一致する画像のインデックスを出力するプログラムである。(a) 開発した固定小数点演算関数、画像処理・画像照合関数ライブラリの性能を確認すること、(b)クラスタ計算機によるアプリケーション処理性能(並列処理性能)を評価することを目的とし、以下に示す合計6種類のプログラムを開発している。

      浮動小数点版サンプルプログラム(poc:逐次処理、poc_mpi_fl:並列処理、poc_mpi_pt_fl:並列処理+マルチスレッド処理)

      固定小数点版サンプルプログラム(poc_fixed:逐次処理、poc_mpi:並列処理、poc_mpi_pt:並列処理+マルチスレッド処理)

ただし、開発期間の都合上、すべての演算関数を使用したプログラムではないため、今後、継続して様々なサンプルプログラムの作成を行うことが重要である。

3 サンプルプログラムの概要

 

(5)サンプルプログラムの性能評価(クラスタ計算機によるアプリケーション処理性能の評価)

 開発したサンプルプログラムでクラスタ計算機によるアプリケーション処理性能を評価した。開発したライブラリの性能を確認することとクラスタ計算機によるアプリケーション処理性能(並列処理性能)を明らかにすることを目的としている。評価は表1および表3に示した性能を有する2種類のクラスタ計算機で行った。評価内容は以下の通りである。

      浮動小数演算と固定小数演算速度の比較。

      逐次処理と並列処理(MPI)性能の比較。

      並列処理(MPI)と並列処理+マルチスレッド処理性能の比較。

また、性能評価条件・方法は以下の通りである。

      データベース画像サイズ:128×128画素

      データベース画像数:16画像

      測定関数:gettimeofday (逐次処理)MPI_Wtime (並列処理、マルチスレッド)

      測定方法:プログラム内で10回の照合を行ない、この平均を測定時間として算出。

表7に評価結果を示す。

 


7 サンプルプログラムによるアプリケーション処理性能の評価

 

4.公開用ホームページの作成

 本プロジェクトの成果を広く公開するためのホームページを作成した。図5にトップページを示す。

 

 

関連Webサイト

      未踏プロジェクト成果公開用ページ

http://hyperion.ie.isenshu-u.ac.jp/ecc

      ユビキタスコンピューティングクラスタサポートページ

http://hyperion.ie.isenshu-u.ac.jp/ucc

 


12.プロジェクト評価


 本プロジェクトでは組み込みシステムに用いられるプロセッサをターゲットに、ユビキタス・ネットワーキング環境を構築することを目指した。ネットワーク接続可能な家電製品の登場により、身近な組み込み製品をネットワークで接続し、余剰な処理能力を有効に利用しようというユビキタス・コンピューティングのアイデアは、もはや全くの夢物語とは言えなくなってきている。ユビキタス・コンピューティング・クラスタについて、プロトタイプとはいえ実機を作成し、具体的なアプローチを示してみせたことには大きな意義があると考える。

 

 本プロジェクトの成果に関しては、当初の目標を予定どおり達成することができた。

 組み込みCPUを搭載した評価ボードを使用し、マルチコア組み込みCPUによる組み込みLinuxクラスタシステムを構築し、画像処理アプリケーション等をクラスタ上で容易に作成するためのプロトタイピング支援環境を作成した。組み込み機器に搭載されたCPUによる分散・協調並列処理は、ユビキタスコンピューテイング環境における並列処理クラスタの構築において重要な技術となる。今回のプロジェクトでは、このような組み込みCPUを用いたクラスタシステム上で、高速な画像処理アプリケーションが実行可能であることを実証した。 これは、これまで科学技術計算のような一部のアプリケーションで使用されることの多かったクラスタシステムの幅広い応用にも道を拓く技術であり、クラスタ・システムを今よりももっと身近なものにできる可能性がある。

 さらにまた、今回開発された固定小数点演算ライブラリ、画像処理ライブラリは、浮動小数点ユニットを持たない小型の組み込み用マイクロプロセッサにおいても、こうしたアプリケーション・プログラムを容易に構築し、かつ高速な演算処理を実現することが可能にしており、高性能組み込みシステムにおいて大きなインパクトをもつものと考えられる。

 

 プロジェクトの推進に関しては、開発者の本プロジェクトへの取り組みは非常に真摯なものであった。組み込みプロセッサを用いてクラスタを構成し実際に動作させるという泥臭い作業や、ライブラリのコーディングと性能評価という地道な作業をこなしたことについても高く評価できる。ホームページでの情報公開など、成果を広める活動については今後もぜひ継続をお願いしたい。

 


13.今後の課題


 未踏プロジェクトの開発期間は終了したが、プロジェクトの最終目標からすればまだ途中段階である。ユビキタス・コンピューティング・クラスタ(UCC)のプロトタイプが動作している段階であり、その意味で、今回の開発成果がただちにユビキタス・コンピューティング・クラスタの実用化につながるわけではない。組み込み機器を用いたユビキタス・コンピューティング・クラスタの構築による実用的なシステムの開発は今後の課題となっている。組み込み機器によるユビキタス・コンピューティング環境の実現に向け、ヘテロジニアスなアーキテクチャ混在システムに関し、さらなる研究の継続・発展を期待したい。

 

 今後の具体的な課題について、以下に列挙する。

      開発済み関数の継続的なテスト(デバッグ)および高速化。

      演算関数の充実化(指数・対数関数などCのmathライブラリに含まれるような関数に対応する固定小数点演算関数の開発)。

      様々なサンプルプログラムの開発と公開。

      組込み機器による分散・協調並列処理に基づくユビキタスアプリケーションの実現に関する具体的な応用検討。

 




  ページトップへ   

 

 

 


  Copyright(c) Information-technology Promotion Agency, Japan. All rights reserved 2004