- 著者
-
中村 晃一
野瀬 貴史
稲葉 真理
平木 敬
- 雑誌
- 研究報告ハイパフォーマンスコンピューティング(HPC)
- 巻号頁・発行日
- vol.2011, no.63, pp.1-10, 2011-07-20
高性能計算分野では他の分野では使われる事の少なくなってきた Fortran・C 言語が使われ続けている.これらの言語はその生産性の低さと並列計算機向けの最適化の困難さが問題であり,高級なプログラミング言語を使用可能とする事は今後の重要な研究課題である.その様な目的の研究では並列構文を備えた専用の言語の研究・静的型付けの関数型言語の研究が主流であるが,これらが計算科学者にとって使い易いものであるとは言い難い.我々は Ruby を用いて高性能計算を行う試みを行っている.Ruby はその記述の容易さ・高機能さから広く使われており,本言語に高性能計算に使用可能な性能を与える事の恩恵は大きい.本稿では我々の試みの第一歩として,Ruby の為の型解析手法の提案を行う.動的言語である Ruby は静的言語に比べ解析が困難であると考えられているが,部分評価手法と抽象解釈手法を組み合わせることにより十分な精度での解析を行う事が可能である.また,我々は開発した解析手法に基づいて,Ruby の実行前最適化コンパイラ HPC Ruby を開発した.本稿時点では単一プロセッサ向けの基本的な最適化を実装している.NAS Parallel Benchmark を用いた性能評価では最新の Ruby 処理系と比べ 100 倍以上の高速化を達成し,C 言語の性能の約 90% を実現する事が出来た.Computational scientists have been using Fortran and C which are being used less than before in other fields. Because these languages have low productivity and optimization of them for massively parallel computers is difficult, it is important to make high performance computation using high-level languages possible. Although, for this purpose, study of dedicated parallel languages and study of statically-typed functional languages are mainstream, these languages are not easy to use for computational scientists. We have been studying high performance computation with Ruby. Giving high performance to Ruby brings significant benefits since Ruby is widely used because of its rich functionality and flexibly. This paper proposes a versatile method of static type analysis that is sufficiently efficient for Ruby. It combines partial evaluation framework and abstract interpretation framework to make analysis of dynamic language possible. We have implemented an ahead-of-time optimizing compiler, HPC Ruby, which performs classical optimization techniques based on the analysis targeting single core processors. HPC Ruby has achieved hundred times of speed-up against to latest Ruby interpreter in experimentation with Nas Parallel Benchmarks. Its performance has reached almost 90% of performance of C.