Elixir におけるC言語コード生成・最適化の試み

Elixir におけるC言語コード生成・最適化の試み

我々は Pelemay Super-Parallelism と称する関数型言語ElixirからC言語へのコード生成・最適化を行う処理系を研究開発している
これは,ElixirにはElixirのコードをASTに変換する機構が備わることを利用し,並列化可能なコードを検出してC言語コードを生成し,Auto Vectorization を利用してSIMD並列化を行う処理系である
2019年10月に公開したバージョン0.0.4では,あらかじめテンプレートとして定義されたC言語コードにコードを埋め込む方式のコード生成を実装し,元のElixirコードと比べて約2倍の高速化が図れた
2019年11月現在研究開発中のバージョン0.1.0系列では,コード生成の方式を大幅に見直し,柔軟なコード生成を図れるようにする予定である
本発表では,その中で最も特徴的な型検査の最適化方法について提案する
これは,動的型言語であるElixirの型の特性と,NIFという Elixir とネイティブコードの間のFFIを利用して,型検査と型推論を並行して実行することで,型検査の最適化を図る方式である
今後,実装と性能評価を行う

83722380372c00bd75ac920f2089f6aa?s=128

Susumu Yamazaki (ZACKY)

January 11, 2020
Tweet