1

元の問題は次のようなものです:
-2^31 ~ 2^31 - 1 (int) の範囲の整数の 1PB サイズをソートすると、それぞれ 1TB のディスク容量と 16GB のメモリ容量を持つ 1024 台のマシンがあります。ディスク速度が 128MB/s (r/w) で、メモリ速度が 8GB/s (r/w) であるとします。CPU の時間は無視できます。簡単にするために、ネットワーク転送時間は無視できます。必要な概算時間を計算します。

外部ソートを使用すると、次のように計算すると、1 TB のデータを 1 台のマシンで約 10 時間でソートできることがわかっています。

ディスク アクセス (2r2w): 1T * 4 / 128MB/s = 2 ^ 15 秒 ~ 9 時間 メモリ
アクセス:
2^48 整数を 64 パーツ (それぞれ 2 ^ 42) にソートすると、それぞれおよそ 1.3 分かかります。したがって、合計1.4時間です。
63ウェイのマージには数秒かかるため、無視されます。

しかし、次のステップである 1024T データの組み合わせはどうでしょうか。これがどのように計算されているかわかりません。助けてください。

4

1 に答える 1

1

2^31 は = 20 億 (2 "ギガ") です。したがって、多くの重複した数値と固定範囲を見ています。したがって、基数ソート ( http://en.wikipedia.org/wiki/Radix_sort ) を検討してください。

各プロセッサは、データのサブセットに対して) 'count' 配列を作成します (x[0] には 0 のカウントなどが含まれます)。次に、すべての結果を 1 つの配列にマージできます。後で、ソートされた配列を「構築」できます。

于 2013-02-27T01:20:41.693 に答える