グラボの複数使用による仕事の役割分担について

 

drops662.hatenablog.com

上記の記事でFusion360Quadroで処理するように設定しなおしたのですが、

GTXを高負荷の仕事に集中させ、同時に開いているブラウザなどはQuadroにやらせようと思い、Chromeを上の記事と同様の設定をしましたが、タスクマネージャではQuadroの使用率が全く増えません。少し方法を探している間に発見があったのと、そこから気になったことがあったので実験をしてみることにしました。

発見

タスクマネージャでの使用率の上昇は現状Fusion 360動作時にしか確認できませんでしたが、Nvidiaコントロールパネルから表示できるGPU使用率のグラフでは、Chromeでもちゃんと使用率が上がっていました。

そして、それはQuadoroに接続されたディスプレイ上にChromeを置いたときにのみ上昇することが確認できました。

が、GTX上のディスプレイ上の表示が全く動いていなくても、Quadoro上のディスプレイが使用されているときはGTXも同時に使用率が上がります。

そこで、思いつく限りの方法で実験してみました。

実験1(グラボにディスプレイを分散接続)

 

現時点で、グラボとディスプレイは下記の構成です。(バラバラのディスプレイを使っているせいで比較しづらいですが)

3840*2160(4K)ディスプレイ:GTX

1920*1080(2K)ディスプレイ:Quadro

1680*1050ディスプレイ:GTX

 

Fusion360Chromeも、CUDAとOpenGLの処理はQuadroを使用するように設定

Chromeの動作

それぞれのディスプレイにChromeのウィンドウを置いて、Misumiのブラウザ上で商品の3Dモデルを確認できる機能を使い、モデルをぐりぐり回すという動作を試してみました。

使用率は下記のようになりました。

3840*2160(4K)ディスプレイ:GTX20%、Quadro0%、

1920*1080(2K)ディスプレイ:GTX25%、Quadro23%

1680*1050ディスプレイ:GTX20%、Quadro0%

Fusion360の動作

それぞれのディスプレイにFusion360のウィンドウを置いて、モデルを回します。

使用率は下記のようになりました。

3840*2160(4K)ディスプレイ:GTX17%、Quadro65%、

1920*1080(2K)ディスプレイ:GTX3%、Quadro20%

1680*1050ディスプレイ:GTXが7%、Quadro25%

考察

細かい数字は何かの拍子に変わったりしたので、データとしての信頼性はないのでパーセンテージがいくら多い、少ないというのはあまり意味がないですが、Quadro上のウィンドウでの表示でもGTXの使用率が上がっているということが重要です。

この結果が示すのは、画面表示に関わる作業は主となるなグラボが結局PC上のすべてのディスプレイを取りまとめなくてはならないため、通常の表示をQuadroにやらせてもGTXの管理業務はなくならずかえって仕事が増え、

処理のフローにもよるが、ある程度複雑な3Dの計算は多少役割分担のメリットが出てくるという感じでしょうか。

実験2(主となるグラボにディスプレイを集中接続)

次に、ディスプレイをすべてQuadroのポートに繋ぎ変えて下記の構成にしました。

3840*2160ディスプレイ:GTX

1920*1080ディスプレイ:GTX

1680*1050ディスプレイ:GTX

 

Fusion360Chromeも、CUDAとOpenGLの処理はQuadroを使用するように設定

Chromeの動作

それぞれのディスプレイにChromeのウィンドウを置いて、Misumiのブラウザ上で商品の3Dモデルを確認できる機能を使い、モデルをぐりぐり回すという動作を行います。

使用率は下記のようになりました。

3840*2160(4K)ディスプレイ:GTX10%、Quadro0%、

1920*1080(2K)ディスプレイ:GTX9%、Quadro0%、

1680*1050ディスプレイ:GTX9%、Quadro0%、

 

Quadroは一切使用されません。

Fusion360の動作

それぞれのディスプレイにFusion360のウィンドウを置いて、モデルを回します。

使用率は下記のようになりました。

3840*2160(4K)ディスプレイ:GTX8%、Quadro65%、

1920*1080(2K)ディスプレイ:GTX3%、Quadro13%

1680*1050ディスプレイ:GTXが3%、Quadro23%

動かし方によって使用率は常に変動するので、正確に上記の数字になるわけではないですが、おおむね安定したぐらいあたりの平均的な数字を書いています。

2Kディスプレイでの動作はQuadroに接続したときよりも使用率が低いですが、10%くらいの差はあまりあてになりません。

また、これはグラフを見ながら何度か繰り返して数値を見たので確信できますが、解像度の低い1680のディスプレイより1920のディスプレイのほうが少ない数値を表示しました。

もしかしたら、1680のディスプレイは縦向きに使っているので何らかの余計な処理が必要だったのかもしれません。

結果

あいかわらず児童夏休みクオリティの実験ですが、

・タスクマネージャで使用率が一切上がらないのは謎だが、ディスプレイ接続元のグラボはただタコ足の延長ケーブル扱いをされるわけではなく、何らかの仕事は行っている。

・主となるグラボの仕事がなくなるわけではないため、グラボを複数つけたからといってむやみにディスプレイを分散して接続するのはあまり得策ではない。

・よほど得意分野に差のあるグラボを複数使用するか、常に作業分担ができるアプリケーションを実行していない限りは、仕事量をまんべんなくすることが(現時点では)できなさそうなのでアイドル電力分無駄

 

OSの作りに詳しい人なら、こんな実験をしなくともどういうアプリケーションのときどのような処理の場合はどうなるということを知ってそうです。