Cerium による並列処理向け I/O の設計と実装

Masataka Kohagura 12th, February

担当教官 : 河野 真治

研究背景と目的

近年のCPUのほとんどはマルチコアであり、それらの性能を引き出すためには並列プログラミングが必須となっている。 そこで当研究室では、並列プログラミング用フレームワーク、Cerium Task Manager の開発を行い、提供することによって並列プログラミングを容易にしている。

先行研究では Task の並列化によって、プログラム全体の処理速度は向上している。しかし、ファイル読み込み等の I/O と Task が並列に動作するようにはされていない。

現状では、ファイルを memory に mapping を行ってから Task が走るようになっているので、I/O と Task が並列に動作しない。

本研究では I/O と Task が並列に動作するような設計、実装によってプログラム全体の 並列度、及び処理速度を上げていく。

mmapでの実装の問題点

並列処理向け I/O の 設計と実装


I/O を含む Task の説明


  1. file mapping 後、file をある一定の大きさに分割する
  2. 分割した file に対して、それぞれ計算を行う
  3. 計算した結果を集計する

mmap の説明

  • code がシンプル (memory を自分自身で malloc せず、read を書いて読み込まなくていいため)
  • memory より大きなファイルは開けない
  • read の先読みがOS依存
  • mmap した領域に対して何らかの処理が行われた時に memory に読み込まれる

Blocked Read の設計



Blocked Read の実装



ベンチマーク(1/3)


実験環境

ベンチマーク(2/3)


結果

read mode cpu num min time(s) MAX time(s) ave time(s)
mmap 4 135.2 148.9 142.3
BRead 4 94.5 109.2 98.8
mmap 12 147.0 181.8 154.6
BRead 12 91.6 117.5 99.2

ベンチマーク(3/3)

考察

大学院に進学してしたいこと


マルチコアソフトウェアシンセサイザーの設計