コレ、出来るとは知ってたけど難しいな。
マイニング用GPUを活用
最近、秋葉原のセール情報などを見ていると、ビデオカードの中古激安品が出回っている情報に出くわす。その価格としては数千円というものである。
そのほとんどが“ワケあり品”となっていて、分かる人にしか使えないビデオカードだったりする。
その“ワケあり品”のワケというのが、映像出力ポートを持っていない、というもの。要するに、仮想通貨のマイニングの為に演算だけを求められたディスクリートGPUのなれの果てがこの“ワケあり品”なワケである。
もちろん、このまま使うのであればマイニングに使う事はできるのだが、価格が落ち着いてしまった今の仮想通貨で、投資をしてまでマイニングするのは理にかなっていない。
ではこの映像出力ポートを持たないビデオカードが出回っている本当の理由は何なのか?
実は、このビデオカードを利用して内蔵GPUを強化する事ができるのである。
映像処理だけをカードに
CPU内にGPUを持つCPUは、そもそもGPUを付け替えられないのでグラフィック性能を強化する為には内蔵GPUを使わないという選択肢を求められる。ディスクリートGPUを追加して、そちらでグラフィック処理をする事で性能強化を図るわけである。
しかし、昨今のミドルレンジ以下のビデオカードの価格は、徐々にその価格が上昇し、今や2万円程度はする。
そこで今回の“ワケあり品”を使って、数千円でRadeon RX400系クラスのビデオ性能を手に入れてしまおうと言うのが、今回の“ワケあり品”の意味になる。
しかし、映像出力ポートがないという現状をどうするのかというと、CPU内蔵GPUのマザーボードに取り付けられた映像出力ポートを使って、映像処理能力だけ“ワケあり品”にやらせるという方法を採る。
但し、この方法を実践する為には、3つの条件がある。
一つ目にCPUがIntel製ならHaswell以降、AMDならRyzen G以降(以前のAPUでは成功例を聞かない)であるという事。
二つ目にマザーボードに内蔵GPUの出力ポートを持っているという事。
三つ目にOSがWindows 10のFall Creators Update以降であるという事である。
これら3つの条件が整っていれば、可能性として数千円でグラフィック能力を向上させられるようになる。
原理はマルチGPU
今回のこの方法は、基本的にはマイニング用のビデオカードはRadeonに限られる。
ん? 条件が4つになったな(爆)
ま、それはいいとして、基本原理はAMDのマルチGPU機能であるCrossFire Xの原理で動作させる事になる。
なので、まずはマイニング用のビデオカードに通常のBIOSであるvBIOSを適用させる必要がある。
多くの場合、元々のマイニング用ビデオカードには切り替えスイッチが付いていて、そのスイッチでvBIOSを切り替えられる様になっているが、中にはそうしたスイッチすらなくしてしまい、コストダウンしているものもある。そのようなスイッチレスのマイニング用美テオカードの場合は、ネット上を探して通常版のvBIOSデータを手に入れて、書き込むという手段を必要とする。BIOSの書き換えは、失敗はそのハードウェアのジャンクを意味するので、手順を間違えないようにしてやる必要があるが、vBIOSを入れ替えられれば準備完了となる。
スイッチの場合は、ビデオカード上のスイッチの入れ替えで、通常のvBIOSが適用されるよう合せれば良い。これでvBIOSをWindows側が認識できれば、次にマザーボードのBIOS設定を変更する。
マザーボードのBIOSの設定項目で、最初に初期化するGPUを「PCIe」から「iGPU」に切り替える。ここまで出来れば、ハードウェアの準備は完了である。
次はいよいよWindowsでの設定だが、Radeon SettingというRadeonのドライバをインストールする。もしここで対応可能なビデオカードがないなどの理由でインストールが完了できないようであれば、vBIOSのスイッチ等が間違っている可能性がある。
このvBIOSの問題さえ解決できれば、Windows上ではRadeonというビデオカードが認識され、接続されたビデオカードとして使える様になる。
ココまで来れば、Windows上での設定が残るのみである。
ちょっと面倒ではあるが、[設定]→[システム]→[ディスプレイ]内に[グラフィックの設定]を開き、マイニング用ビデオカードを使いたいゲームの実行ファイルを一つ一つ登録する。気をつけなければならないのは、あくまでも登録するのはゲーム本体の実行ファイルで、ゲームによってランチャーなどを経由する場合はランチャーを登録するのではなく、ゲーム本体の起動ファイルを登録しなければならないという事である。
その登録した設定のオプションで「高パフォーマンス」を選択する事で、内蔵GPUからマイニング用ビデオカードでのレンダリングが選択されるようになり、次回のゲーム起動からマイニング用ビデオカードでグラフィック処理が行われるようになる。
少なくとも、現時点でのCPU内蔵GPUの性能よりマイニング用ビデオカードの方が性能は上なので、これで内蔵GPU以外での性能を得られるようになる。
全てのゲームが対象ではない
前述した通り、今回のこの方法は、基本原理をマルチGPUと同様のものとして動作している。
悲しい事だが、ゲームのタイトルによってはCrossFire Xに対応していないタイトルもあるので、その時には今回のこの方法は利用できない。設定出来たとしても機能しないので、結果的に内蔵GPUでの映像処理が使われる(ハズ)。
同じ事をNVIDIAのビデオカードでできるか? となると、おそらくは出来ない。理由はNVIDIAのGeForceの場合は、SLIを構成する場合にSLIのブリッジパーツが必要になるからだ。AMDのCrossFire Xは、このブリッジパーツが不要である事が、今回のマルチGPU技術の流用に繋がっていると言える。
ただ、CrossFire Xも万能ではない。実際にマルチGPUにしても効果が薄い場合もあるし、適用できない場合もある。
かなり博打的な使い方である事は間違いないので、数千円で全て満足できるという事は言えないのが今回の方法と割り切る必要がある。
GPUの有効活用
ただ、今回のような使い方をWindowsというOSがサポートし始めた事は個人的には評価すべきポイントだと思っている。
常々、Intel CPUを使っている時にこのCPUの中にあるGPUをGPGPUとして使う事はできないものだろうか? と考えていた。
折角あるのに、Disable状態にしておかねばならないのはもったいない話であり、ちょっとした事の演算にこのGPUが使えれば、今よりもずっとマルチタスク処理が軽減されるのではないかと思ったりする事がある。
例えば、私の構成で考えると、CPUとしてCore i7-8700Kには6コアのCPUとIntel UHD graphics 630というGPUがあり、ディスクリートGPUとしてRadeon VIIがある。
通常のCPU処理は8700KのCPUで受け持つとして、映像処理はRadeon VIIが受け持つ。残念ながらIntel UHD graphics 630は使われる事なく放置されている現状だが、特定の処理のみIntel UHD graphics 630にやらせ、Radeon VIIはその他の映像処理に注力する、という処理の分散化が出来れば、今よりも高効率で処理できる事になる。
そうした使い方をOSであるWindows側から仕掛けて行ければ、このムダになってしまっているGPUを有効活用できるのではないか? と思うワケである。
もちろん、分散させた事によってパフォーマンスが低下する可能性もある。Radeon VIIで処理した方が結果的に早かった、なんて事があり得るからだ。
このあたりのチューニングも難しい問題とは思うが、マルチタスクかつ高効率で使って行くという方向性は模索できるのではないかと思っている。
もっとも、今後はCPU内にGPUを内蔵する製品とそうでない製品に完全に分化していく可能性もあり、いわゆるローエンド製品でないと今回のような利用方法がそもそも存在しないという状況も考えられる。
ローエンド中心に使われる事になるだろう技術に、Microsoftがテコ入れするかどうかは全く読めないところではある。
いろんなアプローチでちょっとでも性能アップさせていこうという技術は、個人的には気になるところ。
できれば今後はもっと多方面に発展していってもらいたいものである。