web-dev-qa-db-ja.com

GNU Parallelで線形スケーリングを期待できますか

私はGNU Parallelを使用して、20コアを使用してベンチマークを実行し、1コアのみで同じジョブを実行する場合と比較して、スピードアップをテストしています。ほぼ完全な線形スケーリングを期待する必要があります。つまり、計算が約20倍速くなります。コアを1つだけ使用した場合よりも?

明確にするために、スケジューラー(例:slurm)はnot使用されています。

2
cryptic0

場合によります。確実に知る唯一の方法は測定することです。

CPUにハイパースレッディングがある場合:いいえ。ハイパースレッディングは、CPUを2コアに変換し、シングルスレッディングの約70%のパフォーマンスを実現します。

コアがキャッシュを共有する場合:たぶんいいえ。アプリケーションによっては、大きなキャッシュに大きく依存する場合があります。複数のコアが同じキャッシュを共有していると、キャッシュミスが増えるリスクがあります。

CPUが温度に基づいて周波数をスケーリングする場合(ターボブーストとも呼ばれます):いいえ。単一のコアにより、CPU内の2つのコアが同じ速度で実行されている場合よりもCPUの温度が低くなります。これにより、より多くのコアがアクティブである場合よりも、CPUがシングルコアとしてより高速に動作する可能性があります。これは通常、ハイパースレッディングに似ています。各コアは遅くなりますが、合計スループットは高くなります。

ジョブがI/Oに大きく依存している場合:状況によって異なります。 https://oletange.wordpress.com/2015/07/04/parallel-disk-io-is-it-faster/ を参照してください

3
Ole Tange