eGPU監視アプリCL!ngを使ってeGPUのトラブル原因を切り分ける

海外でeGPU利用者の間で有名なMacアプリとしてCL!ngというものがあり、現時点では唯一Mac上でeGPUのビデオメモリ帯域やパフォーマンスを監視出来るアプリだ。

このアプリを使用することで、eGPU利用中にトラブルが生じた際に問題の切り分けが出来たり、eGPUの不審な動きを監視することが可能なので、eGPUのトラブルに悩まされている人は導入してみることをおすすめする。

なお、このアプリによって何らかの損害や不具合が生じても管理人は一切の責任を取れないので、その点はご了承願いたい。

ではCL!ngの使い方・見方を紹介していこう。

ちなみに、このアプリを起動中はMacのシステム全体が結構重くなるので、不要なアプリや重いアプリは閉じておいた方がいい。

CL!ngでeGPUのビデオメモリ帯域を表示する

CL!ngはeGPUに特化したアプリというわけではなく、CPUや内蔵グラフィックの情報も表示できるが、主に使用する用途としてはやはりeGPUの監視だろう。

CL!ngでeGPUの帯域を表示する場合はCL!ngを起動した後、画面下のプルダウンメニューから接続しているeGPUを選び、”Performance”というタブを開こう。

僕はBlackmagic eGPU(Radeon Pro 580)を使っているので、AMD Radeon Pro 580 Compute Engineを選ぶことになる。

ちなみに”OCL GPU”という表示があるが、これは”OpenCL”のことであり、通常はこちらのOCL GPUを選択する。

”MTL GPU”という項目も選べるのだがそちらは”Metal”の情報の表示であり、現時点ではソフトウェアの問題なのかmacOSの問題なのか、Metalの情報は表示できない。

項目を選択すると該当GPU(eGPU)の”Memory Bandwidth”という項目にビデオメモリ帯域が表示されるはずだ。

まず、数値を見る前に帯域の単位をGB/sに変更した方が見やすいだろう。

ビデオメモリ帯域の見方

続いてはメモリ帯域の見方を(僕でわかる範囲で)紹介する。

画像の赤枠で囲った部分が、それぞれの経路のビデオメモリ帯域を表している。

”Pinned”という部分は現在の帯域の表示、”Paged”とは文字通りページングされたビデオメモリだ。

この両者の数値には特に大きな違いはなく、僕もエキスパートではないので詳しい説明は出来ないが、Pagedの値はあまり考えなくてもいい。

重要なのはPinnedの値だ。

”Host to Device”は文字通りホスト(Mac)からデバイス(eGPU)への送信帯域、”Device to Host”はデバイス(eGPU)からホスト(Mac)への送信帯域を表している。

上記画像ではMacとeGPUとの間で2.26GB/sの速度でビデオメモリがやり取りされていることが見て取れる。

ちなみにCPU内蔵グラフィックの帯域は以下のようになる。

いくら性能が低いCPU内蔵グラフィックとは言え、ビデオメモリの送受信はMacのロジックボード内で完結するため、eGPUより速いことがわかる。

Thunderbolt 3の帯域が足かせとなっていることの証左と言えると思う。

なお、ここで計測しているのはあくまでビデオメモリ帯域であり、MacとeGPUの間では他にも多くの情報がやり取りされている。

ちなみに”Device to Device”はeGPU内部でのビデオメモリの帯域を表している。

もしeGPU使用中のMacに異常が現れた場合はこれらの値を監視することで、原因を切り分けられる可能性がある。

帯域に異常な数値が現れた場合(極端に高い、または極端に低い)はeGPUになんらかの不具合が生じているか、あるいは高負荷な作業(ビデオメモリを大量に消費するアプリなど)に耐えきれなくなり、オーバーフローを起こしている可能性がある。

単精度浮動小数点と倍精度浮動小数点の計測

次にトラブル解決とはあまり関係がないが、同じ”Performance”タブの下の項目を見てみよう。

”Compute Performance”という項目があるが、ここではベンチマークのようにeGPUの浮動小数点演算性能(FLOPS)を計測することが出来る。

”Single Precision”は単精度浮動小数点演算性能、”Double Precision”は倍精度浮動小数点演算性能を計測出来る。

計測するには”再生マークのようなボタン”を押してみよう。

なお、”Scalar”と”Vector”という項目に分かれているが、ここではそれらの項目は無視してしまっていい。

また、浮動小数点演算性能の計測には先ほど触れたMetalでも計測出来るが、Metalだと倍精度浮動小数点演算の計測はサポートされていないので”OCL GPU”のままでいいだろう。

再生ボタンを押すとこのような画面が表示され、数秒で浮動小数点演算性能を計測してくれる。

一般にGPUのFLOPS(浮動小数点演算性能)を計測する時は単精度の値を使うので、上の画像の数値を見る限り、Blackmagic eGPU(Radeon Pro 580)の浮動小数点演算性能は2273G FLOPS、つまり約2.3T FLOPSということがわかる。

この値はリアルタイムでの計測のため、当然ではあるが現在起動しているアプリや作業の影響を受けるので、現在起動しているアプリによっては数値が乱高下する場合もある。

ちなみに参考までに、ゲーム機のPS4(Proではない)のグラフィックス性能は1.84T FLOPSである。

まとめ

以上簡単にCL!ngの使い方を紹介してみたが、僕はハードウェアエンジニアではないし、知識もまだまだのため、CL!ngの使用方法・数値の見方が正しいのかは保証出来ない。

もしこの記事を見た人で間違った点を見つけた場合は、CONTACTページから正しい情報を指摘して頂けるとありがたい。

ただ、CL!ngのビデオメモリ帯域などの値に普段とは違う変化があった際は、なんらかの問題が発生していることは確実なので、eGPUのトラブルに悩まされている人は一度CL!ngでeGPUの帯域やパフォーマンスを計測してみるといいだろう。