MacOS 10.13.4で外部グラフィックスカードのサポートにより、アップルは正式に、MacでのSonnet eGFX Breakaway BoxのようなeGPU使用を許可している。残念ながら、Macアプリにおいて、eGPU経由でレンダリングをする場合は、アプリの開発とアップデートが必要で、今の状況では、なかなか対応しているアプリがないのが現状ですが、eGPU.io alumnus @mac_editorから最近リリースされたset-eGPUというスクリプトをつかうと、アプリの対応なしでも、GPUレンダリングのコントロールを可能にすることができます。このスクリプトは、macOS 10.13.4以降で使用可能なGPUSelectionPolicyに割り当てられたplist値を、インストールされたアプリケーションに対して動的に上書きするようになっています。
つまり、このスクリプトをつかうと、すでにMacOSの最新バージョンに組み込まれているツールを使用して、eGPUの使用をより詳細に制御できるようにしてくれます。主な利点は、外部GPUがインストールされたアプリをレンダリングし、Mac内蔵ディスプレイに表示できることです。このスクリプトを使用すると、外部ディスプレイを使用せずに、インストールした多くのアプリでeGPUレンダリングを強制できるようになります。
テストした最初のアプリの1つはFinal Cut Pro Xで、よい結果を得ることができました。
set-eGPUはmayankk2308のオープンソーススクリプトです。コードを確認し、それがどうのような処理をしているか調べることができます。スクリプトはシンプルなものなので、SIPを使用不可にするなど、何か変わったことをする必要はありません。
今回は、このset-eGPUスクリプトの設定方法をご紹介します。
Macでset-eGPUを設定する方法
ステップ1
まず、macOS 10.13.4以降を実行可能な、Thunderbolt 3対応MacにeGPUを接続する必要があります。 set-eGPUはmacOS 10.14 Mojaveでも動作しますが、いくつかのバグが発生する可能性がありますので、macOS 10.13.4での使用をお勧めします。
ステップ2
アプリケーション→ユーティリティ→ターミナルでターミナルウィンドウを開きます。
ステップ3
スクリプトをインストールするには、以下をコピーして端末に貼り付けます。
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
必要に応じて、スクリプトをダウンロードして手動でインストールすることもできます。
ステップ4
キーボードのReturnキーを押し、管理者パスワードを入力します。
インストールスクリプトは一度だけ実行し完結します。このステップだけを入力して管理者パスワードを入力するだけで済みます。
Macでset-eGPUを実行する方法
set-eGPUを実行するには、ターミナルアプリでset-eGPUと入力し、キーボードのReturnキーを押します。そこから、GPUレンダリングに関連するさまざまなオプションを選択できるインターフェイスが表示されます。

最初のオプションはグローバルオプションで、すべてのインストール済みアプリに設定してeGPUレンダリングを優先させることができます。

2番目のオプションは、特定のアプリケーションを対象にしてeGPUを優先させることができます。オプション2を選択した後は、加速させたいアプリ(Launchpadに表示されている)の正確な名前を入力するよう求められます。

3番目のオプションでは、Mac上の特定のアプリケーションのステータスを確認することができます。再度、アプリの正確な名前を入力する必要があります。

最後の2つのオプションでは、グローバルアプリのレンダリングを無効にすることができます。

アプリごとにeGPUレンダリングを無効にするか、無効にします。

また、上級ユーザーは、メニューインターフェイスをバイパスして、直接コマンドラインオプションを実行することもできます。たとえば、-ssオプションを使用すると、eGPUアクセラレーションを優先するようにアプリをすばやく指定できます。

有効なオプションについては、mayankk2308のset-eGPU GitHubページのOptionsセクションを確認してください。 eGPUでサポートが必要な場合は、外部GPU愛好者に人気のeGPU.ioの上級コミュニティをお勧めします。彼らはeGPUに特化したスレッドを持っています。そこでは、バンドル識別子を使って特定のアプリをターゲットにする方法も学べます。
macOSでeGPUの使用を監視する方法
macOSには、内部GPUと外部GPUの両方の使用を監視するためのツールが組み込まれています。

ステップ1
アプリケーション→ユーティリティ→アクティビティモニタからアクティビティモニタを開きます。
ステップ2
メニューバーでWindows→GPU履歴を選択するか、キーボードショートカット⌘+ 4を使用します。
ステップ3
メニューバーで、表示→更新頻度→非常に頻繁に(1秒)を選択します。
ベンチマーク

Unigine ValleyとHeavenを使用した最初のベンチマークでは、FPSが大幅に改善されています。これは、外部ディスプレイの設定から得られるほど良くはありませんが、統合されたGPUよりもかなり改善されています。
注:HeavenとValleyが内部ディスプレイと連携するためには、GPUのDisplayPort接続の1つにDisplayPortディスプレイエミュレータ(ヘッドレスダミーアダプタ)を接続する必要がありました。
次のベンチマークでは、Final Cut Pro Xユーザーに人気のあるBruceX 5Kのエクスポートをためしています。大きい5Kプロジェクトは、GPUの影響を大きくうけます。 内臓のグラフィックスと外部グラフィックスの違いを簡単に確認できます。

set-eGPUのおかげで、Final Cut Pro Xでは大幅なパフォーマンスアップを確認できます。シングルパスとマルチパスの両方では、エクスポート時間が、Vega 64搭載のeGPUを使用すると基本的に半分になります。

Radeon Pro Vega 56を装備したiMac Pro経由で行った追加のベンチマークが1つあります。外部RX Vega 64 GPUはBruceXベンチマークの内部GPUよりも優れています。今や明らかにVega 64はVega 56よりも強力ですが、Thunderbolt 3接続のオーバーヘッドに留意してください。それは、潜在的なeGPUがパワーオンデマンドをどれだけ利用できるかを確認できます。