著者
野澤 真伸 今村 智史 河野 健二
雑誌
研究報告システムソフトウェアとオペレーティング・システム(OS) (ISSN:21888795)
巻号頁・発行日
vol.2022-OS-155, no.7, pp.1-8, 2022-05-19

異種プログラミング言語を併用することで,それぞれの長所を活かしてアプリを実装する場合がある.その際,異種プログラミング言語間でデータ構造を共有する処理が必要となる.データ共有を行うためには,データ構造を特定のプログラミング言語やマシンアーキテクチャに依存しない中立なフォーマットを経由してやりとりすることが一般的である.中立なフォーマットへの/からの変換をシリアライズ/デシリアライズといい,特に不揮発性メモリのような高速ストレージを媒介してデータ共有を行う場合,そのオーバーヘッドは無視できない.本論文では異言語間でのデータ共有高速化の手法を提案する.異言語間でのデータ共有を行う場合,あらかじめデータ共有を行う言語やアーキテクチャが特定できる場合も多く,そのような状況に特化した方式を示す.例えば,数値計算の前処理を Julia で行い,その後の計算処理を Python で行う場合などがある.このような状況では,1) 汎用性の高い中立なフォーマットを用いる必要がないため,シリアライズ/デシリアライズが簡略化できることに加え,2) ランダムアクセスが高速であるという永続メモリの特性を活かしたシリアライズ/デシリアライズ処理が可能となる.提案手法を Python と Julia 間のデータ共有に用い,Python と Julia に実装された従来のシリアライズ/デシリアライズ処理と比較したところ,Python から Julia にデータを送信する場合は,配列のシリアライズとデシリアライズがそれぞれ 1.57 倍と 3.03×106 倍,辞書のシリアライズとデシリアライズが最大でそれぞれ 2.38 倍と 1.23 倍の高速化が可能であることがことが確認できた.また Julia から Python にデータを送信する場合は,配列のシリアライズとデシリアライズはそれぞれ 3.26 倍と 4.06×105 倍,辞書のシリアライズとデシリアライズは最大でそれぞれ 1.78 倍と 14.4 倍の高速化が可能であることが確認できた.