Google Colabでmakeするときのjオプションの最適な値
結論から言うと、ColabのCPUおよびGPUのコア数2を指定してmake -j2
またはmake -j`nproc`
とするのが一番速そうです。
・・・
最近Google Colabを使ってあるものを作っています。そこでは使用する前に長時間のビルドを要するツールをいくつか使っているのですが、見た人が再現できるようにGoogle Driveをマウントすることはせずいちいち使うツールをビルドしています。しかしながら毎回ビルドだけで20分くらいかかってしまっており面倒くさいと感じているので、jオプションで指定するジョブ数をいくつにすれば最高速でビルドできるのか実験して探すことにしました。 ビルド対象はJUMAN++という形態素解析ツールです。本当は他のソースコードでもビルドを試したかったんですが、他に良い感じの実験台が見つからなかったのでこれだけです。。 CPUとGPUそれぞれの場合について、ジョブ数ごとに3回ずつ実行して秒数を計りました。
CPUの場合
実験結果。
ジョブ数 | 1回目 | 2回目 | 3回目 | 平均値 |
---|---|---|---|---|
1 | 353.49 | 350.49 | 345.33 | 349.77 |
2 | 267.27 | 263.07 | 262.44 | 264.26 |
3 | 274.17 | 267.97 | 273.58 | 271.91 |
4 | 273.16 | 280.87 | 273.82 | 275.95 |
5 | 285.46 | 275.84 | 277.43 | 279.58 |
6 | 288.02 | 279.65 | 287.81 | 285.16 |
7 | 284.30 | 294.33 | 282.48 | 287.04 |
8 | 297.11 | 286.11 | 292.96 | 292.06 |
9 | 292.50 | 299.07 | 288.69 | 293.42 |
10 | 297.87 | 290.28 | 297.61 | 295.25 |
平均値で描いてみたグラフ。
GPUの場合
実験結果。
ジョブ数 | 1回目 | 2回目 | 3回目 | 平均値 |
---|---|---|---|---|
1 | 294.05 | 283.13 | 281.32 | 286.17 |
2 | 228.04 | 228.03 | 228.94 | 228.34 |
3 | 232.17 | 231.52 | 231.88 | 231.86 |
4 | 233.40 | 234.34 | 234.60 | 234.11 |
5 | 236.15 | 235.07 | 235.76 | 235.66 |
6 | 238.09 | 237.59 | 237.73 | 237.80 |
7 | 238.49 | 237.78 | 237.08 | 237.78 |
8 | 237.06 | 237.70 | 238.50 | 237.75 |
9 | 244.28 | 240.19 | 242.12 | 242.20 |
10 | 248.66 | 248.30 | 249.34 | 248.77 |
平均値で描いてみたグラフ。
CPUでもGPUでもmake -j2
とした場合が一番速かったです。
ColabのCPUのコア数もGPUのコア数も2なので、どうやら巷で言われてるようにmake -j`nproc`
のように指定するのが最速なようです。