2008 Fiscal Year Annual Research Report
静的型付関数型言語のSIMD演算・並列化拡張の型に基づく高性能な実装に関する研究
Project/Area Number |
20700039
|
Research Institution | Advanced Software Technology & Mechatronics Research Institute of Kyoto |
Principal Investigator |
吉田 信明 Advanced Software Technology & Mechatronics Research Institute of Kyoto, 研究部, 副主任研究員 (00373506)
|
Keywords | ソフトウェア学 / 言語処理系 / 並列計算 / ハイパフォーマンスコンピューティング |
Research Abstract |
今年度は、静的型付き関数型言語であるStandard MLの処理系である、SML#処理系(東北大学電気通信研究所大堀研究室において実装)に対して、(1) Standard ML言語への固定長ベクタ型の導入、(2) Standard ML言語の固定長ベクタ型データ構文・演算による拡張の導入、を行った。ターゲット環境はIntel IA-32アーキテクチャとし、上記演算の実装においては、IA-32アーキテクチャにおいて提供されているSIMD命令を使用した。 (1) Standar ML言語への固定長ベクタ型の導入 Standard ML言語に対して、固定長ベクタ型を導入した。この型は、格納されるデータ型と長さの組、例えば、4要素整数ベクタ型の場合は"(int, 4) vector"などと表現され、実装上、32ビット整数が4つ連続領域に格納されたデータとして格納されることとなる。格納されるデータ型には制限はなく、MLの特徴である多相型も利用可能である。 (2) Standard ML言語の固定長ベクタ型データ構文・演算による拡張の導入 前項で導入したデータ構造を容易にプログラム中で標記出来るようにするため、固定長ベクタをリテラルとして表現できるようにした。例えば、4要素整数ベクタは"[<1,2,3,4>]"としてプログラムに記述することが出来る。あわせて、この標記をパターンマッチでも使用できるようにした。例えば、引数として4要素のベクタ型を受け取る関数は、"fun f [<x, _, _, _>]=x;"として記述することが出来る。この関数は、∀α.(α,4) vector -> αの型を持ち、多相型も利用可能である。 また、4要素整数ベクタの加算など、アーキテクチャのサポートがある演算について、ハードウェアのSIMD命令を使用したプリミティブを実装した。 本課題の対象であるヘテロジニアスマルチコア環境では、ベクトル演算処理などが多用される。そのため、このようなSIMD演算をprimitiveとして導入しておくことにより、本課題の目標である、MLでのより高速な並列演算処理の実現に貢献すると考えられる。
|