マルチスレッドプログラミング相談室 その9 (459レス)
前次1-
抽出解除 レス栞

404
(2): 2019/01/26(土)17:42 ID:stTjLhtD(1) AAS
400MBのデータを一括でコピーする処理を並列化してもノイマンボトルネックに掛かってスケールしないと思うんですが、boolの配列(newしたもの)でやるとある程度スケールします。
何でですか?
405: 2019/01/26(土)18:19 ID:yUYodqfD(1) AAS
>>404
bool の配列が、例えば、8個の bool 値をまとめて 1バイトとして格納している場合で、
for ( i =0; i < 100000; i++ ) {
dst[i] = src[i];
}
のように書いて、かつ、コンパイラがこのループを「そこまでの」最適化はしなかった場合、
32BIT 環境の場合なら、32回のループで 1 DWORD 分の実メモリやキャッシュ・メモリへの
転送が生じるだけになるかも知れない。その他のメモリアクセスは、基本、code の
fetch だけになり、全てCPU内部のキャッシュ・メモリに乗ってしまう。

だから、マルチスレッドでこのループを分割して行えば、32スレッドまでなら、
省2
406: 2019/01/26(土)18:25 ID:VVr2JTND(1) AAS
>>404
あ、あと
>400MBのデータを一括でコピーする処理を並列化してもノイマンボトルネックに
>掛かってスケールしないと思う

これだけど、以外に高速化されたりするかもしれない。
実際の CPUはそんなに賢くないので。

色々複雑。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.021s