問題
Alder Lake(12世代Coreプロセッサ)以降のIntelのCPUは計算速度重視のPコアとワッパ重視なEコアという2種類のコアを搭載したIntel Hybrid Technologyというものを採用しています.当然ですが,Eコアでプログラムを実行すると遅いため,なるべくPコアで実行してほしいですね.しかし,古いLinuxカーネル(古いと言っても2023年で最新のDebian 11のカーネルですが)では,どちらのコアで動かすかをうまく制御することができません.そのため,あるときはPコアでプログラムを実行し,またあるときはEコアでプログラムを実行するという現象が起こります.どちらのコアでプログラムを動かすかは運任せなので,運悪くEコアで実行してしまうと,とても遅くなってしまいます.
現状
2023年6月にリリースされたDebian12のkernelは6.1なので,Debian12では何もしなくてもAlder Lakeに対応していると思われます.
解決法
kernelを新しくすれば,Pコアでプログラムを動かしてくれるようになります(比較的適切にスケジューリングしてくれます).Debianでは次のような操作をすると,Alder Lake以降のCPUに対応した比較的新しいkernelをインストールできます.
- 次のコマンドでaptのリポジトリの設定ファイルを開きます.
sudo nano /etc/apt/sources.list
- このファイルに次の設定を追加します.
deb http://ftp.riken.jp/Linux/debian/debian/ bullseye-backports main
deb-src http://ftp.riken.jp/Linux/debian/debian/ bullseye-backports main
- 次のコマンドでカーネルをインストールします.
sudo apt install -t bullseye-backports linux-headers-amd64 linux-image-amd64
これでAlder LakeとRaptor Lake(13世代Coreプロセッサ)に一応対応した新しいカーネル(2023年4月15日では6.1)がインストールされます.
この作業でインストールされるkernelはDebianにおいて安定版ではないことに注意してください.
感想
現在のIntel CPUはハイブリッドアーキテクチャなため並列計算が必要な数値計算に向かないでしょう.数値計算が目的ならAMDのRyzenを買ったほうが無難だと思います.