現在、数値計算の分野ではユーザーにとって使いやすく高性能な数値計算ライブラリーが強く求められている。これまでの数値計算ライブラリーの多くは、性能を出すためには計算機毎にユーザー自身によるパラメーターの調整が必要であった。さらに、解く問題によってもパラメーターの調整が必要になることが多い。本研究では、パラメーターの調整を人手でやるのではなく、ライブラリー自身が行うという自動チューニング機能を備えたライブラリーの構築手法についての研究を行った。基本的な方針として、前もって多くのコンパイル済みのプログラムコードを用意し、ライブラリー実行時に計算機や問題毎に実行時間が最も短くなるルーチンを選択させるという方法を取っている。自動チューニング機能を持つライブラリーの構築には、レジスタやキャッシュメモリの再利用を効率的に行うマシンアーキテクチャーの面から高速化を図る方法と、計算を行う際に誤差の蓄積ができるだけ小さくなるように高い精度で計算を行うというアルゴリズムの面から高速化を図る方法がある。並列計算機環境下では一つのプロセッサーに負荷が集中しないようにする負荷分散も重要になってくる。通常、最適なルーチンを選択する方法は、試行するルーチンが多くなると本来の計算に必要ではない無駄な計算が増大してしまうことになるが、試行するルーチンをある程度絞ることで自動チューニングにかかる時間を少なくすることに成功した。また、異なる並列計算機環境下でも、また解くべき問題を変更した場合でも短時間でほぼ最適なパラメーターを自動的に選択することが可能であることがわかった。実際に計算機や問題が異なると選択されるパラメーターも変化することから、自動チューニング機能が高性能なライブラリーを構築する上で重要な手法であることを示すことができた。
|