質問: 0` 彼らはいつも同じ `pid` からではありません。 私がコアの数を減らすと、私は上記のメッセージの数を減らし、2または3のコアでは何も得られません。 私が推測できるのは、膨大な量のベクトル割り当てと各スレッドで行われるアクセスに関係しているかもしれないということだけです。私はそれが関連している場合、他のメモリ管理ライブラリを使用していません。
回答: > 私は無差別な最適化を行うparrallelized C ++プログラムを持っています。 > なんらかの理由で、コア当たりのリターンが〜6コアまで減少します。 > どのポイントに私はさらにコアが〜ない速度を追加する壁に当たった。これは > 8または16コアマシンで実行すると一貫性があります。 > > あなたはアルゴリズムを記述できますか?多くの計算アルゴリズムはメモリに束縛されています。 `oprofile` 、 `perf` 、または可能でない場合は `gprof` でアプリケーションをプロファイリングしてみてください。 > 私が推測できるのは、大規模な > ベクトルの割り当て量とアクセス数 > 糸。私は他のメモリ管理ライブラリを使用していない > 関連性があります。 > > TLBの圧力を緩和する簡単な方法は、巨大なページを使用することです(おそらくあなたのハードウェアはそれをサポートしています)。 Linuxでは、 `libhugetlbfs` と `morecore` フックを使用できます。 ``` HUGETLB_MORECORE=yes LD_PRELOAD=libhugetlbfs.so ./brute_force_optimization ```