Item type |
Trans(1) |
公開日 |
2022-09-15 |
タイトル |
|
|
タイトル |
大規模データ処理向けElixirアプリケーションの高速化のためのOpenCLコードの生成手法 |
タイトル |
|
|
言語 |
en |
|
タイトル |
A Method of Synthesizing OpenCL Code for Accelerating Large-scale Data Application by Elixir |
言語 |
|
|
言語 |
jpn |
キーワード |
|
|
主題Scheme |
Other |
|
主題 |
[発表概要, Unrefereed Presentatin Abstract] |
資源タイプ |
|
|
資源タイプ識別子 |
http://purl.org/coar/resource_type/c_6501 |
|
資源タイプ |
journal article |
著者所属 |
|
|
|
京都大学 |
著者所属 |
|
|
|
京都大学 |
著者所属 |
|
|
|
京都大学 |
著者所属 |
|
|
|
東京大学/JSTさきがけ |
著者所属(英) |
|
|
|
en |
|
|
Kyoto University |
著者所属(英) |
|
|
|
en |
|
|
Kyoto University |
著者所属(英) |
|
|
|
en |
|
|
Kyoto University |
著者所属(英) |
|
|
|
en |
|
|
The University of Tokyo / JST PRESTO |
著者名 |
安部, 竜矢
宮城, 竜大
高木, 直史
高瀬, 英希
|
著者名(英) |
Tatsuya, Abe
Ryota, Miyagi
Naohumi, Takagi
Hideki, Takase
|
論文抄録 |
|
|
内容記述タイプ |
Other |
|
内容記述 |
ElixirはErlang VM上で動作する関数型言語であり,Rubyを参考とした言語設計がなされている.特徴として,動的型付け,データのイミュータブル性,および,map/reduceモデルによる並列処理の記述容易性などがあげられる.これらの特徴から,特に設計生産性向上の観点からElixirを大規模な並列計算アプリケーションへ活用することの機運が高まっている.しかし,Elixirはプロセッサ上の仮想マシンで動作する方式であるため,性能面での本質的な限界がある.本研究の目的は,大規模なデータを扱うElixirアプリケーションの高速化である.本論文では,map関数を用いたElixirコードから機能的に等価なOpenCLコードを生成する手法を提案する.OpenCLはデバイス移植性の高いAPIライブラリであり,GPUやFPGAなど種々のデバイスでアプリケーション高速化を図ることができる.コード生成の際に,型付け規則の違い,および,パイプ演算子に代表されるElixirの特徴的な記法が課題となる.本研究では,これらを解決するための中間表現および静的な型推論を設計する.生成されたコードは合わせて生成されるErlangのFFIであるNIFsを用いた通信機構を介してGPU上などで実行できるが,性能ボトルネックとなりうるデバイス間通信が多発することになる.この回数を削減するために,複数のmap関数をまとめる構文木の簡約方法についても提案する.提案手法に基づきコード生成系の実装を行い,大規模なデータを扱うベンチマークで評価を行い本提案の有効性を示す. |
論文抄録(英) |
|
|
内容記述タイプ |
Other |
|
内容記述 |
Elixir is a functional language that runs on the Erlang VM, and is designed Ruby-like. Elixir has features such as dynamic typing, immutability of data, and ease of describing parallel processing using the map/reduce programming model. From its features, the momentum for utilizing Elixir programming for large-scale parallel computing applications is increasing, especially from the viewpoint of improving design productivity. However, since Elixir runs on a virtual machine on the processor, there is an essential limit in terms of performance. The purpose of this paper is accelerating large-scale data application by Elixir. In this paper, we propose a method to generate functionally equivalent OpenCL code from Elixir code using the map function. OpenCL is an API library with high device portability, and can accelerate applications on various devices such as GPU and FPGA. When generating code, the differences in typing rules and the characteristic syntax of Elixir such as pipe operator become issues. In this study, we design intermediate representations and static type inference to solve these problems. The generated code can be executed on the GPU etc. via the communication mechanism using NIFs which is Erlang's FFI that is also generated. In order to reduce the number of device-to-device communication at that time, we also propose a method for reducing the syntax tree that merge multiple map functions. We implement a code generation system based on the proposed method and evaluate it with a benchmark using large-scale data to show the effectiveness of this proposal. |
書誌レコードID |
|
|
収録物識別子タイプ |
NCID |
|
収録物識別子 |
AA11464814 |
書誌情報 |
情報処理学会論文誌プログラミング(PRO)
巻 15,
号 4,
p. 2-2,
発行日 2022-09-15
|
ISSN |
|
|
収録物識別子タイプ |
ISSN |
|
収録物識別子 |
1882-7802 |
出版者 |
|
|
言語 |
ja |
|
出版者 |
情報処理学会 |