先日、Mac miniでNVIDIAのGeForce GTX 1080をeGPU(外付けGPU)として使うことができたよ、という投稿を書いた。

Mac miniでNVIDIAのeGPUを使う

その少しあとに、いい加減Mac miniでは作業がつらくなっていたので、2017年モデルのMacBook Pro 15インチを購入した。

MacBook Pro (15-inch, 2017)
  • 第7世代の3.1GHzクアッドコアIntel Core i7プロセッサ(Turbo Boost使用時最大4.1GHz)
  • Radeon Pro 560 4GB + Intel HD Graphics 630
  • 16GB 2,133MHz LPDDR3メモリ
  • 1TB SSDストレージ
  • USキーボード

という感じのスペックで、非常に高い買い物だったが、Mac miniからの明らかな性能向上を体感できて気に入っていた。過去形なのは、購入した1ヶ月後に2018年モデルのMBPが発表&発売されたから…。

その悲しみはさておき、MBPでも早速NVIDIA eGPUを使おうとして、いろいろ試行錯誤をした結果、諦めた。以下がその記録です。

機器構成

NVIDIA eGPUを使えるようにする

Mac miniのときと同じく、macOS-eGPU.shを実行する。スクリプトを実行して再起動したあと、Mac miniと同じく、

  • Macを起動し、ログインする
  • eGPUを接続する
  • 約10秒後、ログアウトする
  • ログイン画面になると、eGPUと接続している外部ディスプレイに映像が映る
  • ログインする

という手順を踏むとeGPUを認識できた。

GTX 1080がMBPで認識された!

ベンチマーク

また簡単にベンチマークを取ってみた。

比較対象

  • Mac mini Late 2014 (GPU: Intel Iris 1536MB)
  • Mac mini Late 2014 + eGPU (GPU: NVIDIA GeForce GTX 1080)
  • MacBook Pro 15-inch 2017 (GPU: Radeon Pro 560 + Intel HD Graphics 630)
  • MacBook Pro 15-inch 2017 + eGPU (GPU: NVIDIA GeForce GTX 1080)

LuxMark

「Neumann TLM-102 SE」で計測。

  • Mac mini Late 2014: 1328
  • Mac mini Late 2014 + eGPU: 9921
  • MacBook Pro 15-inch 2017: 4244
  • MacBook Pro 15-inch 2017 + eGPU: 12277

Heaven Benchmark

「Preset: Extreme」で計測。

  • Mac mini Late 2014: 116
  • Mac mini Late 2014 + eGPU: 1946
  • MacBook Pro 15-inch 2017: 462
  • MacBook Pro 15-inch 2017 + eGPU: 2483

というように、Mac miniの時よりもさらにスコアが上がった。

MBPはThunderbolt 3 (40Gbps)なので、Thunderbolt 2 (20Gbps)のMac miniよりスコアが高いのは当然といえば当然である。まぁもう少し速くなってくれてもいいのではないかという感じだけど。

あと、LuxMarkはPCに接続されているGPUを全て使用するモードでベンチマークを取ったので、Intel Iris + GTX 1080のMac miniよりも、Radeon Pro 560 + Indel HD Graphics 630 + GTX 1080のMBPの方がスコアが出ていた、というのもある。

MBP + NVIDIA eGPUを諦めた理由

さて、性能が上がったのは嬉しいけど、なぜMBPでNVIDIA eGPUを使うのを諦めたのか。
ちなみに運用Tips的なのは、Mac miniのものとだいたい同じなので割愛。

MBPをシャットダウンしてもeGPUを接続していると自動で再起動してしまう

2016年のMBPかららしいが、MBPを電源に接続しているとシャットダウンしても自動で再起動してしまう。eGPUエンクロージャーもMBPに電源を供給するので、電源に接続しているのと同じことになる。

現状、NVIDIA eGPUを使う場合、

  • Mac起動時はeGPUを起動していてはならない(ログイン後に接続しなければならない)
  • MacをシャットダウンしないとeGPUを切断できない(それ以外での切断はカーネルパニックになる)

という制限がある。しかし、

  • eGPUを接続したMBPをシャットダウンする
  • シャットダウン後にeGPUを切断したいが、MBPがすぐに再起動してしまう
  • eGPUを切断したときにはすでにMBPは起動中なので、カーネルパニックになる
  • シャットダウン〜再起動の間のごくわずかな時間を狙って、eGPUを素早く切断する
    • 現実的ではない

