研究日誌。

大規模なグラフ処理に対してメモリ階層構造を考慮した高性能なソフトウェアを開発。

pthread で最短路をクエリ並列 その2。

2008-01-21 12:33:45 | Weblog
前回では簡易的に pthread によるクエリを並列化した。今回は特にスレッド数だけ作業領域を確保するといった部分を改善し、メモリ消費を減らすことができた。改善に思ったよりも時間がかかってしまったため、単純なことでもマルチスレッドではデバッグが難しいといえる。

次に示すのはグラフデータは USA-road-d.USA.gr で、前回と同じクエリ (point-to-point type を 10 個、逐次版では 21 秒ほどかかる) を解いた。1スレッドの際もスレッド起動等のオーバーヘッドがあるため pthread を用いない時と比べて遅くなってしまうが、スレッド数を2、4、8と増やすにつれて、14.07 秒、8.48 秒、6.76 秒 と改善された。4→8の際にはあまり改善されていないが、スレッド起動のオーバーヘッドが効いてきてしまうのか?逐次版でクエリ1つに対し2秒~3秒ほどかかるのなので各スレッドに1~2つ割り振られるとこれが限界なのか。画像は増加率を表にしたものである。

以下のデータは gettimeofday を用いて計測した。

○環境
CPU : Xeon 2.33 GHz (4 core x 2 CPU)、Memory : 16GByte
option : -O2 -march=nocona

memory      time
1  851.30[MB] 24.8744[s]
2 1044.35[MB] 14.0701[s]
4 1430.46[MB]  8.4823[s]
8 2202.68[MB]  6.7580[s]

最新の画像もっと見る

コメントを投稿