MacBook Proに外部ディスプレイを接続しなくても各アプリでeGPUを利用できるスクリプト「set-egpu.sh」がリリース。

スポンサーリンク

 MacBook Proに外部ディスプレイを接続しなくても各アプリでeGPUの性能を利用できるスクリプト「set-egpu.sh」がリリースされています。詳細は以下から。

Apple eGPUのアイコン。

 AppleがmacOS 10.13.4 High SierraからサポートしたeGPU機能は、現在Thunderbolt 3対応のMacにeGPUと外部ディスプレイを接続した際に利用できるアプリが多くを占めていますが(GPUを選択できるアプリもあります)、

How to use set-egpu script

set-eGPU.sh allows you to easily set application eGPU preferences for all installed macOS applications. This allows applications to use the eGPU, and is display agnostic, making it convenient for many users without external monitors.

mayankk2308/set-egpu: Accelerate macOS applications using external GPUs. – GitHub

この制約を取り払い、全てのアプリにeGPU性能を割り当てることのできるスクリプト「set-egpu.sh」をThunderbolt 1/2搭載のMacでもeGPUを利用できるようにするスクリプトpurge-wrangler.shを開発している米ジョージア州のソフトウェアエンジニアMayank Kumar(mayankk2308)さんが公開しています。(コメント欄でのご指摘ありがとうございます)

スポンサーリンク

set-egpu.shの使い方

 まずset-egpu.shを利用する前に、MacBook ProやiMacにeGPUを接続します(外部ディスプレイは不要)。eGPU.ioメンバーの報告によると、purge-wrangler.shと併用することでMac miniなどでもeGPU支援を利用できるようになるそうです。

 次にMayankさんのGitHubリポジトリに公開されているset-egpu.shを以下のcurlコマンドでダウンロード、管理者権限でインストールします。

set-egpu.shのセットアップ

curl -s "https://api.github.com/repos/mayankk2308/set-egpu/releases/latest" | grep '"browser_download_url":' | sed -E 's/.*"([^"]+)".*/\1/' | xargs curl -L -s -0 > set-eGPU.sh && chmod +x set-eGPU.sh && ./set-eGPU.sh && rm set-eGPU.sh

 インストールが成功するとset-egpu.shのスクリプトが起動し、対話形式でeGPUの性能をアプリに割り当てることができるようになります。選択肢は以下の6つで、1.を選択して全てのアプリでeGPUを利用する設定にしてもいいですが、この設定はMacのアプリケーションフォルダにある全てのアプリ(フォルダやアプリ内に同梱されているアプリも含めて)を検索&設定するので、

set-gpu.shの使い方

  1. eGPUを全てのアプリで利用する。
  2. eGPUを特定のアプリで利用する。
  3. eGPUがアプリに割り当てられているかを確認する。
  4. GPU設定を全てのアプリで解除する。
  5. GPU設定を特定のアプリで解除する。
  6. 終了。

特定のアプリ以外でeGPUを利用したくない方は以下のように2.を選択して、利用したいアプリの名前(Final Cut ProやiMovieなど)を入力してください。

set-egpu.shの使い方

 設定が終了したら、もう一度set-egpu.shの選択画面に戻り、3.を選択して上記で設定したアプリがeGPUを利用できるようになったかを確認してください。

set-egpu.shの設定

#eGPUが利用できるようになっている場合
Status : Prefers external GPUs.

#eGPUが利用できない場合
Status : No preference set.

 これでeGPUが各アプリで利用できるようになるので、後は設定した各アプリを起動しmacOS 10.13.4でGPU履歴ウィンドウが追加されたアクティビティモニタアプリでGPU使用率を確認したり、GPUをiGPU/dGPU/eGPU切り替えアプリの処理速度を比較してみてください。

eGPUを利用したアプリ

おまけ

 以上のプロセスを9to5MacのJeff Benjaminさんが動画に詳しくまとめ、MacBook Pro 2017とUnigine Valley & HeavenやFinal Cut Proを利用した外部ディスプレイなし状態でのベンチマークを公開しており、

そもそも、set-egpu.shスクリプト自体もtechnafさん(以下動画)が指摘されたGPUSelectionPolicy設定のdefaultsコマンドを利用しているので、スクリプトを利用したくないという方はeGPU.ioフォーラムにMayankさんがコメントしている通り、以下のdefaultsコマンドで制御してみてください。

# Write to application name
defaults write -app "HOGEHOGE" GPUSelectionPolicy -string preferRemovable
# Write to application plist file
defaults write com.xxx.xxxx GPUSelectionPolicy -string preferRemovable
# To remove this preference
defaults delete -app "HOGEHOGE" GPUSelectionPolicy

コメント

  1. 匿名 より:

    スクリプトを試したのですが、一部のソフトウェアで使用できないようです。
    Second Lifeの公式viewerとサードパーティ製のFirestormが起動できない状況が続いています。
    アイコンをクリックした後にクラッシュレポートが生成されないようなので、
    コンソールで確認したところ、
    AEGetdescDara of non-desc type ‘reco’ not a good ideaというエラーが出ていました。
    その後に続き、Failed to create pixel format!というメッセージが表示されていました。
    Set-eGPUの設定を解除したら起動できます。

    他にもHeaven Benchmarkもベンチマークができませんでした。
    エラー内容は
    Can’t set video mode
    GLAppwindow::create_context():
    NSOpenGLPixelFormat::initWithAttributes(): failed
    Engine::video_restart(): can’t set 2560X1440
    Windowed video mode

    双方OpenGLに問題があるような気がするのですが他の環境でも同じ現象が起きるのか試していただくことは可能でしょうか?
    私はiMac Mid 2011 27inchでThunderbolt 1に
    RX580を搭載したSonnetのeGFX Breakaway Boxを繋いでいます。
    他のアプリに関してはちゃんと動作もしているので、原因がわかればありがたいです。
    ちなみにSet-eGPUのCheck Application eGPU Preferenceで確認したところ、双方ともにStatus : Prefers external GPUsとなっています