メモリ帯域幅のボトルネック

メモリ帯域幅のボトルネック

Python パンダ プログラムがあります。AWS Ec2 で 8 コアで実行すると、CPU 使用率は 100% になり、プログラムは 8 分で終了しました。次に、16 コアにすると、CPU 使用率は 50% しか得られず、プログラムは 8 分で終了します。メモリ帯域幅のボトルネックが発生していると思われるため、64 コアで 300GB/秒のメモリ帯域幅を要求する X1,16xlarge インスタンスを選択しました。しかし、役に立ちませんでした。プログラムは 64 コアのごく一部を使用し、10 分経っても終了しませんでした。 ec2 X1インスタンス

何が起こっているのか分かりますか?

(ちなみに、同じプログラムを 4 コアの古いデスクトップ タワーで実行すると、16 分で終了しました)

詳細: プログラムはGridSearchCVを使用し、次にジョブライブラリマルチプロセスを並列に実行します。プロセス数は常にシステム内のコア数と等しくなります。

答え1

Pythonには「グローバルインタプリタロック」があり、複数のスレッドを効率的に利用する能力が制限されます。応答したこのサイトでは、時間的にクリティカルな関数を C/C++ で記述することを検討する必要があることを説明しています。

可能であれば、分析を小さなチャンクに分割し、それらを別々のプロセスとして実行して、グローバル インタープリター ロックの問題を回避することを検討してください。

関連情報