多倍長精度計算を囲んでできる人と人とのつながり

130308forum13月8日(金)、工学院大学新宿校舎にて「多倍長精度計算フォーラム」 第3回研究会が開催されました。多倍長精度計算の精度や高速化、アプリケーション開発に関わる研究者11人から講演がありました。昨年の2倍近い60人弱の参加者には、学生や若い研究者が目立ちました。

通常の計算機の大半は浮動小数点演算に、倍精度(10進法に換算して約15桁)の演算器を使っています。多倍長精度計算とは、これより長い桁で計算を行うもので、たとえば4倍精度(10進法に換算して約31桁)、8倍精度(10進法に換算して約63桁)などがあります。

多倍長精度計算は、15桁も大きさが異なる数同士の加減算値やほとんど同じ数同士の減算値が必要となる場合、計算の反復によって大きくなる誤差のため必要な精度が得られない場合などに用いられます。また計算結果の検証としても多倍長精度計算は有効な手段です。

フォーラムの前半には、多倍長精度計算の精度に関する講演がありました。行列同士の乗算では浮動小数点の積と和が数多く発生するので、丸め誤差が大きくなってしまいます。そこで誤差を増やすことなく乗算を加算に変換する方法について講演がありました。この手法によって計算時間も短縮されます。また、多倍長精度計算での区間演算により、その有効性を確認した講演もありました。区間演算とは1つの数値ではなく区間を単位とした演算のことで、参加者から精度保証について多くの質問がありました。

多倍長精度計算の高速化に関する講演もありました。多倍長精度計算は倍精度計算に比べて時間がかかります。そこでハードウェアの特性を生かした高速化、アルゴリズムの改良による高速化とそれぞれの方法の効果に関する報告があり、活発な質疑応答が繰り広げられました。

後半には、実際に多倍長精度計算を必要としている量子化学や物性物理、素粒子物理のアプリケーション開発をおこなっている研究者から、それぞれの事例に関する講演がありました。中田 真秀(なかた・まほ)理化学研究所開発研究員は、「量子化学の問題を半正定置計画法(SDP)という手法を用いて解く過程で多倍長精度計算が必要になりました。しかし、適したライブラリがなかったので、高精度線形代数演算ライブラリMPACKを開発しました」と報告しました。MPACKには多くの研究者が関心を寄せていました。

KEKの濱口信行研究員

KEKの濱口信行研究員

多倍長精度計算の精度や計算時間は、使用するコンピュータや言語、ライブラリ、コンパイラに左右されます。濱口 信行(はまぐち・のぶゆき)高エネルギー加速器研究機構(KEK)研究員からは、T=A×B、E=A×B-Tという簡単な演算でもデータ形式によっては0にならない可能性があることを示し、その対処法の説明をしました。他にスーパーコンピュータの性能比較、反復法について説明を行い、参加者から活発な質問を受けました。

KEKの松古栄夫助教から「高性能計算の扉」の紹介と内容充実への協力の依頼があった。

KEKの松古栄夫助教から「高性能計算の扉」の紹介と内容充実への協力の依頼があった。

最後の講演は、計算基礎科学連携研究員の松古 栄夫(まつふる・ひでお)KEK助教による、「高性能計算の扉」の紹介でした。高性能計算の扉は、HPCI戦略プログラム分野5の研究支援チームの活動の一つで、最適なアルゴリズムや手法を探すための指針となるような情報の蓄積を目指して運営されているwikiです。フォーラム後、さっそく多倍長精度計算に関する情報が寄せられました。濱口氏の多倍長精度計算に関する詳細なレポートも高性能計算の扉に掲載しています。

フォーラムの最後に、計算基礎科学連携研究員の石川 正(いしかわ・ただし)KEK准教授は「この10年でスーパーコンピュータは1000倍速くなりました。しかしながら、それに見合うだけの計算精度の向上は達成されていないと思われます。今後、計算の精度が心配になり、多倍長精度計算が必要な人が増えてくると思い、3年前にこのフォーラムを始めました。安全で確実な計算結果を出すその一つの手法として多倍長精度計算があります。この分野は計算科学や計算機科学のインフラに当たる部分かもしれませんが、それだけにおろそかにできません。これからもしっかりやっていく必要があります。今回は若い研究者がたくさん参加してくれて大変嬉しく思います」と、将来への期待を込めて挨拶しました。

用語解説

浮動小数点演算
ほとんどのコンピュータでは、実数を表現するために浮動小数点表現を用いている。よく使われているIEEE754形式では、一つの浮動小数を単精度では32ビット、倍精度では64ビットで表現する。単精度では、32ビットを、1ビットの符号部、8ビットの指数部、23ビットの仮数部にわける。これにより、単精度では有効桁数は2進で24桁(10進相当で7桁強)になる。
また単精度で表現できる実数の範囲は、最小値がおよそ-1.2×10の38乗で、最大値がおよそ3.4×10の38乗になる。倍精度ではビット数が倍になっているが、仕掛けは同じ。
区間
数値の範囲を表したもの。例えば区間(3,8)は3~8の間の実数。
ライブラリ
使用頻度の高い複数のプログラムを、再利用可能な形でひとまとまりにしたもの
コンパイラ
プログラミング言語を機械語に翻訳するプログラム
カテゴリー: 新着情報, 研究会報告   パーマリンク