という感じの、非常に厳しい運用を強いられることになる。

ちなみに、$ sudo nvram AutoBoot=%00を実行することで自動起動を無効にできる。しかし、無効にしているのになぜか再起動してしまうことが多く、非常にイライラした。シャットダウンできたなと思ってeGPUを切断すると、実は起動中だったのでMacがクラッシュ、など。

macOS 10.13.5だとeGPU接続時にクラッシュする

これはMBPだから、ではないかも。

MBPを購入したときのmacOSのバージョンはHigh Sierra 10.13.5だった。だが、10.13.5だとeGPUを接続した瞬間にOSがクラッシュしてしまった。NVIDIAのドライバのバージョンのせいかもしれないと思い、古いバージョンをインストールしたりしてみたが、結果は同じ。
仕方がないのでなんとか10.13.4にOSをダウングレードして、無事に使えるようになった。

egpu.ioには10.13.5や10.14 (Mojave)での成功例もあるので、個体差や環境差のせいかも知れない。

クラムシェルモードにしても内蔵ディスプレイが認識されたままになる

MBPにeGPUを接続してMBPのディスプレイを閉じる、つまりクラムシェルモードで利用しようとしても、MBPの内蔵ディスプレイは認識されたままになってしまう。ディスプレイのバックライトやキーボードのバックライトは問題なく消灯しているようだが、システム環境設定を見てみても内蔵ディスプレイは認識されたままになっている。

別にそのまま使ってもいいんだけど、ウインドウやマウスカーソルが内蔵ディスプレイのところに行ってしまい、操作が面倒である。そこで、DisableMonitorSwitchResXなどのアプリを使うと、実質的に内蔵ディスプレイを無効にすることができる。ただ、スリープ復帰時などに無効化が戻ってしまう場合があり、その場合は再度無効化が必要になる。
Macの再起動時には、もちろん再度無効化する必要がある。

スリープ/スリープ復帰がうまくいかない

Mac miniでは比較的うまくいっていたスリープ/スリープ復帰だが、MBPだと圧倒的に不具合が多かった。スリープ時にMBPのファンがずっと回りまくる、スリープ復帰時にクラッシュ、など。復帰時にクラッシュはMac miniでもたまにあったが、MBPは体感でその5倍くらいは確率が高い印象だった。これも個体差、環境差がありそう。

なので、MBPをeGPUに接続しているときはスリープは諦め、ディスプレイだけをスリープするようにした。

つらい

だいたい以上が不具合一覧だけど、なかなか辛い感じだった。

個人的に、MBPをクラッシュさせないとeGPUを切断することができないというのが一番辛かった。
自宅のソファやダイニングテーブルで気軽な作業をし、重いタスクのときには作業机に座ってeGPUを接続してガッツリ作業する…、というようなライフスタイルに憧れて購入したMBPなのに、クラッシュするからeGPUに接続しっぱなしで、機動力の欠片もなくなってしまう。
これならiMacで良かったのでは…という感じである。

あとは、eGPUを接続するには一旦ログアウトする必要がある、というのもなかなかストレスだった。
ログアウト→ログインしても、開いていたアプリケーションはわりといい感じに復帰してくれるのがMacの良いところだけど、フルスクリーンで開いていたアプリがフルスクリーンじゃなくなっていたり、開いていたアプリが多いと起動に時間がかかりファンもめちゃくちゃ回るし、それまでの作業を明らかに中断されてしまう感じだった。

作業の中断という意味ではeGPUの切断時も同じで、マシンをシャットダウンしなければならないわけである。しかもクラッシュするし。
頻繁にクラッシュさせることがマシンにとって良いはずはないし、仕事にガンガン使うメインマシンで、クラッシュのせいでMacが起動しなくなり、仕事に支障が出たらどうしよう、という不安もある。

と、こんな感じのストレスが蓄積して、MacBook ProでNVIDIA eGPUを使うのは諦めました。ロマンはあったけど、あまりに実用的ではなかった。


何度も書いたように、MacBook Proの個体差や環境差は絶対にあると思う。けど僕のMBPではうまくいかなかった。上記の問題がクリアできている人がいたら教えて欲しい。

結局、GTX 1080は売却し、AMDのGPUを買い直した。NVIDIAのGPUとは違ってMacに公式対応しているので、流石に快適である。
ということで、次回はAMDのeGPUが以下に快適で最高かということを書きます。