particle
私が使用している (SMPの使用に傾いている) アルゴリズムの新しいバリアントの一部として、box
それぞれbox
にparticle* []
. 私の唯一の懸念は、ボックスあたりの粒子の数が変化する可能性があるため (非常にまれなケースでは平均 10 が 70 に達することが知られています)、ポインター配列を大量に過剰に割り当てる必要があることです。おそらく 5 ~ 10% の使用率で考えていました。
極端なケースでは、これらが 100 万のオーダーになるため、0.5 GB のメモリを割り当てることを検討しています。それが実行されるマシンに関しては問題ではありませんが、メモリをそんなにストライドすることに関連するパフォーマンスのペナルティ(キャッシュがそれを嫌うか何か)があるかどうか疑問に思っています. (たとえば、500 バイトのうち最初の 60 バイト程度にアクセスする)。ただし、ストライド幅がキャッシュを破壊する64の倍数にならないようにすることは知っています...
この計画が同じ時間内により多くの成功したコピーを実行できるように十分なパフォーマンスの向上をもたらす限り、非常にまれなケースで失敗しても問題ありません。
関連する場合、このコードは主に Xeon E5620 で実行されますが、これは変更される可能性があり、アーキテクチャ固有のことはしたくありません。
EDIT:これは、連続したメモリ内のNバイトのパックされたデータを、連続したメモリのはるかに大きな領域に均等にまたがったNバイトのデータと比較しています。