6

よくわかりません。これで高速化するために、4 つのコアで大きな memset (たとえば 10 MB) を作成できますか?

そのような RAM チップの並列化はまったく可能ですか? また、他のスレッドを起動する時間コストはどれくらいですか? ミリ秒以上ですか?

4

1 に答える 1

2

あなたは正しい質問を指摘していますが、同時にそれに簡単な答えを出すことは困難です。関連するいくつかの側面があります。

  1. 新しいスレッドを開始する (またはいくつかのキャッシュから選択する) オーバーヘッド。
  2. メモリバスの競合。
  3. 上記の側面は異なり、プラットフォームごとにコストが大きく異なります。

大型の PC には複数のメモリ バスがあります。小さいものは1つしかありません。メモリ バスが 1 つのシステムでは、これは意味がありません。システムに複数のメモリ バス (チャネル) がある場合、データの配列はメモリ バンク間で任意に分割される可能性があります。配列全体が同じメモリバンクにある場合、並列化は役に立ちません。配列のレイアウトを理解することは、やはりオーバーヘッドです。つまり、コア間で操作を分割する前に、これが価値があるかどうかを判断する必要があります。

簡単な答えは、これらの予測が困難なオーバーヘッドが利益を消費し、全体的な結果を悪化させる可能性が高いということです。

同時に、一部のアーキテクチャでは非常に巨大なメモリ領域が必要になります。

于 2012-10-12T05:55:28.257 に答える